这次我打算使用大语言模型加上 AI 工具箱中的工具,来构建一个智能客户支持代理。这个代理首先由大语言模型来驱动,对客户的输入进行语义理解之后,可以智能选择工具箱中的工具来为客户服务并解决问题。
目前智能客户支持代理可能使用的工具包括:
[ol]
[/ol]
这次的 Demo 将从头构建一个 PS5 的智能客服,并配备本地知识库、搜索引擎和功能调用工具。大语言模型将使用 Gemini-1.5-Pro 。之所以没有选择开源模型 Llama-3 等在本地部署,是因为测试效果很不理想,目前只有闭源大模型才能很好的完成这种复杂任务。
下面将演示它是如何工作的:
一、首先为智能体创建一个产品知识库
知识库名字为 PS5, 里面存放两个演示文档"PS5 Start Guide"和"PS5 Safety Guide":
对文档向量化并存储到向量数据库中:
二、创建 PS5 智能客户支持智能体
加载大语言模型 Gemini-1.5-Pro 并且输入产品的描述:
测试中不使用语音输入和输出,所以这里什么都不选:
选择刚刚创建的知识库 PS5 ,搜索引擎使用 Bing (如果要在内网搜索,需要实现内网的搜索引擎),激活 Function Calling 功能。测试中仅仅使用了函数 "submit_warranty_claim(caption: str, description: str)" 用来提交修理单:
最后加载代理配置:
三、进行智能客户支持智能体的测试
好了,现在万事已经齐备,让我们开始测试吧!
首先,别一上来就直奔主题,让我们先和智能体闲聊几句,拉拉近乎。它高兴了才能为我们更好的服务您说是不?:)其实也是想拉长对话历史,看看模型会不会出现问题。
我先提了三个问题:
[ol]
智能体回答也是中规中矩,这些问题它并没有使用任何的工具,仅仅靠产品描述和客服的定位来回答了我们的问题:
[/ol]
第四个问题是:
[ol]
[/ol]
智能体发现问题已经超过了它知识的时间范围,所以选择使用搜索引擎 Bing 的结果来回答了问题:
也可以查看 Bing 的搜索结果,进行检验:
第五个问题是:
[ol]
[/ol]
这个问题估计也不在智能体的知识范围内,所以它使用知识库 PS5 的结果来回答了问题:
第六个问题我需要提交一个修理单,因为我的 PS5 手柄坏掉了。
[ol]
[/ol]
智能体收到请求后,它首先让我完善了一下购买信息:姓名,Email ,PS5 的序列号,以及购买时间等等:
于是我在下一轮的对话中,提交了这些信息:
智能体收到这些信息后,调用函数 "submit_warranty_claim(caption: str, description: str)" 帮我提交了修理单:
令人欣喜的是它还把我最后提供的信息加到了 Email 中,生成了修理单号 317150 ,并最终发给了 [email protected]:
总结:通过这次测试发现,对于这种稍微复杂一点的使用情况,非常考验模型的基础能力。这次测试的难点主要是自动选择合适工具,正确生成工具的调用,以及使用函数调用时可以正确的生成参数。期待下次有可以在本地部署的开源语言模型,也可以完成这个任务。:)
这里也提供一个全部流程的视频演示:
https://youtu.be/GU5yvZiPXFs
也欢迎关注我的项目:
https://github.com/smalltong02/keras-llm-robot