La fonctionnalité de questions-réponses textuelles répond aux requêtes en récupérant du contenu dans une base de connaissances. Elle utilise un ID de session pour maintenir le contexte lors de conversations multi-tours. Vous pouvez également sélectionner différents modèles de langage (LLM) pour générer et personnaliser les réponses.
Prérequis
Obtenez une clé API pour authentifier les appels vers OpenSearch - LLM Intelligent Q&A Edition. Pour plus d'informations, reportez-vous à Manage API keys.
Obtenez un endpoint de service pour appeler OpenSearch - LLM Intelligent Q&A Edition. Pour plus d'informations, reportez-vous à Obtain service endpoints.
Cette API est conçue pour une utilisation côté serveur et ne doit pas être appelée directement depuis un environnement front-end tel qu'un navigateur, un mini-programme ou une application mobile. Deux raisons motivent cette restriction. Premièrement, l'API utilise l'en-tête Authorization: Bearer <API key> pour l'authentification. Une clé API étant un identifiant permanent, l'intégrer dans du code front-end l'exposerait au vol. Deuxièmement, l'API ne prend pas en charge le partage de ressources cross-origin (CORS), ce qui entraîne le blocage de tout appel direct par les navigateurs. Stockez la clé API sur votre serveur, effectuez les appels depuis celui-ci, puis renvoyez les résultats au front-end.
API
|
Méthode de requête |
Protocole |
Format de requête |
|
POST |
HTTP |
JSON |
URL de requête
{host}/v3/openapi/apps/{app_group_identity}/actions/knowledge-search
{host}: Endpoint du service, accessible via Internet ou un réseau privé virtuel (VPC). Pour plus d'informations, reportez-vous à Obtain endpoints.{app_group_identity}: Nom de l'application. Connectez-vous à la console OpenSearch LLM-Based Conversational Search Edition et recherchez ce nom sur la page Instance Management.
Paramètres de requête
Paramètres d'en-tête
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
Content-Type |
string |
Oui |
Type de média du corps de la requête. Doit être « application/json ». |
application/json |
|
Authorization |
string |
Oui |
Votre clé API, préfixée par « Bearer ». |
Bearer OS-d1**2a |
|
accept |
string |
Non |
Définissez cette valeur sur « text/event-stream » pour recevoir des réponses en streaming via Server-Sent Events (SSE). |
text/event-stream |
Paramètres du corps
|
Paramètre |
Type |
Obligatoire |
Description |
Valeur d'exemple |
|
question |
map |
Oui |
Question d'entrée. |
{ "text":"user question", "type": "TEXT", "session" : "" } |
|
question.text |
string |
Oui |
Contenu textuel de la question utilisateur. |
user question |
|
question.session |
string |
Non |
ID de session identifiant le contexte d'une conversation multi-tours. Valeurs valides :
|
1725530408586 |
|
question.type |
string |
Non |
Type de la question d'entrée. Définissez cette valeur sur |
TEXT |
|
options |
map |
Non |
Paramètres facultatifs permettant de contrôler la récupération, la sélection du modèle et les invites. |
|
|
options.chat |
map |
Non |
Paramètres d'accès à un modèle de langage (LLM). |
|
|
options.chat.disable |
boolean |
Non |
Indique s'il faut désactiver l'accès au LLM.
|
false |
|
options.chat.stream |
boolean |
Non |
Indique s'il faut activer une réponse en streaming.
|
true |
|
options.chat.model |
string |
Non |
Modèle de langage (LLM) à utiliser. Valeurs valides : Asie-Pacifique SE 1 (Singapour)
|
opensearch-llama2-13b |
|
options.chat.enable_deep_search |
boolean |
Non |
Indique s'il faut activer la recherche approfondie.
|
false |
|
options.chat.model_generation |
integer |
Non |
Version du modèle à utiliser pour un modèle de produit personnalisé. Si ce paramètre n'est pas spécifié, le système utilise la version la plus ancienne par défaut. |
20 |
|
options.chat.prompt_template |
string |
Non |
Nom d'un modèle d'invite personnalisé. Si ce paramètre est vide, le système utilise son modèle d'invite intégré par défaut. |
user_defined_prompt_name |
|
options.chat.prompt_config |
object |
Non |
Paires clé-valeur pour configurer une invite personnalisée. Le paramètre doit respecter le format suivant :
|
|
|
options.chat.prompt_config.attitude |
string |
Non |
Paramètre du modèle d'invite intégré contrôlant le ton de la réponse. La valeur par défaut est
|
normal |
|
options.chat.prompt_config.rule |
string |
Non |
Contrôle le niveau de détail de la réponse. La valeur par défaut est
|
detailed |
|
options.chat.prompt_config.noanswer |
string |
Non |
Réponse à retourner lorsque le système ne peut pas répondre à la question. La valeur par défaut est
|
sorry |
|
options.chat.prompt_config.language |
string |
Non |
Langue à utiliser pour la réponse. La valeur par défaut est
|
Chinese |
|
options.chat.prompt_config.role |
boolean |
Non |
Indique s'il faut activer un persona personnalisé pour la réponse. Si vous définissez cette valeur sur |
false |
|
options.chat.prompt_config.role_name |
string |
Non |
Nom du persona personnalisé. Par exemple : AI Assistant. |
AI Assistant |
|
options.chat.prompt_config.out_format |
string |
Non |
Format du contenu de sortie. La valeur par défaut est
|
text |
|
options.chat.generate_config.repetition_penalty |
float |
Non |
Contrôle la pénalité appliquée aux répétitions dans les séquences de tokens générées. Une valeur plus élevée réduit la probabilité de répétition. Une valeur de |
1,01 |
|
options.chat.generate_config.top_k |
integer |
Non |
Nombre de tokens à plus haute probabilité à considérer pour l'échantillonnage. Par exemple, une valeur de |
50 |
|
options.chat.generate_config.top_p |
float |
Non |
Seuil de probabilité cumulative pour l'échantillonnage par noyau. Par exemple, une valeur de |
0,5 |
|
options.chat.generate_config.temperature |
float |
Non |
Contrôle l'aléatoire et la diversité du texte généré. Une température plus élevée aplatit la distribution de probabilité des tokens candidats, permettant au modèle de choisir des tokens moins probables et rendant la sortie plus diversifiée. Une valeur plus faible accentue la distribution, augmentant la probabilité que le modèle sélectionne des tokens à haute probabilité et rendant la sortie plus déterministe. Plage de valeurs : [0, 2). Ne définissez pas ce paramètre sur 0. python version >=1.10.1 java version >= 2.5.1 |
0,7 |
|
options.chat.history_max |
integer |
Non |
Nombre maximal de tours à conserver dans l'historique d'une conversation multi-tours. La valeur maximale est 20. La valeur par défaut est 1. |
20 |
|
options.chat.link |
boolean |
Non |
Indique s'il faut inclure des citations sources dans la réponse. Valeurs valides :
Voici un exemple de réponse contenant des citations :
Les nombres entourés de |
false |
|
options.chat.rich_text_strategy |
string |
Non |
Stratégie de post-traitement pour la sortie d'un LLM riche en texte. Si ce paramètre est vide ou non spécifié, le traitement du texte enrichi est désactivé par défaut.
|
inside_response |
|
options.chat.agent |
map |
Non |
Options relatives aux capacités d'utilisation d'outils de l'agent RAG. Lorsqu'elle est activée, cette fonctionnalité permet au modèle de décider s'il doit exécuter un outil en fonction du contenu disponible. Les LLM prenant actuellement en charge cette fonctionnalité sont :
|
|
|
options.chat.agent.think_process |
boolean |
Non |
Indique s'il faut retourner le processus de réflexion de l'agent. |
true |
|
options.chat.agent.max_think_round |
integer |
Non |
Nombre maximal de tours de réflexion pour l'agent. La valeur ne peut pas dépasser 20. |
10 |
|
options.chat.agent.language |
string |
Non |
Langue utilisée pour le processus de réflexion et la réponse finale.
|
AUTO |
|
options.chat.agent.tools |
list of string |
Non |
Outils RAG que l'agent peut utiliser. Les outils suivants sont disponibles :
|
["knowledge_search"] |
|
options.retrieve |
map |
Non |
Paramètres contrôlant le processus de récupération. |
|
|
options.retrieve.web_search.enable |
boolean |
Non |
Indique s'il faut activer la recherche Web.
|
false |
|
doc |
map |
Non |
Paramètres liés à la récupération de documents. |
|
|
options.retrieve.doc.disable |
boolean |
Non |
Indique s'il faut désactiver la récupération dans la base de connaissances.
|
false |
|
options.retrieve.doc.filter |
string |
Non |
Expression de filtre permettant de sélectionner les données à récupérer dans la base de connaissances. Si aucun filtre n'est spécifié, aucune filtration n'est appliquée. Pour des exemples de syntaxe, reportez-vous à filter parameter. Champs pris en charge :
Exemple de format :
|
category=\"value1\" |
|
options.retrieve.doc.sf |
float |
Non |
Seuil de score pour la récupération basée sur les vecteurs.
|
0,35 |
|
options.retrieve.doc.top_n |
integer |
Non |
Nombre de documents à récupérer. La valeur doit se situer dans l'intervalle (0, 50]. La valeur par défaut est 5. |
5 |
|
options.retrieve.doc.formula |
string |
Non |
Formule de classement personnalisée pour les documents récupérés. Remarque
Pour plus de détails sur la syntaxe, reportez-vous à Business Sorting Functions. Les fonctionnalités Algorithmic Relevance et Geographic Relevance ne sont pas prises en charge. |
-timestamp : Trie les documents par ordre décroissant selon le champ timestamp. |
|
options.retrieve.doc.rerank_size |
integer |
Non |
Nombre de documents à reclasser lorsque la fonctionnalité de reclassement est activée. La valeur doit se situer dans l'intervalle (0, 100]. La valeur par défaut est 30. |
30 |
|
options.retrieve.doc.operator |
string |
Non |
Relation entre les termes résultant de la tokenisation de
|
AND |
|
options.retrieve.doc.dense_weight |
float |
Non |
Lorsque les vecteurs creux sont activés, ce paramètre contrôle le poids du vecteur dense lors de la récupération des documents. La valeur doit se situer dans l'intervalle (0,0, 1,0). La valeur par défaut est 0,7. |
0,7 |
|
options.retrieve.entry |
map |
Non |
Paramètres de récupération des résultats issus de données d'intervention manuelle. |
|
|
options.retrieve.entry.disable |
boolean |
Non |
Indique s'il faut désactiver la récupération dans les données d'intervention manuelle.
|
false |
|
options.retrieve.entry.sf |
float |
Non |
Seuil de score vectoriel pour la récupération des données d'intervention manuelle. La plage de valeurs est |
0,3 |
|
options.retrieve.image |
map |
Non |
Paramètres de récupération des résultats d'images dans la base de connaissances. |
|
|
options.retrieve.image.disable |
boolean |
Non |
Indique s'il faut désactiver la récupération d'images. La valeur par défaut est
|
false |
|
options.retrieve.image.sf |
float |
Non |
Seuil de score pour la récupération de vecteurs d'images.
|
1,0 |
|
options.retrieve.image.dense_weight |
float |
Non |
Lorsque les vecteurs creux sont activés, ce paramètre contrôle le poids du vecteur dense lors de la récupération d'images. La valeur doit se situer dans l'intervalle (0,0, 1,0). La valeur par défaut est 0,7. |
0,7 |
|
options.retrieve.qp |
map |
Non |
Options de réécriture de requête. |
|
|
options.retrieve.qp.query_extend |
boolean |
Non |
Indique s'il faut étendre la requête utilisateur. Le moteur de recherche utilise la requête étendue pour récupérer des fragments de documents.
|
false |
|
options.retrieve.qp.query_extend_num |
integer |
Non |
Lorsque l'extension de requête est activée, ce paramètre spécifie le nombre maximal de requêtes supplémentaires à générer. La valeur par défaut est 5. |
5 |
|
options.retrieve.rerank |
map |
Non |
Options de reclassement des documents récupérés. |
|
|
options.retrieve.rerank.enable |
boolean |
Non |
Indique s'il faut utiliser un modèle pour reclasser les résultats de recherche par pertinence. Valeurs valides :
|
true |
|
options.retrieve.rerank.model |
string |
Non |
Nom du grand modèle à utiliser pour le reclassement.
|
ops-bge-reranker-larger |
|
options.retrieve.return_hits |
boolean |
Non |
Indique s'il faut retourner les résultats de récupération de documents, correspondant à l'objet |
false |
Corps de la requête
{
"question": {
"text": "What is Alibaba Cloud OpenSearch?",
"session": "session_001",
"type": "TEXT"
},
"options": {
"chat": {
"disable": false,
"stream": false,
"model": "Qwen",
"history_max": 20,
"link": false,
"agent": {
"tools": ["knowledge_search"]
}
},
"retrieve": {
"doc": {
"disable": false,
"filter": "category=\"type\"",
"sf": 0.35,
"top_n": 5,
"operator": "OR"
},
"web_search": { "enable": false },
"entry": { "disable": false, "sf": 0.3 },
"image": { "disable": false, "sf": 1.0 },
"rerank": {
"enable": true,
"model": "ops-bge-reranker-larger"
},
"return_hits": false
}
}
}
Paramètres clés :
Utilisez
question.sessionpour activer le contexte de conversation multi-tours.Définissez
options.chat.disablesurtruepour ignorer le LLM et retourner les résultats de récupération.Utilisez
options.retrieve.doc.top_npour spécifier le nombre de documents récupérés. La valeur par défaut est 5.Définissez
options.retrieve.return_hitssurtruepour retourner le contenu détaillé desearch_hits.
Paramètres de réponse
|
Paramètre |
Type |
Description |
|
request_id |
string |
Identifiant unique de la requête. Incluez cette valeur dans les demandes d'assistance. |
|
status |
string |
État de traitement de la requête.
|
|
latency |
float |
Temps de traitement serveur en millisecondes. Retourné uniquement si la requête réussit. |
|
id |
integer |
Clé primaire. |
|
title |
string |
Titre du document. |
|
category |
string |
Nom de la catégorie. |
|
url |
string |
URL du document. |
|
answer |
string |
Réponse générée. |
|
type |
string |
Type de résultat. |
|
scores |
array |
Scores de pertinence des documents. |
|
event |
string |
Type d'événement de streaming. Un tour de réflexion comprend les événements |
|
event_status |
string |
Indique si l'événement est terminé.
|
|
code |
string |
Code d'erreur. Retourné uniquement lorsqu'une erreur survient. |
|
message |
string |
Message d'erreur. Retourné uniquement lorsqu'une erreur survient. |
Exemple de corps de réponse
Réponse réussie
{
"request_id": "6859E98D-D885-4AEF-B61C-9683A0184744",
"status": "OK",
"latency": 6684.41,
"result": {
"data": [
{
"answer": "Alibaba Cloud OpenSearch is a managed service for searching structured data...",
"type": "TEXT",
"reference": [
{"url": "https://www.alibabacloud.com/help/document_detail/463469.html", "title": "OpenSearch Product Introduction"}
]
}
],
"search_hits": [
{
"fields": {"content": "Content of OpenSearch-related documents...", "title": "OpenSearch Introduction"},
"scores": ["0.9778"],
"type": "DOC"
}
]
}
}
Réponse d'erreur
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}