Llamadas a funciones de Assistants de Azure OpenAI
Assistants API admite llamadas a funciones, lo que le permite describir la estructura de las funciones en un asistente y, después, devolver las funciones a las que se debe llamar junto con sus argumentos.
Nota:
- La búsqueda de archivos puede ingerir hasta 10 000 archivos por asistente, 500 veces más que antes. Es rápida, compatible con consultas paralelas a través de búsquedas multiproceso y presenta características mejoradas de reordenación y reescritura de consultas.
- El almacén de vectores es un nuevo objeto de la API. Una vez que un archivo se agrega a un almacén de vectores, se analiza automáticamente, se divide en fragmentos y se inserta, quedando listo para su búsqueda. Los almacenes de vectores se pueden usar entre asistentes y subprocesos, lo que simplifica la administración de archivos y la facturación.
- Hemos agregado compatibilidad con el parámetro
tool_choice
que se puede usar para forzar el uso de una herramienta específica (como la búsqueda de archivos, el intérprete de código o una función) en una ejecución determinada.
Compatibilidad con la llamada de funciones
Modelos admitidos
La página de modelos contiene la información más actualizada sobre regiones o modelos en los que se admiten los asistentes.
Para usar todas las características de la llamada de función, incluidas las funciones paralelas, debe usar un modelo que se publicó después del 6 de noviembre de 2023.
Versiones de API
2024-02-15-preview
2024-05-01-preview
Definición de función de ejemplo
Nota:
- Hemos agregado compatibilidad con el parámetro
tool_choice
que se puede usar para forzar el uso de una herramienta específica (comofile_search
,code_interpreter
o unfunction
) en una ejecución determinada. - Las ejecuciones expiran diez minutos después de la creación. Asegúrese de enviar las salidas de la herramienta antes de esta expiración.
- También puede realizar llamadas a funciones con Azure Logic Apps
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"]
}
}
}]
)
Lectura de las funciones
Al iniciar una ejecución con un mensaje de usuario que desencadena la función, la ejecución entrará en un estado pendiente. Después de procesarse, la ejecución entrará en un estado requires_action que puede comprobar si recupera la ejecución.
{
"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\"}"
}
}
]
}
},
...
Envío de salidas de función
Después, puede completar la ejecución si envía la salida de la herramienta desde las funciones que llame. Pase el elemento tool_call_id
al que se hace referencia en el objeto required_action
anterior para que coincida con la salida de cada llamada de función.
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",
},
]
)
Después de enviar las salidas de la herramienta, la ejecución entrará en el estado queued
antes de continuar.
Consulte también
- Referencia de API de asistentes
- Obtenga más información sobre cómo usar los asistentes con nuestra Guía paso a paso sobre Assistants.
- Ejemplos de la API Azure OpenAI Assistants