Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este documento hace referencia al portal de Microsoft Foundry (clásico).
🔍 Consulte la documentación de Microsoft Foundry (nuevo) para obtener información sobre el nuevo portal.
Nota:
El servicio Microsoft Foundry Agent ahora está disponible con carácter general, que proporciona más herramientas y mejores características empresariales. Se recomienda usar el nuevo servicio para las actualizaciones y mejoras de características más recientes.
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.
Soporte con llamadas a funciones
Modelos compatibles
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
Versiones de API a partir de 2024-02-15-preview.
Definición de función de ejemplo
Nota:
- Hemos agregado compatibilidad con el parámetro
tool_choiceque se puede usar para forzar el uso de una herramienta específica (comofile_search,code_interpretero 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-07-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
name="Weather Bot",
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name, for example San Francisco"}
},
"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": "get_weather",
"arguments": "{\"location\":\"Seattle\"}"
}
},
]
}
},
...
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 tool_call_id al que se hace referencia en el objeto required_action para que coincida con la salida de cada llamada de función.
# Example function
def get_weather():
return "It's 80 degrees F and slightly cloudy."
# Define the list to store tool outputs
tool_outputs = []
# Loop through each tool in the required action section
for tool in run.required_action.submit_tool_outputs.tool_calls:
# get data from the weather function
if tool.function.name == "get_weather":
weather = get_weather()
tool_outputs.append({
"tool_call_id": tool.id,
"output": weather
})
# Submit all tool outputs at once after collecting them in a list
if tool_outputs:
try:
run = client.beta.threads.runs.submit_tool_outputs_and_poll(
thread_id=thread.id,
run_id=run.id,
tool_outputs=tool_outputs
)
print("Tool outputs submitted successfully.")
except Exception as e:
print("Failed to submit tool outputs:", e)
else:
print("No tool outputs to submit.")
if run.status == 'completed':
print("run status: ", run.status)
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.to_json(indent=2))
else:
print("run status: ", run.status)
print (run.last_error.message)
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