La llamada a funciones mejora la capacidad del LLM para proporcionar respuestas relevantes y contextuales.
Puedes proporcionar funciones personalizadas a un modelo de IA generativa con la API Function Calling. El modelo no invoca directamente estas funciones, sino que genera una salida de datos estructurados que especifica el nombre de la función y los argumentos sugeridos.
Esta salida permite llamar a APIs externas o a sistemas de información, como bases de datos, sistemas de gestión de relaciones con los clientes y repositorios de documentos. El LLM puede usar el resultado de la API para mejorar la calidad de las respuestas.
Para obtener más documentación conceptual sobre la llamada a funciones, consulta Llamada a funciones.
Modelos admitidos
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash con audio nativo de la API Live (versión preliminar)
- Gemini 2.0 Flash con la API Live (versión preliminar)
- Vertex AI Model Optimizer (experimental)
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
Limitaciones:
- El número máximo de declaraciones de funciones que se pueden proporcionar con la solicitud es 128.
Sintaxis de ejemplo
Sintaxis para enviar una solicitud a la API de llamadas a funciones.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \ -d '{ "contents": [{ ... }], "tools": [{ "function_declarations": [ { ... } ] }] }'
Lista de parámetros
Consulta los ejemplos para obtener más información sobre la implementación.
FunctionDeclaration
Define una función para la que el modelo puede generar entradas JSON basadas en las especificaciones de OpenAPI 3.0.
Parámetros | |
---|---|
|
Nombre de la función a la que se debe llamar. Debe empezar por una letra o un guion bajo. Debe ser a-z, A-Z o 0-9, o bien contener guiones bajos, puntos o guiones, con una longitud máxima de 64 caracteres. |
|
Opcional: La descripción y la finalidad de la función. El modelo usa esta información para decidir cómo y si debe llamar a la función. Para obtener los mejores resultados, te recomendamos que incluyas una descripción. |
|
Opcional: Describe los parámetros de la función en el formato de objeto de esquema JSON de OpenAPI: especificación de OpenAPI 3.0. |
|
Opcional: Describe la salida de la función en el formato de objeto de esquema JSON de OpenAPI: especificación de OpenAPI 3.0. |
Para obtener más información, consulta Llamadas a funciones.
Schema
Define el formato de los datos de entrada y salida en una llamada a una función basada en la especificación del esquema OpenAPI 3.0.
Parámetros | |
---|---|
tipo |
Enum. Tipo de datos. Debe ser uno de los siguientes:
|
description |
Opcional: Descripción de los datos. |
enum |
Opcional: Posibles valores del elemento de tipo primitivo con formato de enumeración. |
items |
Opcional: Esquema de los elementos de |
properties |
Opcional: Esquema de las propiedades de |
required |
Opcional: Propiedades obligatorias de |
nullable |
Opcional: Indica si el valor puede ser |
FunctionCallingConfig
El FunctionCallingConfig
controla el comportamiento del modelo y determina qué tipo de función se debe invocar.
Parámetros | |
---|---|
|
Opcional:
|
|
Opcional: Nombres de las funciones a las que se debe llamar. Solo se define cuando |
functionCall
Un functionCall
predicho devuelto por el modelo que contiene una cadena que representa el functionDeclaration.name
y un objeto JSON estructurado que contiene los parámetros y sus valores.
Parámetros | |
---|---|
|
Nombre de la función a la que se debe llamar. |
|
Los parámetros y valores de la función en formato de objeto JSON. Consulta los detalles de los parámetros en Llamadas a funciones. |
functionResponse
El resultado de un FunctionCall
que contiene una cadena que representa el FunctionDeclaration.name
. También contiene un objeto JSON estructurado con la salida de la función (y lo usa como contexto para el modelo). Debe contener el resultado de una FunctionCall
basada en la predicción del modelo.
Parámetros | |
---|---|
|
Nombre de la función a la que se debe llamar. |
|
La respuesta de la función en formato de objeto JSON. |
Ejemplos
Enviar una declaración de función
En el siguiente ejemplo se muestra cómo enviar una consulta y una declaración de función al modelo.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto.
- MODEL_ID: ID del modelo que se está procesando.
- ROLE: la identidad de la entidad que crea el mensaje.
- TEXT: la petición que se envía al modelo.
- NAME: el nombre de la función a la que se debe llamar.
- DESCRIPTION: descripción y finalidad de la función.
- Para ver otros campos, consulta la tabla Lista de parámetros.
Método HTTP y URL:
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent
Cuerpo JSON de la solicitud:
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "TYPE", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Comando curl de ejemplo
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "What is the weather in Boston?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"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 or a zip code e.g. 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
SDK de IA generativa para Python
Node.js
Java
Go
REST (OpenAI)
Puedes llamar a la API Function Calling mediante la biblioteca de OpenAI. Para obtener más información, consulta Llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: .
- MODEL_ID: ID del modelo que se está procesando.
Método HTTP y URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Cuerpo JSON de la solicitud:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "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 or a zip code e.g. 95616" } }, "required": ["location"] } } } ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Puedes llamar a la API Function Calling mediante la biblioteca de OpenAI. Para obtener más información, consulta Llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Enviar una declaración de función con FunctionCallingConfig
En el siguiente ejemplo se muestra cómo pasar un FunctionCallingConfig
al modelo.
functionCallingConfig
se asegura de que el resultado del modelo sea siempre una llamada a una función específica. Para configurarlo, sigue estos pasos:
- Define la llamada a función
mode
enANY
. Especifica los nombres de las funciones que quieras usar en
allowed_function_names
. Siallowed_function_names
está vacío, se puede devolver cualquiera de las funciones proporcionadas.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "Do you have the White Pixel 8 Pro 128GB in stock in the US?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"name": "get_product_sku",
"description": "Get the available inventory for a Google products, e.g: Pixel phones, Pixel Watches, Google Home etc",
"parameters": {
"type": "object",
"properties": {
"product_name": {"type": "string", "description": "Product name"}
}
}
},
{
"name": "get_store_location",
"description": "Get the location of the closest store",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "Location"}
},
}
}
]
}],
"toolConfig": {
"functionCallingConfig": {
"mode":"ANY",
"allowedFunctionNames": ["get_product_sku"]
}
},
"generationConfig": {
"temperature": 0.95,
"topP": 1.0,
"maxOutputTokens": 8192
}
}'
SDK de IA generativa para Python
Node.js
Go
REST (OpenAI)
Puedes llamar a la API Function Calling mediante la biblioteca de OpenAI. Para obtener más información, consulta Llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: .
- MODEL_ID: ID del modelo que se está procesando.
Método HTTP y URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Cuerpo JSON de la solicitud:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "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 or a zip code e.g. 95616" } }, "required": ["location"] } } } ], "tool_choice": "auto" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Puedes llamar a la API Function Calling mediante la biblioteca de OpenAI. Para obtener más información, consulta Llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Siguientes pasos
Para obtener documentación detallada, consulta lo siguiente: