Partilhar via


Guia de início rápido: introdução ao uso dos Assistentes do Azure OpenAI (Visualização)

O Azure OpenAI Assistants (Pré-visualização) permite-lhe criar assistentes de IA adaptados às suas necessidades através de instruções personalizadas e aumentadas por ferramentas avançadas, como um interpretador de código e funções personalizadas.

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Pré-requisitos

Ir para o Azure AI Studio (Pré-visualização)

O Azure AI Studio permite-lhe utilizar os Assistentes v2, que fornecem várias atualizações, como a ferramenta de pesquisa de ficheiros, que é mais rápida e suporta mais ficheiros.

  1. Entre no Azure AI Studio.

  2. Vá para o seu projeto ou crie um novo projeto no Azure AI Studio.

  3. Na visão geral do projeto, selecione Assistentes, localizado em Playground do projeto.

    O playground de Assistentes permite que você explore, prototipe e teste Assistentes de IA sem a necessidade de executar qualquer código. A partir desta página, você pode iterar e experimentar novas ideias rapidamente.

    O playground oferece várias opções para configurar seu Assistente. Nas etapas a seguir, você usará o painel de configuração do Assistente para criar um novo assistente de IA.

    Name Descrição
    Nome do assistente O nome de implementação associado a um modelo específico.
    Instruções As instruções são semelhantes às mensagens do sistema. É aqui que dá orientações ao modelo sobre como se deve comportar e qualquer contexto que deve referenciar ao gerar uma resposta. Pode descrever a personalidade do assistente, dizer-lhe o que deve ou não responder e indicar-lhe como formatar as respostas. Também pode fornecer exemplos dos passos que deve seguir para dar as respostas.
    Implementação É aqui que define a implementação de modelo a utilizar no assistente.
    Funções Crie definições de função personalizadas para os modelos para formular chamadas de API e estruturar saídas de dados com base em suas especificações. Não utilizado neste início rápido.
    Interpretador de código O interpretador de código fornece acesso a um ambiente Python em sandbox que pode ser utilizado para permitir ao modelo testar e executar código.
    Ficheiros Pode carregar até 10.000 ficheiros, com um tamanho máximo de 512 MB para utilizar com ferramentas. Não utilizado neste início rápido.

    Captura de ecrã do ecrã de configuração do Assistente sem todos os valores preenchidos.

Crie o seu primeiro Assistente

  1. Selecione sua implantação na lista suspensa Implantações .

  2. Na lista suspensa Configuração do Assistente, selecione Novo.

  3. Dê um nome ao seu Assistente.

  4. Digite as seguintes instruções "Você é um assistente de IA que pode escrever código para ajudar a responder a perguntas de matemática"

  5. Selecione uma implantação de modelo. Recomendamos testar com um dos modelos gpt-4 mais recentes.

  6. Selecione a alternância ativando o interpretador de código.

  7. Selecione Guardar.

    Captura de ecrã do assistente com os detalhes de configuração introduzidos.

  8. Digite uma pergunta para o assistente responder: "Eu preciso resolver a equação 3x + 11 = 14. Você pode me ajudar?"

  9. Selecione o botão Adicionar e executar

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

    Embora possamos ver que a resposta está correta, para confirmar que o modelo usou o interpretador de código para chegar a essa resposta e que o código que ele escreveu é válido em vez de apenas repetir uma resposta dos dados de treinamento do modelo, faremos outra pergunta.

  10. Digite a pergunta seguinte: "Mostre-me o código que você executou para obter esta solução."

    Sure. The code is very straightforward
    
    # calculation
    x = (14 - 11) / 3
    x
    
    
    First, we subtract 11 from 14, then divide the result by 3. This gives us the value of x which is 1.0.
    

    Captura de ecrã da sessão de conversação no parque infantil do Assistente.

Você também pode consultar os logs no painel direito para confirmar que o interpretador de código foi usado e para validar o código que foi executado para gerar a resposta. É importante lembrar que, embora o interpretador de código dê ao modelo a capacidade de responder a perguntas matemáticas mais complexas, convertendo as perguntas em código e executando em um ambiente Python em área restrita, você ainda precisa validar a resposta para confirmar se o modelo traduziu corretamente sua pergunta em uma representação válida no código.

Conceitos-chave

Ao usar o playground dos assistentes, tenha em mente os seguintes conceitos.

Ferramentas

Um assistente individual pode aceder a até 128 ferramentas, incluindo code interpreter, bem como a quaisquer ferramentas personalizadas que crie através de funções.

Sessão de chat

A sessão de bate-papo, também conhecida como thread dentro da API do Assistente, é onde ocorre a conversa entre o usuário e o assistente. Ao contrário das chamadas tradicionais de conclusão de chat, não há limite para o número de mensagens em um thread. O assistente irá comprimir automaticamente os pedidos para se ajustar ao limite do token de entrada do modelo.

Isso também significa que você não está controlando quantos tokens são passados para o modelo durante cada turno da conversa. O gerenciamento de tokens é abstraído e tratado inteiramente pela API de Assistentes.

Selecione o botão Limpar bate-papo para excluir o histórico de conversas atual.

Abaixo da caixa de entrada de texto há dois botões:

  • Adicione uma mensagem sem executar.
  • Adicione e execute.

Registos

Os logs fornecem um instantâneo detalhado da atividade da API do assistente.

Mostrar painéis

Por padrão, há três painéis: configuração do assistente, sessão de bate-papo e Logs. Mostrar painéis permite adicionar, remover e reorganizar os painéis. Se você fechar um painel e precisar recuperá-lo, use Mostrar painéis para restaurar o painel perdido.

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Como alternativa, você pode excluir o assistente ou thread por meio da API do assistente.

Consulte também

Documentação | de referência Pacote de código-fonte | da biblioteca (PyPi) |

Pré-requisitos

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Python 3.8 ou versão posterior
  • As seguintes bibliotecas Python: os, openai (Versão 1.x é necessária)
  • CLI do Azure usada para autenticação sem senha em um ambiente de desenvolvimento local, crie o contexto necessário entrando com a CLI do Azure.
  • Um recurso OpenAI do Azure com um modelo compatível em uma região suportada.
  • Recomendamos rever a nota de transparência da IA Responsável e outros recursos de IA Responsável para se familiarizar com as capacidades e limitações do Serviço OpenAI do Azure.
  • Um recurso OpenAI do Azure com o modelo implantado gpt-4 (1106-preview) foi usado testando este exemplo.

Para autenticação sem senha, você precisa

  1. Use o pacote azure-identity .
  2. Atribua a Cognitive Services User função à sua conta de utilizador. Isso pode ser feito no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
  3. Entre com a CLI do Azure, como az login.

Configurar

  1. Instale a biblioteca de cliente OpenAI Python com:
pip install openai
  1. Para a autenticação sem senha recomendada :
pip install azure-identity

Nota

  • A pesquisa de arquivos pode ingerir até 10.000 arquivos por assistente - 500 vezes mais do que antes. É rápida, suporta consultas paralelas através de pesquisas multi-thread e apresenta reclassificação e reescrita de consultas melhoradas.
    • O arquivo de vetores é um novo objeto da API. Depois de um ficheiro ser adicionado a um arquivo de vetores, é automaticamente analisado, fragmentado e incorporado, ficando pronto para ser pesquisado. Os arquivos de vetores podem ser utilizados entre assistentes e threads, o que simplifica a gestão de ficheiros e a faturação.
  • Adicionamos suporte para o tool_choice parâmetro que pode ser usado para forçar o uso de uma ferramenta específica (como pesquisa de arquivos, interpretador de código ou uma função) em uma execução específica.

Nota

Esta biblioteca é mantida pela OpenAI. Consulte o histórico de versões para acompanhar as atualizações mais recentes da biblioteca.

Recuperar chave e ponto de extremidade

Para fazer uma chamada com êxito no serviço Azure OpenAI, você precisará do seguinte:

Nome da variável Value
ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure. Você também pode encontrar o ponto de extremidade por meio da página Implantações no Azure AI Studio. Um exemplo de ponto de extremidade é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.
DEPLOYMENT-NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure ou por meio da página Implantações no Azure AI Studio.

Vá para o seu recurso no portal do Azure. As chaves e o ponto de extremidade podem ser encontrados na seção Gerenciamento de recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe rodar e regenerar chaves de forma segura sem causar uma interrupção do serviço.

Captura de ecrã da folha de descrição geral de um recurso do Azure OpenAI no portal do Azure com a localização das chaves de acesso do ponto de extremidade & circulada a vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Cofre de Chaves do Azure. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um assistente

No nosso código vamos especificar os seguintes valores:

Name Descrição
Nome do assistente O nome de implementação associado a um modelo específico.
Instruções As instruções são semelhantes às mensagens do sistema. É aqui que dá orientações ao modelo sobre como se deve comportar e qualquer contexto que deve referenciar ao gerar uma resposta. Pode descrever a personalidade do assistente, dizer-lhe o que deve ou não responder e indicar-lhe como formatar as respostas. Também pode fornecer exemplos dos passos que deve seguir para dar as respostas.
Modelo É aqui que você define qual nome de implantação de modelo usar com seu assistente. A ferramenta de recuperação requer gpt-35-turbo (1106) ou gpt-4 (1106-preview) modelo. Defina esse valor para o nome da implantação, não para o nome do modelo, a menos que seja o mesmo.
Interpretador de código O interpretador de código fornece acesso a um ambiente Python em sandbox que pode ser utilizado para permitir ao modelo testar e executar código.

Ferramentas

Um assistente individual pode aceder a até 128 ferramentas, incluindo code interpreter, bem como a quaisquer ferramentas personalizadas que crie através de funções.

Criar o aplicativo Python

Entre no Azure com az login e crie e execute um assistente com o seguinte exemplo recomendado de Python sem senha:

import os
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")

client = AzureOpenAI(
    azure_ad_token_provider=token_provider,
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Para usar a chave da API de serviço para autenticação, você pode criar e executar um assistente com o seguinte exemplo de Python:

import os
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Saída

Execução concluída com status: concluído

{
  "data": [
    {
      "id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
      "assistant_id": "asst_cYqL1RuwLyFV3HU1gkaE2k0K",
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
          },
          "type": "text"
        }
      ],
      "created_at": 1716397091,
      "metadata": {},
      "object": "thread.message",
      "role": "assistant",
      "run_id": "run_hFgBPbUtO8ZNTnNPC8PgpH1S",
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    },
    {
      "id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
      "assistant_id": null,
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
          },
          "type": "text"
        }
      ],
      "created_at": 1716397025,
      "metadata": {},
      "object": "thread.message",
      "role": "user",
      "run_id": null,
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    }
  ],
  "object": "list",
  "first_id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
  "last_id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
  "has_more": false
}

Compreender os seus resultados

Neste exemplo, criamos um assistente com o interpretador de código habilitado. Quando fazemos uma pergunta matemática ao assistente, ele traduz a pergunta em código python e executa o código em ambiente sandboxed para determinar a resposta à pergunta. O código que o modelo cria e testa para chegar a uma resposta é:

from sympy import symbols, Eq, solve  
  
# Define the variable  
x = symbols('x')  
  
# Define the equation  
equation = Eq(3*x + 11, 14)  
  
# Solve the equation  
solution = solve(equation, x)  
solution  

É importante lembrar que, embora o interpretador de código dê ao modelo a capacidade de responder a consultas mais complexas, convertendo as perguntas em código e executando esse código iterativamente na sandbox do Python até chegar a uma solução, você ainda precisa validar a resposta para confirmar se o modelo traduziu corretamente sua pergunta em uma representação válida no código.

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Consulte também

Documentação | de referência: Pacote de código-fonte | (NuGet)

Pré-requisitos

Configurar

Criar uma nova aplicação .NET Core

  1. Em uma janela de console (como cmd, PowerShell ou Bash), use o dotnet new comando para criar um novo aplicativo de console com o nome azure-openai-quickstart:

    dotnet new console -n azure-openai-assistants-quickstart
    
  2. Mude para o diretório da pasta do aplicativo recém-criada e crie o aplicativo com o dotnet build comando:

    dotnet build
    

    A saída da compilação não deve conter avisos ou erros.

    ...
    Build succeeded.
     0 Warning(s)
     0 Error(s)
    ...
    
  3. Instale a biblioteca de cliente OpenAI .NET com o comando dotnet add package:

    dotnet add package Azure.AI.OpenAI --prerelease
    

Recuperar chave e ponto de extremidade

Para fazer uma chamada com êxito no Azure OpenAI, você precisa de um ponto de extremidade e uma chave.

Nome da variável Value
ENDPOINT O ponto de extremidade do serviço pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o ponto de extremidade por meio da página Implantações no Azure AI Studio. Um exemplo de ponto de extremidade é: https://docs-test-001.openai.azure.com/.
API-KEY Este valor pode ser encontrado na secção Chaves e Ponto Final ao examinar o recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.

Vá para o seu recurso no portal do Azure. A seção Chaves & Ponto Final pode ser encontrada na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe rodar e regenerar chaves de forma segura sem causar uma interrupção do serviço.

Captura de ecrã da IU de descrição geral de um recurso OpenAI do Azure no portal do Azure com a localização do ponto de extremidade e das chaves de acesso em vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Cofre de Chaves do Azure. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

A autenticação sem senha é mais segura do que as alternativas baseadas em chave e é a abordagem recomendada para se conectar aos serviços do Azure. Se você escolher a autenticação sem senha, precisará concluir o seguinte:

  1. Adicione o pacote Azure.Identity.

    dotnet add package Azure.Identity
    
  2. Atribua a Cognitive Services User função à sua conta de utilizador. Isso pode ser feito no portal do Azure em seu recurso OpenAI em Controle de acesso (IAM)>Adicionar atribuição de função.

  3. Entre no Azure usando o Visual Studio ou a CLI do Azure via az login.

Criar o assistente

Atualize o Program.cs arquivo com o seguinte código para criar um assistente:

using Azure;
using Azure.AI.OpenAI.Assistants;

// Assistants is a beta API and subject to change
// Acknowledge its experimental status by suppressing the matching warning.
string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

// Use for passwordless auth
//var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

FileClient fileClient = openAIClient.GetFileClient();
AssistantClient assistantClient = openAIClient.GetAssistantClient();

// First, let's contrive a document we'll use retrieval with and upload it.
using Stream document = BinaryData.FromString("""
            {
                "description": "This document contains the sale history data for Contoso products.",
                "sales": [
                    {
                        "month": "January",
                        "by_product": {
                            "113043": 15,
                            "113045": 12,
                            "113049": 2
                        }
                    },
                    {
                        "month": "February",
                        "by_product": {
                            "113045": 22
                        }
                    },
                    {
                        "month": "March",
                        "by_product": {
                            "113045": 16,
                            "113055": 5
                        }
                    }
                ]
            }
            """).ToStream();

OpenAIFileInfo salesFile = await fileClient.UploadFileAsync(
    document,
    "monthly_sales.json",
    FileUploadPurpose.Assistants);

// Now, we'll create a client intended to help with that data
AssistantCreationOptions assistantOptions = new()
{
    Name = "Example: Contoso sales RAG",
    Instructions =
        "You are an assistant that looks up sales data and helps visualize the information based"
        + " on user queries. When asked to generate a graph, chart, or other visualization, use"
        + " the code interpreter tool to do so.",
    Tools =
            {
                new FileSearchToolDefinition(),
                new CodeInterpreterToolDefinition(),
            },
    ToolResources = new()
    {
        FileSearch = new()
        {
            NewVectorStores =
                    {
                        new VectorStoreCreationHelper([salesFile.Id]),
                    }
        }
    },
};

Assistant assistant = await assistantClient.CreateAssistantAsync(deploymentName, assistantOptions);

// Create and run a thread with a user query about the data already associated with the assistant
ThreadCreationOptions threadOptions = new()
{
    InitialMessages = { "How well did product 113045 sell in February? Graph its trend over time." }
};

ThreadRun threadRun = await assistantClient.CreateThreadAndRunAsync(assistant.Id, threadOptions);

// Check back to see when the run is done
do
{
    Thread.Sleep(TimeSpan.FromSeconds(1));
    threadRun = assistantClient.GetRun(threadRun.ThreadId, threadRun.Id);
} while (!threadRun.Status.IsTerminal);

// Finally, we'll print out the full history for the thread that includes the augmented generation
AsyncCollectionResult<ThreadMessage> messages
    = assistantClient.GetMessagesAsync(
        threadRun.ThreadId,
        new MessageCollectionOptions() { Order = MessageCollectionOrder.Ascending });

await foreach (ThreadMessage message in messages)
{
    Console.Write($"[{message.Role.ToString().ToUpper()}]: ");
    foreach (MessageContent contentItem in message.Content)
    {
        if (!string.IsNullOrEmpty(contentItem.Text))
        {
            Console.WriteLine($"{contentItem.Text}");

            if (contentItem.TextAnnotations.Count > 0)
            {
                Console.WriteLine();
            }

            // Include annotations, if any.
            foreach (TextAnnotation annotation in contentItem.TextAnnotations)
            {
                if (!string.IsNullOrEmpty(annotation.InputFileId))
                {
                    Console.WriteLine($"* File citation, file ID: {annotation.InputFileId}");
                }
                if (!string.IsNullOrEmpty(annotation.OutputFileId))
                {
                    Console.WriteLine($"* File output, new file ID: {annotation.OutputFileId}");
                }
            }
        }
        if (!string.IsNullOrEmpty(contentItem.ImageFileId))
        {
            OpenAIFileInfo imageInfo = await fileClient.GetFileAsync(contentItem.ImageFileId);
            BinaryData imageBytes = await fileClient.DownloadFileAsync(contentItem.ImageFileId);
            using FileStream stream = File.OpenWrite($"{imageInfo.Filename}.png");
            imageBytes.ToStream().CopyTo(stream);

            Console.WriteLine($"<image: {imageInfo.Filename}.png>");
        }
    }
    Console.WriteLine();
}

Execute o aplicativo usando o dotnet run comando:

dotnet run

A saída do console deve ser semelhante à seguinte:

[USER]: How well did product 113045 sell in February? Graph its trend over time.

[ASSISTANT]: Product 113045 sold 22 units in February. Let's visualize its sales trend over the given months (January through March).

I'll create a graph to depict this trend.

[ASSISTANT]: <image: 553380b7-fdb6-49cf-9df6-e8e6700d69f4.png>
The graph above visualizes the sales trend for product 113045 from January to March. As seen, the sales peaked in February with 22 units sold, and fluctuated over the period from January (12 units) to March (16 units).

If you need further analysis or more details, feel free to ask!

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Consulte também

Documentação | de referência Pacote de código-fonte | da biblioteca (npm) |

Pré-requisitos

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Node.js suporte LTS ou ESM.
  • CLI do Azure usada para autenticação sem senha em um ambiente de desenvolvimento local, crie o contexto necessário entrando com a CLI do Azure.
  • Um recurso OpenAI do Azure com um modelo compatível em uma região suportada.
  • Recomendamos rever a nota de transparência da IA Responsável e outros recursos de IA Responsável para se familiarizar com as capacidades e limitações do Serviço OpenAI do Azure.
  • Um recurso OpenAI do Azure com o modelo implantado gpt-4 (1106-preview) foi usado testando este exemplo.

Para autenticação sem chave, você precisa

  1. Utilize a @azure/identity embalagem.
  2. Atribua a Cognitive Services User função à sua conta de utilizador. Isso pode ser feito no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
  3. Entre com a CLI do Azure, como az login.

Configurar

  1. Crie uma nova pasta assistants-quickstart para conter o aplicativo e abra o Visual Studio Code nessa pasta com o seguinte comando:

    mkdir assistants-quickstart && code assistants-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de cliente OpenAI Assistants para JavaScript com:

    npm install openai
    
  5. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Recuperar informações do recurso

Nome da variável Value
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure.
OPENAI_API_VERSION Saiba mais sobre as versões da API.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Atenção

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Criar um assistente

Em nosso código, vamos especificar os seguintes valores:

Name Descrição
Nome do assistente O nome de implementação associado a um modelo específico.
Instruções As instruções são semelhantes às mensagens do sistema. É aqui que dá orientações ao modelo sobre como se deve comportar e qualquer contexto que deve referenciar ao gerar uma resposta. Pode descrever a personalidade do assistente, dizer-lhe o que deve ou não responder e indicar-lhe como formatar as respostas. Também pode fornecer exemplos dos passos que deve seguir para dar as respostas.
Modelo Este é o nome da implantação.
Interpretador de código O interpretador de código fornece acesso a um ambiente Python em sandbox que pode ser utilizado para permitir ao modelo testar e executar código.

Ferramentas

Um assistente individual pode aceder a até 128 ferramentas, incluindo code interpreter, e quaisquer ferramentas personalizadas que crie através de funções.

Criar um novo aplicativo JavaScript

  1. Crie o index.js arquivo com o seguinte código:

    const { AzureOpenAI } = require("openai");
    const {
      DefaultAzureCredential,
      getBearerTokenProvider,
    } = require("@azure/identity");
    
    // Get environment variables
    const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT;
    const azureOpenAIDeployment = process.env.AZURE_OPENAI_DEPLOYMENT_NAME;
    const azureOpenAIVersion = process.env.OPENAI_API_VERSION;
    
    // Check env variables
    if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !azureOpenAIVersion) {
      throw new Error(
        "Please ensure to set AZURE_OPENAI_DEPLOYMENT_NAME and AZURE_OPENAI_ENDPOINT in your environment variables."
      );
    }
    
    // Get Azure SDK client
    const getClient = () => {
      const credential = new DefaultAzureCredential();
      const scope = "https://cognitiveservices.azure.com/.default";
      const azureADTokenProvider = getBearerTokenProvider(credential, scope);
    
      const assistantsClient = new AzureOpenAI({
        endpoint: azureOpenAIEndpoint,
        apiVersion: azureOpenAIVersion,
        azureADTokenProvider,
      });
      return assistantsClient;
    };
    
    const assistantsClient = getClient();
    
    const options = {
      model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
      name: "Math Tutor",
      instructions:
        "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
      tools: [{ type: "code_interpreter" }],
    };
    const role = "user";
    const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";
    
    // Create an assistant
    const assistantResponse = await assistantsClient.beta.assistants.create(
      options
    );
    console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);
    
    // Create a thread
    const assistantThread = await assistantsClient.beta.threads.create({});
    console.log(`Thread created: ${JSON.stringify(assistantThread)}`);
    
    // Add a user question to the thread
    const threadResponse = await assistantsClient.beta.threads.messages.create(
      assistantThread.id,
      {
        role,
        content: message,
      }
    );
    console.log(`Message created:  ${JSON.stringify(threadResponse)}`);
    
    // Run the thread and poll it until it is in a terminal state
    const runResponse = await assistantsClient.beta.threads.runs.createAndPoll(
      assistantThread.id,
      {
        assistant_id: assistantResponse.id,
      },
      { pollIntervalMs: 500 }
    );
    console.log(`Run created:  ${JSON.stringify(runResponse)}`);
    
    // Get the messages
    const runMessages = await assistantsClient.beta.threads.messages.list(
      assistantThread.id
    );
    for await (const runMessageDatum of runMessages) {
      for (const item of runMessageDatum.content) {
        // types are: "image_file" or "text"
        if (item.type === "text") {
          console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
        }
      }
    }
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute o arquivo JavaScript.

    node index.js
    

Saída

Assistant created: {"id":"asst_zXaZ5usTjdD0JGcNViJM2M6N","createdAt":"2024-04-08T19:26:38.000Z","name":"Math Tutor","description":null,"model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"fileIds":[],"metadata":{}}
Thread created: {"id":"thread_KJuyrB7hynun4rvxWdfKLIqy","createdAt":"2024-04-08T19:26:38.000Z","metadata":{}}
Message created:  {"id":"msg_o0VkXnQj3juOXXRCnlZ686ff","createdAt":"2024-04-08T19:26:38.000Z","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","role":"user","content":[{"type":"text","text":{"value":"I need to solve the equation `3x + 11 = 14`. Can you help me?","annotations":[]},"imageFile":{}}],"assistantId":null,"runId":null,"fileIds":[],"metadata":{}}
Created run
Run created:  {"id":"run_P8CvlouB8V9ZWxYiiVdL0FND","object":"thread.run","status":"queued","model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"metadata":{},"usage":null,"assistantId":"asst_zXaZ5usTjdD0JGcNViJM2M6N","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","fileIds":[],"createdAt":"2024-04-08T19:26:39.000Z","expiresAt":"2024-04-08T19:36:39.000Z","startedAt":null,"completedAt":null,"cancelledAt":null,"failedAt":null}
Message content: "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
Message content: "Yes, of course! To solve the equation \\( 3x + 11 = 14 \\), we can follow these steps:\n\n1. Subtract 11 from both sides of the equation to isolate the term with x.\n2. Then, divide by 3 to find the value of x.\n\nLet me calculate that for you."
Message content: "I need to solve the equation `3x + 11 = 14`. Can you help me?"

É importante lembrar que, embora o interpretador de código dê ao modelo a capacidade de responder a consultas mais complexas, convertendo as perguntas em código e executando esse código iterativamente em JavaScript até chegar a uma solução, você ainda precisa validar a resposta para confirmar se o modelo traduziu corretamente sua pergunta em uma representação válida no código.

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Código de exemplo

Consulte também

Documentação | de referência Pacote de código-fonte | da biblioteca (npm) |

Pré-requisitos

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Node.js suporte LTS ou ESM.
  • TypeScript instalado globalmente
  • CLI do Azure usada para autenticação sem senha em um ambiente de desenvolvimento local, crie o contexto necessário entrando com a CLI do Azure.
  • Um recurso OpenAI do Azure com um modelo compatível em uma região suportada.
  • Recomendamos rever a nota de transparência da IA Responsável e outros recursos de IA Responsável para se familiarizar com as capacidades e limitações do Serviço OpenAI do Azure.
  • Um recurso OpenAI do Azure com o modelo implantado gpt-4 (1106-preview) foi usado testando este exemplo.

Para autenticação sem senha, você precisa

  1. Utilize a @azure/identity embalagem.
  2. Atribua a Cognitive Services User função à sua conta de utilizador. Isso pode ser feito no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
  3. Entre com a CLI do Azure, como az login.

Configurar

  1. Crie uma nova pasta assistants-quickstart para conter o aplicativo e abra o Visual Studio Code nessa pasta com o seguinte comando:

    mkdir assistants-quickstart && code assistants-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de cliente OpenAI Assistants para JavaScript com:

    npm install openai
    
  5. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Recuperar informações do recurso

Nome da variável Value
AZURE_OPENAI_ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Modelo de Gerenciamento de>Recursos no portal do Azure.
OPENAI_API_VERSION Saiba mais sobre as versões da API.

Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.

Atenção

Para usar a autenticação sem chave recomendada com o SDK, verifique se a AZURE_OPENAI_API_KEY variável de ambiente não está definida.

Criar um assistente

Em nosso código, vamos especificar os seguintes valores:

Name Descrição
Nome do assistente O nome de implementação associado a um modelo específico.
Instruções As instruções são semelhantes às mensagens do sistema. É aqui que dá orientações ao modelo sobre como se deve comportar e qualquer contexto que deve referenciar ao gerar uma resposta. Pode descrever a personalidade do assistente, dizer-lhe o que deve ou não responder e indicar-lhe como formatar as respostas. Também pode fornecer exemplos dos passos que deve seguir para dar as respostas.
Modelo Este é o nome da implantação.
Interpretador de código O interpretador de código fornece acesso a um ambiente Python em sandbox que pode ser utilizado para permitir ao modelo testar e executar código.

Ferramentas

Um assistente individual pode aceder a até 128 ferramentas, incluindo code interpreter, e quaisquer ferramentas personalizadas que crie através de funções.

Criar um novo aplicativo TypeScript

  1. Crie o index.ts arquivo com o seguinte código:

    import { AzureOpenAI } from "openai";
    import {
      Assistant,
      AssistantCreateParams,
      AssistantTool,
    } from "openai/resources/beta/assistants";
    import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
    import { Run } from "openai/resources/beta/threads/runs/runs";
    import { Thread } from "openai/resources/beta/threads/threads";
    
    // Add `Cognitive Services User` to identity for Azure OpenAI resource
    import {
      DefaultAzureCredential,
      getBearerTokenProvider,
    } from "@azure/identity";
    
    // Get environment variables
    const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
    const azureOpenAIDeployment = process.env
      .AZURE_OPENAI_DEPLOYMENT_NAME as string;
    const openAIVersion = process.env.OPENAI_API_VERSION as string;
    
    // Check env variables
    if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
      throw new Error(
        "Please ensure to set AZURE_OPENAI_DEPLOYMENT_NAME and AZURE_OPENAI_ENDPOINT in your environment variables."
      );
    }
    
    // Get Azure SDK client
    const getClient = (): AzureOpenAI => {
      const credential = new DefaultAzureCredential();
      const scope = "https://cognitiveservices.azure.com/.default";
      const azureADTokenProvider = getBearerTokenProvider(credential, scope);
      const assistantsClient = new AzureOpenAI({
        endpoint: azureOpenAIEndpoint,
        apiVersion: openAIVersion,
        azureADTokenProvider,
      });
      return assistantsClient;
    };
    
    const assistantsClient = getClient();
    
    const options: AssistantCreateParams = {
      model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
      name: "Math Tutor",
      instructions:
        "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
      tools: [{ type: "code_interpreter" } as AssistantTool],
    };
    const role = "user";
    const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";
    
    // Create an assistant
    const assistantResponse: Assistant =
      await assistantsClient.beta.assistants.create(options);
    console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);
    
    // Create a thread
    const assistantThread: Thread = await assistantsClient.beta.threads.create({});
    console.log(`Thread created: ${JSON.stringify(assistantThread)}`);
    
    // Add a user question to the thread
    const threadResponse: Message =
      await assistantsClient.beta.threads.messages.create(assistantThread.id, {
        role,
        content: message,
      });
    console.log(`Message created:  ${JSON.stringify(threadResponse)}`);
    
    // Run the thread and poll it until it is in a terminal state
    const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
      assistantThread.id,
      {
        assistant_id: assistantResponse.id,
      },
      { pollIntervalMs: 500 }
    );
    console.log(`Run created:  ${JSON.stringify(runResponse)}`);
    
    // Get the messages
    const runMessages: MessagesPage =
      await assistantsClient.beta.threads.messages.list(assistantThread.id);
    for await (const runMessageDatum of runMessages) {
      for (const item of runMessageDatum.content) {
        // types are: "image_file" or "text"
        if (item.type === "text") {
          console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
        }
      }
    }
    
  2. Crie o tsconfig.json arquivo para transpilar o código TypeScript e copie o código a seguir para ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Transpile de TypeScript para JavaScript.

    tsc
    
  4. Entre no Azure com o seguinte comando:

    az login
    
  5. Execute o código com o seguinte comando:

    node index.js
    

Saída

Assistant created: {"id":"asst_zXaZ5usTjdD0JGcNViJM2M6N","createdAt":"2024-04-08T19:26:38.000Z","name":"Math Tutor","description":null,"model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"fileIds":[],"metadata":{}}
Thread created: {"id":"thread_KJuyrB7hynun4rvxWdfKLIqy","createdAt":"2024-04-08T19:26:38.000Z","metadata":{}}
Message created:  {"id":"msg_o0VkXnQj3juOXXRCnlZ686ff","createdAt":"2024-04-08T19:26:38.000Z","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","role":"user","content":[{"type":"text","text":{"value":"I need to solve the equation `3x + 11 = 14`. Can you help me?","annotations":[]},"imageFile":{}}],"assistantId":null,"runId":null,"fileIds":[],"metadata":{}}
Created run
Run created:  {"id":"run_P8CvlouB8V9ZWxYiiVdL0FND","object":"thread.run","status":"queued","model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"metadata":{},"usage":null,"assistantId":"asst_zXaZ5usTjdD0JGcNViJM2M6N","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","fileIds":[],"createdAt":"2024-04-08T19:26:39.000Z","expiresAt":"2024-04-08T19:36:39.000Z","startedAt":null,"completedAt":null,"cancelledAt":null,"failedAt":null}
Message content: "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
Message content: "Yes, of course! To solve the equation \\( 3x + 11 = 14 \\), we can follow these steps:\n\n1. Subtract 11 from both sides of the equation to isolate the term with x.\n2. Then, divide by 3 to find the value of x.\n\nLet me calculate that for you."
Message content: "I need to solve the equation `3x + 11 = 14`. Can you help me?"

É importante lembrar que, embora o interpretador de código dê ao modelo a capacidade de responder a consultas mais complexas, convertendo as perguntas em código e executando esse código iterativamente em JavaScript até chegar a uma solução, você ainda precisa validar a resposta para confirmar se o modelo traduziu corretamente sua pergunta em uma representação válida no código.

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Código de exemplo

Consulte também

Pré-requisitos

Configurar

Recuperar chave e ponto de extremidade

Para fazer uma chamada com êxito no Azure OpenAI, você precisará do seguinte:

Nome da variável Value
ENDPOINT O ponto de extremidade do serviço pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o ponto de extremidade por meio da página Implantações no Azure AI Studio. Um exemplo de ponto de extremidade é: https://docs-test-001.openai.azure.com/.
API-KEY Este valor pode ser encontrado na secção Chaves e Ponto Final ao examinar o recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.
DEPLOYMENT-NAME Este valor corresponderá ao nome personalizado que escolheu para a implementação quando implementou um modelo. Esse valor pode ser encontrado em Implantações de Gerenciamento de>Recursos no portal do Azure ou por meio da página Implantações no Azure AI Studio.

Vá para o seu recurso no portal do Azure. O Ponto de Extremidade e as Chaves podem ser encontrados na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe rodar e regenerar chaves de forma segura sem causar uma interrupção do serviço.

Captura de ecrã da folha de descrição geral de um recurso do Azure OpenAI no portal do Azure com a localização das chaves de acesso do ponto de extremidade & circulada a vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Se você usar uma chave de API, armazene-a com segurança em outro lugar, como no Cofre de Chaves do Azure. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

API REST

Criar um assistente

Nota

Com o Azure OpenAI, o parâmetro requer o nome de implantação do model modelo. Se o nome da implantação do modelo for diferente do nome do modelo subjacente, você ajustará o código para "model": "{your-custom-model-deployment-name}".

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are an AI assistant that can write code to help answer math questions.",
    "name": "Math Assist",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-1106-preview"
  }'

Ferramentas

Um assistente individual pode aceder a até 128 ferramentas, incluindo code interpreter, bem como a quaisquer ferramentas personalizadas que crie através de funções.

Criar um thread

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d ''

Adicionar uma pergunta de usuário ao thread

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
    }'

Executar o thread

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_abc123",
  }'

Recuperar o status da execução

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Resposta do assistente

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Compreender os seus resultados

Neste exemplo, criamos um assistente com o interpretador de código habilitado. Quando fazemos uma pergunta matemática ao assistente, ele traduz a pergunta em código python e executa o código em ambiente sandboxed para determinar a resposta à pergunta. O código que o modelo cria e testa para chegar a uma resposta é:

    from sympy import symbols, Eq, solve  
      
    # Define the variable  
    x = symbols('x')  
      
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
      
    # Solve the equation  
    solution = solve(equation, x)  
    solution  

É importante lembrar que, embora o interpretador de código dê ao modelo a capacidade de responder a consultas mais complexas, convertendo as perguntas em código e executando esse código iterativamente na sandbox do Python até chegar a uma solução, você ainda precisa validar a resposta para confirmar se o modelo traduziu corretamente sua pergunta em uma representação válida no código.

Clean up resources (Limpar recursos)

Se quiser limpar e remover um recurso do Azure OpenAI, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.

Consulte também