En esta página, se presenta la búsqueda con preguntas adicionales para la Búsqueda de Vertex AI y se muestra cómo implementarla con llamadas a la API.
Si deseas agregar búsquedas con preguntas adicionales al widget de búsqueda, consulta Cómo configurar los resultados para el widget de búsqueda.
La búsqueda con preguntas adicionales se aplica a las apps de búsqueda con datos no estructurados y sitios web.
La búsqueda con preguntas adicionales no se aplica a las apps de Vertex AI Agents. Las apps de agentes de Vertex AI usan un agente que puede tener conversaciones sobre el contenido con tus usuarios finales. Para obtener más información sobre los agentes de Vertex AI, consulta Introducción a los agentes de Vertex AI.
Acerca de la búsqueda con seguimientos
La búsqueda con preguntas adicionales se basa en modelos de IA generativa. La búsqueda con preguntas adicionales es diferente de la búsqueda normal de datos no estructurados porque la búsqueda con preguntas adicionales tiene en cuenta las consultas anteriores en la misma sesión de búsqueda.
La búsqueda con seguimientos admite lo siguiente:
Procesamiento de consultas de lenguaje natural: Procesa y comprende la entrada de lenguaje humano, identifica la intención detrás de una consulta y muestra resultados relevantes.
Conciencia contextual: Comprende el contexto de las interacciones anteriores y proporciona respuestas adaptadas al contexto.
Múltiples turnos: Permite que los usuarios hagan preguntas de seguimiento y reciban respuestas relevantes.
Ejemplo de búsqueda con seguimientos
El siguiente es un ejemplo de búsqueda con seguimientos. Supongamos que quieres saber más sobre las vacaciones en México:
Tú: ¿Cuál es la mejor época del año para vacacionar en México?
Búsqueda con preguntas adicionales: La mejor época para vacacionar en México es durante la temporada seca, que va de noviembre a abril.
Tú: ¿Cuál es el tipo de cambio?
Búsqueda con seguimientos: 1 USD equivale a aproximadamente 17.65 pesos mexicanos.
Tú: ¿Cuál es la temperatura promedio en diciembre?
Búsqueda con preguntas adicionales: La temperatura promedio varía de 21 a 26 °C. El promedio de Cancún es de alrededor de 25 °C.
Con la búsqueda normal, no se podría responder la pregunta "¿Cuál es el tipo de cambio?", ya que la búsqueda normal no sabría que quieres el tipo de cambio de México. Del mismo modo, una búsqueda normal no mantendría el contexto para brindarte las temperaturas de México.
Información acerca de las conversaciones
En la búsqueda con seguimientos, una conversación se compone de consultas de texto que proporciona un usuario y respuestas que proporciona Vertex AI Search.
A veces, estos pares de consulta y respuesta se denominan mensajes. En el ejemplo anterior, el segundo mensaje está compuesto por "¿Cuál es el tipo de cambio?" y "1 USD equivale a aproximadamente 17.65 pesos mexicanos".
Las conversaciones se almacenan en el mismo almacén de datos en el que se guardan los datos no estructurados. En el almacén de datos, el recurso de conversación representa una conversación. Además de contener los mensajes de consulta y respuesta, el recurso de conversación tiene lo siguiente:
Un nombre único (el ID de la conversación).
Un estado (en curso o completado).
Un seudo-ID de usuario, que es un ID de visitante que realiza un seguimiento del usuario. Se puede asignar de forma programática.
Una hora de inicio y una de finalización
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos. Los requisitos varían según el tipo de app que tengas.
Si tienes una app de búsqueda no estructurada, asegúrate de que esté activada la siguiente opción: Funciones avanzadas de LLM
Si tienes una app de búsqueda de sitios web, asegúrate de que los siguientes elementos estén activados:
Almacena conversaciones y obtén respuestas
Puedes usar la línea de comandos o las bibliotecas cliente para generar respuestas de búsqueda y almacenar la conversación de búsqueda con preguntas adicionales.
REST
Para usar la línea de comandos y crear una conversación y generar respuestas a partir de la entrada del usuario, sigue estos pasos:
Especifica el almacén de datos en el que deseas almacenar el historial de conversaciones:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations" \ -d '{ "user_pseudo_id": "USER_PSEUDO_ID" }'
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
USER_PSEUDO_ID: Es un identificador único para hacer un seguimiento de un visitante de búsqueda. Por ejemplo, puedes implementar esto con una cookie HTTP, que identifica de forma única a un visitante en un solo dispositivo.
Haz clic para ver un ejemplo de respuesta del comando
POST
.{ "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id", "startTime": "2023-08-15T20:08:12.094639Z" }
Genera una respuesta de búsqueda y agrégala a una conversación nueva o existente en tu almacén de datos:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "filter": "FILTER" }'
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
CONVERSATION_ID: Es un ID único para la conversación, por ejemplo,
123456
. Para una conversación de búsqueda con preguntas adicionales, usa el mismo ID de conversación en cada turno.FREE_TEXT: Es una cadena de texto libre que contiene la pregunta del usuario, por ejemplo,
what is bigquery?
.FILTER: Es un campo de texto para filtrar la búsqueda con una expresión de filtro. El valor predeterminado es una string vacía. La forma en que construyes tu filtro varía según si tienes datos de sitios web o datos no estructurados con metadatos. Para obtener más información, consulta Cómo filtrar la búsqueda con preguntas adicionales.
Haz clic para ver un ejemplo de respuesta del comando
POST
.{ "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } }, "conversation": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" }, "searchResults": [ { "id": "c86f19582746b56f71c9bb6929893835", "document": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/c86f19582746b56f71c9bb6929893835", "id": "c86f19582746b56f71c9bb6929893835", "derivedStructData": { "link": "gs://aquamuse-data-ucs-eval-dev/documents/94627ee0249dfdfda25b1b158c717bca.txt", "snippets": [ { "snippet_status": "SUCCESS", "snippet": "For larger websites, talk to the IT team and/or utilize a big data solution such as Google \u003cb\u003eBigQuery\u003c/b\u003e to extract all URLs. It may also be necessary to ask the ..." } ], "extractive_answers": [ { "content": "Alternatively, load the Server Log Files into Google BigQuery and use the Google BigQuery interface or the 360 Data Studio to analyze the data. To monitor the indexation numbers of the HTTP and the HTTPS version, keep an eye on all submitted XML Sitemaps." } ] } } }, { "id": "774bd7ce2a3509ab4bbd1fc876f39dc2", "document": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/774bd7ce2a3509ab4bbd1fc876f39dc2", "id": "774bd7ce2a3509ab4bbd1fc876f39dc2", "derivedStructData": { "snippets": [ { "snippet": "No snippet is available for this page.", "snippet_status": "NO_SNIPPET_AVAILABLE" } ], "extractive_answers": [ { "content": "This consists of a collection of virtual tables. A virtual table exists for every queryable object type (content type if you prefer) in the repository. Each row in these virtual tables correspond to an instance of the corresponding object type (or of one of its subtypes)." } ], "link": "gs://aquamuse-data-ucs-eval-dev/documents/28841ef8590a105e9415f1390648a811.txt" } } }, { "id": "3e1d306e49aefd9e23f2d5f7a66e6c76", "document": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/3e1d306e49aefd9e23f2d5f7a66e6c76", "id": "3e1d306e49aefd9e23f2d5f7a66e6c76", "derivedStructData": { "snippets": [ { "snippet": "No snippet is available for this page.", "snippet_status": "NO_SNIPPET_AVAILABLE" } ], "extractive_answers": [ { "content": "Other logo switches are based on search terms. For instance, if the term "ASCII art" is searched, an ASCII art version of the Google logo will appear next to the search box." } ], "link": "gs://aquamuse-data-ucs-eval-dev/documents/98008df3eef5d3ee1661c52f23189190.txt" } } }, { "id": "cf94e24aacd47cd2c2f5effcbdeda832", "document": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/cf94e24aacd47cd2c2f5effcbdeda832", "id": "cf94e24aacd47cd2c2f5effcbdeda832", "derivedStructData": { "extractive_answers": [ { "content": "The company is listed on the NASDAQ stock exchange under the ticker symbols GOOGL and GOOG, and on the Frankfurt Stock Exchange under the ticker symbol GGQ1. These ticker symbols now refer to Alphabet Inc., Google's holding company, since the fourth quarter of 2015." } ], "snippets": [ { "snippet": "No snippet is available for this page.", "snippet_status": "NO_SNIPPET_AVAILABLE" } ], "link": "gs://aquamuse-data-ucs-eval-dev/documents/d80204083ef1096799fa4b7257548b33.txt" } } }, { "id": "05bc6497a4e7e6ca36b2e495b354b764", "document": { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/05bc6497a4e7e6ca36b2e495b354b764", "id": "05bc6497a4e7e6ca36b2e495b354b764", "derivedStructData": { "extractive_answers": [ { "content": "SQL injection countermeasures are designed to utilize secure programming methods. By changing the variables used by the application code, weaknesses in applications can be greatly minimized. This report will detail how to perform a SQL injection and explore the best countermeasures to prevent the attack." } ], "link": "gs://aquamuse-data-ucs-eval-dev/documents/7cba75d646f5774a21d96801bec68bb3.txt", "snippets": [ { "snippet_status": "NO_SNIPPET_AVAILABLE", "snippet": "No snippet is available for this page." } ] } } } ] }
Repite el paso 2 para cada pregunta nueva en la conversación.
Python
Para obtener más información, consulta la documentación de referencia de la API de Python del compilador de agentes de Vertex AI.
Para autenticarte en Vertex AI Agent Builder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo filtrar la búsqueda con seguimientos
Cuando realices una consulta con la búsqueda con preguntas adicionales, puedes incluir el campo filter
para restringir el conjunto de documentos a partir del cual se deriva una respuesta. Puedes
construir tu filtro con expresiones de filtro. Las expresiones de filtro que usas varían según si tienes datos de sitios web o datos no estructurados con metadatos.
Expresiones de filtro para datos de sitios web
Si tienes un almacén de datos con datos de sitios web, puedes filtrar tu búsqueda con una consulta de seguimiento mediante las expresiones de filtro que se describen en Expresiones de filtro con indexación avanzada de sitios web. Después de
construir tu expresión de filtro, úsala para el valor del campo filter
en
el paso 2 de Cómo almacenar conversaciones y obtener respuestas.
Expresiones de filtro para datos no estructurados con metadatos
Si tienes un almacén de datos con datos no estructurados con metadatos, puedes filtrar
tu búsqueda con una consulta de seguimiento para que muestre documentos según los
campos de metadatos que contienen. Consulta Cómo filtrar la búsqueda de datos estructurados o no estructurados para comprender cómo usar los metadatos para filtrar la búsqueda ordinaria (sin seguimientos). Puedes usar estos mismos principios para usar metadatos y filtrar la búsqueda con seguimientos. Después de crear tu expresión de filtro, úsala para el valor del campo filter
en el paso 2 de Cómo almacenar conversaciones y obtener respuestas.
Configura el resumen
El mensaje de respuesta de la búsqueda con seguimientos es un resumen generado que se muestra en summaryText
. Existen varias formas de configurar el resumen generado. Estos se describen en las siguientes secciones:
- Cómo obtener citas con los resultados de la búsqueda
- Ignora las consultas adversas
- Ignora las búsquedas de resumen
- Establece la cantidad de resultados que se usarán en el resumen
- Obtén resúmenes personalizados
- Cómo aplicar SafeSearch a las respuestas de chat
Cómo obtener citas con los resultados de la búsqueda
Cuando se especifican, las citas son números que se colocan intercalados en un resumen de la búsqueda. Estos números indican de qué resultados de la búsqueda se toman oraciones específicas del resumen.
Para obtener citas, sigue estos pasos:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, en el que debes ejecutar este comando que incluye el campo
summarySpec
que estableceincludeCitations
como verdadero.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "summarySpec": { "include_citations": true } }'
Haz clic para ver parte de la respuesta de un comando de ejemplo.
{ "reply": { "summary": { } "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly [1]. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data [2, 3].", "safetyAttributes": { "categories": [ "Finance", "Legal" ] …
Los números de cita se incluyen en el texto del resumen. Los números de cita se refieren a los resultados de la búsqueda que se muestran y están indexados en 1. Por ejemplo, [1]
significa que la
sentence se atribuye al primer resultado de la búsqueda. [2, 3]
significa que la oración se atribuye al segundo y tercer resultado de la búsqueda.
Ignora las consultas adversas
Las consultas adversas incluyen comentarios negativos o están diseñadas para generar resultados inseguros que incumplen las políticas. Puedes especificar que no se muestren resúmenes de búsqueda para las consultas adversas. Cuando se ignora una consulta adversaria, la propiedad summaryText
contiene texto estándar que indica que no se muestra ningún resumen de búsqueda. Los documentos de búsqueda se muestran para las consultas adversas, aunque los resúmenes de búsqueda no.
Para especificar que no se deben mostrar resúmenes de búsqueda para las consultas adversariales, sigue estos pasos:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, en el que debes ejecutar este comando que incluye el campo
summarySpec
que estableceignoreAdversarialQuery
como verdadero.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "summarySpec": { "ignoreAdversarialQuery": true } }'
Haz clic para ver parte de la respuesta de una consulta adversa.
"reply": { "summary": { "summaryText": "A summary could not be generated for your search query. Here are some search results.", "summarySkippedReasons": [ "ADVERSARIAL_QUERY_IGNORED" ] …
Ignora las consultas de búsqueda que no son de resumen
Las consultas que no buscan resúmenes muestran resultados que no son adecuados para el resumen. Por ejemplo, "¿Por qué el cielo es azul?" y "¿Quién es el mejor jugador de fútbol del mundo?" son consultas de resumen, pero "Aeropuerto SFO" y "Copa Mundial 2026" no lo son. Es probable que sean consultas de navegación. Puedes especificar que no se deben mostrar resúmenes de búsqueda para las consultas que no buscan resúmenes. Los documentos de búsqueda se muestran para las búsquedas que no buscan resúmenes, aunque los resúmenes de búsqueda no se muestren.
Para especificar que no se deben mostrar resúmenes de búsqueda para las consultas que no buscan resúmenes, haz lo siguiente:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, en el que debes ejecutar este comando que incluye el campo
summarySpec
que estableceignoreNonSummarySeekingQuery
como verdadero.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "summarySpec": { "ignore_non_summary_seeking_query": true } }'
Haz clic para ver parte de la respuesta de una consulta adversa.
"reply": { "summary": { "summaryText": "A summary could not be generated for your search query. Here are some search results.", "summarySkippedReasons": [ "NON_SUMMARY_SEEKING_QUERY_IGNORED" ] …
Establece la cantidad de resultados que se usarán en el resumen
Puedes especificar la cantidad de resultados que se usarán para generar el resumen. De forma predeterminada, si no se configura el campo summaryResultCount
, se usan todos los resultados que se muestran para generar el resumen.
Para establecer la cantidad de resultados principales que se usarán para el resumen, haz lo siguiente:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, en el que debes ejecutar este comando que incluye el campo
summarySpec
que establecesummaryResultCount
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "summarySpec": { "summary_result_count": NUMBER_OF_RESULTS } }'
NUMBER_OF_RESULTS: Es la cantidad de resultados principales a partir de los cuales se genera el resumen de la búsqueda. Si la cantidad de resultados que se muestran es inferior a
summaryResultCount
, el resumen se genera a partir de todos los resultados. El valor máximo es5
.
Obtén resúmenes personalizados
Para obtener resúmenes personalizados, proporciona instrucciones en lenguaje natural en el campo modelPromptSpec.preamble
cuando solicites un resumen.
Puedes solicitar personalizaciones, como la longitud y el nivel de detalle, el estilo de salida (como “simple”), el idioma de salida, el enfoque de la respuesta y el formato (como tablas, viñetas y XML).
Por ejemplo, para la consulta "¿Cuáles son los beneficios de BigQuery?", puedes ingresar instrucciones de personalización como las siguientes:
Ejemplo de instrucción:
"please show the answer format in an ordered list"
Respuesta de ejemplo:
The benefits of BigQuery are: 1. Increased business productivity 2. IT staff productivity 3. Reduced infrastructure costs 4. Loading and exporting data are free
Ejemplo de instrucción:
give a very detailed answer
Respuesta de ejemplo:
BigQuery is a serverless, highly scalable, and cost-effective cloud data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that takes care of provisioning, scaling, and managing the underlying infrastructure, so you can focus on analyzing your data. BigQuery is also integrated with other Google Cloud services, such as Google Kubernetes Engine, Cloud Data Fusion, and Cloud Dataproc, making it easy to build and deploy data pipelines. Here are some of the benefits of using BigQuery: * **Fast and scalable:** BigQuery can process petabytes of data very quickly, and it can scale to handle even the most demanding workloads. * **Cost-effective:** BigQuery is a very cost-effective way to store and analyze data. You only pay for the data that you use, and there are no upfront costs or commitments. * **Secure:** BigQuery is a secure platform that meets the needs of even the most security-conscious organizations. * **Easy to use:** BigQuery is easy to use, even for non-technical users. It has a simple and intuitive user interface, and it supports a variety of data sources. * **Integrated with other Google Cloud services:** BigQuery is integrated with other Google Cloud services, making it easy to build and deploy data pipelines. If you are looking for a fast, scalable, and cost-effective way to analyze your data, then BigQuery is a great option.
Para obtener un resumen personalizado, sigue estos pasos:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, ejecuta este comando que incluye el campo
summarySpec
que especifica la instrucción de personalización enmodelPromptSpec.preamble
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "summarySpec": { "modelPromptSpec": { "preamble": "CUSTOMIZATION_INSTRUCTIONS" } } }'
- CUSTOMIZATION_INSTRUCTIONS: Es la instrucción para la personalización, como una cadena.
Aplica SafeSearch a las respuestas del chat
SafeSearch se puede usar para filtrar el contenido de salida explícito, no seguro y que incumple las políticas de las respuestas de resumen. Para obtener más información sobre SafeSearch, consulta Configuración de seguridad para Vertex AI Search.
Para aplicar la búsqueda segura a una respuesta de chat, haz lo siguiente:
Sigue el procedimiento anterior para almacenar conversaciones y obtener respuestas de chat, excepto en el paso 2, en el que debes especificar
safe_search
en la consulta.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \ -d '{ "query": { "input": "FREE_TEXT"}, "safe_search": true }'
Ver y modificar las conversaciones almacenadas
Puedes usar la línea de comandos para obtener, borrar, actualizar y enumerar conversaciones almacenadas.
Cómo obtener una conversación del almacén de datos
Para obtener todos los detalles sobre una conversación específica de un almacén de datos, sigue estos pasos:
Ejecuta el siguiente comando de curl:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID:Es el ID del almacén de datos asociado con tu app.
CONVERSATION_ID: Es el ID de la conversación.
Haz clic para ver un ejemplo de respuesta del comando
GET
.{ "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058", "state": "IN_PROGRESS", "userPseudoId": "2040473575290303058", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:11:24.046735Z" }
Cómo borrar una conversación del almacén de datos
De forma predeterminada, las conversaciones anteriores a 60 días se borran automáticamente. Sin embargo, si quieres borrar una conversación en particular, por ejemplo, si contiene contenido sensible por accidente, usa esta llamada a la API para borrarla.
Para borrar una conversación de un almacén de datos, sigue estos pasos:
Ejecuta el siguiente comando de curl:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
CONVERSATION_ID: Es el ID de la conversación.
La respuesta del comando
DELETE
es la siguiente:{}
Cómo actualizar una conversación
Existen varios motivos por los que podrías querer actualizar una conversación. Por ejemplo, para hacer una de las siguientes acciones:
Cómo marcar una conversación como completada
Cómo combinar los mensajes de una conversación en otra
Cambia
user_pseudo_id
.
Para actualizar el state
en una conversación, sigue estos pasos:
Ejecuta el siguiente comando de curl:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=state" \ -d '{ "state": "NEW_STATE" }'
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
CONVERSATION_ID: Es el ID de la conversación que deseas actualizar.
NEW_STATE: Es el valor nuevo del estado, por ejemplo,
COMPLETED
.
Haz clic para ver un ejemplo de respuesta del comando
PATCH
.{ "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "COMPLETED", "userPseudoId": "test_id1", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" }
Para actualizar el user_pseudo_id
en una conversación, sigue estos pasos:
Ejecuta el siguiente comando de curl:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=user_pseudo_id" \ -d '{ "user_pseudo_id": "NEW_USER_PSEUDO_ID" }'
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
CONVERSATION_ID: El ID de la conversación que deseas actualizar
NEW_USER_PSEUDO_ID: Es el valor nuevo del seudo-ID del usuario.
Haz clic para ver un ejemplo de respuesta del comando
PATCH
.{ "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id1", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" }
En el comando anterior, se muestra cómo cambiar el user_pseudo_id.
. Sin embargo, puedes actualizar otros campos de la conversación reemplazando user_pseudo_id
por otros campos del recurso de conversación.
Cómo ver todas las conversaciones
Para enumerar todas las conversaciones en un almacén de datos, haz lo siguiente:
Ejecuta el siguiente comando de curl:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations"
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
Haz clic para ver un ejemplo de respuesta del comando
GET
.{ "conversations": [ { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" }, { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058", "state": "IN_PROGRESS", "userPseudoId": "2040473575290303058", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ] } ] }
La respuesta contiene una lista de conversaciones y el next_page_token
. Si no se muestra ningún next_page_token
, significa que no hay más conversaciones para mostrar.
El tamaño de página predeterminado es 50.
Cómo mostrar una lista de conversaciones por filtro
En lugar de enumerar todas las conversaciones de un almacén de datos, te recomendamos que enumeres todas las conversaciones abiertas o todas las conversaciones asociadas con un usuario en particular.
Por ejemplo, puedes presentarle al usuario sus búsquedas cerradas con una opción para volver a abrir una de ellas.
Para ello, enumera las conversaciones que coinciden con un filtro determinado: user_pseudo_id
o state
(IN_PROGRESS
o COMPLETED
).
Cómo mostrar una lista de conversaciones de un usuario
Para mostrar una lista de las conversaciones asociadas con un usuario o visitante, haz lo siguiente:
Ejecuta el siguiente comando de curl:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID"
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
USER_PSEUDO_ID: Es el seudo-ID del usuario cuyas conversaciones quieres enumerar.
La respuesta del comando
GET
se ve de la siguiente manera:Haz clic para ver un ejemplo de respuesta del comando
GET
.{ "conversations": [ { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" } ] }
Cómo mostrar una lista de conversaciones de un usuario y un estado
Para mostrar una lista de conversaciones en un estado determinado (abierto o cerrado) y que están asociadas con un usuario o visitante, haz lo siguiente:
Ejecuta el siguiente comando de curl:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID%20AND%20state=STATE"
PROJECT_ID: El número o ID de tu proyecto de Google Cloud
DATA_STORE_ID: Es el ID del almacén de datos asociado con tu app.
USER_PSEUDO_ID: Es el seudo-ID del usuario cuyas conversaciones quieres enumerar.
STATE: Indica si la conversación está abierta o cerrada (
IN_PROGRESS
oCOMPLETED
).
La respuesta del comando
GET
se ve de la siguiente manera:Haz clic para ver un ejemplo de respuesta del comando
GET
.{ "conversations": [ { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687", "state": "IN_PROGRESS", "userPseudoId": "test_id", "messages": [ { "userInput": { "input": "what is bigquery?" } }, { "reply": { "summary": { "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data." } } } ], "startTime": "2023-08-15T20:08:12.094639Z" } ] }
Para obtener información general sobre la sintaxis de filtro, consulta Filtrado de AIP-160.
Preguntas relacionadas
Las preguntas relacionadas son una función de vista previa con una lista de entidades permitidas que puede mostrar preguntas relacionadas además de los resultados de la búsqueda.
Por ejemplo, cuando preguntas “¿Cuál es la mejor época del año para vacacionar en México?”, además de responder tu pregunta, la búsqueda sugiere otras preguntas que podrías hacer, como “¿Cuál es el mes más económico para vacacionar en México?” y “¿Cuáles son los meses turísticos en México?”.
Si quieres que tu app de búsqueda muestre preguntas relacionadas, comunícate con el equipo de tu cuenta de Google y cuéntales para qué proyectos y apps quieres habilitar las preguntas relacionadas. Si no usas la configuración de publicación predeterminada, también debes proporcionar el nombre de la configuración de publicación.
Una vez que se habilita la función de preguntas relacionadas, las preguntas se muestran como cadenas en ConverseConversationResponse
.
Más información
Para obtener más información sobre los campos
summaryResultCount
,includeCitations
,ignoreAdversarialQuery
yignoreNonSummarySeekingQuery
, consulta SummarySpec en la documentación de la API de Vertex AI Agent Builder.Para obtener más ejemplos de cómo obtener resúmenes de búsqueda, consulta Cómo obtener resúmenes.