How to integrate OpenAI API (Text, Codex, DALL-e, ChatGPT coming soon) in your .NET Core app in 15 minutes

OpenAI API overview (from Open AI)

The OpenAI API can be applied to virtually any task that involves understanding or generating natural language or code. We offer a spectrum of models with different levels of power suitable for different tasks, as well as the ability to fine-tune your own custom models. These models can be used for everything from content generation to semantic search and classification.

To makes it a little more understandable, so with OpenAI API you can : generate and edit text, generate/edit/explain code, generate and edit images, train a model, search, classify and comapre text. Checkt the documentation here.

We will use DaVinci GPT-3 model in our app, but you can try other models :

LATEST MODELDESCRIPTIONMAX REQUESTTRAINING DATA
text-davinci-003Most capable GPT-3 model. Can do any task the other models can do, often with higher quality, longer output and better instruction-following. Also supports inserting completions within text.4,000 tokensUp to Jun 2021
text-curie-001Very capable, but faster and lower cost than Davinci.2,048 tokensUp to Oct 2019
text-babbage-001Capable of straightforward tasks, very fast, and lower cost.2,048 tokensUp to Oct 2019
text-ada-001Capable of very simple tasks, usually the fastest model in the GPT-3 series, and lowest cost.2,048 tokensUp to Oct 2019

Important : today (02/17/2023), ChatGPT API is not yet available but OpenAI indicates that it will come soon.

Phase 1 : get your secret API key

  1. Go to the OpenAI website and create a new account
  2. Signup for an OpenAI account
  3. Confirm your email address
  4. Log in to your account and navigate to the ‘View API keys’ dashboard
  5. Click on ‘Create a new secret key’

Store your API key in a secure location. You can test the API right now, but if you intend to use OpenAI API in a real workld case scanerio, check OpenAI documentation for details on usage and pricing.

 Phase 2 : create you .NET Core project to consume OpenAI API

  1. Open Visual Studio 2022
  2. Create a new .NET Core project (in my case a Web API)
  3. Install the ‘OpenAI‘ NuGet package as below :

4. In your program.cs file, just copy the following code (replace the apiKey with yours, generated in phase 1)

using OpenAI_API;
using OpenAI_API.Completions;

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.UseHttpsRedirection();

app.MapGet("/givemesecretoftheuniverse", (string prompt) =>
{
    var apiKey = "sk-5ucaz1m00000000000000000000000000000000";
    var answer = string.Empty;

    var openAIAPI = new OpenAIAPI(apiKey);

    var completionRequest = new CompletionRequest
    {
        Prompt = prompt,
        Model = OpenAI_API.Models.Model.DavinciText,
        MaxTokens = 2000
    };

    try
    {
        var result = openAIAPI.Completions.CreateCompletionAsync(completionRequest);

        if (result != null)
        {
            foreach (var item in result.Result.Completions)
            {
                answer += item.Text;
            }
            return Results.Text("Answer of the universe : " + answer);
        }
        else
        {
            return Results.BadRequest("Not found");
        }
    }
    catch (Exception)
    {
        return Results.Problem("OpenAI API is not available or key are incorrect");
    }
});

app.Run();

5. Run your application, and open your Postman app or your favorite web browser to open the following URL : https://<your computer ip / localhost>:<your project port>/givemesecretoftheuniverse?prompt=what is the secret of the universe

6. The flow of the power of OpenAI will flow throught your screen 😁🚀🌚

More possibilities 🚀😁

As said earlier, you can use Codex, Dall-E, etc from OpenAI just by changing the Model = OpenAI_API.Models.Model statement and adapt your code consequently. Today, ChatGPT API is not yet available but OpenAI indicates that it will come soon.

You can also try this .NET library which is pretty cool as well : https://github.com/betalgo/openai

Conclusion

Integrating OpenAI APIs into your application is just as easy as creating a minimal API with .NET Core, so test it, learn it, and make our world a better one. With ChatGPT coming soon, accessible AI is becoming a reality.

Dall-E image generator directly accessible from Edge

Tired of MidJourney Discord chat based image generator or to log in Open AI ? This week, Microsoft discretly adds a shortcut in Edge to bring image generation directly to Edge users in the UI. To enable this feature :

  1. Get the lastest version of Edge
  2. Click on the + button in the right side panel
  3. Check the ‘Image creator’

4. Connect your to Microsoft account :

5. Play with Dall-E (25 credits) without quitting Edge :

You’ll be able to get your creation history by clicking on the ‘My creations’ tab. Happy image generation 🚀

Développer sous VS Code / Windows en remote sur un Linux WSL / Github Codespaces en quelques minutes

Grand fan de WSL (sous-système Linux) qui apporte à Windows la touche manquante comparé à un environnement de développement Mac : un véritable Shell Linux/Unix. WSL rend accessible bon nombre d’outils de développement uniquement disponible sous Linux (ou s’exécutant mieux et avec moins de configuration et de dépendances).

A cela s’ajoute le fait que vous pouvez avoir plusieurs sous-systèmes Linux et vous en servir comme environnement de développement dédié, et cela sans avoir besoin de lancer une VM Hyper-V coûteuse en ressources et une intégration avec Windows beaucoup moindre (accès aux fichiers directement, intégration Visual Studio, etc). Pas besoin donc de déployer tous les runtimes et langages (Python, Ruby, Go, NodeJS, etc) sur votre machine de production Windows.

Cet article vous présente le développement avec un environnement distant WSL, mais cela s’applique à bon nombre d’autres scénarios dont le service Github Codespaces.

Prérequis

  • Windows Terminal : la fine fleur du terminal sous Windows (même si Commander a encore un peu d’avance mais Terminal suffit largement dans la majorité des scénario)
  • WSL installé (Windows 10/11) : voir la documentation suivante et avec une distribution déployée
  • Extensions Visual Studio Code :
    • Remote – WSL

Installation de VS Code Server sur vos distro WSL

En une ligne : dans votre shell Terminal connecté à votre système WSL, saisissez :

code

Laissez le système installer le serveur (hôte) tout seul :

Puis laissez VS Code s’ouvrir pour vous tout seul :

En prime vous aurez droit d’avoir un walkthroughs « Get started with Remote -WSl » à vous mettre sous la dent pendant quelques minutes pour vous aider dans vos premiers pas à bien comprendre le développement remote sur votre distro Linux.

Vous pourrez aussi ouvrir directement le répertoire courant dans lequel vous avez lancer code grâce à l’explorateur :

Le terminal VS Code est déjà directement branché sur votre shell WSL :

Vous pouvez maintenant installer tous les langages et les extensions nécessaires pour faire de votre WSL votre environnement de développement.

Extensions

Les extensions de votre VS Code ne seront pas activées dans cette configuration de travail à distance sur votre instance WSL. En réalité, ils n’ont pas les droits pour accéder aux fichiers distants ni d’exécuter des scripts à distance. C’est pour cela qu’il existe des extensions de « lieu de travail » – on utilisera workspace pour la suite 🙄 – qui eux s’exécutent dans l’environnement distant et peuvent donc accéder aux fichiers, permettre de débugger, exécuter des scripts, etc. (voir schéma dans la partie suivante pour mieux comprendre l’architecture).

Il faudra les réinstaller dans l’hôte de travail à distance WSL :

Attention : soyez patient il faudra parfois un peu de temps pour que l’extension s’installe et que l’UI de VS Code réagisse pour vous dire que c’est en cours ou installé.

Optionnel : comment ça marche techniquement ?

Je ne ferais pas mieux que la documentation qui vous présente cela très bien : Supporting Remote Development and GitHub Codespaces | Visual Studio Code Extension API

Bonne lecture pour les plus techniques d’entre vous.

Conclusion

Que dire à part : à vous les joies d’un environnement de développement Linux tout en restant sur votre Windows pour utiliser le meilleur de ces deux mondes !

Vous pourrez trouver quelques informations supplémentaires spécifiques à l’utilisation d’un environnement distant WSL dans la documentation Developing in the Windows Subsystem for Linux with Visual Studio Code.