DEV Community

Cover image for Using Azure OpenAI Service (GPT-4) in .NET
Daniel Gomez
Daniel Gomez

Posted on

44 1 1

Using Azure OpenAI Service (GPT-4) in .NET

Hey, there! In this tutorial, we'll see how to call an Azure OpenAI Service GPT model from C#.

Required data from Azure:

Key and endpoint - We can find this information in the Keys and endpoint section in our Azure OpenAI Service resource.

Azure Resource - Key and endpoint

Deployment name - This would be the instance of the model to use. In this case, we can go to the Azure OpenAI Service studio, and in the Deployments section specify a new one:

Azure OpenAI Service - Deployments

Azure OpenAI client library for .NET

Azure OpenAI client library for .NET is an adaptation of OpenAI's REST APIs that provides an idiomatic interface and rich integration with the rest of the Azure SDK ecosystem.

This library will allow us to use the GPT model from C#.

NuGet package: Azure.AI.OpenAI



dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.12


Enter fullscreen mode Exit fullscreen mode

Code in C#

With the NuGet package installed, this is a C# class that will allow us to generate new text content using a specified prompt:



using Azure.AI.OpenAI;
using Azure;

namespace GenerativeAI;

public class AzureOpenAIGPT
{
    const string key = "YOUR_KEY";
    const string endpoint = "https://YOUR_RESOURCE_NAME.openai.azure.com/";
    const string deploymentOrModelName = "YOUR_DEPLOYMENT_NAME";

    public async Task<string> GetContent(string prompt)
    {
        var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

        var chatCompletionsOptions = new ChatCompletionsOptions
        {
            DeploymentName = deploymentOrModelName,
            Temperature = (float)0.5,
            MaxTokens = 800,
            NucleusSamplingFactor = (float)0.95,
            FrequencyPenalty = 0,
            PresencePenalty = 0,
        };

        chatCompletionsOptions.Messages.Add(new ChatRequestUserMessage(prompt));
        var response = await client.GetChatCompletionsAsync(chatCompletionsOptions);

        return response.Value.Choices[0].Message.Content;
    }
}


Enter fullscreen mode Exit fullscreen mode

In this code, it is important to mention that there are three types of messages or roles that can be considered for the interaction:

  • ChatRequestSystemMessage: represent instructions or other guidance about how the assistant should behave.
  • ChatRequestUserMessage: represent current or historical input from the end user.
  • ChatRequestAssistantMessage: represent historical responses from the assistant.

Example of a call from the console:



var gpt = new AzureOpenAIGPT();
var gptPrompt = "Generate a definition of Azure OpenAI Service";

Console.WriteLine($"{await gpt.GetContent(gptPrompt)}");


Enter fullscreen mode Exit fullscreen mode

Results in console

Thanks for reading!

If you have any questions or ideas in mind, it'll be a pleasure to be able to be in communication with you, and together exchange knowledge with each other.

Additional Resources:

Contact:
X / LinkedIn - esdanielgomez.com

Image of AssemblyAI

Automatic Speech Recognition with AssemblyAI

Experience near-human accuracy, low-latency performance, and advanced Speech AI capabilities with AssemblyAI's Speech-to-Text API. Sign up today and get $50 in API credit. No credit card required.

Try the API

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay