Tous les produits
Search
Centre de documentation

OpenSearch:Questions-réponses textuelles

Dernière mise à jour :Aug 12, 2026

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.

Important

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

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 :

  • Si ce paramètre n'est pas défini ou est laissé vide, la conversation multi-tours est désactivée.

  • Si vous fournissez une valeur non vide, la conversation multi-tours est activée. Le système conserve les conversations partageant le même ID de session pour maintenir le contexte. L'historique des conversations est conservé pendant 7 jours maximum. Utilisez le paramètre history_max pour spécifier le nombre de tours de conversation à conserver (jusqu'à 20).

1725530408586

question.type

string

Non

Type de la question d'entrée. Définissez cette valeur sur TEXT.

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 : Accède au LLM pour synthétiser et générer le résultat. Il s'agit de la valeur par défaut.

  • true : N'accède pas au LLM.

false

options.chat.stream

boolean

Non

Indique s'il faut activer une réponse en streaming.

  • true : Active la réponse en streaming. Il s'agit de la valeur par défaut.

  • false : Désactive la 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

  • opensearch-falcon-7b

  • qwen-turbo

  • qwen-plus

  • qwen-max

  • qwen2-72b-instruct

opensearch-llama2-13b

options.chat.enable_deep_search

boolean

Non

Indique s'il faut activer la recherche approfondie.

  • true : Active la recherche approfondie. Cette fonctionnalité utilise un raisonnement multi-tours pour synthétiser les données de la réponse finale, ce qui peut augmenter le temps et les ressources informatiques consommés par tour de conversation.

  • false : Désactive 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 :

{
  "String_key": "value",
  "Integer_key" : 1
}
{
  "attitude": "normal",
  "rule" : "detailed",
  "noanswer": "sorry",
  "language": "Chinese",
  "role": false,
  "role_name": "AI Assistant",
}

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.

  • normal : Ton neutre.

  • polite : Ton amical et courtois.

  • patience : Ton diplomate et patient.

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.

  • detailed : Détaillé et professionnel.

  • stepbystep : Détaillé et étape par étape.

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.

  • sorry : « Désolé, je ne peux pas répondre à cette question sur la base des informations disponibles. »

  • uncertain : « Je ne sais pas. »

sorry

options.chat.prompt_config.language

string

Non

Langue à utiliser pour la réponse. La valeur par défaut est Chinese.

  • Chinese : Chinois.

  • English : Anglais.

  • Thai : Thaï.

  • Korean : Coréen.

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 true, le système génère des réponses basées sur le persona défini dans role_name.

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.

  • text : Texte.

  • table : Tableau.

  • list : Liste.

  • markdown : Markdown.

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,0 indique l'absence de pénalité. Aucune plage de valeurs stricte n'est imposée.

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 indique au modèle d'échantillonner uniquement parmi les 50 tokens ayant les scores les plus élevés. Une valeur plus élevée augmente l'aléatoire, tandis qu'une valeur plus faible accroît le déterminisme. La valeur par défaut est 0, ce qui désactive la stratégie top-k et privilégie la stratégie top-p.

50

options.chat.generate_config.top_p

float

Non

Seuil de probabilité cumulative pour l'échantillonnage par noyau. Par exemple, une valeur de 0,8 signifie que le modèle sélectionne le plus petit ensemble possible de tokens dont la probabilité cumulative atteint au moins 0,8. Les valeurs valides se situent dans l'intervalle (0, 1,0). Une valeur plus élevée augmente l'aléatoire, tandis qu'une valeur plus faible accroît le déterminisme.

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 :

  • true : La réponse inclut des citations sources.

  • false : La réponse n'inclut pas de citations sources. Il s'agit de la valeur par défaut.

Voici un exemple de réponse contenant des citations :

You can expand the capacity of an ECS disk either online or offline[^1^]. Online expansion does not require you to restart the instance, while offline expansion does[^1^]. To perform the expansion, go to the ECS console, select the disk, and choose Expand Disk from the Actions column. Then, select an expansion method as needed[^1^]. If you need to expand partitions and file systems, you can do so from the console[^2^]. After the disk capacity is expanded, it cannot be reduced, so plan your storage space accordingly[^3^].

Les nombres entourés de [^ et ^] correspondent aux documents de l'objet reference de la réponse API. Par exemple, [^1^] fait référence au premier document de l'objet reference.

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 : Restitue les balises de texte enrichi directement dans le contenu de la réponse au format Markdown. Les tableaux sont insérés en HTML au sein du Markdown.

  • extend_response : Si la réponse contient des balises de texte enrichi, le contenu de chaque balise est retourné séparément dans l'objet rich_text_ref. Par exemple, le contenu d'une image est retourné sous forme d'URL, celui d'un tableau en HTML et celui du code en texte brut.

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 :

  • qwen-plus

  • qwen-max

  • qwen2-72b-instruct

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 : Détermine automatiquement s'il faut utiliser le chinois ou l'anglais en fonction de la requête utilisateur.

CN : Chinois.

EN : Anglais.

AUTO

options.chat.agent.tools

list of string

Non

Outils RAG que l'agent peut utiliser. Les outils suivants sont disponibles :

  • knowledge_search : Effectue une récupération dans la base de connaissances.

["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.

  • true : Active la recherche Web. Le système génère la réponse en s'appuyant sur les données issues de la recherche Web, ce qui peut augmenter le temps et la consommation de ressources.

  • false : Désactive la recherche Web. Il s'agit de la valeur par défaut.

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 : Active la récupération. Il s'agit de la valeur par défaut.

  • true : Désactive la récupération.

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 :

  • table : Table où le document est stocké.

  • raw_pk : Clé primaire du document.

  • category : Catégorie du document.

  • score : Score du document.

  • timestamp : Horodatage du document.

Exemple de format :

"filter" : "raw_pk=\"123\""   # Retrieves data only from the document with the ID 123.
"filter" : "category=\"value1\""   # Retrieves data only from documents in the "value1" category.
"filter" : "category=\"value1\" OR category=\"value2\"" # Retrieves data from documents in the "value1" and "value2" categories.
"filter" : "score>1.0"   # Retrieves data only from documents with a score greater than 1.0.
"filter" : "timestamp>1356969600"   # Retrieves data only from documents with a timestamp after 2013-01-01.

category=\"value1\"

options.retrieve.doc.sf

float

Non

Seuil de score pour la récupération basée sur les vecteurs.

  • Lorsque les vecteurs creux sont désactivés : La plage de valeurs est [0, 2,0] et la valeur par défaut est 1,3. Une valeur plus faible donne des résultats plus pertinents mais moins nombreux. Une valeur plus élevée peut récupérer des résultats moins pertinents.

  • Lorsque les vecteurs creux sont activés : La valeur par défaut est 0,35. Une valeur plus élevée donne des résultats plus pertinents mais moins nombreux. Une valeur plus faible peut récupérer des résultats moins pertinents.

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 question.text pour la récupération dans la base de connaissances. Ce paramètre n'est effectif que si vous désactivez les vecteurs creux.

  • AND : Tous les termes doivent apparaître dans un document pour qu'il soit récupéré. Il s'agit de la valeur par défaut.

  • OR : Au moins un terme doit apparaître dans un document pour qu'il soit récupéré.

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 : Active la récupération. Il s'agit de la valeur par défaut.

  • true : Désactive la récupération.

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, 2,0] et la valeur par défaut est 0,3. Une valeur plus faible récupère moins de résultats mais plus pertinents, tandis qu'une valeur plus élevée peut récupérer des résultats moins pertinents.

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.

  • false : Active la récupération d'images. Il s'agit de la valeur par défaut.

  • true : Désactive la récupération d'images.

false

options.retrieve.image.sf

float

Non

Seuil de score pour la récupération de vecteurs d'images.

  • Lorsque les vecteurs creux sont désactivés : La plage de valeurs est [0, 2,0] et la valeur par défaut est 1,0. Une valeur plus faible donne des résultats plus pertinents mais moins nombreux. Une valeur plus élevée peut récupérer des résultats moins pertinents.

  • Lorsque les vecteurs creux sont activés : La valeur par défaut est 0,5. Une valeur plus élevée donne des résultats plus pertinents mais moins nombreux. Une valeur plus faible peut récupérer des résultats moins pertinents.

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 : N'étend pas la requête. Il s'agit de la valeur par défaut.

  • true : Étend la requête. Cette option nécessite un appel supplémentaire au LLM, ce qui augmente la latence de réponse. Ne l'activez pas pour les applications sensibles à la latence.

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 : Reclasse les résultats à l'aide d'un modèle.

  • false : Ne reclasse pas les résultats.

  • La valeur par défaut est false si options.retrieve.doc.formula est spécifié ; sinon, elle est true.

true

options.retrieve.rerank.model

string

Non

Nom du grand modèle à utiliser pour le reclassement.

  • ops-bge-reranker-larger : Modèle bge-reranker. Valeur par défaut.

  • ops-text-reranker-001 : Modèle de reclassement propriétaire.

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 search_hits dans la réponse.

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.session pour activer le contexte de conversation multi-tours.

  • Définissez options.chat.disable sur true pour ignorer le LLM et retourner les résultats de récupération.

  • Utilisez options.retrieve.doc.top_n pour spécifier le nombre de documents récupérés. La valeur par défaut est 5.

  • Définissez options.retrieve.return_hits sur true pour retourner le contenu détaillé de search_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.

  • OK : La requête a réussi.

  • FAIL : La requête a échoué.

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 THINK, ACTION et ANSWER, bien que THINK soit facultatif. Ces événements indiquent le processus de réflexion du modèle (THINK), l'action effectuée (ACTION) et la conclusion du tour en cours (ANSWER). SUMMARY fournit la réponse finale et n'est retourné qu'une seule fois.

event_status

string

Indique si l'événement est terminé.

PROCESSING : L'événement est en cours.

FINISHED : 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]"}
  ]
}