扣子开发汽车行业智能客服示例

《扣子开发AI Agent智能体应用 人工智能技术丛书 宋立桓 王东健 陈铭毅 程东升 清华大学出版社》【摘要 书评 试读】- 京东图书

在本节中,我们想要创建一个AI客服,用于介绍汽车领域的行业知识,因此需要利用知识库的能力。首先,梳理汽车行业知识,形成FAQ(常见问题解答)。然后,将其上传到知识库中。最后,将知识库配置到AI Agent智能体中,使其能够调用知识库的内容作为回复。完成以上步骤之后,当用户咨询Agent有关汽车领域知识的问题时,Agent将根据FAQ的内容进行回答。

传统的机器人客服只能生硬地套用FAQ,缺乏灵活性。而AI Agent智能客服则可以借助RAG(检索增强生成)的能力,优化回答的方式,并且还可以结合Agent本身的人设和目标进行回答。简而言之,AI Agent智能客服让人感觉更像是真人客服,而不是呆板的机器人。

5.5.1  创建知识库

在创建知识库时,需要注意RAG技术检索分析数据的特点。我们上传一份文件到知识库,这份文件并不是单纯地存储,而是会将内容进行切片并进行向量化。切片向量化后的内容更有助于AI检索信息,从而提升AI回答内容的关联性。

首先,我们准备一个.txt文本文件,作为汽车行业的知识库内容。文本内容如图5-7所示。

图5-7  汽车行业知识文件

在扣子平台上单击“工作空间”,找到“资源库”,然后单击右上角的“+ 资源”按钮,在菜单中选择“知识库”,如图5-8所示。

图5-8  在资源库中添加“知识库”资源

我们通过上传文档,向知识库中添加知识。这里选择文本格式,文本格式支持多种导入方式,比如本地文档、在线数据、飞书等。如图5-9所示,知识库名称填写“汽车行业知识库”,描述填写“回答汽车行业的知识”,导入类型选择“本地文档”,单击“创建并导入”按钮。

​​​​图5-9  向知识库中添加知识

打开“新增知识库”页面,如图5-10所示,单击“上传”或把文档拖入面板中,即可上传文档。

图5-10  上传知识

文件导入后,可对文档内容进行切片分段。目前扣子支持“自动分段与清洗”和“自定义”两种方式。也就是说,扣子可将文档内容自动切分为一个个文本片段进行存储,同时支持用户自定义文本分片规则,例如通过分段标识符、字符长度等方式进行文本分割,通过分段处理有助于提高检索的精准度。

这里建议读者,如果了解自己的知识库格式标准,建议选择自定义的方式。如图5-11所示,我们的文件中使用换行进行分隔,因此,分段标识符应选择“换行”,这样能使知识库的分段更加清晰和可控。

图5-11  分段策略-自定义

这里,“分段最大长度”指的是每个段落允许的最大字符数。读者可以根据自己的需求进行选择。而“文本预处理”指的是在分段开始之前,是否需要去除过多的换行符或空格。这一选项适用于一些未经常格式化的文本。此外,还可以选择去除URL和电子邮件地址,以防止信息泄露。读者可以根据自己的需要进行选择。

设置完成后,下一步服务器将开始处理分段。根据文本的长短,处理时间也会有所不同。处理完成后,单击“确认”按钮进入下一步。如图5-12所示,可以看到文本确实按照我们设置的格式进行了分隔,且分隔得很标准。

​​​​​​​

图5-12  分段效果

如果在分段处理过程中,发现某些部分不够理想,我们还可以进行手动编辑。如果整体分段效果不佳,我们也可以选择“重新分段”。此外,我们还可以继续为当前的知识库添加内容。如图5-13所示,我们又添加了一个关于汽车维修保养知识的文档。

​​​​​​​

图5-13  继续添加知识

5.5.2  创建工作流

接下来创建一个工作流,用来搭建在线客服问答的整体流程。工作流可以理解为:通过选择不同的节点把任务拆解为多个步骤,让智能体按照预设工作流程对任务进行分步处理,从而提升对复杂任务的处理效率。

进入工作空间,单击“资源库”,然后单击页面右上角的“+ 资源”按钮,在菜单中选择“工作流”,如图5-14所示。

​​​​​​​

图5-14  在资源库中创建工作流

如图5-15所示,工作流名称输入faq_online,工作流描述输入要执行的任务,这里是“智能客服知识助手”。单击“确定”按钮,工作流创建好之后,默认只有“开始”节点和“结束”节点,这两个节点中间可以添加任何节点,节点间需要连接起来。

​​​​​​​图5-15  工作流的基本信息

5.5.3  “开始”节点

“开始”节点会接受我们输入的问题,这里把输入变量名称改为question,即系统将直接从用户的聊天输入框中提取对话内容,如图5-16所示。

​​​​​​​图5-16  “开始”节点配置

5.5.4  “知识库检索”节点

接下来单击按钮添加一个“知识库检索”节点,如图5-17所示。“知识库检索”节点会从本地知识库中检索出与问题相关的知识片段。

然后配置知识库节点,如图5-18所示。在“知识库检索”页面中,Query是一个查询语句,我们这里引用的是开始节点传递过来的值,即question。知识库会根据这个Query召回(召回指的是从你选定的知识库中检索符合条件的信息并返回)最匹配的信息。单击“知识库”右边的按钮,就可以添加我们已经创建好的“汽车行业知识库”,搜索策略选择“混合”。同时勾选“查询改写”和“结果重排”复选框,以进一步优化检索结果。

  图5-17  添加知识库检索节点                       

​​​​​​​  图5-18  知识库检索配置

搜索策略是指从知识库中获取知识的搜索方式。不同的搜索策略可以更有效地找到正确的信息,从而提高生成的答案的准确性和可用性。扣子支持的搜索策略解释如下:

  • 语义搜索:语义搜索是一种利用自然语言处理(NLP)和机器学习(ML)技术来理解用户查询背后的上下文和含义的搜索方式。它能够理解词与词、句与句之间的关系,适用于需要理解语义关联度和跨语言查询的场景。例如,比较两组句子:“虎追小羊”和“东北虎追山羊”;“虎追小羊”和“我爱吃炸猪排”。第一组的语义关系更强,因为它们在语义上更为相关。
  • 全文搜索:基于关键词进行全文检索。它适用于查询内容包含特定名称、专有名词或术语的场景。
  • 混合搜索:结合全文检索和语义检索的优势,并对结果进行综合排序,召回相关的内容片段。

最大召回数量是指从检索结果中返回给大模型使用的内容片段数量。数值越大,返回的内容片段越多。如果需要精确匹配,可以将该数值设置得小一些;如果希望内容更全面,可以将该数值设置得大一些。最小匹配度是指根据设置的匹配度选取要返回给大模型的内容片段。低于设定匹配度的内容不会被返回,该配置可以过滤掉一些低相关度的搜索结果。

5.5.5  大模型DeepSeek节点

接下来添加一个“大模型”节点,大模型配置页面如图5-19所示。这个大模型节点支持选择不同的大模型,如豆包、通义千问、DeepSeek等,我们选择DeepSeek-R1模型。读者可能会问,为什么还要连接一个大模型节点呢?这是因为知识库检索的都是内容的片段,如果我们想让内容更加符合自然语言的聊天对话形式,在这里加一个大模型的节点效果会更加自然,用户体验也会更好。在“知识库检索”节点获取到知识片段后,结合原问题组装成提示词,再送到“大模型”节点进行处理。

​​​​​​​

图5-19  “大模型”节点的模型选择

大模型节点的输入参数包括 content(知识库内容)和 question(用户提问),以及“提示词”(定义角色、任务与要求)的配置,这些配置可以让大模型更高效地处理任务,如图5-20所示。系统提示词是开发者为大语言模型设定的初始参数和行为准则,它在整个会话中持续影响大模型的响应模式。用户提示词则是在与智能体对话时,用户输入的具体指令或问题,它指导模型执行特定的任务或提供特定的信息。

通常情况下,如果提示词较少,可以将系统提示词和用户提示词都写入“用户提示词”的文本框中,这样操作也是可行的。但如果提示词较多且逻辑关系复杂,建议将它们分开输入,这样条理会更加清晰,也便于后续查看和修改。

图5-20  “大模型”节点的输入参数和提示词配置

用户提示词如下:

# 角色
你是我的知识库问答助手,以下是我的知识库内容:{{content}}。
## 任务
- 希望你能够基于我的提问从知识库中找到匹配的内容,并且进行提炼后回答我。
## 技能
- 精确理解问题,完全依据知识库内容,打造准确简明的回答。
## 约束
- 所有回答务必局限于检索到的信息,严禁自行创作无关的内容。如果未检索到任何信息,则直接回复:"你好,你的问题不在知识库中"。
## 我的提问是:{{question}}。

当然,读者可以根据自己的需求,编写更符合自己需求的提示词。需要注意的是,用户提示词的设置应该简洁明了,以便模型能够准确捕捉用户的需求。

5.5.6  “结束”节点

如图5-21所示,在输出变量中,参数名output的参数值是“大模型-output”,即在工作流的终点,“结束”节点将输出所有内容,完成整个流程的最后交付。

​​​​​​​

图5-21  “结束”节点配置

5.5.7  试运行

整个工作流如图5-22所示。从图中可以看到,这个工作流包括开始节点、知识库检索节点、大模型节点和结束节点,并依次串联。

​​​​​​​

图5-22  工作流流程

接下来我们试运行这个工作流,查看一下效果。如图5-23所示,我们在开始节点的question对话输入框中输入问题“奥迪Q3基础保养的费用是多少?”,输出结果符合我们预期。

​​​​​​​

图5-23  试运行结果

我们再输入问题“购买奥迪Q3要多少钱?”,输出结果也符合我们预期,如图5-24所示。

​​​​​​​

图5-24  试运行结果

5.5.8  发布工作流

工作流只有发布后,才能被智能体引用。单击页面右上角的“发布”按钮,弹出工作流发布对话框。如图5-25所示,在对话框中输入版本号v0.0.1和版本描述“汽车行业知识库小助手”,单击对话框下方的“发布”按钮,发布工作流。

​​​​​​​

图5-25  发布工作流

5.5.9  创建智能体

接下来,我们把这个工作流接入智能体中。单击扣子工作页面左上角的加号按钮 ,打开智能体“创建”窗口创建一个智能体,在弹出的“创建智能体”窗口中填写智能体的相关信息,智能体名称输入“汽车行业在线智能客服”,智能体功能介绍输入“可以回答汽车领域的任何问题”,如图5-26所示。

​​​​​​​

图5-26  创建智能体

在这里,我们使用单Agent(LLM模式)添加刚才发布的工作流faq_online,如图5-27所示。

​​​​​​​

图5-27  智能体添加工作流

然后定义智能体的人设(即Prompt),在编写Prompt的过程中,可以简单描述角色、要求,再利用扣子平台的AI优化功能进行完善。

# 角色

你是一个可以回答汽车行业知识的Bot,可以使用自然语言和用户进行交互

## 任务

- 将收到的问题经过工作流{{faq_online}}处理后输出,不要回复其他内容

添加智能体人设,输入问题并调试一下,效果演示如图5-28所示,结果可以满足预期。

​​​​​​​

图5-28  智能体调试效果

至此,我们的专业汽车行业客服已经搭建完成了,是不是很简单?如果学会了,就快动手试试吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值