分享好友 最新动态首页 最新动态分类 切换频道
ChatGLM-6B+LangChain环境部署与使用实战
2024-12-26 13:22

目标:原始使用ChatGLM-6B可接受的文字长度有限,打算结合LangChain实现长文本生成摘要.方法:step1:自定义一个GLM继承LangChain中的langchain.llms.base.LLM,load自己的模型.step2:使用LangChain的mapreduce的方法,对文本分块,做摘要,输出结果.使用的机器资源:T4显卡(16G显存)附参考资料:ChatGLM-6B:ModelScope: ChatGLM-6BLangChain:LangChain: summarizationLangChain: summarize notebook

ChatGLM-6B+LangChain环境部署与使用实战

  1. glm环境准备在指定的python环境下确定安装好以下依赖:
  1. ChatGLM-6B + LangChain

2.1 继承langchain.llms.base.LLM新建GLM类重写_call方法:加载自己的模型,并限制只输出结果(chatglm原输出不是直接str,langchain中要求模型返回必须是str的结果:“”“LLM wrapper should take in a prompt and return a string.”“”)具体代码:

2.2 实例化llm对象&加载模型

2.3 配合langchain输出

其中政府工作报告.txt来自于2023年政府工作报告_中国政府网:https://www.gov.cn/zhuanti/2023lhzfgzbg/index.htm

2.4 输出这篇文章介绍了中国在过去五年中的经济发展成就,政府采取多项措施应对有效需求不足的问题、支持汽车消费、推进保交楼稳民生工作、加强环境保护和生态修复工作等。政府还出台了增值税留抵退税额度、降低贷款利息等减轻企业负担的措施。文章介绍了中国政府的宏观经济政策目标,包括推进中国式现代化、实现经济发展质量和数量的提升、改善民生、稳定社会大局等。新冠疫情防控政策包括疫苗迭代升级和新药研制、保障群众就医用药需求、重点做好老年人、儿童、患基础性疾病群体的疫情防控和医疗救治等。政府将着力扩大国内需求、加快建设现代化产业体系、深化国资国企改革、保护民营企业产权和企业家权益,鼓励支持民营经济和民营企业发展壮大,稳定市场预期和提振市场信心。

实战2框架地址:https://github.com/noobdawn/langchain_ChatGPT

langchain+ChatGLM-6B试用什么是langchainChatGLM-6B大家都知道了,是清华大学推出的有62亿参数的开源大语言模型。那么langchain是什么?langchain是一个基于语言模型的应用程序开发框架,它具有以下特点

数据感知:将语言模型与其他数据源连接在一起自主性:允许语言模型与其环境进行交互langchain框架是基于以上原则设计的。

因为这些特点,langchain可以实现针对特定文件的问答、聊天机器人、评估、数据增强生成等工作。

如何部署github地址为:基于本地知识的 ChatGLM 应用实现

部署指南为:安装

因为我换了新机器,我个人遇到了【build wheel for xxx时提示找不到cl.exe】的问题,解决方法是:

装个Visual Studio,然后在Visual Studio Installer里安装组件【MSVC v142 - VS 2019 C++ x64/x86生成工具】。注意要选择这个版本,像我之前就装了MSVC v143结果build报错了。安装完成重启之后如果还报这个错,就找到cl.exe所在的目录,把它添加到环境变量Path里,这个目录大致是这样的:D:VS2019VCToolsMSVC14.29.30133binHostx64x64如何使用安装完成后,执行python webui.py即可开始使用,访问本地的127.0.0.1:7860即可使用web版的界面。

  1. 首先,进入模型配置,选一个LLM模型和Embedding模型。配置好的可以用chatglm-6b,差点的就要砍精度了。Embedding模型主要是文本转向量的模型,这个我研究不多。

  2. 然后来到知识库测试界面,先新建知识库,并为其上传文档或者文档所在文件夹,等待程序将文本上下文分割并解析为向量之后进行保存好后,测试问题。这一步主要是调整知识相关度阈值,默认Score=0会回复所有检索到的知识出处,这显然是不精准的。

  3. 确定好阈值后,在model_config里进行修改,这里还可以顺便修改一下prompt模板,重启程序以令其生效;

  4. L 在对话中,配置好数据库之后提问即可。

缺陷举例而言,我写了这样一个Q&A:

但是喂给ChatGLM-6B后提供的回答会类似于:

通过这张图可以看到,这个框架的主体其实是跟LLM无关的,它只是比对和匹配文本向量的相似性,检出最相似的问句的上下文打包发给LLM进行润色。

在我的理解里,这个玩意儿不会真的把本地的数据更新进自己的模型内部,只是每次提问的时候,预先把可能存在答案的上下文作为prompt一起提交了而已,这里在model_config.py的PROMPT_TEMPLATE里也能看到。

所以它会触发以下问题:

1 当这个问题并不“独特”的时候,就会出现例子中所示的答案的杂糅。因为是打包上下文之后发给LLM润色,显然LLM理解的“性能优化”指的是一种普适性的答案,它自发的把自身语料训练出来的结果与本地知识库中项目所独有的结果进行混合,得到了似是而非的东西。2 当知识库中的问题重复度很高的时候,或者问题过于宽泛导致命中过多,也会出现本地知识库答案的杂糅。此时问题和各个文本向量的相似性很高,回答会串味,例如,询问“如何进行性能优化”之后,就会连同“性能优化怎么查看”、“性能优化的指标是多少”等等一块返回进行回答。3 因为是打包上下文发给LLM润色,所以这个“打包”可能会把答案截断,或者囊括了并非本问题的答案的上下文,会造成回答串味或不全。

简单的说,对于我来说我并不需要什么语料的润色、帮助我提取有用信息,因为我给的文档本身就是最好的答案,所以我需要的是精确的检索。这种截断上下文发给LLM的架构的三个缺陷是我无法忍受的:

  1. 本地知识库干预力度不够,由于真正需要的知识在上下文中,而上下文是以Prompt的形式嵌入其中的,导致独特性不够的问题,大模型给出的答案会非常偏向语料训练结果。
  2. ChatGLM-6B的中文能力过于羸弱,逻辑能力过于差劲,有时候无法判别出两个相似问题的区别。
  3. 上下文截断过于粗暴,对于长答案支持不佳。langchain+ChatGPT其他尝试之后我转变思维,不再尝试让LLM模型去即时回答问题,而是让LLM即时判定问句是否一致,再针对同义问句匹配相同的回答。因此我个人在家又搭建了一个langchain+ChatGLM-6B的本地知识对话模型,但这个模型跟前一个模型的区别在于,我会写好一个问题答案对:

当我提问“你是什么人”的时候,内部会使用LLM模型去一个个比对这句话和各个问题答案对中的问题部分是否属于同一个意思,此处它就会比对“你是谁”和“你是什么人”是不是同一个意思。Prompt会写成这个样子:

f"{original_question} {input_question} 判断上述两句话是不是一个意思,如果是,则回答1;反之回答0。"这里再次暴露了ChatGLM-6B的羸弱,明明要求回答0或者1即可,往往会画蛇添足地说“是的,这两句是一个意思”,此外它对同义句的判定也有极大的问题,这里我们后面说。

事实上,我想看到的是这样的句子:

  1. 怎么发起性能优化流程?
  2. 性能优化的流程是怎么样的?
  3. 我该如何启动性能优化流程?
  4. 性能优化流程是如何发起的?

(你要不看看你在说什么?.jpg

因为我一直在用ChatGPT帮助生成代码,所以我测试了一下ChatGPT,发现ChatGPT生成的同义句居然还不错,虽然有时候会带上人称,比如”你如何才能启动性能优化“。

事实证明,尽管ChatGPT之后,LLM人人均有不下ChatGPT-3之勇,但真用起来,那还是ChatGPT好使。

如何使用OpenAI API入口:Introduction - OpenAI API

每个ChatGPT Plus用户每月有5刀的免费使用额度,而根据使用的GPT模型不同,收费也不同:

模型 迅速版(每千token) 完整版(每千token)GPT-4 8K Context 0.03$ 0.06$GPT-4 32K Context 0.06$ 0.12$GPT-3.5-Turbo 0.002$ -选择使用GPT-3.5的原因绝对不是便宜(迫真),而是因为它速度快,且为对话专门优化过。而同义句的生成就也不涉及大量的知识和专业性内容,所以直接用它。

使用的方法就很简单:

p

感觉一句话基本大约不会超过60token,所以5个中文问句大致就是300个token。temperature设为0是为了防止回答过于发散。

框架框架整体参考了imClumsyPanda/langchain-ChatGLM 的实现,包括怎么用gradio创建webui之类的,但轻量化了很多,因为我并不需要内嵌LLM,也不需要对问句进行分词(都整句话直接转换成向量了)。

改进

一些个人的想法故,本质上而言,该方案并不能算“对话”系统,因为LLM并没有在即时输入端参与,而是在本地知识上传后离线参与。

写完之后我在思索,这玩意儿和Ctrl-F有什么区别,有没有一种可能,我直接Ctrl+F搜索“性能优化”也能找到我要的内容呢?所以这是个伪命题?

后面想了想,如果知识库很少,问题单一的情况下确实是这样的没错。但随着知识库的增大,问题的keyword也在增多,单个keyword对应的答案内容开始急剧上升,假如后面有这些问题:

这样的话,Ctrl+F的实用性就大打折扣了。此外,keyword也可能会改头换面,例如“性能优化”实际上可以这样问“优化XX的性能表现”,因此我认为这个方案仍有有较大的用武之地。基于本地知识的问答机器人langchain-ChatGLM

最新文章
2024新澳最精准免费资料,动态词语解释落实_领航款67.467
在信息爆炸的时代,获取精准、免费的资料和动态词语解释变得越来越重要。2024年,新澳领航款67.467以其卓越的性能和功能,在这一领域脱颖而出,为用户提供了无与伦比的体验。本文将详细介绍新澳领航款67.467的特点、优势以及如何有效利用这
DeepAI CEO Kevin Baragona:大模型竞争的本质,已经从算力竞争变成了效率竞争 丨2024 T-EDGE
过去一年,大模型行业几乎每个月都在发生变化。按照李开复的说法,从GPT-4、Turbo、4o到o1,大模型的推理成本一年下降了10倍左右。整个行业在以1年10倍的速度,实现推理速度变快和推理成本下降。但另一方面,由于世界上数据总量有限,基础
2024十大变态手游游戏盒子排行榜 热门bt手游游戏中心合集
,热门bt手游游戏中心有哪些?很多小伙伴都非常好奇有什么比较火爆的变态手游盒子,下面小编就为大家带来了详细的介绍,这些游戏盒子中包含了非常多种类的bt手游,感兴趣的话就来一起看看吧!,1. 咪噜游戏平台推荐理由:咪噜平台以其丰富的B
944cc资料免费大全香港|词语释义解释落实
  在这个信息爆炸的时代,香港作为一个国际化的大都市,对于各种资料的需求日益增长。944cc作为一个资料分享的平台,为广大用户提供了一个便捷、全面的资料免费获取渠道。本文将详细介绍944cc平台,包括其服务范围、资料类型以及如何高效
5G抖音短视频赚钱运营攻略│什么是抖音电商与淘宝、微商有什么区别
本音频有配套的视频课程,加我威信私人号:9 4 5 5 8 5 6 5 9 ,我会经常分享抖音运营的相关技巧课程,想学习的加,不想学习的就不要加了。适合哪些同学学习:1、刚玩短视频,又不知道怎么玩的小白2、想快速涨粉百万、成为大V的短视频达人3
2024年可以“闭眼买”的四款手机,512G价格大跳水,用6年不换机
​​来到10月之后,不少新机不是上市就是在上市的路上。手机市场竞争愈发愈烈,各大厂商都推出顶级旗舰机,体验感也越来越强的机型。对我们消费者来说无疑是好事,产品百花齐放,品牌之间互相竞争,互相牵制,更有利于推动手机行业发展。又
36漫画畅享版
《36漫画畅享版》是一款专为广大漫画爱好者打造的免费读漫画软件。这款应用程序具有丰富的功能和卓越的性能,为用户带来前所未有的漫画阅读体验。满足了不同用户的阅读需求。同时,软件还会实时更新,确保用户始终能够阅读到最新的漫画作品
2024新奥最新资料,创新解读执行策略_VR版51.776
随着科技的不断进步,虚拟现实(VR)技术已经渗透到我们生活的方方面面,从娱乐到教育,从医疗到工业设计,VR技术的应用前景越来越广泛。2024年,新奥公司(以下简称“新奥”)发布了其最新资料,展示了他们在VR领域的最新成果和创新策略。
2024年正版挂牌,数据解析导向计划_Phablet7.303
序言在数字化浪潮中,信息、网络及大数据已成为现代化社会发展的核心动力,随着技术的进步和用户习惯的变化,智能设备行业必须与时俱进,结合澳门特别行政区的科学发展观与现状,本文在“2024年正版挂牌,数据解析导向计划—Phablet7.303”
2024年云瀚府(云瀚府)官方首页网站|云瀚府百度百科|云瀚府房天下
广州·云瀚府✅云瀚府售楼处24小时电话:400-883-1335【☎已认证】✅云瀚府营销中心24小时电话:400-8950-807【☎已认证】Vip贵宾置业===欢迎来电预约尊享内部折扣===匠心钜制恭迎品鉴✅云瀚府售楼中心24小时电话:400-109-0755【☎已认证】「
相关文章
推荐文章
发表评论
0评