Like I've mentioned earlier AI is developing fast at the moment. So I'm going to just go straight at the heart of GPT3.5-turbo model. I feel that all writing about something "embeddings", "edits" or whatever is "a passe". I think most of the models that openAI mention are unnecessary. With the model GPT3.5-turbo you don't need all the other models, and I've heard that GPT4 is even better. 

So what I did was to rewrite my OpenAI-application(create a new). A little bit of restructuring and removing some stuff. After adding chatGPT3.5-turbo I had 5 apps/functions in the original application. 

  • code-generation (2 models available: davinci and cushman)
  • edits (text-davinci-edit and code-davinci-edit)
  • chatGPT3 (text-davinci-003)
  • chatGPT3.5 (model: gpt-3.5-turbo)
  • image generation(DALL-E)

What I found out was that all you need is the gpt-3.5-turbo model. It is very good and does what all the others do combined. The new application is like I said structured differently, so that it will be easier to add more models in the future. In the original app I tried to put a lot of stuff into one window(very bad idea). See below for the difference

openai_app_alot
Pic description: Original app with a lot of functions on the right

In the new application i introduced "tabs". Much better. 
chatGPT3.5-turbo
The apps are tabular. One tab for each app. Here showing GPT3.5 Turbo and the options on the right side

new_app_dalle
Showing the DALL-E app. The openAi -response windows is redundant, but it's nice in case there are any error-messages.
The app responds by opening dynamically created windows. If you ask for 4 images; it will create 4 windows. Se pic below
dalle_example_usage
The images created are floating. And I'm still debugging. Therefore you have the extra menu-items on the window.

My request was: "Scene containing mountains and fjords with a troll on the maountain side. Use an acrylic style". You can save the images. You can also create variations of a picture: Let's make 4 variations of the leftmost picture. I liked his smile smile_emoticon.

dalle_image_variations
PIc showing image-variations of the first pic. I guess the AI/DALL-E is keeping the the fact that the troll is smiling, is green and the mountains/fjords.

You can say what you like about the pics, but it's all about description. I tried to compare Midjourney with DALL-E(just once), and it will create something of the same. The only thing that's become a no no is using real-life people, celebrities or whoever. I don't remember what the request was( i copied it from midjourney/Discord-channel) and tested it on DALL-E and this is what came it created:

dalle-e-midjourney-comparison
I named the picture "avante-gard-cave-home". So the request included some of that text. Impressive? No? Yes?. This image was different, but the "quality" was the same as MidJourney's image(from what I saw). There are things in the image that are completely wrong(like the images of the trolls), but I think it's fun. "You" can create a lot with some creative thinking/descriptions. The ones you don't like you can just reject and then try to change your description and create variations of the ones you like until you're satisfied.

I guess I wandered off a little. I was supposed to talk a little about the "new" GPT3.5-turbo model.

Not much to say actually except that you have an options to either create a chat (with history (user/assistant )) or just create a simple request. I would say that using the user/assistant model is the best solution for most cases. You don't have to rewrite the request. You can just tell it to "make changes" where you reference whatever it is that you want to change. I have a real-life example below:

I did not know how to upload data to openai.com (I think the documentation is a little deficient. But ok...). The scenario is Visual Studio, C#, WPF. I was using the class HttpClient, and i did not know how to send "multipart-form-data". My request was "// c#
//make a function that uses HttpClient and MultipartForm to post a file and the variables "n" and "size""

The response  will always be a little different from the last(from what I've experienced(there's many ways to get from A to B), so if you don't like what you see, send another request. Anyway: The response is this:

```csharp
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

public class PostFileExample
{
    public static async Task<string> PostFileWithVariables(string filePath, int n, int size)
    {
        using (HttpClient httpClient = new HttpClient())
        {
            MultipartFormDataContent form = new MultipartFormDataContent();
            form.Add(new StringContent(n.ToString()), "n");
            form.Add(new StringContent(size.ToString()), "size");
            form.Add(new StreamContent(File.OpenRead(filePath)), "file", Path.GetFileName(filePath));

            HttpResponseMessage response = await httpClient.PostAsync("<your API endpoint URL>", form);

            if(response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                return await response.Content.ReadAsStringAsync();
            }
            else
            {
                throw new Exception("Error posting file.");
            }
        }
    }
}

This is not the whole response. There is also a description and a short how-to. If you want to change anything just write what you want to change. My request "can you change the name of the variable "file" to "image"", and the response is exactly what I wanted. See below:

public class PostFileExample
{
    public static async Task<string> PostFileWithVariables(string filePath, int n, int size)
    {
        using (HttpClient httpClient = new HttpClient())
        {
            MultipartFormDataContent form = new MultipartFormDataContent();
            form.Add(new StringContent(n.ToString()), "n");
            form.Add(new StringContent(size.ToString()), "size");
            form.Add(new StreamContent(File.OpenRead(filePath)), "image", Path.GetFileName(filePath));

As you can see, it changed "file" to "image". Which is what I wanted. A beautiful thing. The function that I used did not end up like this but it was not far from it. I t ended up like this:

public async Task<HttpResponseMessage> PostFile(string key)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", key);
                using (var content = new MultipartFormDataContent())
                {
                    using (var fileStream = new FileStream(savepath_pics + image, FileMode.Open, FileAccess.Read))
                    {
                        content.Add(new StreamContent(fileStream), "image", image);
                        content.Add(new StringContent(n.ToString()), "n");
                        content.Add(new StringContent(size), "size");
                        var res = await httpClient.PostAsync(url_image_variations, content);
                        return res;
                    }
                }
            }

As you can see the "old" code-generation model is outdated. Maybe I'm missing something, but that's what I think. Here's another example of a conversation I had about "tornadoes":

		[0]	"user, Can we talk about tornadoes?"	object {string}
		[1]	"assistant, \n\nSure, tornadoes are a fascinating phenomenon that results from powerful thunderstorms. They are rapidly rotating columns of air that extend from the base of a thunderstorm to the ground. Tornadoes can vary in size and intensity and are classified on the Enhanced Fujita scale from EF-0 to EF-5, with EF-5 being the most destructive.\n\nTornadoes can form almost anywhere in the world, but they are most common in the central and southern United States during the spring and early summer. Warm, moist air from the Gulf of Mexico collides with cool, dry air from Canada, creating the ideal conditions for tornado formation.\n\nDespite advances in technology, tornado prediction and warning systems still have limitations, and the damage caused by tornadoes can be devastating. It's important to seek shelter in a sturdy building or underground if you are in the path of a tornado."	object {string}
		[2]	"user, What are other words or terms that are in the same family as 'tornado'?"	object {string}
		[3]	"assistant, Here are some similar words and terms related to tornadoes:\n\n1. Cyclone - another term for a tornado or a similar rotating weather system in other parts of the world.\n\n2. Twister - a synonym for tornado, often used in informal language.\n\n3. Whirlwind - a fast-rotating column of air that is smaller and less destructive than a tornado.\n\n4. Vortex - a swirling mass of air or water that can occur in tornadoes, hurricanes, and other weather patterns.\n\n5. Supercell - a type of thunderstorm that often produces tornadoes, hail, and strong winds.\n\n6. Gustnado - a small, short-lived tornado that forms along the edge of a thunderstorm or dust devil.\n\n7. Tornado Alley - a region of the United States that experiences a high frequency of tornadoes, including parts of Texas, Oklahoma, Kansas, and Nebraska."	object {string}
		[4]	"user, Seems like you are telling me alot about tornadoes in the us. But what about aother parts of the world?"	object {string}
		[5]	"assistant, Yes, it's true that my previous response focused on tornadoes in the US. However, tornadoes do occur in other parts of the world as well. For example:\n\n1. Waterspout - a type of tornado that forms over water. They are often classified as weaker tornadoes but can still be dangerous for boats and ships.\n\n2. Dust devil - similar to a whirlwind or gustnado, a dust devil is a small, rapidly rotating column of air that is made visible by swirling dust or debris.\n\n3. European Tornadoes - These occur in various parts of Europe and they are often weaker compared to the US variety.\n\n4. Tropical Cyclone - A type of rotating storm system that can produce strong winds and heavy rainfall. They are known as hurricanes or typhoons depending on where in the world they occur.\n\n5. Landspout - Similar to a dust devil, a landspout is a type of tornado that forms over land instead of a rotating thunderstorm. They are typically weaker than traditional tornadoes, but can still be dangerous.\n\nOverall, tornadoes and related phenomena occur all over the world, but they may be referred to by different names depending on the location and specific characteristics of the storm."	object {string}
		[6]	"user, What about the phillipines?"	object {string}
		[7]	"assistant, Yes, tornadoes can occur in the Philippines. The country is located in a region known as the typhoon belt, where tropical cyclones, including typhoons and hurricanes, are known to occur frequently. These cyclones can produce strong winds, heavy rainfall, and sometimes tornadoes.\n\nIn the Philippines, tornadoes are sometimes referred to as \"buhawi\" or \"ipu-ipo\" in the local language. They may not occur as frequently as in other parts of the world, but they can still be dangerous and damaging when they do occur. In January 2021, for example, at least seven people were reported dead and dozens were injured when a tornado swept through the Catanduanes province in the Philippines."	object {string}
		[8]	"user, Can you give me map coordiantes of 'Catanduanes' so I know where exactly it is?"	object {string}
		[9]	"assistant, Yes, sure. The province of Catanduanes is located in the eastern part of the Philippines, and its coordinates are approximately 14.3221° N, 124.2437° E. \n\nHere's a link to a Google Maps location of Catanduanes: https://www.google.com/maps/place/Catanduanes/@14.3167297,123.8490969,9z/data=!4m5!3m4!1s0x33ad05b14a4eb367:0x703a740f38a29bc3!8m2!3d13.7927!4d124.3415"	object {string}
		[10]	"user, Thank you. So this is on the east side. Do you know if you're more subjected to cyclones on the easterb side than the west side?"	object {string}
		[11]	"assistant, Yes, generally speaking, the eastern side of the Philippines is more susceptible to tropical cyclones than the western side. This is because the Philippines lies in the Western Pacific Basin, where most tropical cyclones originate. During the typhoon season, which typically runs from June to December, the country can experience several storms, and those that enter from the east are more likely to hit the eastern side of the Philippines.\n\nThe eastern side of the Philippines, which includes the Bicol region where Catanduanes is located, is particularly vulnerable to cyclones due to its location and topography. The region is situated in the path of many typhoons, and its mountainous terrain can cause heavy rains and flash floods during storms, increasing the risk of landslides and other hazards."	object {string}
		[12]	"system, Thank you. You are a good chatbot!"	object {string}
		[13]	"assistant, You're welcome! Thank you for your kind words! Let me know if you have any more questions or if there's anything else I can help you with."	object {string}

As you can see the "assistant"(AI) is keeping up with the conversation, where I'm alternating between "user" and "assistant". I think "system" is supposed to correct or send the AI any corrections or changes. Is referee a good word???