Chamada de função Assistentes do OpenAI do Azure
A API de Assistentes dá suporte à chamada de função, que permite descrever a estrutura de funções para um Assistente e, em seguida, retornar as funções que precisam ser chamadas e seus argumentos.
Observação
- A pesquisa de arquivos pode ingerir até 10.000 arquivos por assistente – 500 vezes mais do que antes. Ela é rápida, dá suporte a consultas paralelas por meio de pesquisas com vários threads e recursos aprimorados de reclassificação e reescrita de consulta.
- O repositório de vetores é um novo objeto na API. Depois que um arquivo é adicionado a um repositório de vetores, ele é analisado automaticamente, em partes e inserido, pronto para ser pesquisado. Os repositórios de vetores podem ser usados entre assistentes e threads, simplificando o gerenciamento de arquivos e a cobrança.
- Adicionamos suporte para o parâmetro
tool_choice
que pode ser usado para forçar o uso de uma ferramenta específica (como pesquisa de arquivo, interpretador de código ou uma função) em uma execução específica.
Suporte à chamada de função
Modelos com suporte
A página de modelos contém as informações mais atualizadas sobre regiões/modelos em que há suporte para Assistentes.
Para usar todos os recursos de chamada de função, incluindo funções paralelas, você precisa usar um modelo que foi lançado após 6 de novembro de 2023.
Versões da API
2024-02-15-preview
2024-05-01-preview
Definição de função de exemplo
Observação
- Adicionamos suporte para o parâmetro
tool_choice
que pode ser usado para forçar o uso de uma ferramenta específica (comofile_search
,code_interpreter
ou umfunction
) em uma execução específica. - As execuções expiram dez minutos após a criação. Certifique-se de enviar as saídas da ferramenta antes dessa expiração.
- Você também pode realizar chamadas de função com aplicativos Azure Logic
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4-1106-preview", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "getCurrentWeather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
"unit": {"type": "string", "enum": ["c", "f"]}
},
"required": ["location"]
}
}
}, {
"type": "function",
"function": {
"name": "getNickname",
"description": "Get the nickname of a city",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
},
"required": ["location"]
}
}
}]
)
Leitura das funções
Quando você inicia uma Execução com uma mensagem de usuário que dispara a função, a Execução inserirá um status pendente. Depois de processar, a execução entrará em um estado requires_action que você pode verificar recuperando a Execução.
{
"id": "run_abc123",
"object": "thread.run",
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "requires_action",
"required_action": {
"type": "submit_tool_outputs",
"submit_tool_outputs": {
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "getCurrentWeather",
"arguments": "{\"location\":\"San Francisco\"}"
}
},
{
"id": "call_abc456",
"type": "function",
"function": {
"name": "getNickname",
"arguments": "{\"location\":\"Los Angeles\"}"
}
}
]
}
},
...
Envio de saídas de função
Em seguida, você pode concluir a Execução enviando a saída da ferramenta das funções que você chama. Passe o tool_call_id
referenciado no objeto required_action
acima para corresponder a saída a cada chamada de função.
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run.id,
tool_outputs=[
{
"tool_call_id": call_ids[0],
"output": "22C",
},
{
"tool_call_id": call_ids[1],
"output": "LA",
},
]
)
Depois de enviar saídas de ferramenta, a Execução entrará no estado queued
antes de continuar a execução.
Confira também
- Referência da API de assistentes
- Saiba mais sobre como usar Assistentes com nosso Guia de instruções sobre Assistentes.
- Exemplos de API de Assistentes do OpenAI do Azure