Puedes garantizar que el resultado generado por un modelo siempre se ajuste a un esquema específico para recibir respuestas con un formato coherente. Por ejemplo, puede que tengas un esquema de datos establecido que uses para otras tareas. Si el modelo sigue el mismo esquema, puedes extraer datos directamente de su salida sin necesidad de realizar ningún post-procesamiento.
Para especificar la estructura de la salida de un modelo, define un esquema de respuesta, que funciona como un plano para las respuestas del modelo. Cuando envías una petición e incluyes el esquema de respuesta, la respuesta del modelo siempre sigue el esquema que has definido.
Puedes controlar el resultado generado cuando usas los siguientes modelos:
Modelos de Gemini:
Modelos abiertos:
En el caso de los modelos abiertos, sigue esta guía del usuario.
Ejemplos de casos prácticos
Un caso práctico para aplicar un esquema de respuesta es asegurarse de que la respuesta de un modelo genere un JSON válido y se ajuste a tu esquema. Las salidas de los modelos generativos pueden tener cierto grado de variabilidad, por lo que incluir un esquema de respuesta asegura que siempre recibas un JSON válido. Por lo tanto, tus tareas posteriores pueden esperar de forma fiable una entrada JSON válida de las respuestas generadas.
Otro ejemplo es restringir la forma en que puede responder un modelo. Por ejemplo, puedes hacer que un modelo anote texto con etiquetas definidas por el usuario, no con etiquetas que genere el modelo. Esta restricción es útil cuando esperas un conjunto específico de etiquetas, como positive
o negative
, y no quieres recibir una mezcla de otras etiquetas que el modelo pueda generar, como good
, positive
, negative
o bad
.
Cuestiones importantes
A continuación, se describen las posibles limitaciones que pueden surgir si tienes previsto usar un esquema de respuesta:
- Debes usar la API para definir y usar un esquema de respuesta. No hay asistencia para consolas.
- El tamaño del esquema de respuesta se tiene en cuenta para el límite de tokens de entrada.
- Solo se admiten determinados formatos de salida, como
application/json
otext/x.enum
. Para obtener más información, consulta el parámetroresponseMimeType
en la referencia de la API de Gemini. - La salida estructurada admite un subconjunto de la referencia de esquemas de Vertex AI. Para obtener más información, consulta la sección sobre los campos de esquema admitidos.
Un esquema complejo puede provocar un error
InvalidArgument: 400
. La complejidad puede deberse a nombres de propiedades largos, límites de longitud de arrays largos, enumeraciones con muchos valores, objetos con muchas propiedades opcionales o una combinación de estos factores.Si aparece este error con un esquema válido, haz uno o varios de los siguientes cambios para resolverlo:
- Acorta los nombres de las propiedades o de las enumeraciones.
- Aplanar matrices anidadas.
- Reduce el número de propiedades con restricciones, como los números con límites mínimos y máximos.
- Reduce el número de propiedades con restricciones complejas, como las propiedades con formatos complejos, como
date-time
. - Reduce el número de propiedades opcionales.
- Reduce el número de valores válidos de las enumeraciones.
Campos de esquema admitidos
La salida estructurada admite los siguientes campos del esquema de Vertex AI. Si usas un campo no admitido, Vertex AI podrá gestionar tu solicitud, pero ignorará el campo.
anyOf
enum
: solo se admiten enumsstring
format
items
maximum
maxItems
minimum
minItems
nullable
properties
propertyOrdering
*required
* propertyOrdering
es específico para la salida estructurada y no forma parte del esquema de Vertex AI. Este campo define el orden en el que se generan las propiedades. Las propiedades de la lista deben ser únicas y deben ser claves válidas en el diccionario properties
.
En el campo format
, Vertex AI admite los siguientes valores: date
,
date-time
, duration
y time
. La descripción y el formato de cada valor se describen en el registro de la iniciativa OpenAPI.
Antes de empezar
Define un esquema de respuesta para especificar la estructura de la salida de un modelo, los nombres de los campos y el tipo de datos esperado de cada campo. Utiliza solo los campos admitidos que se indican en la sección Consideraciones. Se ignoran los demás campos.
Incluye tu esquema de respuesta solo como parte del campo responseSchema
. No dupliques el esquema en tu petición. Si lo haces, la calidad del resultado generado podría ser inferior.
Para ver esquemas de ejemplo, consulta la sección Esquemas de ejemplo y respuestas del modelo.
Comportamiento del modelo y esquema de respuesta
Cuando un modelo genera una respuesta, usa el nombre del campo y el contexto de tu petición. Por este motivo, te recomendamos que uses una estructura clara y nombres de campo inequívocos para que tu intención quede clara.
De forma predeterminada, los campos son opcionales, lo que significa que el modelo puede rellenar los campos o omitirlos. Puedes definir campos como obligatorios para forzar al modelo a proporcionar un valor. Si no hay suficiente contexto en la petición asociada, el modelo genera respuestas basadas principalmente en los datos con los que se ha entrenado.
Si no obtienes los resultados que esperabas, añade más contexto a tus peticiones o revisa el esquema de respuesta. Por ejemplo, revisa la respuesta del modelo sin salida estructurada para ver cómo responde. Después, puedes actualizar el esquema de respuesta para que se ajuste mejor al resultado del modelo.
Enviar una petición con un esquema de respuesta
De forma predeterminada, todos los campos son opcionales, lo que significa que un modelo puede generar una respuesta a un campo. Para obligar al modelo a generar siempre una respuesta a un campo, define el campo como obligatorio.
Python
Instalar
pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Consulta cómo instalar o actualizar Go.
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- GENERATE_RESPONSE_METHOD: el tipo de respuesta que quieres que genere el modelo.
Elige un método que genere la forma en que quieres que se devuelva la respuesta del modelo:
streamGenerateContent
: la respuesta se transmite en tiempo real a medida que se genera para reducir la percepción de latencia de los usuarios.generateContent
: La respuesta se devuelve una vez que se ha generado por completo.
- LOCATION: la región en la que se procesará la solicitud.
- PROJECT_ID: tu ID de proyecto.
- MODEL_ID: ID del modelo multimodal que quieras usar.
- ROLE:
El rol en una conversación asociada al contenido. Es obligatorio especificar un rol incluso en los casos prácticos de una sola interacción.
Entre los valores aceptados se incluyen los siguientes:
USER
: especifica el contenido que has enviado.
- TEXT: las instrucciones de texto que se deben incluir en la petición.
- RESPONSE_MIME_TYPE: el tipo de formato del texto candidato generado. Para ver una lista de los valores admitidos, consulta el parámetro
responseMimeType
en la API de Gemini. - RESPONSE_SCHEMA: esquema que debe seguir el modelo al generar respuestas. Para obtener más información, consulta la referencia de Schema.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Cuerpo JSON de la solicitud:
{ "contents": { "role": "ROLE", "parts": { "text": "TEXT" } }, "generation_config": { "responseMimeType": "RESPONSE_MIME_TYPE", "responseSchema": RESPONSE_SCHEMA, } }
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:GENERATE_RESPONSE_METHOD"
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:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente.
Comando curl de ejemplo
LOCATION="us-central1"
MODEL_ID="gemini-2.5-flash"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"
cat << EOF > request.json
{
"contents": {
"role": "user",
"parts": {
"text": "List a few popular cookie recipes."
}
},
"generation_config": {
"maxOutputTokens": 2048,
"responseMimeType": "application/json",
"responseSchema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"recipe_name": {
"type": "string",
},
},
"required": ["recipe_name"],
},
}
}
}
EOF
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}:${GENERATE_RESPONSE_METHOD} \
-d '@request.json'
Ejemplos de esquemas para la salida JSON
En las siguientes secciones se muestran varias peticiones de ejemplo y esquemas de respuesta. También se incluye un ejemplo de respuesta del modelo después de cada ejemplo de código.
- Previsión del tiempo para cada día de la semana en una matriz
- Clasificar un producto con un enum bien definido
Previsión meteorológica de cada día de la semana
En el siguiente ejemplo se muestra un objeto forecast
para cada día de la semana, que incluye una matriz de propiedades, como la temperatura y el nivel de humedad previstos para ese día. Algunas propiedades se definen como anulables
para que el modelo pueda devolver un valor nulo cuando no tenga suficiente contexto para
generar una respuesta significativa. Esta estrategia ayuda a reducir las alucinaciones.
Python
Instalar
pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Consulta cómo instalar o actualizar Go.
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Clasificar un producto
En el siguiente ejemplo se incluyen enumeraciones en las que el modelo debe clasificar el tipo y el estado de un objeto a partir de una lista de valores determinados.
Python
Instalar
pip install --upgrade google-genai
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Consulta cómo instalar o actualizar Go.
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
Instalar
npm install @google/genai
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Java
Consulta cómo instalar o actualizar Java.
Para obtener más información, consulta la documentación de referencia del SDK.
Define variables de entorno para usar el SDK de IA generativa con Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True