OpenSearch-LLM智能问答版支持通过API的方式进行问答文档查询。
URL
POST /v3/openapi/apps/[app_group_identity]/actions/knowledge-search
[app_group_identity]:表示应用名(需要指定应用名访问,主要针对服务中的应用版本)。
以上 URL 省略了请求Header参数及编码等因素。
以上 URL 中省略了访问应用的 host 地址。
请求头构建可参考:v3 API 签名机制
请求协议
HTTP
HTTP请求方式
POST
支持格式
JSON
查询参数
参数 | 类型 | 必需 | 取值范围 | 默认值 | 描述 |
text | String | 是 | 输入的问题 | ||
session | String | 否 | 对话的session,设置了之后,会有多轮对话的功能 | ||
type | String | 否 | TEXT | 输入问题的类型默认为文本 | |
stream | Boolean | 否 | false | 是否流式返回 | |
disable | Boolean | 否 | false | 是否不走chat模型 | |
attitude | String | 否 | normal | 对话内容的语气,默认为normal normal:无
| |
rule | String | 否 | simple | 对话内容的详细程度,默认为detailed
| |
noanswer | String | 否 | sorry | 无法回答问题时的回复,默认为sorry
| |
language | String | 否 | Chinese |
| |
role | Boolean | 否 | true | 开启后,将定制回答的角色 | |
role_name | String | 否 | AI小助手 | 定制回答的角色,例如:AI小助手 | |
out_format | String | 否 | table | 输出内容的形式,默认为text
| |
history_max | INT | 否 | 多轮对话历史最大轮数,最大20轮 | ||
csi_level | String | 否 | none | 绿网配置
| |
link | Boolean | 否 | false | 控制模型生成的内容是否标识内容引用的来源
| |
filter | String | 否 | 召回时根据category字段做过滤,默认为空;filter使用示例可参考:filter参数使用说明 | ||
sf | Float | 否 | [0,+∞) 越大越不相关 | 表示向量召回相似度阈值: 文档召回默认值为1.3; 干预数据召回默认值为0.3; 图片召回默认值为1.0; | 召回的向量相关性 |
top_n | INT | 否 | (0, 50] | 5 | 文档召回多少个文档 |
formula | String | 否 | 默认为向量相似度 | ||
rerank_size | INT | 否 | 精排文档数,默认不用设置,系统自己决定 | ||
operator | String | 否 | AND | 表示文本召回时,文本token之间的关系是OR,默认是AND | |
return_hits | Boolean | 否 | false | 是否在结果中返回文档召回的结果 | |
model | String | 否 | opensearch-qwen | 可选的LLM模型 上海区域:
| |
prompt_template | 用户自定义的prompt模板名称 | ||||
enable | Boolean | 否 | true | 控制是否对召回的结果用模型进行相关性的重排。
| |
query_extend | Boolean | false |
| ||
query_extend_num | INT | 5 | 表示扩展query的数量,默认值为5; |
请求体示例:
{
"question" : {
"text" : "user question",
"session" : "对话的session,设置了之后,会有多轮对话的功能",
"type" : "TEXT"
},
"options": {
"chat": {
"disable" : false, # 是否不走chat模型,默认为false。
"stream" : false, # 是否流式返回,默认false。
"model" : "opensearch-qwen", # 选择的LLM模型,可选项为 opensearch-qwen / opensearch-llama2-13b
"prompt_template" : "user_defined_prompt_name", # 用户自定的prompt名称
"prompt_config" : { # 自定义prompt配置,可选
"key" : "value" # 设置prompt中定义的参数对应的值
},
"generate_config" : {
"repetition_penalty": 1.01,
"num_beams": 1,
"top_k": 50,
"top_p": 0.5,
"do_sample": true,
"temperature": 0.7
},
"history_max": 20 # 多轮对话历史最大轮数,
"csi_level": "none", # 绿网配置
"link": false # 返回链接
},
"retrieve": {
"doc": {
"disable": false, # 是否需要关闭文档召回,默认false。
"filter": "category=\"type\"", # 召回时根据category字段做过滤,默认为空
"sf": 1.3, # 向量召回阈值,默认1.3;阈值越大,文档可能约不相关
"top_n": 5, # 文档召回多少个文档,默认是5个,取值返回(0, 50],
"formula" : "", #默认为向量相似度
"rerank_size" : 5, #精排文档数,默认不用设置,系统自己决定
"operator":"OR" # 表示文本召回时,文本token之间的关系是OR,默认是AND
},
"entry": {
"disable": false, # 是否需要关闭人工干预数据的召回,默认false。
"sf": 0.3 # 干预数据召回的向量相关性,默认0.3
},
"image": {
"disable": false, # 是否需要关闭图片数据的召回,默认false。
"sf": 1.0 # 图片数据召回的向量相关性,默认1.0
},
"qp": {
"query_extend": false, # 是否需要对用户query进行query扩展
"query_extend_num": 5 # 表示扩展query的数量,默认值为5
},
"return_hits": false # 是否在结果中返回文档召回的结果, 即response里面的search_hits
},
"rerank" : {
"enable": true # 召回后是否使用大模型进行重排,默认为true
}
}
}
返回参数
参数 | 类型 | 描述 |
id | INT | 主键ID |
title | String | 文档的标题 |
category | String | 类目名 |
url | String | 文档链接 |
answer | String | 问答结果 |
type | String | 返回结果类型 |
scores | Array | 文档内容分 |
code | String | 返回的错误码 |
message | String | 返回的错误信息 |
响应体示例:
{
"request_id" : "abc123-ABC",
"result" : {
"data" : [
{
"answer" : "answer text",
"type" : "text",
"reference" : [
{"url" : "http://....","title":"doc title"}
]
},
{
"reference": [
{"id": "16","title": "测试标题","category": "测试类目","url": "测试链接"}
],
"answer": "https://ecmb.bdimg.com/tam-ogel/-xxxx.jpg",
"type": "IMAGE"
}
],
"search_hits" : [ // 查询请求中设置了options.retrieve.return_hits才会有
{
"fields" : {
"content" : "...."
"key1" : "value1"
},
"scores" : ["10000.1234"],
"type" : "doc"
},
{
"fields"{
"answer" : "...",
"key1" : "value1"
},
"scores" : ["10000.1234"],
"type" : "entry"
}
]
}
"errors" : [
{
"code" : "如果有错误,这里填错误码",
"message" : "如果有错误,这里填错误信息"
}
]
}