Usare Azure OpenAI SDK

Completato

Oltre alle API REST descritte nell'unità precedente, gli utenti possono accedere ai modelli del Servizio OpenAI di Azure tramite SDK C# e Python. La stessa funzionalità è disponibile sia tramite REST che tramite questi SDK.

Nota

Prima di interagire con l'API usando uno degli SDK, è necessario creare una risorsa del Servizio OpenAI di Azure nel portale di Azure, distribuire un modello in tale risorsa e recuperare l'endpoint e le chiavi. Vedere l'Introduzione al Servizio OpenAI di Azure per informazioni su come eseguire questa operazione.

Per entrambi gli SDK trattati in questa unità, sono necessari l'endpoint e una chiave della risorsa del Servizio OpenAI di Azure e il nome assegnato per il modello distribuito. Nei frammenti di codice seguenti vengono usati i segnaposto seguenti:

Nome segnaposto Valore
YOUR_ENDPOINT_NAME Questo endpoint di base è disponibile nella sezione Chiavi ed endpoint nel portale di Azure. È l'endpoint di base della risorsa, ad esempio https://sample.openai.azure.com/.
YOUR_API_KEY Le chiavi sono disponibili nella sezione Chiavi ed endpoint nel portale di Azure. È possibile usare una delle due chiavi per la risorsa.
YOUR_DEPLOYMENT_NAME Questo nome di distribuzione è il nome specificato quando è stato distribuito il modello in Azure AI Studio.

Installare le librerie

Prima di tutto, installare la libreria client per il linguaggio preferito. C# SDK è un adattamento .NET delle API REST ed è stato creato in modo specifico per il Servizio OpenAI di Azure, ma può essere usato per connettersi alle risorse del Servizio OpenAI di Azure o agli endpoint OpenAI non Azure. Python SDK viene compilato e gestito da OpenAI.

dotnet add package Azure.AI.OpenAI --version <insert preferred version>
pip install openai

Configurare l'app per accedere alla risorsa del Servizio OpenAI di Azure

La configurazione per ogni linguaggio varia leggermente, ma entrambi richiedono l'impostazione degli stessi parametri. I parametri necessari sono endpoint, key e il nome della distribuzione, denominato engine quando si invia il prompt al modello.

Aggiungere la libreria all'app e impostare i parametri necessari per il client.

// Add OpenAI library
using Azure.AI.OpenAI;

// Define parameters and initialize the client
string endpoint = "<YOUR_ENDPOINT_NAME>";
string key = "<YOUR_API_KEY>";
string deploymentName = "<YOUR_DEPLOYMENT_NAME>"; 

OpenAIClient client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
# Add OpenAI library
from openai import AzureOpenAI

deployment_name = '<YOUR_DEPLOYMENT_NAME>' 

# Initialize the Azure OpenAI client
client = AzureOpenAI(
        azure_endpoint = '<YOUR_ENDPOINT_NAME>', 
        api_key='<YOUR_API_KEY>',  
        api_version="20xx-xx-xx" #  Target version of the API, such as 2024-02-15-preview
        )

Chiamare la risorsa del Servizio OpenAI di Azure

Dopo aver configurato la connessione al Servizio OpenAI di Azure, inviare la richiesta al modello.

// Build completion options object
ChatCompletionsOptions chatCompletionsOptions = new ChatCompletionsOptions()
{
    Messages =
    {
        new ChatRequestSystemMessage("You are a helpful AI bot."),
        new ChatRequestUserMessage("What is Azure OpenAI?"),
    },
    DeploymentName = deploymentName
};

// Send request to Azure OpenAI model
ChatCompletions response = client.GetChatCompletions(chatCompletionsOptions);

// Print the response
string completion = response.Choices[0].Message.Content;
Console.WriteLine("Response: " + completion + "\n");
response = client.chat.completions.create(
    model=deployment_name,
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is Azure OpenAI?"}
    ]
)
generated_text = response.choices[0].message.content

# Print the response
print("Response: " + generated_text + "\n")

L'oggetto risposta contiene diversi valori, ad esempio total_tokens e finish_reason. Il completamento dell'oggetto risposta sarà simile al completamento seguente:

"Azure OpenAI is a cloud-based artificial intelligence (AI) service that offers a range of tools and services for developing and deploying AI applications. Azure OpenAI provides a variety of services for training and deploying machine learning models, including a managed service for training and deploying deep learning models, a managed service for deploying machine learning models, and a managed service for managing and deploying machine learning models."

Sia in C# che in Python, la chiamata può includere parametri facoltativi, tra cui temperature e max_tokens. Gli esempi di utilizzo di questi parametri sono inclusi nel lab di questo modulo.