Como parte de tu experiencia de Generación mejorada por recuperación (RAG) en Aplicaciones de IA, puedes generar respuestas fundamentadas a las instrucciones basadas en las siguientes fuentes de fundamentación:
- Búsqueda de Google: Usa la fundamentación con la Búsqueda de Google si deseas conectar el modelo con conocimiento mundial, una amplia variedad de temas o información actualizada en Internet. La fundamentación con la Búsqueda de Google admite la recuperación dinámica, que te brinda la opción de generar Resultados Fundamentados con la Búsqueda de Google solo cuando sea necesario. Por lo tanto, la configuración de recuperación dinámica evalúa si una instrucción requiere conocimiento sobre eventos recientes y habilita la fundamentación con la Búsqueda de Google. Para obtener más información, consulta Recuperación dinámica.
- Texto intercalado: Usa la fundamentación con texto intercalado para fundamentar la respuesta en fragmentos de texto llamados texto de hechos que se proporcionan en la solicitud. Un texto de hecho es una declaración proporcionada por el usuario que se considera fáctica para una solicitud determinada. El modelo no verifica la autenticidad del texto del hecho.
- Almacenes de datos de Vertex AI Search: Usa la fundamentación con Vertex AI Search si deseas conectar el modelo a los documentos de tu empresa desde los almacenes de datos de Vertex AI Search.
En esta página, se describe cómo generar respuestas fundamentadas basadas en estas fuentes de fundamentación con los siguientes enfoques:
Generación de respuestas de un solo turno
Además, puedes elegir transmitir las respuestas del modelo. La generación de una respuesta fundamentada por transmisión es una función experimental.
Puedes usar otros métodos para generar respuestas fundamentadas que se adapten a tu aplicación. Para obtener más información, consulta APIs de Vertex AI para crear experiencias de búsqueda y RAG.
Terminología
Antes de usar el método de generación de respuestas fundamentadas, es útil comprender las entradas y salidas, cómo estructurar tu solicitud y la terminología relacionada con la RAG.
Condiciones de RAG
La RAG es una metodología que permite que los modelos de lenguaje grandes (LLM) generen respuestas basadas en la fuente de datos que elijas. Existen dos etapas en RAG:
- Recuperación: Obtener los datos más relevantes rápidamente puede ser un problema de búsqueda común. Con la RAG, puedes recuperar rápidamente los datos importantes para generar una respuesta.
- Generación: El LLM usa los hechos recuperados para generar una respuesta fundamentada.
Por lo tanto, el método de generación de respuestas fundamentadas recupera los hechos de la fuente de fundamentación y genera una respuesta fundamentada.
Datos de entrada
El método de generación de respuestas fundamentadas requiere las siguientes entradas en la solicitud:
Rol: Es el remitente de un texto determinado, que puede ser un usuario (
user
) o un modelo (model
).Texto: Cuando el rol es
user
, el texto es una instrucción, y cuando el rol esmodel
, el texto es una respuesta fundamentada. La forma en que especificas el rol y el texto en una solicitud se determina de la siguiente manera:- En el caso de la generación de respuestas de un solo turno, el usuario envía el texto de la instrucción en la solicitud y el modelo envía el texto de la respuesta en la respuesta.
- Para la generación de respuestas en varios turnos, la solicitud contiene el par de instrucción y respuesta de todos los turnos anteriores, y el texto de la instrucción del usuario para el turno actual. Por lo tanto, en una solicitud de este tipo, el rol es
user
para el texto de la instrucción ymodel
para el texto de la respuesta.
Instrucción del sistema: Es un preámbulo de tu instrucción que rige el comportamiento del modelo y modifica el resultado según corresponda. Por ejemplo, puedes agregar un personaje a la respuesta generada o indicarle al modelo que formatee el texto de salida de una manera determinada. Para la generación de respuestas en varios turnos, debes proporcionar las instrucciones del sistema para cada turno. Para obtener más información, consulta Usa instrucciones del sistema.
Fuente de fundamentación: Es la fuente en la que se fundamenta la respuesta y puede ser una o más de las siguientes:
Búsqueda de Google: Fundamenta las respuestas con los resultados de la Búsqueda de Google. Cuando la fuente de fundamentación es la Búsqueda de Google, puedes especificar una configuración de recuperación dinámica con un umbral de recuperación dinámica. Para obtener más información, consulta Recuperación dinámica.
Texto intercalado: Fundamenta la respuesta en el texto de hechos que se proporciona en la solicitud. Un texto de hecho es una declaración proporcionada por el usuario que se considera fáctica para una solicitud determinada. El modelo no verifica la autenticidad del texto del hecho. Puedes proporcionar un máximo de 100 textos de hechos en cada fuente de texto intercalado. Los textos de hechos se pueden admitir con atributos de metadatos, como el título, el autor y el URI. Estos atributos de metadatos se devuelven en la respuesta cuando se citan los fragmentos que respaldan la respuesta.
Almacenes de datos de Vertex AI Search: Fundamenta la respuesta en los documentos de los almacenes de datos de Vertex AI Search. No puedes especificar un almacén de datos de búsqueda de sitios web como fuente de fundamentación.
En una solicitud determinada, puedes proporcionar una fuente de texto intercalada y una fuente de almacén de datos de Vertex AI Search. No puedes combinar la Búsqueda de Google con ninguna de estas fuentes. Por lo tanto, si deseas fundamentar tus respuestas con los resultados de la Búsqueda de Google, debes enviar una solicitud independiente en la que se especifique la Búsqueda de Google como la única fuente de fundamentación.
Puedes proporcionar un máximo de 10 fuentes de fundamentación en cualquier orden. Por ejemplo, supongamos que proporcionas las fuentes de fundamentación con el siguiente recuento, en el siguiente orden, para obtener un total de 10 fuentes de fundamentación:
- Tres fuentes de texto intercaladas, cada una de las cuales puede contener un máximo de 100 textos de hechos
- Seis almacenes de datos de Vertex AI Search
- Una fuente de texto intercalado que contiene un máximo de 100 textos de hechos
A cada fuente se le asigna un índice en el orden en que se especifica en la solicitud. Por ejemplo, si especificaste una combinación de fuentes en tu solicitud, el índice de fuente se asigna como se ilustra en la siguiente tabla:
Fuente de los fundamentos Índice Texto intercalado núm. 1 0 Texto intercalado núm. 2 1 Almacén de datos de Vertex AI Search núm. 1 2 Texto intercalado núm. 3 3 Almacén de datos de Vertex AI Search núm. 2 4 Este índice se cita en la respuesta y es útil para rastrear la procedencia.
Especificaciones de generación: Son las especificaciones para la configuración del modelo que constan de la siguiente información:
ID del modelo: Especifica el modelo de Gemini de Vertex AI que se usará para generar respuestas. Para obtener una lista de los modelos que puedes usar para generar respuestas fundamentadas, consulta Modelos compatibles.
Parámetros del modelo: Especifica los parámetros que puedes establecer para el modelo que elijas usar. Estos parámetros son: idioma, temperatura, top-P y top-K. Para obtener detalles sobre estos parámetros, consulta Parámetros del modelo de Gemini.
Código de idioma: Por lo general, el idioma de la respuesta generada se establece para que coincida con el idioma de la instrucción. Si no hay un solo idioma en la instrucción (por ejemplo, si la instrucción es muy corta y puede ser válida en varios idiomas), el campo de código de idioma determina el idioma de la respuesta.
Para obtener una lista de los códigos de idioma, consulta Idiomas.
Latitud y longitud: Especifica la latitud y la longitud del usuario. Si la búsqueda contiene preguntas específicas de la ubicación, como "Encuentra una cafetería cerca de mí", se usan estos campos. Si no se puede determinar el idioma de la búsqueda y no se establece el código de idioma, se usan la latitud y la longitud para determinar el idioma de la respuesta.
Datos de salida
La respuesta que genera el modelo se denomina candidata y contiene los siguientes datos. Es posible que no todos los campos estén presentes en el resultado.
Rol: Es el remitente de la respuesta fundamentada. La respuesta siempre contiene el texto de la respuesta fundamentada. Por lo tanto, el rol en una respuesta siempre es un modelo.
Texto: Es una respuesta fundamentada.
Puntuación de fundamentación: Es un valor de punto flotante en el rango [0, 1] que indica qué tan bien se fundamenta una respuesta en las fuentes proporcionadas.
Metadatos de fundamentación: Son los metadatos sobre la fuente de fundamentación. Los metadatos de fundamentación contienen la siguiente información:
Fragmentos de apoyo: Es una lista de fragmentos que respaldan la respuesta. A cada fragmento de asistencia se le asigna un índice que resulta útil para rastrear la procedencia. Cada fragmento de asistencia contiene lo siguiente:
- Texto de fragmento: Es una porción de texto citado textualmente de la fuente de la que se extrae la respuesta o una parte de la respuesta (denominada texto de la afirmación). Es posible que no siempre esté presente en la respuesta.
- Fuente: Es un índice asignado a la fuente en la solicitud.
Metadatos de la fuente: Son los metadatos sobre el fragmento. Según la fuente, los metadatos de la fuente pueden ser cualquiera de los siguientes:
- En el caso de una fuente intercalada, los metadatos pueden ser los detalles adicionales que se especificaron en la solicitud, como el título, el autor o el URI.
- En el caso del almacén de datos de Vertex AI Search, los metadatos pueden ser el ID del documento, el título del documento, el URI (ubicación de Cloud Storage) o el número de página.
- En el caso de la fundamentación con la Búsqueda de Google, cuando se genera un resultado fundamentado, los metadatos contienen un URI que redirecciona al editor del contenido que se usó para generar el resultado fundamentado. Los metadatos también contienen el dominio del publicador. Se puede acceder a los URIs proporcionados durante un máximo de 30 días después de que se genera el resultado de la conexión a tierra.
Compatibilidad con la fundamentación: Información de fundamentación para una afirmación en la respuesta. La asistencia de fundamentación contiene la siguiente información:
- Texto de la respuesta: Es la respuesta o una parte de la respuesta que se fundamenta con el texto del fragmento de apoyo.
- Índice de fragmento de asistencia: Es un índice asignado al fragmento de asistencia en el orden en que aparece en la lista de fragmentos de asistencia.
- Búsquedas web: Son las búsquedas sugeridas para las sugerencias de la Búsqueda de Google.
- Sugerencias de búsqueda: Si recibes sugerencias de la Búsqueda de Google con una respuesta, esa respuesta es un "Resultado Fundamentado" sujeto a las condiciones del servicio de Fundamentación con la Búsqueda de Google. Para obtener más información, consulta las Condiciones del Servicio.
El campo
renderedContent
dentro del camposearchEntryPoint
es el código proporcionado para implementar las sugerencias de la Búsqueda de Google. Para usar las sugerencias de la Búsqueda de Google, consulta Cómo usar las sugerencias de la Búsqueda de Google.
Genera una respuesta fundamentada en un solo turno
En esta sección, se describe cómo generar respuestas basadas en las siguientes fuentes:
Fundamentar la respuesta en texto intercalado y en el almacén de datos de Vertex AI Search
En el siguiente ejemplo, se muestra cómo enviar texto de instrucciones especificando un texto intercalado y un almacén de datos de Vertex AI Search como fuente de fundamentación.
No puedes especificar un almacén de datos de búsqueda de sitios web como fuente de fundamentación.
En este ejemplo, se usa el método generateGroundedContent
.
REST
Envía la instrucción en la siguiente solicitud curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_1", "attributes": { "title": "TITLE_1", "uri": "URI_1", "author": "AUTHOR_1" } } ] } }, { "inlineSource": { "groundingFacts": [ { "factText": "FACT_TEXT_2", "attributes": { "title": "TITLE_2", "uri": "URI_2" } }, { "factText": "FACT_TEXT_3", "attributes": { "title": "TITLE_3", "uri": "URI_3" } } ] } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search" } }, { "searchSource": { "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud .PROMPT_TEXT
: La instrucción del usuario.SYSTEM_INSTRUCTION
: Es un campo opcional para proporcionar un preámbulo o algún contexto adicional.FACT_TEXT_N
: Es el texto intercalado para fundamentar la respuesta. Puedes proporcionar un máximo de 100 textos de hechos.TITLE_N
: Es un campo opcional para establecer el atributo de metadatos del título para el texto intercalado.URI_N
: Es un campo opcional para establecer el atributo de metadatos del URI para el texto intercalado.AUTHOR_N
: Es un campo opcional para establecer el atributo de metadatos del autor para el texto intercalado.APP_ID_N
: Es el ID de la app de Vertex AI Search.MODEL_ID
: Es un campo opcional para establecer el ID del modelo de Gemini que deseas usar para generar la respuesta fundamentada. Para obtener una lista de los IDs de modelos disponibles, consulta Modelos compatibles.TEMPERATURE
: Es un campo opcional para establecer la temperatura que se usa para el muestreo. Google recomienda una temperatura de 0.0. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_P
: Es un campo opcional para establecer el valor de top-P del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_K
: Es un campo opcional para establecer el valor de Top-K del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.LANGUAGE_CODE
: Es un campo opcional que se puede usar para establecer el idioma de la respuesta generada y del texto del fragmento que se devuelve. Si no se puede determinar el idioma a partir de la búsqueda, se usa este campo. El valor predeterminado esen
. Para obtener una lista de los códigos de idioma, consulta Idiomas.LATITUDE
: Un campo opcional para establecer la latitud. Ingresa el valor en grados decimales, por ejemplo,-25.34
.LONGITUDE
: un campo opcional para establecer la longitud. Ingresa el valor en grados decimales, por ejemplo,131.04
.
Ejemplo de generación de respuestas de un solo turno fundamentadas en texto intercalado y Vertex AI Search
En el siguiente ejemplo, la solicitud especifica las siguientes fuentes de fundamentación: un hecho de texto intercalado y un almacén de datos de Vertex AI Search. En este ejemplo, se usa el método generateGroundedContent
. En este ejemplo, también se usa una instrucción del sistema para finalizar la respuesta con un emoji de cara sonriente.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "How did Google do in 2020? Where can I find BigQuery docs?" } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction", "attributes": { "title": "BigQuery Overview", "uri": "https://cloud.google.com/bigquery/docs/introduction" } } ] } }, { "searchSource": { "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search" } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" }, "user_context": { "languageCode: "en", "latLng": { "latitude": 37.422131, "longitude": -122.084801 } } }'
Genera respuestas fundamentadas con la Búsqueda de Google
Puedes fundamentar las respuestas generadas con datos web disponibles públicamente.
Recuperación dinámica
Puedes usar la recuperación dinámica en tu solicitud para elegir cuándo desactivar la fundamentación con la Búsqueda de Google. Esto es útil cuando la instrucción no requiere una respuesta fundamentada en la Búsqueda de Google y los modelos compatibles pueden proporcionar una respuesta basada en su conocimiento sin fundamentación. Esto te ayuda a administrar la latencia, la calidad y el costo con mayor eficacia.
Puntuación y umbral de predicción de recuperación dinámica
Cuando envías una solicitud para generar una respuesta fundamentada, AI Applications asigna una puntuación de predicción a la instrucción. La puntuación de predicción es un valor de punto flotante en el rango [0,1]. Su valor depende de si la instrucción puede beneficiarse de fundamentar la respuesta con la información más actualizada de la Búsqueda de Google. Por lo tanto, una instrucción que requiere una respuesta basada en los hechos más recientes de la Web tiene una puntuación de predicción más alta, y una instrucción para la que es suficiente una respuesta generada por el modelo tiene una puntuación de predicción más baja.
A continuación, se incluyen ejemplos de algunas instrucciones y sus puntuaciones de predicción.
Instrucción | Puntuación de predicción | Comentario |
---|---|---|
"Escribe un poema sobre las peonías". | 0.13 | El modelo puede basarse en su conocimiento y la respuesta no necesita fundamentación. |
"Sugerir un juguete para un niño de 2 años" | 0.36 | El modelo puede basarse en su conocimiento y la respuesta no necesita fundamentación. |
"¿Puedes darme una receta de guacamole con inspiración asiática?" | 0.55 | La Búsqueda de Google puede proporcionar una respuesta fundamentada, pero la fundamentación no es estrictamente necesaria; el conocimiento del modelo podría ser suficiente. |
"¿Qué son las aplicaciones de IA? ¿Cómo se factura la fundamentación en las aplicaciones de IA?" | 0.72 | Requiere que la Búsqueda de Google genere una respuesta bien fundamentada |
"¿Quién ganó el último Gran Premio de F1?" | 0.97 | Requiere que la Búsqueda de Google genere una respuesta bien fundamentada |
En tu solicitud de generación de respuestas fundamentadas, puedes especificar una configuración de recuperación dinámica con un umbral. El umbral es un valor de punto flotante en el rango [0,1] y su valor predeterminado es 0.7. Si el valor del umbral es cero, la respuesta siempre se basa en la Búsqueda de Google. Para todos los demás valores del umbral, se aplica lo siguiente:
- Si la puntuación de predicción es mayor o igual que el umbral, la respuesta se fundamenta con la Búsqueda de Google. Un umbral más bajo implica que más instrucciones tienen respuestas que se generan con la fundamentación con la Búsqueda de Google.
- Si la puntuación de predicción es inferior al umbral, es posible que el modelo genere la respuesta, pero no se basará en la Búsqueda de Google.
Para encontrar un buen umbral que se adapte a las necesidades de tu empresa, puedes crear un conjunto representativo de búsquedas que esperas encontrar. Luego, puedes ordenar las búsquedas según la puntuación de predicción en la respuesta y seleccionar un umbral adecuado para tu caso de uso.
Fundamenta la respuesta con la Búsqueda de Google
En el siguiente ejemplo, se muestra cómo generar una respuesta fundamentada a partir de una instrucción especificando la Búsqueda de Google como fuente de fundamentación. En este ejemplo, se usa el método generateGroundedContent
.
REST
Envía la instrucción en la siguiente solicitud curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": DYNAMIC_RETRIEVAL_THRESHOLD } } } } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud .PROMPT_TEXT
: La instrucción del usuario.SYSTEM_INSTRUCTION
: Es un campo opcional para proporcionar un preámbulo o algún contexto adicional.DYNAMIC_RETRIEVAL_THRESHOLD
: Es un campo opcional para establecer el umbral para invocar la configuración de recuperación dinámica. Es un valor de punto flotante en el rango [0,1]. Si agregas el campodynamicRetrievalConfig
, pero no estableces el campopredictor
othreshold
, el valor del umbral se establece de forma predeterminada en 0.7. Si no configuras el campodynamicRetrievalConfig
, la respuesta siempre se fundamenta.MODEL_ID
: Es un campo opcional para establecer el ID del modelo de Gemini que deseas usar para generar la respuesta fundamentada. Para obtener una lista de los IDs de modelos disponibles, consulta Modelos compatibles.TEMPERATURE
: Es un campo opcional para establecer la temperatura que se usa para el muestreo. Google recomienda una temperatura de 0.0. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_P
: Es un campo opcional para establecer el valor de top-P del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_K
: Es un campo opcional para establecer el valor de Top-K del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.LANGUAGE_CODE
: Es un campo opcional que se puede usar para establecer el idioma de la respuesta generada y del texto del fragmento que se devuelve. Si no se puede determinar el idioma a partir de la búsqueda, se usa este campo. El valor predeterminado esen
. Para obtener una lista de los códigos de idioma, consulta Idiomas.LATITUDE
: Un campo opcional para establecer la latitud. Ingresa el valor en grados decimales, por ejemplo,-25.34
.LONGITUDE
: un campo opcional para establecer la longitud. Ingresa el valor en grados decimales, por ejemplo,131.04
.
Ejemplo de generación de respuestas de un solo turno fundamentadas con la Búsqueda de Google
En el siguiente ejemplo, la solicitud especifica la Búsqueda de Google como la fuente de fundamentación. En este ejemplo, se usa el método generateGroundedContent
. En este ejemplo, también se usa una instrucción del sistema para finalizar la respuesta con un emoji de cara sonriente.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [{ "role": "user", "parts": [{ "text": "What is ai applications?" }] }], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": { "dynamicRetrievalConfig": { "predictor":{ "threshold": 0.6 } } } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } '
Genera una respuesta fundamentada en varios turnos
En la generación de respuestas de varios turnos, en cada solicitud, debes enviar todo el texto intercambiado entre el usuario y el modelo en todos los turnos anteriores. Esto garantiza la continuidad y mantiene el contexto para generar la respuesta a la instrucción más reciente.
Para obtener una respuesta fundamentada a través de la generación de respuestas en varios turnos, haz lo siguiente:
REST
En los siguientes ejemplos, se muestra cómo enviar texto de instrucciones de seguimiento en varios turnos. En estos ejemplos, se usa el método generateGroundedContent
y se fundamentan las respuestas con la Búsqueda de Google.
Puedes seguir pasos similares para generar respuestas fundamentadas con otras fuentes de fundamentación.
Envía la primera instrucción en la siguiente solicitud curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_1" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud .PROMPT_TEXT_TURN_1
: Es el texto de la instrucción del usuario en el primer turno.SYSTEM_INSTRUCTION_TURN_1
: Es un campo opcional para proporcionar un preámbulo o algún contexto adicional. Para la generación de respuestas en varios turnos, debes proporcionar las instrucciones del sistema para cada turno.MODEL_ID
: Es un campo opcional para establecer el ID del modelo de Gemini que deseas usar para generar la respuesta fundamentada. Para obtener una lista de los IDs de modelos disponibles, consulta Modelos compatibles.TEMPERATURE
: Es un campo opcional para establecer la temperatura que se usa para el muestreo. Google recomienda una temperatura de 0.0. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_P
: Es un campo opcional para establecer el valor de top-P del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_K
: Es un campo opcional para establecer el valor de Top-K del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.LANGUAGE_CODE
: Es un campo opcional que se puede usar para establecer el idioma de la respuesta generada y del texto del fragmento que se devuelve. Si no se puede determinar el idioma a partir de la búsqueda, se usa este campo. El valor predeterminado esen
. Para obtener una lista de los códigos de idioma, consulta Idiomas.LATITUDE
: Un campo opcional para establecer la latitud. Ingresa el valor en grados decimales, por ejemplo,-25.34
.LONGITUDE
: un campo opcional para establecer la longitud. Ingresa el valor en grados decimales, por ejemplo,131.04
.
Envía la segunda instrucción como seguimiento. Agrega la primera instrucción del usuario seguida de la respuesta correspondiente del modelo para proporcionar contexto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_1" } ] }, { "role": "model", "parts": [ { "text": "ANSWER_TEXT_TURN_1" } ] }, { "role": "user", "parts": [ { "text": "PROMPT_TEXT_TURN_2" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION_TURN_2" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } }'
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud .PROMPT_TEXT_TURN_1
: Es el texto de la instrucción del usuario en el primer turno.ANSWER_TEXT_TURN_1
: Es el texto de respuesta del modelo en el primer turno.PROMPT_TEXT_TURN_2
: Es el texto de la instrucción del usuario en el segundo turno.SYSTEM_INSTRUCTION_TURN_2
: Es un campo opcional para proporcionar un preámbulo o algún contexto adicional. Para la generación de respuestas en varios turnos, debes proporcionar las instrucciones del sistema para cada turno.MODEL_ID
: Es un campo opcional para establecer el ID del modelo de Gemini que deseas usar para generar la respuesta fundamentada. Para obtener una lista de los IDs de modelos disponibles, consulta Modelos compatibles.TEMPERATURE
: Es un campo opcional para establecer la temperatura que se usa para el muestreo. Google recomienda una temperatura de 0.0. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_P
: Es un campo opcional para establecer el valor de top-P del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_K
: Es un campo opcional para establecer el valor de Top-K del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.LANGUAGE_CODE
: Es un campo opcional que se puede usar para establecer el idioma de la respuesta generada y del texto del fragmento que se devuelve. Si no se puede determinar el idioma a partir de la búsqueda, se usa este campo. El valor predeterminado esen
. Para obtener una lista de los códigos de idioma, consulta Idiomas.LATITUDE
: Un campo opcional para establecer la latitud. Ingresa el valor en grados decimales, por ejemplo,-25.34
.LONGITUDE
: un campo opcional para establecer la longitud. Ingresa el valor en grados decimales, por ejemplo,131.04
.
Repite este proceso para obtener más respuestas de seguimiento. En cada turno, agrega todas las instrucciones anteriores del usuario seguidas de las respuestas correspondientes del modelo.
Ejemplo de generación de respuestas de varios turnos
En el siguiente ejemplo, la solicitud especifica tres textos de hechos intercalados como la fuente de fundamentación para generar respuestas en dos turnos. En este ejemplo, se usa el método generateGroundedContent
. Este ejemplo también usa una instrucción del sistema para finalizar la respuesta en el primer turno con un emoji de cara sonriente.
REST
Envía la primera instrucción en la siguiente solicitud curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] } ], "systemInstruction": { "parts": { "text": "Add a smiley emoji after the answer." } }, "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Envía la segunda instrucción como seguimiento. Agrega la primera instrucción del usuario seguida de la respuesta correspondiente del modelo para proporcionar contexto.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \ -d ' { "contents": [ { "role": "user", "parts": [ { "text": "Summarize what happened in 2023 in one paragraph." } ] }, { "role": "model", "parts": [ { "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion. 😊 \n" } ] }, { "role": "user", "parts": [ { "text": "Rephrase the answer in an abstracted list." } ] } ], "grounding_spec": { "grounding_sources": [ { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.", "attributes": { "title": "title_1", "uri": "some-uri-1" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.", "attributes": { "title": "title_2", "uri": "some-uri-2" } } ] } }, { "inline_source": { "grounding_facts": [ { "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.", "attributes": { "title": "title_3", "uri": "some-uri-3" } } ] } } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } }'
Transmite respuestas fundamentadas
Puedes elegir transmitir las respuestas del modelo. Esto es útil en los casos de uso en los que la respuesta es especialmente larga y enviar toda la respuesta de una sola vez causa una demora significativa. La transmisión de la respuesta desglosa la respuesta en un array de varios candidatos que contienen partes secuenciales del texto de la respuesta.
Para obtener una respuesta fundamentada y transmitida, haz lo siguiente:
REST
En el siguiente ejemplo, se muestra cómo transmitir una respuesta fundamentada.
En este ejemplo, se usa el método streamGenerateGroundedContent
y se fundamenta la respuesta con la Búsqueda de Google sin la configuración de recuperación dinámica. Puedes seguir pasos similares para generar respuestas fundamentadas con otras fuentes de fundamentación.
Envía la instrucción en la siguiente solicitud curl.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "PROMPT_TEXT" } ] } ], "systemInstruction": { "parts": { "text": "SYSTEM_INSTRUCTION" } }, "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "MODEL_ID", "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K }, "user_context": { "languageCode: "LANGUAGE_CODE", "latLng": { "latitude": LATITUDE, "longitude": LONGITUDE }, } } ]'
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto de Google Cloud .PROMPT_TEXT
: La instrucción del usuario.SYSTEM_INSTRUCTION
: Es un campo opcional para proporcionar un preámbulo o algún contexto adicional.MODEL_ID
: Es un campo opcional para establecer el ID del modelo de Gemini que deseas usar para generar la respuesta fundamentada. Para obtener una lista de los IDs de modelos disponibles, consulta Modelos compatibles.TEMPERATURE
: Es un campo opcional para establecer la temperatura que se usa para el muestreo. Google recomienda una temperatura de 0.0. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_P
: Es un campo opcional para establecer el valor de top-P del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.TOP_K
: Es un campo opcional para establecer el valor de Top-K del modelo. Para obtener más información, consulta Parámetros del modelo de Gemini.LANGUAGE_CODE
: Es un campo opcional que se puede usar para establecer el idioma de la respuesta generada y del texto del fragmento que se devuelve. Si no se puede determinar el idioma a partir de la búsqueda, se usa este campo. El valor predeterminado esen
. Para obtener una lista de los códigos de idioma, consulta Idiomas.LATITUDE
: Un campo opcional para establecer la latitud. Ingresa el valor en grados decimales, por ejemplo,-25.34
.LONGITUDE
: un campo opcional para establecer la longitud. Ingresa el valor en grados decimales, por ejemplo,131.04
.
Ejemplo de respuestas fundamentadas de transmisión
En el siguiente ejemplo, la solicitud especifica la Búsqueda de Google como la fuente de fundamentación para transmitir una respuesta sin la configuración de recuperación dinámica. La respuesta transmitida se distribuye en varios candidatos de respuesta. En este ejemplo, se usa el método streamGenerateGroundedContent
.
REST
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \ -d ' [ { "contents": [ { "role": "user", "parts": [ { "text": "Summarize How to delete a data store in AI Applications?" } ] } ], "groundingSpec": { "groundingSources": [ { "googleSearchSource": {} } ] }, "generationSpec": { "modelId": "gemini-1.5-flash" } } ]'
Modelos compatibles
Los siguientes modelos admiten la fundamentación:
- Gemini 1.5 Pro solo con entrada de texto
- Gemini 1.5 Flash solo con entrada de texto
Para obtener más información sobre estos modelos de Gemini, consulta Versiones de modelos y ciclo de vida de Gemini.
Cuando llamas al método generateGroundedContent
, puedes usar los siguientes IDs de modelo:
ID de modelo | Actualizado automáticamente |
---|---|
default |
Sí |
gemini-1.5-flash |
Sí |
gemini-1.5-flash-001 |
No |
gemini-1.5-flash-002 |
No |
gemini-1.5-pro |
Sí |
gemini-1.5-pro-001 |
No |
gemini-1.5-pro-002 |
No |
¿Qué sigue?
Aprende a usar el método de generación fundamentada con otras APIs de RAG para generar respuestas fundamentadas a partir de datos no estructurados.