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

2024-03-27 10:12

本文主要是介绍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

这篇关于langchain调用语言模型chatglm4从智谱AI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/851760

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G