文档中心>实践教程>大模型知识引擎>知识问答一站式开发流程

知识问答一站式开发流程

最近更新时间:2025-02-21 23:10:32

我的收藏
本教程用于介绍最短路径开发一个知识库问答应用平台的 API 接入流程。
注意:
该文档只是介绍了一些基础的 API 及注意事项,并没有列举完整的 API 列表,如果需要请参考 API概览

一、创建应用及应用的基础内容修改(配置端)

1. 首先需要注册开通使用产品。您可在 产品官网 单击立即体验进入,或单击 开通体验
2. 需要开通子账户访问API的权限,可参考 权限管理。对于 API 调用来说,需要申请 API 密钥,可参考 API调用签名方法 获取签名密钥。
注意:
如果需要通过子账号访问 API ,也需要单独对子账号进行授权,未授权账户API调用,通常会出现提示:用户未登录;可参考 技术常见问题 里面的方法进行账户授权。
3. 可通过调用 API 来创建应用,获取应用 ID ( BotBizID ) ,并配合其他应用基础配置的接口来修改应用的基础信息。
与应用相关的基础接口如下:
此处仅列举了部分关键接口,更多接口请参考 API概览
接口名
接口描述
CreateApp
创建应用,创建成功会返回应用 ID ( BotBizID )。
ListApp
列出所有的应用。
DeleteApp
删除应用。
获取某个应用详情。
ModifyApp
编辑应用基础设置(应用配置页支持的设置,包括知识来源、模型设置、输出设置等,可参考应用配置
1、修改应用基础设置时,参数【AppConfig】【KnowledgeQa】为必填选项。
2、需要修改应用下的模型时,通过 ListModel 接口先获取可用的模型,之后再进行调整。
说明:
修改完应用的一些基础设置, 例如【提示词】【欢迎语】等文字信息,需要异步审核相关文字是否合法,可通过轮询 DescribeApp 接口,判断相关文字是否审核完成, 审核完成之后需要发布该应用,修改的内容才会在 API 调用的时候生效。

二、构建知识库 (配置端)

知识库主要包含了三个部分:文档 、问答、知识标签。
知识标签的作用主要是在 API 调用过程中限定知识检索范围。如果需要进行限制,可通过问答接口中的【 custom_variables 】进行限制;不需要限定知识检索范围的话也可以不用设置知识标签 。

知识标签

仅列举了部分关键接口,更多接口请参考 API概览
接口描述
接口名
说明
创建属性
-
查询属性标签详情
-
查询属性标签列表
-
编辑属性标签
-
删除属性标签
-
上传导入属性标签
与其他的文件上传一样,有如下三个步骤:
1. 获取临时密钥
2. 将文件上传到 cos
3. 调用该接口保存数据,具体可参考离线文档上传

文档

仅列举了部分关键接口,更多接口请参考 API概览
接口描述
接口名
说明
保存文档
SaveDoc
可参考离线文档上传
注意:
批量导入文档也使用该接口,通过入参 Opt 来确定导入的是文档还是问答;当导入为问答对的时候会校验表头(需使用导入模板)。
删除文档
DeleteDoc
-
修改文档
ModifyDoc
-
批量修改文档适用范围
-
文档列表
ListDoc
-
文档上传提供了一个示例,请完整阅读 离线文档上传 说明文档,在该文档下面提供了 java , python , go 实现的代码 demo , 其他语言请参考上面三种demo 自行实现。
文档上传之后是一个异步的操作,并不能立即生效,文档需要进行拆分、解析、审核及学习等操作(后台自动完成)。完成这些步骤之后(可使用文档列表接口校验各个文档处理状态)即可对应用进行发布更新;发布之后对话端API调用生效。

问答

知识引擎新建问答支持 批量导入问答手动录入问答从文档生成问答等多种方式。
此处仅列举关键接口,更多接口请参考 API概览
接口描述
接口名
说明
录入问答
CreateQA
-
批量导入问答对
SaveDoc
可参考 离线文档上传
注意:
导入文档也是该接口,通过入参 Opt 来确定导入的是文档还是问答;当导入为问答对的时候会校验表头 。
删除问答
DeleteQA
-
问答详情
-
获取问答列表
ListQA
-
修改问答
ModifyQA
-
批量修改问答使用范围
-
从文档生成问答对
1、生成问答可能会耗费较多 token ,请确保 token 余量充足,避免欠费导致应用不可用。
2、调用该接口后,可以调用 ListQA 接口来监听是否生成完,并展开对生成的问答对的一个校验审核操作。
注意:
获取某个文档生成的问答对是否采纳/不采纳,校验通过时,入参是一个数组,例如:AcceptStatus : [1,2,3]
校验问答对
VerifyQA
从文档生成问答对之后需要校验问答对,可通过 ListQA 返回的 WaitVerifyTotal 查看是否存在问答对需要校验 。
说明:
当前允许存在多个相同的问题(答案可能不同),当有多个相同的问题时,会依据检索到的内容以及大模型综合给出答案。

三、执行发布操作(使得应用基础配置或者知识库内的知识在 API 调用场景生效) (配置端)

发布是一个很重要的操作,会将当前应用的基础配置信息【提示词,欢迎语,模型, 输出方式】、文档、问答、工作流程以及拒答等相关配置和知识发布到线上并生效;需要尤其注意两个概念: 体验端,C端 。
体验端:也可以称做评测端测试端测试体验环境,是修改完配置,导入文档【学习结束】,问答对,拒答问题后,在该处进行快速验证,查看效果的地方,可以理解为一个测试环境。如下图,知识引擎页面 。



C端:也称做客户端用户端生产环境,可认为是在体验端验证效果符合预期后发布到生产环境供用户使用;可以通过分享链接进入到该页面,在该页面进行对话时的效果和应用发布后 API 进行对话内容应该是一致的,进入到 C端如下图:









注意:
需要保证应用发布之后再通过 API 调用来测试,否则同一个问题可能体验端和 API 调用得到的结果可能不同。

发布相关的接口

只列举了部分关键接口,更多接口请参考 API概览
接口描述
接口名
说明
创建发布
注意:
此处执行发布会将当前应用的基础配置、文档、问答、拒答等一次性发布 。
查看发布列表
-
查看某次发布详情
-
拉取发布按钮状态、最后发布时间
可以根据此接口返回的 IsUpdate == true 的时候为可发布状态。
查看待发布应用基础配置
-
查看待发布文档列表
-
查看待发布问答列表
-
查看待发布拒答问题列表
-

四、用户端-接入问答

接入问答是指通过 API 调用的形式进行与应用的对话,目前提供有两种方式, 均提供了代码示例。
注意:
1. WebSocket 调用,通过 GetWsToken 获取 token 的时候,入参 Type 请写死为5。
2. HTTP SSE 调用,可以通过 GetAppSecret 获取应用密钥。
接入问答提供了如下几种能力:
大模型基础能力:不包含任何知识库,借助大模型进行对话,文本总结, 文本摘要等。
大模型基础能力+知识库文档:首先会根据用户 query , 去知识库中检索知识,并将检索的结果给到大模型,大模型进行回复。
大模型基础能力+对话时传入图片文档:对话中传入图片,文档,指定大模型阅读图片或者文档,进行内容的提取或者解释。

关于会话和上下文轮次
会话: 当前系统通过 session_id 来标识一轮会话,session_id 不变的情况下,会一直处在同一个对话中, session_id 请严格按照uuid的规则创建。
上下文记忆轮次: 在同一个会话中,为了使大模型能理解上下文信息,保证语义的连贯性,可以通过页面设置上下文轮次,与大模型对话的过程中会将上文选定的几轮对话一起给到大模型,大模型综合输入的内容进行回答。

注意:
设置上下文记忆轮次后,同一个对话中不相干的信息会给到大模型,可能会对当前的问答存在干扰;这时可以重新开启一个新的会话(按照规则生成新的 session_id )

五、其他关键接口

接口描述
接口名
说明
评价消息
对消息点赞点踩。
获取历史消息
该接口数据只保存半年,用户如有需要可自行存储一份。

六、其他参考