Integración de OpenAI en una aplicación
Azure OpenAI ofrece SDK específicos del lenguaje y una API de REST que los desarrolladores pueden usar para agregar funcionalidad de inteligencia artificial a sus aplicaciones. Las funcionalidades de inteligencia artificial generativa de Azure OpenAI se proporcionan mediante modelos. Los modelos disponibles en el servicio Azure OpenAI pertenecen a diferentes familias, cada una con su propio enfoque. Para usar uno de estos modelos, debe realizar la implementación mediante Azure OpenAI Service.
Una vez que haya creado un recurso de Azure OpenAI e implementado un modelo, puede configurar la aplicación.
Puntos de conexión disponibles.
Se puede acceder a Azure OpenAI a través de una API de REST o un SDK disponible para Python, C#, JavaScript, etc. Los puntos de conexión disponibles para interactuar con un modelo implementado se usan de forma diferente y determinados puntos de conexión solo pueden usar ciertos modelos. Los puntos de conexión disponibles son:
- Finalización: el modelo toma una indicación de entrada y genera una o varias finalizaciones previstas. Verá este área de juegos en el estudio, pero no se tratará en profundidad en este módulo.
- ChatCompletion: el modelo toma la entrada, en forma de conversación de chat (donde se especifican los roles con el mensaje que se envía), y se genera la siguiente finalización del chat.
- Inserciones: el modelo toma la entrada y devuelve una representación vectorial de ella.
Por ejemplo, la entrada de ChatCompletion
es una conversación con roles claramente definidos para cada mensaje:
{"role": "system", "content": "You are a helpful assistant, teaching people about AI."},
{"role": "user", "content": "Does Azure OpenAI support multiple languages?"},
{"role": "assistant", "content": "Yes, Azure OpenAI supports several languages, and can translate between them."},
{"role": "user", "content": "Do other Azure AI Services support translation too?"}
Al dar al modelo de inteligencia artificial una conversación real, genera una mejor respuesta con un tono, una expresión y un contexto más precisos. El punto de conexión ChatCompletion
permite que el modelo tenga una conversación más realista mediante el envío del historial del chat con el siguiente mensaje de usuario.
ChatCompletion
también permite escenarios que no son de chat, como el resumen o la extracción de entidades. Esto se puede lograr proporcionando una conversación breve, especificando la información del sistema y lo que desee, junto con la entrada del usuario. Por ejemplo, si desea generar una descripción del trabajo, proporcione ChatCompletion
algo parecido a la siguiente entrada de conversación.
{"role": "system", "content": "You are an assistant designed to write intriguing job descriptions."},
{"role": "user", "content": "Write a job description for the following job title: 'Business Intelligence Analyst'. It should include responsibilities, required qualifications, and highlight benefits like time off and flexible hours."}
Nota:
Completion
está disponible para modelos de generación gpt-3
anteriores, mientras que ChatCompletion
es la única opción admitida para los modelos gpt-4
y es el punto de conexión preferido al usar el modelo gpt-35-turbo
.
Uso de la API de REST de Azure OpenAI
Azure OpenAI ofrece una API de REST para interactuar y generar respuestas que los desarrolladores puedan usar para agregar funcionalidad de IA a sus aplicaciones. En esta unidad se tratan el uso de ejemplo, la entrada y la salida de la API.
Para cada llamada a la API REST, necesita el punto de conexión y una clave del recurso de Azure OpenAI, así como el nombre que le asignó al modelo implementado. En los ejemplos a continuación se usan los marcadores de posición siguientes:
Nombre del marcador de posición | Value |
---|---|
YOUR_ENDPOINT_NAME |
Este punto de conexión base se encuentra en la sección Claves y Punto de conexión de Azure Portal. Es el punto de conexión base del recurso, como https://sample.openai.azure.com/ . |
YOUR_API_KEY |
Las claves se encuentran en la sección Claves y Punto de conexión de Azure Portal. Puede usar cualquiera de ellas para el recurso. |
YOUR_DEPLOYMENT_NAME |
Este nombre de implementación es el que ha proporcionado al implementar el modelo en Fundición de IA de Azure. |
Finalizaciones de chat
Una vez implementado un modelo en el recurso de Azure OpenAI, envíe un mensaje al servicio mediante una solicitud POST
.
curl https://YOUR_ENDPOINT_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/chat/completions?api-version=2023-03-15-preview \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d '{"messages":[{"role": "system", "content": "You are a helpful assistant, teaching people about AI."},
{"role": "user", "content": "Does Azure OpenAI support multiple languages?"},
{"role": "assistant", "content": "Yes, Azure OpenAI supports several languages, and can translate between them."},
{"role": "user", "content": "Do other Azure AI Services support translation too?"}]}'
La respuesta de la API será similar al siguiente JSON:
{
"id": "chatcmpl-6v7mkQj980V1yBec6ETrKPRqFjNw9",
"object": "chat.completion",
"created": 1679001781,
"model": "gpt-35-turbo",
"usage": {
"prompt_tokens": 95,
"completion_tokens": 84,
"total_tokens": 179
},
"choices": [
{
"message":
{
"role": "assistant",
"content": "Yes, other Azure AI Services also support translation. Azure AI Services offer translation between multiple languages for text, documents, or custom translation through Azure AI Services Translator."
},
"finish_reason": "stop",
"index": 0
}
]
}
Los puntos de conexión de REST permiten especificar otros parámetros de entrada opcionales, como temperature
, max_tokens
y muchos más. Si desea incluir cualquiera de esos parámetros en la solicitud, agréguelos a los datos de entrada con la solicitud.
Inserciones
Las inserciones son útiles para formatos específicos que los modelos de aprendizaje automático consumen fácilmente. Para generar inserciones a partir del texto de entrada, envíe una solicitud POST
al punto de conexión embeddings
.
curl https://YOUR_ENDPOINT_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/embeddings?api-version=2022-12-01 \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d "{\"input\": \"The food was delicious and the waiter...\"}"
Al generar inserciones, asegúrese de usar un modelo en Azure OpenAI destinado para ellas. Esos modelos comienzan por text-embedding
o text-similarity
, en función de la funcionalidad deseada.
La respuesta de la API será similar al siguiente JSON:
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [
0.0172990688066482523,
-0.0291879814639389515,
....
0.0134544348834753042,
],
"index": 0
}
],
"model": "text-embedding-ada:002"
}
Uso de Azure OpenAI con SDK
Además de las API REST, los usuarios también pueden acceder a los modelos de Azure OpenAI a través de SDK de C# y Python. La misma funcionalidad está disponible mediante REST y estos SDK.
Para ambos SDK que se tratan en esta unidad, necesita el punto de conexión y una clave del recurso Azure OpenAI, junto con el nombre que asignó al modelo implementado. En los fragmentos de código siguientes, se usan los siguientes marcadores de posición:
Nombre del marcador de posición | Value |
---|---|
YOUR_ENDPOINT_NAME |
Este punto de conexión base se encuentra en la sección Claves y Punto de conexión de Azure Portal. Es el punto de conexión base del recurso, como https://sample.openai.azure.com/ . |
YOUR_API_KEY |
Las claves se encuentran en la sección Claves y Punto de conexión de Azure Portal. Puede usar cualquiera de ellas para el recurso. |
YOUR_DEPLOYMENT_NAME |
Este nombre de implementación es el nombre proporcionado al implementar el modelo. |
Instalar bibliotecas
En primer lugar, instale la biblioteca cliente correspondiente a su lenguaje preferido. El SDK de C# es una adaptación de .NET de las API REST y se ha creado específicamente para Azure OpenAI, pero se puede usar para conectarse a recursos de Azure OpenAI o a puntos de conexión que no son de Azure OpenAI. OpenAI crea y mantiene el SDK de Python.
dotnet add package Azure.AI.OpenAI --version <insert preferred version>
pip install openai
Configuración de la aplicación para acceder al recurso Azure OpenAI
La configuración para cada lenguaje varía ligeramente, pero ambos requieren que se establezcan los mismos parámetros. Los parámetros necesarios son endpoint
, key
y deployment name
.
Agregue la biblioteca a la aplicación y establezca los parámetros necesarios para el cliente.
// Add Azure OpenAI packages
using Azure.AI.OpenAI;
using OpenAI.Chat;
// Define parameters and initialize the client
string endpoint = "<YOUR_ENDPOINT_NAME>";
string key = "<YOUR_API_KEY>";
string deploymentName = "<YOUR_DEPLOYMENT_NAME>";
AzureOpenAIClient azureClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
ChatClient chatClient = azureClient.GetChatClient(deploymentName);
# 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
)
Llamada al recurso Azure OpenAI
Una vez que haya configurado la conexión a Azure OpenAI, envíe la indicación al modelo.
// Get chat completion
ChatCompletion completion = chatClient.CompleteChat(
[
new SystemChatMessage(systemMessage),
new UserChatMessage(userMessage),
]);
// Print the response
Console.WriteLine($"{completion.Role}: {completion.Content[0].Text}");
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")
El objeto de respuesta contiene varios valores, como total_tokens
y finish_reason
. La finalización del objeto de respuesta será similar a la siguiente finalización:
"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."
En C# y Python, la llamada puede incluir parámetros opcionales, incluidos temperature
y max_tokens
.