テキスト Q&A は、ナレッジベースからコンテンツを取得し、クエリに回答します。セッション ID を使用して、マルチターン会話のコンテキストを維持します。また、異なる大規模言語モデル (LLM) を選択して回答を生成し、レスポンスをカスタマイズすることも可能です。
前提条件
-
OpenSearch - LLM Intelligent Q&A Edition への呼び出しを認証するための API キーを取得してください。詳細については、「API キーの管理」をご参照ください。
-
OpenSearch - LLM Intelligent Q&A Edition を呼び出すためのサービスエンドポイントを取得してください。詳細については、「サービスエンドポイントの取得」をご参照ください。
この API はサーバーサイドでの利用 を想定して設計されており、ブラウザ、ミニプログラム、モバイルアプリなどのフロントエンド環境から直接呼び出さないでください。理由は 2 つあります。第一に、この API は認証に Authorization: Bearer <API key> ヘッダーを使用します。API キーは長期的な認証情報であるため、フロントエンドコードに埋め込むと盗難される危険があります。第二に、この API はオリジン間リソース共有 (CORS) をサポートしていないため、ブラウザは直接呼び出しをブロックします。API キーはサーバー上に保存し、サーバーから呼び出し、その結果をフロントエンドに返す必要があります。
API
|
リクエストメソッド |
プロトコル |
リクエストフォーマット |
|
POST |
HTTP |
JSON |
リクエスト URL
{host}/v3/openapi/apps/{app_group_identity}/actions/knowledge-search
-
{host}:サービスエンドポイントです。インターネットまたは仮想プライベートクラウド (VPC) 経由でアクセスできます。詳細については、「エンドポイントの取得」をご参照ください。 -
{app_group_identity}:アプリケーション名です。OpenSearch LLM-Based Conversational Search Edition コンソールにサインインし、[Instance Management] ページでこの名前を確認できます。
リクエストパラメータ
ヘッダーパラメーター
|
パラメーター |
タイプ |
必須 |
説明 |
例 |
|
Content-Type |
文字列 |
はい |
リクエストボディのメディアタイプを指定します。値は "application/json" である必要があります。 |
application/json |
|
Authorization |
文字列 |
はい |
プレフィックス "Bearer " を付けた API キーです。 |
Bearer OS-d1**2a |
|
accept |
文字列 |
いいえ |
サーバー送信イベント (SSE) を使用してストリーミングレスポンスを受信するには、値を "text/event-stream" に設定します。 |
text/event-stream |
ボディパラメータ
|
パラメーター |
型 |
必須 |
説明 |
値の例 |
|
question |
マップ |
はい |
入力された質問です。 |
{ "text": "ユーザーの質問", "type": "TEXT", "session": "" } |
|
question.text |
文字列 |
はい |
ユーザーの質問のテキスト内容です。 |
ユーザーの質問 |
|
question.session |
文字列 |
いいえ |
複数ターンの会話のコンテキストを識別するセッション ID です。有効な値は次のとおりです。
|
1725530408586 |
|
question.type |
文字列 |
いいえ |
入力された質問のタイプです。これを |
TEXT |
|
options |
マップ |
いいえ |
検索、モデル選択、プロンプトなどの設定を制御するためのオプションです。 |
|
|
options.chat |
マップ |
いいえ |
大規模言語モデル (LLM) にアクセスするためのパラメーターです。 |
|
|
options.chat.disable |
ブール型 |
いいえ |
LLM へのアクセスを無効にするかどうかを指定します。
|
false |
|
options.chat.stream |
ブール型 |
いいえ |
ストリーミング応答を有効にするかどうかを指定します。
|
true |
|
options.chat.model |
文字列 |
いいえ |
使用する大規模言語モデル (LLM) です。有効な値は次のとおりです。 アジアパシフィック SE 1 (シンガポール)
|
opensearch-llama2-13b |
|
options.chat.enable_deep_search |
ブール型 |
いいえ |
ディープサーチを有効にするかどうかを指定します。
|
false |
|
options.chat.model_generation |
整数 |
いいえ |
カスタム製品モデルに使用するモデルバージョンを指定します。このパラメーターを指定しない場合、システムはデフォルトでは最も古いバージョンを使用します。 |
20 |
|
options.chat.prompt_template |
文字列 |
いいえ |
カスタムプロンプトテンプレートの名前です。このパラメーターが空の場合、システムはデフォルトでは組み込みのプロンプトテンプレートを使用します。 |
user_defined_prompt_name |
|
options.chat.prompt_config |
オブジェクト |
いいえ |
カスタムプロンプトを設定するためのキーと値のペアです。パラメーターは次の形式である必要があります:
|
|
|
options.chat.prompt_config.attitude |
文字列 |
いいえ |
応答のトーンを制御する、組み込みプロンプトテンプレートのパラメーターです。デフォルト値は
|
normal |
|
options.chat.prompt_config.rule |
文字列 |
いいえ |
応答の詳細レベルを制御します。デフォルト値は
|
detailed |
|
options.chat.prompt_config.noanswer |
文字列 |
いいえ |
システムが質問に答えられない場合に返す応答です。デフォルト値は
|
sorry |
|
options.chat.prompt_config.language |
文字列 |
いいえ |
応答に使用する言語です。デフォルト値は
|
Chinese |
|
options.chat.prompt_config.role |
ブール型 |
いいえ |
応答にカスタムペルソナを有効にするかどうかを指定します。これを |
false |
|
options.chat.prompt_config.role_name |
文字列 |
いいえ |
カスタムペルソナの名前です。例:AI アシスタント。 |
AI アシスタント |
|
options.chat.prompt_config.out_format |
文字列 |
いいえ |
出力コンテンツの形式です。デフォルト値は
|
text |
|
options.chat.generate_config.repetition_penalty |
浮動小数点数 |
いいえ |
生成されるトークンシーケンスにおける繰り返しのペナルティを制御します。値が大きいほど、繰り返しの可能性が低くなります。値が |
1.01 |
|
options.chat.generate_config.top_k |
整数 |
いいえ |
サンプリングで考慮する、最も確率の高いトークンの数です。たとえば、値が |
50 |
|
options.chat.generate_config.top_p |
浮動小数点数 |
いいえ |
Nucleus サンプリングの累積確率のしきい値です。たとえば、値が |
0.5 |
|
options.chat.generate_config.temperature |
浮動小数点数 |
いいえ |
生成されるテキストのランダム性と多様性を制御します。temperature が高いほど、候補トークンの確率分布が平坦化され、モデルがより可能性の低いトークンを選択できるようになり、出力の多様性が増します。値が低いほど分布が鋭くなり、モデルが確率の高いトークンを選択する可能性が高くなり、出力の決定性が増します。 値の範囲:[0, 2)。このパラメーターを 0 に設定しないでください。 python バージョン >= 1.10.1 java バージョン >= 2.5.1 |
0.7 |
|
options.chat.history_max |
整数 |
いいえ |
複数ターンの会話の履歴で保持する最大ターン数です。最大値は 20 です。デフォルト値は 1 です。 |
20 |
|
options.chat.link |
ブール型 |
いいえ |
応答に引用元を含めるかどうかを指定します。有効な値は次のとおりです。
以下は引用を含む応答の例です:
|
false |
|
options.chat.rich_text_strategy |
文字列 |
いいえ |
リッチテキスト LLM からの出力に対する後処理戦略です。このパラメーターが空または指定されていない場合、リッチテキスト処理はデフォルトでは無効になります。
|
inside_response |
|
options.chat.agent |
マップ |
いいえ |
RAG エージェントのツール使用機能のオプションを指定します。有効にすると、モデルは利用可能なコンテンツに基づいてツールを実行するかどうかを決定します。現在この機能をサポートしている LLM は次のとおりです。
|
|
|
options.chat.agent.think_process |
ブール型 |
いいえ |
エージェントの思考プロセスを返すかどうかを指定します。 |
true |
|
options.chat.agent.max_think_round |
整数 |
いいえ |
エージェントの思考ラウンドの最大数です。値は 20 を超えることはできません。 |
10 |
|
options.chat.agent.language |
文字列 |
いいえ |
思考プロセスと最終回答の言語です。
|
AUTO |
|
options.chat.agent.tools |
文字列のリスト |
いいえ |
エージェントが使用できる RAG ツールです。利用可能なツールは次のとおりです。
|
["knowledge_search"] |
|
options.retrieve |
マップ |
いいえ |
取得プロセスを制御するパラメーターです。 |
|
|
options.retrieve.web_search.enable |
ブール型 |
いいえ |
Web 検索を有効にするかどうかを指定します。
|
false |
|
doc |
マップ |
いいえ |
ドキュメント取得に関連するパラメーターです。 |
|
|
options.retrieve.doc.disable |
ブール型 |
いいえ |
ナレッジベースからの取得を無効にするかどうかを指定します。
|
false |
|
options.retrieve.doc.filter |
文字列 |
いいえ |
ナレッジベースから取得するデータを選択するためのフィルター式です。指定しない場合、フィルターは適用されません。構文の例については、フィルターパラメーターをご参照ください。 サポートされるフィールド:
フォーマット例:
|
category=\"value1\" |
|
options.retrieve.doc.sf |
浮動小数点数 |
いいえ |
ベクトル検索のスコアしきい値です。
|
0.35 |
|
options.retrieve.doc.top_n |
整数 |
いいえ |
取得するドキュメント数です。値は (0, 50] の範囲で指定する必要があります。デフォルト値は 5 です。 |
5 |
|
options.retrieve.doc.formula |
文字列 |
いいえ |
取得したドキュメントのカスタムランキング式です。 説明
構文の詳細については、ビジネス並べ替え関数をご参照ください。アルゴリズム関連性および地理的関連性機能はサポートされていません。 |
-timestamp:timestamp フィールドでドキュメントを降順にソートします。 |
|
options.retrieve.doc.rerank_size |
整数 |
いいえ |
再ランキング機能が有効な場合に再ランキングするドキュメント数です。値は (0, 100] の範囲で指定する必要があります。デフォルト値は 30 です。 |
30 |
|
options.retrieve.doc.operator |
文字列 |
いいえ |
ナレッジベース取得のために
|
AND |
|
options.retrieve.doc.dense_weight |
浮動小数点数 |
いいえ |
スパースベクトルが有効な場合、このパラメーターはドキュメント取得中の密ベクトルの重みを制御します。値は (0.0, 1.0) の範囲で指定する必要があります。デフォルト値は 0.7 です。 |
0.7 |
|
options.retrieve.entry |
マップ |
いいえ |
手動介入データから結果を取得するためのパラメーターです。 |
|
|
options.retrieve.entry.disable |
ブール型 |
いいえ |
手動介入データからの取得を無効にするかどうかを指定します。
|
false |
|
options.retrieve.entry.sf |
浮動小数点数 |
いいえ |
手動介入データを取得するためのベクトルスコアのしきい値です。値の範囲は |
0.3 |
|
options.retrieve.image |
マップ |
いいえ |
ナレッジベースから画像取得結果を取得するためのパラメーターです。 |
|
|
options.retrieve.image.disable |
ブール型 |
いいえ |
画像取得を無効にするかどうかを指定します。デフォルト値は
|
false |
|
options.retrieve.image.sf |
浮動小数点数 |
いいえ |
画像ベクトル取得のスコアしきい値です。
|
1.0 |
|
options.retrieve.image.dense_weight |
浮動小数点数 |
いいえ |
スパースベクトルが有効な場合、このパラメーターは画像取得中の密ベクトルの重みを制御します。値は (0.0, 1.0) の範囲で指定する必要があります。デフォルト値は 0.7 です。 |
0.7 |
|
options.retrieve.qp |
マップ |
いいえ |
クエリ書き換えのオプションです。 |
|
|
options.retrieve.qp.query_extend |
ブール型 |
いいえ |
ユーザーのクエリを拡張するかどうかを指定します。検索エンジンは拡張されたクエリを使用してドキュメントチャンクを取得します。
|
false |
|
options.retrieve.qp.query_extend_num |
整数 |
いいえ |
クエリ拡張が有効な場合、このパラメーターは生成する追加クエリの最大数を指定します。デフォルト値は 5 です。 |
5 |
|
options.retrieve.rerank |
マップ |
いいえ |
取得したドキュメントの再ランキングのオプションです。 |
|
|
options.retrieve.rerank.enable |
ブール型 |
いいえ |
モデルを使用して検索結果を関連性に基づいて再ランキングするかどうかを指定します。有効な値は次のとおりです。
|
true |
|
options.retrieve.rerank.model |
文字列 |
いいえ |
再ランキングに使用する大規模モデルの名前です。
|
ops-bge-reranker-larger |
|
options.retrieve.return_hits |
ブール型 |
いいえ |
ドキュメント取得の結果を返すかどうかを指定します。これは応答の |
false |
リクエストボディ
{
"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
}
}
}
主要なパラメーター:
-
question.sessionは、複数ターンにわたる会話のコンテキストを有効にします。 -
LLM をスキップして検索結果を返すには、
options.chat.disableをtrueに設定します。 -
options.retrieve.doc.top_nは、取得したドキュメントの数を指定します。デフォルト値は 5 です。 -
options.retrieve.return_hitsをtrueに設定すると、search_hitsの詳細な内容が返されます。
応答パラメーター
|
パラメーター |
タイプ |
説明 |
|
request_id |
文字列 |
一意のリクエスト ID です。サポートリクエストにはこの値を含めてください。 |
|
status |
文字列 |
リクエストの処理ステータスです。
|
|
latency |
float |
ミリ秒単位のレイテンシーです。リクエストが成功した場合にのみ返されます。 |
|
id |
integer |
プライマリキーです。 |
|
title |
文字列 |
ドキュメントのタイトルです。 |
|
category |
文字列 |
カテゴリ名です。 |
|
url |
文字列 |
ドキュメントの URL です。 |
|
answer |
文字列 |
生成された回答です。 |
|
type |
文字列 |
結果のタイプです。 |
|
scores |
配列 |
ドキュメントの関連性スコアです。 |
|
event |
文字列 |
ストリーミングイベントのタイプです。 思考ラウンドには、 |
|
event_status |
文字列 |
イベントが完了しているかどうかを示します。
|
|
code |
文字列 |
エラーコードです。エラーが発生した場合にのみ返されます。 |
|
message |
文字列 |
エラーメッセージです。エラーが発生した場合にのみ返されます。 |
応答本文のサンプル
成功時の応答
{
"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"
}
]
}
}
エラー応答
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}