Cette page présente la recherche avec des suivis pour Vertex AI Search et vous explique comment l'implémenter à l'aide d'appels d'API.
Si vous souhaitez ajouter une recherche avec des suivis au widget de recherche, consultez Configurer les résultats du widget Recherche.
La recherche avec suivi s'applique aux applications de recherche avec des données non structurées et aux sites Web.
La recherche avec suivi ne s'applique pas aux applications Vertex AI Agents. Les applications Vertex AI Agents utilisent un agent qui peut discuter du contenu avec vos utilisateurs finaux. Pour en savoir plus sur les agents Vertex AI, consultez la Présentation des agents Vertex AI.
À propos de la recherche avec questions complémentaires
La recherche avec suivis est basée sur des modèles d'IA générative. La recherche avec suivis est différente de la recherche de données non structurées standard, car elle tient compte des requêtes précédentes de la même session de recherche.
La recherche avec questions complémentaires est compatible avec les éléments suivants:
Traitement des requêtes en langage naturel:processus qui traite et comprend les entrées en langage humain, identifie l'intention derrière une requête et renvoie des résultats pertinents.
Connaissance du contexte:permet de comprendre le contexte des interactions précédentes et de fournir des réponses contextuelles.
Multi-tour:permet aux utilisateurs de poser des questions de suivi et de recevoir des réponses pertinentes.
Exemple de recherche avec questions complémentaires
Voici un exemple de recherche avec questions complémentaires. Supposons que vous souhaitiez en savoir plus sur les vacances au Mexique:
Vous:Quel est le meilleur moment de l'année pour partir en vacances au Mexique ?
Recherche avec suivi:la meilleure période pour partir en vacances au Mexique est la saison sèche, qui s'étend de novembre à avril.
Vous:Quel est le taux de change ?
Recherche avec suivi:1 USD équivaut à environ 17,65 pesos mexicains.
Vous:Quelle est la température moyenne en décembre ?
Recherche avec suivi:la température moyenne varie entre 21 et 26 °C. La température moyenne à Cancún est d'environ 25 °C.
Avec la recherche standard, votre question "Quel est le taux de change ?" ne recevrait pas de réponse, car la recherche standard ne saurait pas que vous souhaitez connaître le taux de change mexicain. De même, une recherche standard ne conserverait pas le contexte pour vous indiquer les températures au Mexique.
À propos des conversations
Dans la recherche avec suivi, une conversation est composée de requêtes textuelles fournies par un utilisateur et de réponses fournies par Vertex AI Search.
Ces paires de requêtes et de réponses sont parfois appelées messages. Dans l'exemple précédent, le deuxième message est composé de "Quel est le taux de change ?" et de "1 USD équivaut à environ 17,65 pesos mexicains."
Les conversations sont stockées dans le même data store que les données non structurées. Dans le data store, une conversation est représentée par la ressource Conversation. En plus de contenir les messages de requête et de réponse, la ressource de conversation contient les éléments suivants:
Un nom unique (ID de conversation).
Un état (en cours ou terminé)
Un pseudo-identifiant utilisateur, qui est un ID de visiteur qui suit l'utilisateur. Il peut être attribué de manière programmatique.
Une heure de début et une heure de fin
Avant de commencer
Assurez-vous de remplir les conditions préalables suivantes. Les exigences varient selon le type d'application que vous possédez.
Si vous disposez d'une application de recherche non structurée, assurez-vous que les éléments suivants sont activés : Fonctionnalités LLM avancées
Si vous disposez d'une application de recherche de sites Web, assurez-vous que les éléments suivants sont activés:
Stocker des conversations et obtenir des réponses
Vous pouvez utiliser la ligne de commande ou les bibliothèques clientes pour générer des réponses de recherche et stocker la conversation de recherche avec des questions de suivi.
REST
Pour créer une conversation et générer des réponses à partir de l'entrée de l'utilisateur à l'aide de la ligne de commande, procédez comme suit:
Spécifiez le data store dans lequel vous souhaitez stocker l'historique des conversations:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
USER_PSEUDO_ID: identifiant unique permettant de suivre un visiteur de recherche. Par exemple, vous pouvez implémenter cela avec un cookie HTTP, qui identifie de manière unique un visiteur sur un seul appareil.
Cliquez pour voir un exemple de réponse de la commande
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" }
Générez une réponse de recherche et ajoutez-la à une conversation nouvelle ou existante dans votre data store:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
CONVERSATION_ID: ID unique de la conversation, par exemple
123456
. Pour une conversation de recherche avec des questions de suivi, utilisez le même ID de conversation à chaque tour.FREE_TEXT: chaîne de texte libre contenant la question de l'utilisateur (par exemple,
what is bigquery?
)FILTER: champ de texte permettant de filtrer la recherche à l'aide d'une expression de filtre. La valeur par défaut de cet attribut est une chaîne vide. La manière dont vous créez votre filtre varie selon que vous disposez de données de site Web ou de données non structurées avec des métadonnées. Pour en savoir plus, consultez Filtrer la recherche avec des suivis.
Cliquez pour voir un exemple de réponse de la commande
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." } ] } } } ] }
Répétez l'étape 2 pour chaque nouvelle question de la conversation.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Python de Vertex AI Agent Builder.
Pour vous authentifier auprès de Vertex AI Agent Builder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Filtrer la recherche avec des questions complémentaires
Lorsque vous effectuez une requête avec la recherche avec suivis, vous pouvez inclure le champ filter
pour limiter le pool de documents à partir duquel une réponse est dérivée. Vous créez votre filtre à l'aide d'expressions de filtre. Les expressions de filtre que vous utilisez varient selon que vous disposez de données de site Web ou de données non structurées avec des métadonnées.
Expressions de filtrage pour les données du site Web
Si vous disposez d'un data store contenant des données de site Web, vous pouvez filtrer votre recherche à l'aide d'une requête de suivi à l'aide des expressions de filtre dans Expressions de filtre avec l'indexation avancée des sites Web. Une fois que vous avez créé votre expression de filtre, utilisez-la pour la valeur du champ filter
à l'étape 2 de Enregistrer les conversations et obtenir des réponses.
Expressions de filtrage pour les données non structurées avec métadonnées
Si vous disposez d'un data store contenant des données non structurées avec des métadonnées, vous pouvez filtrer votre recherche avec une requête de suivi afin qu'elle renvoie des documents en fonction des champs de métadonnées qu'ils contiennent. Consultez Filtrer la recherche de données structurées ou non structurées pour découvrir comment utiliser les métadonnées pour filtrer la recherche ordinaire (sans suivis). Vous pouvez appliquer ces mêmes principes pour filtrer les recherches avec des suivis à l'aide de métadonnées. Une fois que vous avez créé votre expression de filtre, utilisez-la pour la valeur du champ filter
à l'étape 2 de la section Enregistrer les conversations et obtenir des réponses.
Configurer le résumé
Le message de réponse de la recherche avec suivis est un résumé généré renvoyé dans summaryText
. Vous pouvez configurer le résumé généré de différentes manières. Ils sont décrits dans les sections suivantes:
- Obtenir des citations dans les résultats de recherche
- Ignorer les requêtes antagonistes
- Ignorer les requêtes ne recherchant pas de résumé
- Définir le nombre de résultats à utiliser dans le résumé
- Obtenir des résumés personnalisés
- Appliquer SafeSearch aux réponses dans le chat
Obtenir des citations avec les résultats de recherche
Les citations, le cas échéant, sont des nombres placés en ligne dans un résumé de recherche. Ces chiffres indiquent à partir de quels résultats de recherche des phrases spécifiques du résumé sont extraites.
Pour obtenir des citations:
Suivez la procédure Conserver les conversations et obtenir des réponses par chat précédente, sauf à l'étape 2. Exécutez cette commande qui inclut le champ
summarySpec
qui définitincludeCitations
sur "true".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 } }'
Cliquez pour voir une partie de la réponse d'un exemple de commande.
{ "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" ] …
Les numéros de citation sont inclus dans le texte récapitulatif. Les numéros de citation font référence aux résultats de recherche renvoyés et sont indexés à 1. Par exemple, [1]
signifie que la phrase est attribuée au premier résultat de recherche. [2, 3]
signifie que la phrase est attribuée aux deuxième et troisième résultats de recherche.
Ignorer les requêtes antagonistes
Les requêtes malveillantes incluent des commentaires négatifs ou sont conçues pour générer des résultats dangereux et non conformes aux règles. Vous pouvez spécifier qu'aucun résumé de recherche ne doit être renvoyé pour les requêtes malveillantes. Lorsqu'une requête malveillante est ignorée, la propriété summaryText
contient un texte standard indiquant qu'aucun résumé de recherche n'est renvoyé. Les documents de recherche sont renvoyés pour les requêtes malveillantes, même si les résumés de recherche ne le sont pas.
Pour spécifier qu'aucun résumé de recherche ne doit être renvoyé pour les requêtes malveillantes:
Suivez la procédure Conserver les conversations et obtenir des réponses par chat précédente, sauf à l'étape 2. Exécutez cette commande qui inclut le champ
summarySpec
qui définitignoreAdversarialQuery
sur "true".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 } }'
Cliquez pour afficher une partie de la réponse d'une requête malveillante.
"reply": { "summary": { "summaryText": "A summary could not be generated for your search query. Here are some search results.", "summarySkippedReasons": [ "ADVERSARIAL_QUERY_IGNORED" ] …
Ignorer les requêtes de recherche de résumé
Les requêtes de recherche non récapitulatives renvoient des résultats qui ne sont pas adaptés à la récapitulation. Par exemple, "Pourquoi le ciel est-il bleu ?" et "Qui est le meilleur joueur de football au monde ?" sont des requêtes de synthèse, mais "Aéroport SFO" et "Coupe du monde 2026" ne le sont pas. Il s'agit probablement de requêtes de navigation. Vous pouvez spécifier qu'aucun résumé de recherche ne doit être renvoyé pour les requêtes de recherche ne recherchant pas de résumé. Les documents de recherche sont renvoyés pour les requêtes de recherche non récapitulatives, même si les récapitulatifs de recherche ne le sont pas.
Pour spécifier qu'aucun résumé de recherche ne doit être renvoyé pour les requêtes de recherche ne comportant pas de résumé:
Suivez la procédure Conserver les conversations et obtenir des réponses par chat précédente, sauf à l'étape 2. Exécutez cette commande qui inclut le champ
summarySpec
qui définitignoreNonSummarySeekingQuery
sur "true".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 } }'
Cliquez pour afficher une partie de la réponse d'une requête malveillante.
"reply": { "summary": { "summaryText": "A summary could not be generated for your search query. Here are some search results.", "summarySkippedReasons": [ "NON_SUMMARY_SEEKING_QUERY_IGNORED" ] …
Définir le nombre de résultats à utiliser dans le résumé
Vous pouvez spécifier le nombre de résultats à utiliser pour générer le résumé. Par défaut, si le champ summaryResultCount
n'est pas défini, tous les résultats renvoyés sont utilisés pour générer le récapitulatif.
Pour définir le nombre de meilleurs résultats à utiliser pour le résumé:
Suivez la procédure Enregistrer des conversations et obtenir des réponses par chat précédente, sauf à l'étape 2. Exécutez cette commande qui inclut le champ
summarySpec
qui définitsummaryResultCount
.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: nombre de résultats principaux à partir desquels générer le résumé de recherche. Si le nombre de résultats renvoyés est inférieur à
summaryResultCount
, le résumé est généré à partir de tous les résultats. La valeur maximale est5
.
Obtenir des résumés personnalisés
Vous pouvez obtenir des résumés personnalisés en fournissant des instructions en langage naturel dans le champ modelPromptSpec.preamble
lorsque vous demandez un résumé.
Vous pouvez demander des personnalisations telles que la longueur et le niveau de détail, le style de sortie (par exemple, "simple"), la langue de sortie, l'objet de la réponse et le format (par exemple, tableaux, puces et XML).
Par exemple, pour la requête "Quels sont les avantages de BigQuery ?", vous pouvez saisir des instructions de personnalisation comme les exemples suivants:
Exemple d'instruction:
"please show the answer format in an ordered list"
Exemple de réponse:
The benefits of BigQuery are: 1. Increased business productivity 2. IT staff productivity 3. Reduced infrastructure costs 4. Loading and exporting data are free
Exemple d'instruction:
give a very detailed answer
Exemple de réponse:
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.
Pour obtenir un résumé personnalisé:
Suivez la procédure Enregistrer les conversations et obtenir des réponses par chat précédente, sauf à l'étape 2. Exécutez cette commande qui inclut le champ
summarySpec
qui spécifie l'instruction de personnalisation dansmodelPromptSpec.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: instruction de personnalisation, sous forme de chaîne.
Appliquer SafeSearch aux réponses dans le chat
SafeSearch peut être utilisé pour filtrer les contenus explicites, dangereux et non conformes aux règles des réponses récapitulatives. Pour en savoir plus sur SafeSearch, consultez les paramètres de sécurité pour Vertex AI Search.
Pour appliquer la recherche sécurisée à une réponse dans le chat:
Suivez la procédure Enregistrer des conversations et obtenir des réponses par chat précédente, sauf à l'étape 2, où vous devez spécifier
safe_search
sous la requête.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 }'
Afficher et modifier les conversations enregistrées
Vous pouvez utiliser la ligne de commande pour obtenir, supprimer, mettre à jour et lister les conversations stockées.
Obtenir une conversation à partir du data store
Pour obtenir tous les détails d'une conversation spécifique à partir d'un data store:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID:ID du data store associé à votre application.
CONVERSATION_ID: ID de la conversation
Cliquez pour voir un exemple de réponse de la commande
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" }
Supprimer une conversation du data store
Par défaut, les conversations datant de plus de 60 jours sont automatiquement supprimées. Toutefois, si vous souhaitez supprimer une conversation spécifique (par exemple, si elle contenait accidentellement du contenu sensible), utilisez cet appel d'API pour la supprimer.
Pour supprimer une conversation d'un data store:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
CONVERSATION_ID: ID de la conversation
La réponse de la commande
DELETE
se présente comme suit:{}
Mettre à jour une conversation
Vous pouvez modifier une conversation pour diverses raisons. Par exemple, pour effectuer l'une des opérations suivantes:
Marquer une conversation comme terminée
Fusionner les messages d'une conversation avec ceux d'une autre
Modifier
user_pseudo_id
Pour mettre à jour le state
dans une conversation:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
CONVERSATION_ID: ID de la conversation que vous souhaitez mettre à jour
NEW_STATE: nouvelle valeur de l'état (par exemple,
COMPLETED
)
Cliquez pour voir un exemple de réponse de la commande
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" }
Pour mettre à jour le user_pseudo_id
dans une conversation:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
CONVERSATION_ID: ID de la conversation que vous souhaitez mettre à jour
NEW_USER_PSEUDO_ID: nouvelle valeur du pseudo-ID de l'utilisateur
Cliquez pour voir un exemple de réponse de la commande
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" }
La commande précédente vous montre comment modifier user_pseudo_id.
. Toutefois, vous pouvez mettre à jour d'autres champs de la conversation en remplaçant user_pseudo_id
par d'autres champs de la ressource Conversation.
Lister toutes les conversations
Pour lister toutes les conversations d'un data store:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
Cliquez pour voir un exemple de réponse de la commande
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 réponse contient une liste de conversations et le next_page_token
. Si aucun next_page_token
n'est renvoyé, il n'y a plus de conversations à afficher.
La taille de page par défaut est de 50.
Lister les conversations par filtre
Au lieu de lister toutes les conversations d'un data store, vous pouvez lister toutes les conversations ouvertes ou toutes les conversations associées à un utilisateur spécifique.
Par exemple, vous pouvez présenter à l'utilisateur ses recherches fermées avec une option permettant de rouvrir l'une d'entre elles.
Pour ce faire, listez les conversations correspondant à un filtre donné : user_pseudo_id
ou state
(IN_PROGRESS
ou COMPLETED
).
Lister les conversations d'un utilisateur
Pour afficher les conversations associées à un utilisateur ou à un visiteur:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
USER_PSEUDO_ID: ID pseudo de l'utilisateur dont vous souhaitez lister les conversations.
La réponse de la commande
GET
se présente comme suit:Cliquez pour voir un exemple de réponse de la commande
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" } ] }
Lister les conversations pour un utilisateur et un état
Pour lister les conversations dans un état particulier (ouverte ou fermée) et associées à un utilisateur ou à un visiteur:
Exécutez la commande curl suivante:
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: numéro ou ID de votre projet Google Cloud
DATA_STORE_ID: ID du data store associé à votre application.
USER_PSEUDO_ID: ID pseudo de l'utilisateur dont vous souhaitez lister les conversations.
STATE: indique si la conversation est ouverte ou fermée (
IN_PROGRESS
ouCOMPLETED
)
La réponse de la commande
GET
se présente comme suit:Cliquez pour voir un exemple de réponse de la commande
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" } ] }
Pour en savoir plus sur la syntaxe de filtrage, consultez la section Filtrage AIP-160.
Questions associées
Les questions associées sont une fonctionnalité Preview avec une liste d'autorisation qui peut renvoyer des questions associées en plus des résultats de recherche.
Par exemple, lorsque vous demandez "Quel est le meilleur moment de l'année pour partir en vacances au Mexique ?", en plus de répondre à votre question, la recherche suggère d'autres questions que vous pourriez poser, comme "Quel est le mois le moins cher pour partir en vacances au Mexique ?" et "Quels sont les mois touristiques au Mexique ?".
Si vous souhaitez que votre application de recherche affiche des questions associées, contactez l'équipe chargée de votre compte Google et indiquez-lui les projets et les applications pour lesquels vous souhaitez activer les questions associées. Si vous n'utilisez pas la configuration de diffusion par défaut, vous devez également indiquer le nom de la configuration de diffusion.
Une fois la fonctionnalité Questions associées activée, les questions sont renvoyées sous forme de chaînes dans ConverseConversationResponse
.
En savoir plus
Pour en savoir plus sur les champs
summaryResultCount
,includeCitations
,ignoreAdversarialQuery
etignoreNonSummarySeekingQuery
, consultez SummarySpec dans la documentation de l'API Vertex AI Agent Builder.Pour obtenir d'autres exemples d'obtention de résumés de recherche, consultez la section Obtenir des résumés.