Cette page présente la recherche avec suivi pour Vertex AI Search et vous explique comment l'implémenter à l'aide d'appels d'API.
Si vous souhaitez ajouter la recherche avec suivi au widget Recherche, consultez Configurer les résultats du widget Recherche.
La recherche avec suivi s'applique aux applications de recherche avec données non structurées et sites Web.
À propos de la recherche avec questions complémentaires
La recherche avec questions complémentaires est basée sur des modèles d'IA générative. La recherche classique de données non structurées est différente de la recherche avec questions de suivi, car cette dernière prend en compte les 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 : il traite et comprend les entrées en langage humain, identifie l'intention derrière une requête et renvoie des résultats pertinents.
Conscience du contexte : il comprend le contexte des interactions précédentes et fournit des réponses adaptées au contexte.
Multitour : 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 questions complémentaires : 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 questions de suivi : 1 USD équivaut à environ 17,65 pesos mexicains.
Vous : Quelle est la température moyenne en décembre ?
Recherche avec questions complémentaires : la température moyenne varie entre 21 et 26 °C. La température moyenne à Cancún est d'environ 25 °C.
Avec la recherche classique, il serait impossible de répondre à la question "Quel est le taux de change ?", car elle ne précise pas que vous souhaitez connaître le taux de change mexicain. De même, une recherche classique ne conserverait pas le contexte pour vous donner les températures au Mexique.
À propos des conversations
Dans la recherche avec suivi, une conversation se compose 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 "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 comporte les éléments suivants :
Un nom unique (l'ID de conversation).
Un état (en cours ou terminé).
Un pseudo-identifiant utilisateur, qui est un ID de visiteur permettant de suivre l'utilisateur. Elle peut être attribuée 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 en fonction du type d'application que vous possédez.
Si vous disposez d'une application de recherche non structurée, assurez-vous que les fonctionnalités LLM avancées sont activé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 suivi.
REST
Pour créer une conversation et générer des réponses à partir de la saisie 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 effectuant une 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 obtenir un exemple de réponse à 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 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 façon dont vous construisez 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 les recherches avec des questions complémentaires.
Cliquez pour obtenir un exemple de réponse à 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 AI Applications Python.
Pour vous authentifier auprès des applications d'IA, 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 suivi, vous pouvez inclure le champ filter
pour limiter le pool de documents à partir duquel une réponse est dérivée. Vous construisez 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 filtre pour les données de site Web
Si vous disposez d'un data store contenant des données de site Web, vous pouvez filtrer votre recherche avec une requête de suivi à l'aide des expressions de filtre dans Expressions de filtre avec indexation avancée des sites Web. Une fois votre expression de filtre construite, utilisez-la comme valeur du champ filter
à l'étape 2 de Stocker les conversations et obtenir des réponses.
Expressions de filtre 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 comprendre comment utiliser les métadonnées afin de filtrer la recherche ordinaire (sans suivi). Vous pouvez utiliser ces mêmes principes pour filtrer les recherches avec des questions complémentaires à l'aide de métadonnées. Une fois votre expression de filtre construite, utilisez-la comme valeur du champ filter
à l'étape 2 de Stocker les conversations et obtenir des réponses.
Configurer le récapitulatif
Le message de réponse de la recherche avec suivi est un résumé généré renvoyé dans summaryText
. Vous pouvez configurer le résumé généré de différentes manières. Ces éléments sont décrits dans les sections suivantes :
- Obtenir des citations avec les résultats de recherche
- Ignorer les requêtes antagonistes
- Ignorer les requêtes qui ne cherchent 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 de chat
Obtenir des citations avec les résultats de recherche
Les citations, lorsqu'elles sont spécifiées, sont des nombres placés en ligne dans un résumé de recherche. Ces chiffres indiquent les résultats de recherche à partir desquels certaines phrases du résumé sont extraites.
Pour obtenir des citations :
Suivez la procédure Stocker les conversations et obtenir des réponses par chat ci-dessus, 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 afficher une partie de la réponse d'une commande exemple.
{ "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 à partir de 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 contradictoires incluent des commentaires négatifs ou sont conçues pour générer des résultats dangereux ou qui ne respectent pas les règles. Vous pouvez spécifier qu'aucun résumé de recherche ne doit être renvoyé pour les requêtes contradictoires. 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 contradictoires, 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 contradictoires :
Suivez la procédure Stocker les conversations et obtenir des réponses par chat ci-dessus, 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 sur une partie de la réponse à une requête contradictoire.
"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 qui ne cherchent pas de résumé
Les requêtes qui ne cherchent pas de résumés renvoient des résultats qui ne sont pas adaptés à la synthèse. Par exemple, "pourquoi le ciel est-il bleu" et "qui est le meilleur joueur de football au monde" sont des requêtes de recherche de résumés, mais pas "aéroport de SFO" ni "coupe du monde 2026". 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 qui ne visent pas à obtenir un résumé. Les documents de recherche sont renvoyés pour les requêtes qui ne cherchent pas de résumés, même si les résumés de recherche ne le sont pas.
Pour spécifier qu'aucun récapitulatif de recherche ne doit être renvoyé pour les requêtes qui ne visent pas à obtenir un récapitulatif :
Suivez la procédure Stocker les conversations et obtenir des réponses par chat ci-dessus, 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 sur une partie de la réponse à une requête contradictoire.
"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ésumé.
Pour définir le nombre de meilleurs résultats à utiliser pour le résumé :
Suivez la procédure Stocker les conversations et obtenir des réponses par chat ci-dessus, mais à 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 est de5
.
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'orientation 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 celles ci-dessous :
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 Stocker les conversations et obtenir des réponses de chat ci-dessus, mais à l'étape 2, exécutez cette commande qui inclut le champ
summarySpec
spécifiant 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 de chat
SafeSearch peut être utilisé pour filtrer les contenus explicites, non sécurisés et non conformes aux règles dans les réponses récapitulatives. Pour en savoir plus sur SafeSearch, consultez Paramètres de sécurité pour Vertex AI Search.
Pour appliquer la recherche sécurisée à une réponse de chat :
Suivez la procédure Converser avec les clients et obtenir des réponses par chat ci-dessus, sauf à l'étape 2, où vous devez spécifier
safe_search
dans 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 stockées
Vous pouvez utiliser la ligne de commande pour obtenir, supprimer, modifier 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 obtenir un exemple de réponse à 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
est la suivante :{}
Mettre à jour une conversation
Plusieurs raisons peuvent vous inciter à modifier une conversation. Par exemple, pour effectuer l'une des actions suivantes :
Marquer une conversation comme terminée
Fusionner les messages d'une conversation dans une autre
Modifier
user_pseudo_id
Pour modifier 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 modifier
NEW_STATE : nouvelle valeur de l'état (par exemple,
COMPLETED
)
Cliquez pour obtenir un exemple de réponse à 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 modifier 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 modifier
NEW_USER_PSEUDO_ID : nouvelle valeur de l'ID pseudo de l'utilisateur
Cliquez pour obtenir un exemple de réponse à 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 le champ 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 obtenir un exemple de réponse à 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é, cela signifie qu'il n'y a plus de conversations à lister.
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 d'en rouvrir une.
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 lister 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
ressemble à ceci :Cliquez pour obtenir un exemple de réponse à 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 (ouvertes ou fermées) 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
ressemble à ceci :Cliquez pour obtenir un exemple de réponse à 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 obtenir des informations générales sur la syntaxe de filtrage, consultez AIP-160 : Filtrage.
Questions associées
Les questions associées sont une fonctionnalité bêta avec liste d'autorisation qui peut renvoyer des questions associées en plus des résultats de recherche.
Par exemple, lorsque vous demandez "Quelle est la meilleure période 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 renvoie des questions associées, contactez l'équipe chargée de votre compte Google et indiquez-lui pour quels projets et applications vous souhaitez activer les questions associées. Si vous n'utilisez pas la configuration de diffusion par défaut, vous devez également fournir 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 AI Applications.Pour obtenir d'autres exemples d'obtention de résumés de recherche, consultez Obtenir des résumés.