为了提高AI客服的问题解决能力,我们引入了LangChain自定义能力,并集成了订单能力。这使得AI客服可以根据用户提出的问题,自动调用订单接口,获取订单信息,并结合文本知识库内容进行回答。这种能力的应用,使得AI客服可以更好地解决与业务系统有关的问题。
简易AI客服实现
本文是对前文AI客服的迭代升级,集成订单能力,使其在售后方面也能提供一些自动快速解决能力。
基于子类化 BaseTool 实现订单查询能力
通过子类化BaseTool 可以快速实现基于业务的工具,工具可以在代理运行时调用。在定义工具时,工具描述description
是非常重要的,它决定了大模型通过代理决策是否要调用该工具。在订单信息中返回与用户问题回复有关的信息,根据自己的业务决定。
代码语言:javascript
复制
import jsonfrom typing import Optional, Typeimport aiohttpimport requestsfrom langchain.callbacks.manager import AsyncCallbackManagerForToolRun, CallbackManagerForToolRunfrom langchain.tools import BaseToolfrom pydantic import BaseModel, Fieldclass XmhcOrderQuery(BaseModel): keyword: Optional[str] = Field(description="手机号或者订单号")class XmhcOrderTool(BaseTool): name = "XmhcOrderTool" description = """ It is very useful when you need to answer questions about recharge or orders. If this tool is called, users must provide their phone number or order number to enter information. And it is necessary to determine whether the tool needs to be called based on the context. If the order status is transaction closed, the order has been cancelled and cannot be considered as recharge not received. The estimated time of receipt can be calculated based on submitRechargeTime. Functional information cannot be disclosed. """ args_schema: Type[BaseModel] = XmhcOrderQuery def _run(self, keyword: str = None, run_manager: Optional[CallbackManagerForToolRun] = None) -> str: if keyword is None: return "请提订单供充值手机号或者订单号" return self._process_response(self.results(keyword)) async def _arun(self, keyword: str = None, run_manager: Optional[AsyncCallbackManagerForToolRun] = None) -> str: if keyword is None: return "请提订单供充值手机号或者订单号" return self._process_response(await self.aresults(keyword)) def results(self, keyword: str) -> dict: response = requests.get("https://***/ai/order/query?keyword=" + keyword) res = json.loads(response.content) return res async def aresults(self, keyword: str) -> dict: async with aiohttp.ClientSession() as session: async with session.get( "https://***/ai/order/query?keyword=" + keyword ) as response: res = await response.json() return res @staticmethod def _process_response(res: dict) -> str: print(res) if bool(res['success']): return json.dumps(res["data"]) else: return res['message']
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
### **AI 客服优化逻辑实现**基于Flask 实现。其中实现了 XmhcOrderTool
、XmhcRuleTool
两个工具,XmhcRuleTool
是基于会话检索实现问答,XmhcRuleTool
即上面定义的业务接口。
到这我们就实现了基于用户提问,模型自动决策调用相关工具。但这样仍存在一些问题,因为我们的工具是独立的,大模型可能只是基于某个工具来回答问题。
例如,当提问:充值成了但还未到账
然后根据上文,我们提供手机号:
可以发现其完整的把订单信息给输出了,部分信息这对用户想要的内容并不相关,这不是一个友好的回答。
这里还是要重点强调一下工具描述的重要性,它不仅可以用于被决策是否要调用,还可以影响大模型的回答,比如在描述中加了If the order status is transaction closed, the order has been cancelled and cannot be considered as recharge not received.
,这样它能明确在订单状态为交易关闭时做出更理想的回答。
提问:充值手机号15669923532多久能到账
当用户提问可能需要用到两个工具时,它可能只调用了一个工具,而这一个工具无法提供正确的回答。
优化提示词
通过优化提示词(Prompt),可以让 AI 客服有思考能力,并且让不同的工具之间也能有交互。如下可以把工具写入提示词中,并且告诉AI你需要思考后再回答用户的问题,这里只展示本次优化的提示词,提示词是用户指导AI的,提示词也需要根据实际情况不断调试优化。
提问:充值手机号15669923532多久能到账
提问:订单202308041558160774多久会到账
此示例,AI 调用了两个工具进行回答。
小结
本文只是实现了简单的功能,如果要让AI回答得更加完美且贴合业务,需要不断优化提示词、工具描述、知识库、工具参数等等。
那么,我们该如何学习大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。