Puedes proporcionar funciones personalizadas a un modelo de IA generativa con la API de llamada a función. El modelo no invoca estas funciones directamente, sino que genera un resultado de datos estructurados que especifica el nombre de la función y los argumentos sugeridos.
Este resultado permite llamar a API externas o sistemas de información como bases de datos, sistemas de administración de relaciones con clientes y repositorios de documentos. El LLM puede usar el resultado de la API para mejorar la calidad de la respuesta.
Para obtener más documentación conceptual sobre las llamadas a funciones, consulta Llamadas a funciones.
Modelos compatibles:
Modelo | Versión |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Limitaciones:
- La cantidad máxima de declaraciones de funciones que se pueden proporcionar con la solicitud es de 128.
FunctionCallingConfig.Mode.ANY
solo está disponible con los modelos Gemini 1.5 Pro y Gemini 1.5 Flash.
Ejemplo de sintaxis
Sintaxis para enviar una solicitud a la API de llamada a función.
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": [ { ... } ] }] }'
Python
gemini_model = GenerativeModel( MODEL_ID, generation_config=generation_config, tools=[ Tool( function_declarations=[ FunctionDeclaration( ... ) ] ) ], )
Lista de parámetros
Consulta ejemplos para obtener detalles sobre la implementación.
FunctionDeclaration
Define una función para la que el modelo puede generar entradas JSON según las especificaciones de OpenAPI 3.0.
Parámetros | |
---|---|
|
El nombre de la función a la que se llamará. Debe comenzar con una letra o un guion bajo. Debe tener caracteres de la A a la Z (mayúsculas o minúsculas), o números del 0 al 9, o contiene guiones bajos y guiones, con una longitud máxima de 64. |
|
Opcional: La descripción y el propósito de la función El modelo utiliza esto para decidir cómo y si se debe llamar a la función. Para obtener 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 el resultado 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 función según la especificación del esquema de OpenAPI 3.0.
Parámetros | |
---|---|
tipo |
Enum. Es el tipo de datos. Debe ser uno de los siguientes:
|
description |
Opcional: Descripción de los datos. |
enum |
Opcional: Valores posibles del elemento de |
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
FunctionCallingConfig
controla el comportamiento del modelo y determina a qué tipo de función llamar.
Parámetros | |
---|---|
|
Opcional:
|
|
Opcional: Son los nombres de las funciones a las que se llamará. Solo se establece cuando |
Ejemplos
Envía una declaración de función
El siguiente ejemplo es un ejemplo básico de cómo enviar una consulta y una declaración de función al modelo.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION: La región para procesar la solicitud.
- MODEL_ID: Es el ID del modelo que se está procesando.
- ROLE: La identidad de la entidad que crea el mensaje.
- TEXT: Es la instrucción que se enviará al modelo.
- NAME: el nombre de la función a la que se llamará.
- DESCRIPTION: la descripción y el propósito de la función.
- Para otros campos, consulta la tabla Lista de parámetros.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Ejemplo del comando curl
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.0-pro-002
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"
]
}
}
]
}]
}'
Python
Node.js
Java
Go
REST (OpenAI)
Puedes llamar a la API de Functions Calling con la biblioteca de OpenAI. Para obtener más información, consulta Cómo llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION: La región para procesar la solicitud.
- MODEL_ID: Es el ID del modelo que se está procesando.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Puedes llamar a la API de Functions Calling con la biblioteca de OpenAI. Para obtener más información, consulta Cómo llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Envía una declaración de función con FunctionCallingConfig
En el siguiente ejemplo, se muestra cómo pasar un FunctionCallingConfig
al modelo.
functionCallingConfig
garantiza que el resultado del modelo siempre sea una llamada a función específica. Para configurar, haz lo siguiente:
- Establece la llamada a función a
mode
enANY
. Especifica los nombres de las funciones que deseas usar en
allowed_function_names
. Siallowed_function_names
está vacío, se puede mostrar cualquiera de las funciones proporcionadas.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.5-pro-001
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
}
}'
Python
Node.js
Go
REST (OpenAI)
Puedes llamar a la API de Functions Calling con la biblioteca de OpenAI. Para obtener más información, consulta Cómo llamar a modelos de Vertex AI con la biblioteca de OpenAI.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- LOCATION: La región para procesar la solicitud.
- MODEL_ID: Es el ID del modelo que se está procesando.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Puedes llamar a la API de Functions Calling con la biblioteca de OpenAI. Para obtener más información, consulta Cómo llamar a modelos de Vertex AI con la biblioteca de OpenAI.
¿Qué sigue?
Para obtener documentación detallada, consulta lo siguiente: