AI 客服定制:LangChain集成订单能力

为了提高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 实现。其中实现了 XmhcOrderToolXmhcRuleTool两个工具,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大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/710160.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 13 高通设备热点低功耗模式(2)

前言 之前写过一篇文章:高通热点被IOS设备识别为低数据模式,该功能仿照小米的低数据模式写的,散发的热点可以达到被IOS和小米设备识别为低数据模式。但是发现IOS设备如果后台无任何网络请求的时候,息屏的状态下过一会,会自动断开热点的连接。 分析 抓取设备的热点相关的…

如何查找您的 SOLIDWORKS 序列号或许可证密钥

每个 SOLIDWORKS正版的软件都有自己的许可密钥,也称之为SOLIDWOKS的序列号。硕迪科技作为SOLIDKS正版软件代理商,我们的技术团队经常帮助客户查找他们的序列号。这篇文章将向您展示如何查找您的 SOLIDWORKS 序列号。 如果您拥有独立的 SOLIDWORKS 许可&…

碳化硅陶瓷膜良好的性能

碳化硅陶瓷膜是一种高性能的陶瓷材料,以其独特的物理和化学特性,在众多领域展现出了广泛的应用前景。以下是对碳化硅陶瓷膜的详细介绍: 一、基本特性 高强度与高温稳定性:碳化硅陶瓷膜是一种非晶态陶瓷材料,具有极高的…

[Vulnhub]Solid-State POP3邮件服务(James)+rbash逃逸

信息收集&SSH Server IP addressPorts Open192.168.8.100TCP:22,25,80,110,119,4555 Nmap 扫描: $ nmap -p- 192.168.8.100 --min-rate 1000 -sC -sV 结果: Host is up (0.00061s latency). Not shown: 65529 closed tcp ports (conn-refused) PORT STATE SERVICE…

Nacos启动报错

报错日志: Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2983) at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873) at com.mysql.jdbc.Mysql…

Spring boot 启动报:Do not use @ for indentation

一、使用maven插件动态切换配置时出现报错 二、配置文件及pom 2.1 配置文件结构 2.2 application.yml spring: # 根据环境读取配置文件(手动) # profiles: # active: dev# 根据环境读取配置文件(通过勾选maven插件)profiles…

SAP Build 2-PDF数据提取与决策

0. 安装desktop agent 在后续过程中发现要预先安装desktop agent,否则没法运行自动化流程… 0.1 agent下载 参考官方文档说明 https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-user-in-rbsc-download-repository?loca…

AI 一键换脸,背景替换,ioDraw让图片更有趣

还在为繁琐的图片处理而烦恼吗?快来试试ioDraw的AI图片工具! 它集图像识别、图像生成、智能换脸、背景替换、图像融合、肖像风格化、空间风格化、智能扩图、智能抠图、画质提升、美颜、拉伸修复、透视校正等功能于一身,为你提供前所未有的图…

网络攻击第二节考题有问题的

这个选ab,不懂a是啥这俩是啥 DHCP欺骗-教程详解-CSDN博客 OSI七层网络攻击行为及防范手段_物理层的攻击方式-CSDN博客 这选项讲了吗 选abc 假消息攻击-CSDN博客 啥是ips防护 12题选adcd 为啥连接别人的wifi会被dns欺骗?? 连接的那个wifi…

appproxy 一个轻量级的VPN代理工具,支持HTTP, SOCKS5协议

appproxy 项目背景 在分析app的时候,偶尔需要抓包,尝试了目前比较常见的代理工具Drony Postern ProxyDroid 发现都有一个相同的问题,对于较新的Android系统不太友好,要么app列表显示不正常,或者界面过于复杂,往往设置之后经常会失效,偶然在play上发现一个比较新的代理工具,界…

I/O Stream设计实验

实验要求和目的 深入理解java输入输出流相关类的基本用法,并且可以掌握Java程序的编写和调试。 实验环境 Java语言,PC或android平台 实验具体内容 设计和编写以下程序: 程序1: 从键盘读入多行字符串(英文&#xf…

终于把AUC的计算方式搞懂了!

1. 横纵坐标 纵坐标:sensitivity或者TPR 横坐标:FPR 或者 1-Specificity 2. 计算方法 2.1 方法1 def get_roc_auc(y_true, y_score):"""正样本得分大于负样本得分的概率,需要遍历每个正样本和每个负样本1. 选取所有正样本与…

蓝牙资讯|苹果iOS 18增加对AirPods Pro 2自适应音频的更多控制

苹果 iOS 18 系统将为 AirPods Pro 2 用户带来一项实用功能 —— 更精细的“自适应音频”控制。AirPods Pro 2 的“自适应音频”功能包含自适应降噪、个性化音量和对话增强等特性,可以根据周围环境自动调节声音和降噪效果。 当更新至最新测试版固件的 AirPods Pro 2…

小白跟做江科大32单片机之定时器

原理部分 1. 计数器每遇到一个上升沿就会计数值1,。 72MHZ72000000 72000000/65536/655360.0167638063430786132812559.652323555555554 (s) 2. 3. 计数时钟每来一个上升沿,计数值1,自动运行。如果计数值与存储在自动重装载寄存器中的值相等&#…

养猫发现猫毛过敏?宠物空气净化器真的能拯救猫毛过敏吗?

广东省 猫咪是许多人梦寐以求的伴侣,但对于轻度猫毛过敏和鼻炎患者来说,养猫似乎是个遥不可及的梦想。我常在社交媒体上羡慕地观看朋友们的吸猫日常,却因过敏无法亲自养猫。这种遗憾驱使我寻找解决方案,从研究低过敏猫种到尝试空气…

通过语言大模型来学习LLM和LMM(四)

一、大模型学习 新的东西,学习的东西就是多,而且最简单最基础的都需要学习,仿佛一点基础知识都要细嚼慢咽,刨根问底,再加上一顿云里雾里的吹嘘,迷迷糊糊的感觉高大上。其实就是那么一回事。再过一段时日&a…

注解 - @ResponseStatus

注解简介 在今天的每日一注解中,我们将探讨ResponseStatus注解。ResponseStatus是Spring框架中的一个注解,用于为控制器方法指定HTTP响应状态码和理由短语。 注解定义 ResponseStatus注解用于标记控制器方法或异常类,以指示HTTP响应的状态码…

R语言数据分析案例28-对数据集可视化和T检验

一、分析主题: 本分析旨在对数据集进行可视化和 T 检验,以探索数据集中的变量之间的关系和差异。通过可视化数据,我们可以直观地了解数据的分布和趋势,而 T 检验则可以帮助我们确定这些差异是否具有统计学意义。 二、具体分析 …

pyrouge(ROUGE-1.5.5)的安装步骤和使用说明(适用于Linux 系统)

摘要:本文讲解了如何配置和使用文本摘要的评价指标ROUGE(linux 系统)。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:摘要生成、大语言模型生成 文章目录 一、为啥要写这篇博客&…

uniapp 开发版小程序之间跳转

uni.navigateToMiniProgram({appId: urL,path: patH,envVersion: release,//我使用develop会给我返回:开发版小程序已过期,请在开发者工具重新扫码确定success(res) {console.log(res);// 打开成功uni.showToast({title: 跳转成功})},fail(err) {console…