En esta guía, se muestra cómo usar las llamadas a función con modelos abiertos en Vertex AI, y se abordan los siguientes temas:
- Usa la llamada a función: Aprende a estructurar una solicitud al modelo que incluya una definición de función.
- Ejemplo detallado: Consulta un ejemplo completo de varios turnos de una conversación que usa la llamada a función.
En el siguiente diagrama, se resume el flujo de trabajo general:
La llamada a función permite que un modelo identifique cuándo invocar una herramienta o API externa y, luego, genere datos estructurados que contengan la función y los argumentos necesarios para la ejecución. Todos los modelos abiertos disponibles en el servicio de Modelos como servicio (MaaS) de Vertex AI admiten llamadas a funciones.
Para obtener más información conceptual sobre la capacidad de llamada a función, consulta Introducción a la llamada a función.
Usa la llamada a función
Para usar las llamadas a función, debes proporcionar al modelo un conjunto de definiciones de herramientas en tu solicitud. El modelo usa estas definiciones para determinar si necesita llamar a una función para responder tu consulta.
En el siguiente ejemplo, se muestra una solicitud que le pide al modelo que compare el clima de dos ciudades. La solicitud incluye un array tools
con una declaración de función para get_current_weather
.
{ "model": "MODEL_NAME", "messages": [ { "role": "user", "content": "Which city has a higher temperature, Boston or new Delhi, and by how much in F?" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"] } }, "required": ["location"] } } } ], "tool_choice": "auto" }
Después de recibir la solicitud, el modelo determina que debe llamar a la función get_current_weather
para ambas ciudades. Devuelve una respuesta que contiene un array tool_calls
con los argumentos adecuados para cada llamada a función.
En los siguientes fragmentos, se muestran los dos objetos de llamada a función que el modelo devuelve en el array tool_calls
.
Boston
{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"} "id":"get_current_weather","type":"function"}
Nueva Delhi
{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}
Ejemplo detallado
En esta sección, se continúa con el ejemplo anterior y se muestra la conversación completa de varios turnos.
Después de que tu aplicación ejecuta las funciones según el tool_calls
del modelo, envías otra solicitud al modelo. Esta nueva solicitud debe incluir el historial de la conversación y los resultados de las llamadas a funciones. Los resultados se proporcionan en mensajes con el rol tool
.
A continuación, se muestra un ejemplo de la carga útil de la solicitud que incluye los resultados de la herramienta:
{ "model": "MODEL_NAME", "messages": [ { "role": "user", "content": "Which city has a higher temperature, Boston or new Delhi and by how much in F?" }, { "role": "assistant", "content": "I'll check the current temperatures for Boston and New Delhi in Fahrenheit and compare them. I'll call the weather function for both cities.", "tool_calls": [{"function":{"arguments":"{\"location\":\"Boston, MA\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"},{"function":{"arguments":"{\"location\":\"New Delhi, India\",\"unit\":\"fahrenheit\"}","name":"get_current_weather"},"id":"get_current_weather","type":"function"}] }, { "role": "tool", "content": "The temperature in Boston is 75 degrees Fahrenheit.", "tool_call_id": "get_weather" }, { "role": "tool", "content": "The temperature in New Delhi is 50 degrees Fahrenheit.", "tool_call_id": "get_weather" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"] } }, "required": ["location"] } } } ], "tool_choice": "auto" }
El modelo usa los resultados de la función para responder tu pregunta original. A continuación, se muestra un ejemplo de la respuesta final del modelo:
{ "choices": [ { "finish_reason": "stop", "index": 0, "logprobs": null, "message": { "content": "Based on the current weather data:\n\n- **Boston, MA**: 75°F \n- **New Delhi, India**: 50°F \n\n**Comparison**: \nBoston is **25°F warmer** than New Delhi. \n\n**Answer**: \nBoston has a higher temperature than New Delhi by 25 degrees Fahrenheit.", "role": "assistant" } } ], "created": 1750450289, "id": "2025-06-20|13:11:29.240295-07|6.230.75.101|-987540014", "model": "MODEL_NAME", "object": "chat.completion", "system_fingerprint": "", "usage": { "completion_tokens": 66, "prompt_tokens": 217, "total_tokens": 283 } }