langchain调用语言模型chatglm4从智谱AI

目录

​0.langchain agent 原理

ReAct

1.langchain agent使用chatgpt调用tools的源代码

2.自定义本地语言模型的代码

3.其他加速方法


背景:如果使用openai的chatgpt4进行语言问答,是需要从国内到国外的一个客户请求-->openai服务器response的一个过程,尽管openai的算力很强,计算速度很快,但这个国内外网络的信息传输存在一定的延迟和不稳定现象。

可能的解决办法:调用本地语言模型,这样就不需要去访问openai的服务器了,也就没了网络传输。

0.langchain agent 原理

本质:llm推理-->推理结果和tools的描述计算相似度-->top 1 tool-->行动

在 LangChain 中,Agent 是一个代理,接收用户的输入,采取相应的行动然后返回行动的结果。

官方也提供了对应的 Agent,包括 OpenAI Functions Agent、Plan-and-execute Agent、Self Ask With Search 类 AutoGPT 的 Agent 等。

ReAct

基于 ReAct 原理来实现的 Agent。

https://react-lm.github.io/

https://github.com/ysymyth/ReAct

1.langchain agent使用chatgpt调用tools的源代码

主要关注agent是如何调用tools的

主要的执行类:agentExecutor

本质是agent就是一个特殊的chain

执行chain

在agentexcutor这个类里面,因为agent执行的是思考(llm)-->行为(tools)-->再根据结果再思考-->再行为这样的一个循环过程。即llm大脑思考用户的问题,然后计划方案,然后执行行为,根据行为结果思考是否解决问题,如果没有则继续思考然后继续执行行为,这样的逻辑过程。

使用llm来思考决定使用什么工具

又到了这里,因为llm也是chain,langchain的核心就是所有的都是chain,然后组合起来

终于看到了client的request了,这就是我们发送请求给openai

send:发送请求最后结果如下:

agent调用工具

本质是llm会根据用户的输入和tools的函数的功能描述来选择工具。逻辑是先把描述的语句和用户输入做embedding为token,然后做attention(余弦相似度计算),然后把相似度分数排序,选择相似度最高的。我们这里的用户输入是:告诉我长城在哪,和meta_case2的描述最接近(因为里面有"地点在哪"这个词),所以选择了这个工具。但并不符合我们的意图,所以llm并不能理解意图,只能做相似度计算,所以tools的函数功能描述非常重要。

关于我们函数功能描述的模板:

函数功能:什么功能作用

函数案例:比如可以抓取物品如零食

用户需求:可以解决什么用户需求

用户案例:可以解决用户的。。。需求

用户提问方式:是什么,为什么,怎么办。。。

一般性抽象性概括性词汇,水果>香蕉

2.自定义本地语言模型的代码chatglm6B

参考了一些官方和他人帖子:

https://zhuanlan.zhihu.com/p/630147161

https://python.langchain.com/docs/modules/model_io/chat/custom_chat_model

https://python.langchain.com/docs/modules/model_io/llms/custom_llm

主要就是LLM类的继承和重写

# 函数继承和重写
class GLM(LLM):max_token: int = 2048temperature: float = 0.8top_p = 0.9tokenizer: object = Nonemodel: object = Nonehistory_len: int = 1024def __init__(self):super().__init__()@propertydef _llm_type(self) -> str:return "GLM"def load_model(self):self.tokenizer = AutoTokenizer.from_pretrained("PiaoYang/chatglm-6b", trust_remote_code=True)model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True, device_map='auto')self.model = PeftModel.from_pretrained(model, "shibing624/chatglm-6b-belle-zh-lora")self.model = self.model.half().cuda()def _call(self, prompt:str,history:List[str] = [],stop: Optional[List[str]] = None):response = self.model.chat(self.tokenizer, prompt, max_length=128, eos_token_id=self.tokenizer.eos_token_id)return response

我们这里的本地模型是chatglm6B,结果:

显存:

速度:

10个字需要0.12s

3.调用国内大语言模型

因为agent的结果严重依赖llm的性能,chatglm6B虽然确实可以加快速度,但效果很差,基本没法正常调用tools,因此尝试调用清华做的质谱AI大模型chatglm4.

ZHIPU AI | 🦜️🔗 Langchain


 

质谱的key:智谱AI开放平台 (bigmodel.cn) 可免费申请。

效果依旧不好,速度也不快

4.其他加速方法

再说吧。

https://blog.csdn.net/inteldevzone/article/details/134645500zhizhi

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch反向传播算法

目录 1. 链式法则复习2. 多输出感知机3. 多层感知机4. 多层感知机梯度推导5. 反向传播的总结 1. 链式法则复习 2. 多输出感知机 3. 多层感知机 如图: 4. 多层感知机梯度推导 简化式子把( O k O_k Ok​ - t k t_k tk​) O k O_k Ok​(1 - O k O_k Ok​)起个别名…

[自研开源] 数据集成之分批传输 v0.7

开源地址:gitee | github 详细介绍:MyData 基于 Web API 的数据集成平台 部署文档:用 Docker 部署 MyData 使用手册:MyData 使用手册 试用体验:https://demo.mydata.work 交流Q群:430089673 介绍 本篇基于…

嵌入式下C/C++调用sqlite3简单开发

交叉编译sqlite3请关注我第一篇博文 sqlite3 交叉编译-CSDN博客 sqlite3的命令的简单使用(增删改查,创建/删除表)请关注我的上一篇博文 sqlite3嵌入式使用以及C/C代码开发-CSDN博客 一、新建文件夹 此文件夹用于放置工程,比如…

SQLite中的原子提交(四)

返回:SQLite—系列文章目录 上一篇:SQLite数据库成为内存中数据库(三) 下一篇:SQLite使用的临时文件(二) 1. 引言 SQLite等事务数据库的一个重要特性 是“原子提交”。 原子提交意味着所有数据库都在…

深度学习十大算法之图神经网络(GNN)

一、图神经网络的基础 图的基本概念 图是数学中的一个基本概念,用于表示事物间复杂的关系。在图论中,图通常被定义为一组节点(或称为顶点)以及连接这些节点的边。每个边可以有方向,称为有向边,或者没有方向…

学习笔记:MYSQL数据库基础知识

MYSQL数据库基础知识学习笔记 MYSQL基础学习数据库相关概念现主流数据库排名数据模型SQL分类SQL数据库基础操作 2024/3/27 学习资料:黑马程序员:MYSQL MYSQL基础学习 数据库和数据库管理系统(DBMS) 数据库: 是存储数据的集合,包括表、视图、索引等对象…

存内计算:释放潜能的黑科技

什么是存内计算? 存内计算技术是一种新型的计算架构,它将存储器和计算单元融合在一起,以实现高效的数据处理。存内计算技术的优势在于能够消除数据搬运的延迟和功耗,从而提高计算效率和能效比。目前,存内计算技术正处…

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、Ai…

jupyter notebook导出含中文的pdf(LaTex安装和Pandoc、MiKTex安装)

用jupyter notebook导出pdf时,因为报错信息,需要用到Tex nbconvert failed: xelatex not found on PATH, if you have not installed xelatex you may need to do so. Find further instructions at https://nbconvert.readthedocs.io/en/latest/install…

Focal Modulation Networks聚焦调制网络

摘要 我们提出了 焦点调制网络 (简称 FocalNets) ,其中 自注意( SA )被 Focal Modulation 替换,这种机制 包括三个组件:( 1 )通过 depth-wise Conv 提取分级的上下文信息&#xff0…

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.6-3.8

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第三周:浅层神经网络(Shallow neural networks)3.6 激活函数(Activation functions)3.7 为什么需要非线性激活函数?(why need a non…

Spring Cloud 九:服务间通信与消息队列

Spring Cloud 一:Spring Cloud 简介 Spring Cloud 二:核心组件解析 Spring Cloud 三:API网关深入探索与实战应用 Spring Cloud 四:微服务治理与安全 Spring Cloud 五:Spring Cloud与持续集成/持续部署(CI/C…

Java Web-Maven

Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具 Maven的作用 1.依赖管理:方便快捷的管理项目依赖资源(jar包),避免版本冲突问题 我们有的项目需要大量的jar包,采用手动导包的方式非常繁琐,并且版本升级也…

面试官:2PC和3PC有什么区别?

本文内容已收录至我的面试网站:www.javacn.site 在分布式事务中,通常使用两阶段协议或三阶段协议来保障分布式事务的正常运行,它也是 X/Open 公司定义的一套分布式事务标准。 X/Open 公司是由多家国际计算机厂商所组成的联盟组织,…

【前端】-【性能优化常识】

目录 前端性能优化指标首屏速度、白屏时间性能优化收效很大的操作:减少首屏资源体积收效不大或者特殊情况的优化操作 操作速度、渲染速度造成操作卡顿和渲染慢的场景性能优化 数据缓存 补充知识异步加载加载方式一:prefetch加载加载方式二:sc…

小迪安全48WEB 攻防-通用漏洞Py 反序列化链构造自动审计 bandit魔术方法

#知识点: 1、Python-反序列化函数使用 2、Python-反序列化魔术方法 3、Python-反序列化 POP 链构造(payload构造) 4、Python-自动化审计 bandit 使用 #前置知识: 函数使用: pickle.dump(obj, file) : 将对…

基于SIR模型的疫情发展趋势预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于SIR模型的疫情发展趋势预测算法.对病例增长进行SIR模型拟合分析,并采用模型参数拟合结果对疫情防控力度进行比较。整体思路为采用SIR微分方程模型…

免杀对抗-C2远控篇CC++SC转换格式UUID标识MAC物理IPV4地址减少熵值

参考文章: https://github.com/INotGreen/Bypass-AMSI https://mp.weixin.qq.com/s/oJ8eHdX8HGuk6dZv0kmFxg https://kyxiaxiang.github.io/2022/12/14/AMSIandEtw https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell 文章参考: https://www.…

exec族

execl();------------------------------------------ 查看系统命令的路径: 只有错误时返回 -1 执行到execl 时,把execl 里的可执行程序的各个段(数据、堆栈...)替换掉本程序的a.out 实现镜像&a…

【数据分享】1929-2023年全球站点的逐年平均露点(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…