AI大模型入门 - LangChain的剖析与实践

这篇具有很好参考价值的文章主要介绍了AI大模型入门 - LangChain的剖析与实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain概述

官方文档介绍:https://python.langchain.com/docs/get_started/introduction
github:https://github.com/langchain-ai/langchain
安装文档:https://python.langchain.com/docs/get_started/quickstart.html
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

LangChain 是一个基于语言模型开发应用程序的框架。它可以实现以下功能
  • 数据感知:将语言模型与其他数据源连接起来
  • 主动性:允许语言模型与其环境进行交互
LangChain 的主要价值在于
  • 组件:用于处理语言模型的抽象,以及每个抽象的一系列实现。无论您是否使用 LangChain 框架的其他部分,组件都是模块化且易于使用的
  • 现成的链式组装:用于完成特定高级任务的结构化组件组装,现成的链式组装使得入门变得很容易。对于更复杂的应用程序和细致入微的用例,组件可以轻松自定义现有的链式组装或构建新的链式组装。

本篇文档主要篇幅会集中在对LangChain的技术剖析,通过具体的代码实践以及相关的文献分析,来引发对与LLM的相关思考,从而真正理解LLM(大模型)所带来空前机遇。

理解LangChain

lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

结合上图所示内容,为了帮助大家理解,一些关键词这里做一些介绍

  • LLM:基于transformer实现的大模型,例如,ChatGPT、Llama2等模型都是LLM。
  • Tools:提供给LLM调用的各种API函数,相当于给LLM配置的助手,让它能够做到超出它能力的事情。
  • Prompt:一种给LLM塞提示语的方式,即一段自然语言的描述,其中可以是用户的要求,也可以是一些上下文内容,就像和一个陌生人交流钱,先把交谈所需要告知的规则、上下文等告诉对方。
  • CoT:思维链,让LLM能够将复杂任务拆解成多步去完成,从而极大提升它的推理能力。
  • ReAct:结合CoT(思维链),在每一步中为LLM配置Tools,将Tools执行的结果作为上下文再回馈给LLM,从而让LLM能够边推理、边执行、再继续推理的能力。
  • Embedding:嵌入模型,即将文本、图片转换到统一向量空间中的一个向量,从而能够让LLM能够通过向量余弦等数学计算,来理解不同语句的语义,以及它们之间的关系
  • 向量数据库:一种只存储向量,以及提供向量相似度检索的数据库,例如,SQLite-VSS、Pinecone、Weaviate、Chroma等,目前业内已经有非常多成熟的方案。
  • 记忆:LLM只有训练时的记忆,通过Eebedding将额外的数据向量化成向量,存储在向量数据库中,以后每次与大模型的会话前,通过向量相似度检索找到有关联的内容,通过Prompt提供给LLM,LLM会像人一样从中理解最需要的内容,从而回答训练过程中没有的知识或内容。

核心能力剖析

1. LLMs:对具体LLM实现解耦,支持接入自己的LLM

lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

2. Agent:通过ReAct将思维链(CoT)和Action结合

CoT介绍:2022年1月提出,100B规模才会出现质的效果(涌现),白盒研究的未知领域,LLM厂商追求的目标

  • 论文:https://arxiv.org/abs/2201.11903
  • 原理:约束“精神分裂症”患者LLM,让他能够表现得和正常人类思考模式一样。这是因为使用全网数据(不需要打标签的数据)训练出的LLM,会存在的各种人格(说话的语气)、思维习惯、表达方式(精炼/啰嗦)等等,需要用一段明确的话去示范给它看,应该以什么的模式去进行推理,这段话就是CoT论文的最终产物。
  • 论文结论:一段自然语言prompt模版,下图中右边部分蓝色加粗的就是。
  • 请注意!只需要一段简单的示范就可以,LLM会自己理解这是要分步骤去思考,然后后面所有的其他问题它都会按照分步思考的方式去推理,是不是很像教一个人如何办事?这就是LLM强大之处,只要给它个例子,它就能明白。
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

ReAct介绍:2022年10月提出,是一套将在LLM中将模型推理(CoT)和Action协同结合的方法,能够有效解决LLM在信息滞后、幻觉、错误等方法的问题,基本的原理如下图所示:

  • 论文:https://arxiv.org/abs/2210.03629
    • https://react-lm.github.io/
    • https://www.promptingguide.ai/zh/techniques/react
  • 原理:给“通识教育”学生LLM,配备必要的工具助手,解决特定领域因信息差、能力不足而致幻、错误的问题
  • 论文结论:一段自然语言prompt模版
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型
    以下图HotpotQA上的知识问答为例,使用ReAct协同的方法,对回答的正确率提升明显
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型
    LangChain中ReAct的实现:以自然语言范本的方式让LLM遵循ReAct范式,并以Agent的形式提供给用户使用
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型
    实现方式并不复杂,主要是通过内置Prompt的方式,让LLM按照分步思考(CoT),然后再根据LLM提供的步骤分步执行Action并和LLM多次交互,具体实现代码如下:
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型
    Lanchain中ReAct Agent使用示范
    lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

3. Tools:通过自然语言描述自定义工具

理解LLM是如何能够调用人类定义的API函数,是非常有助于了解LLM为何是迄今为止AI领域空前的进步,请注意以下关于注册API函数的方式,是否无限接近与一个正常人类沟通交流的方式?人类无需关心什么时候调用API,以及如何抽取函数的参数,一切交给LLM,它会表现得像一个人一样思考,在它自己做不到某些事情时,它会去思考要去调用什么Tool来解决问题。

如何自定义Tool:通过LangChain封装自定义的Tool,方法比较简单,完全是通过自然语言描述和说明
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

Tool的注册实现:自定义Tool中的name和description字段,最终会被LangChain组装到ReAct形式的prompt中
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

推理和分步调用Tool:LangChain通过“LLM + 本地OutputParser”的方式实现Tool的分步调用
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

首先,将用户问题交给LLM进行推理分析,并将LLM推理结果解析成要分步执行的Action列表。
然后,根据Action列表分步骤执行Tool调用,并将返回结果作为下一步执行Action的输入,继续下一步Action调用。
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

4. Memory:记忆、自定义策略

Memory的基本原理是将临时记录通过Prompt的方式加入到LLM的上下文中,如下图所示:
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

以一个自定义的Memory为例,其能做的事情,以及与LLM的协作流程如下:
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

LangChain实践总结

1. LangChain没有壁垒

没有算法壁垒、没有复杂的工程量,核心竞争力是对LLM的实际应用思想,而这些很容易被复制

2. 如何边聊天边让AI就把事情做了

根据Agent的特性不同,不是所有Agent都能做到一边聊天一边就能根据需要调用Tool完成工作,AgentType.CONVERSATIONAL_REACT_DESCRIPTION这种类型的Agent能比较好的满足需求,它的prompt中明确提示了LLM在回答问题时,哪些符合条件的问题需要用使用工具(LLM根据工具的自然语言描述来自行判断),并把结果以人类语言告知用户

lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

AgentType.CONVERSATIONAL_REACT_DESCRIPTION对应的Prompt模版如下:

# flake8: noqa
PREFIX = """Assistant is a large language model trained by OpenAI.

Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.

Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.

Overall, Assistant is a powerful tool that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.

TOOLS:
------

Assistant has access to the following tools:"""
FORMAT_INSTRUCTIONS = """To use a tool, please use the following format:


Thought: Do I need to use a tool? Yes
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action


When you have a response to say to the Human, or if you do not need to use a tool, you MUST use the format:


Thought: Do I need to use a tool? No
{ai_prefix}: [your response here]
"""

SUFFIX = """Begin!

Previous conversation history:
{chat_history}

New input: {input}
{agent_scratchpad}"""

应用的代码示例如下:
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

3. Tool和Memory结合可以突破上下文容量上限

lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

核心在于将需要走上下文查询的场景定义清楚,通过prompt提交给LLM,最终LLM在执行ReAct流程时会根据需要调用对应的查询工具,具体演示代码如下:
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型
对应的执行结果如下:
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

4. Tool调用的两种实现机制

Tool的调用有两种实现,一种是通过prompt规范输入/输出来判断,另一种是OpenAI Function机制,其中通过Prompt实现的方式更通用,也是LangChain中ReAct的主要实现方式
lanchain 实验,AI,大模型,langchain,langchain,AI编程,人工智能,语言模型

后记

关于大模型,还有一些非常深入的主题值得展开,这里篇幅所限,就当抛砖引玉,有兴趣的人可以自行去学习以下内容,个人也会在觉得有必要的时候再写一写深入一些的主题:

1. 多模态嵌入模型CLIP

利用它可以将图片向量化到与文本所在的同一个向量空间中,从而做到通过自然语言检索图片内容,例如:“放在窗台上的杯子”、“微笑的狗狗”,“秋水与长天一色”

推荐文章:
https://zhuanlan.zhihu.com/p/493489688
https://juejin.cn/post/7264503343996747830

一个推荐的开源个人项目,代码非常少,值得自己本地跑起来试试:
https://queryable.app/

2. 向量数据库

推荐自己实践使用以下SQLite-QSS

3. Llama2的运行时

通过Llama2的运行时,可以尝试去阅读Transformer的算法结构,代码只有900多行,但其中蕴含的原理非常丰富,相信你会有收获

源码地址:https://github.com/karpathy/llama2.c文章来源地址https://www.toymoban.com/news/detail-826542.html

到了这里,关于AI大模型入门 - LangChain的剖析与实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 在我前面的MetaGPT系列文章中,已经对智能体有了一个认知,重温一下: 智能体 = LLM+观察+思考+行动+记忆 将大语言模型作为一个推理引擎。给定一个任务,智能体自动生成完成任务所

    2024年03月09日
    浏览(59)
  • 【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用

    大家好,我是同学小张,日常分享AI知识和实战案例 欢迎 点赞 + 关注 👏, 持续学习 , 持续干货输出 。 +v: jasper_8017 一起交流💬,一起进步💪。 微信公众号也可搜【同学小张】 🙏 本站文章一览: 当大模型的返回文字非常多时,返回完整的结果会耗费比较长的时间。如果

    2024年04月09日
    浏览(52)
  • 【AI大模型应用开发】【LangChain系列】7. LangServe:轻松将你的LangChain程序部署成服务

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 LangServe 用于将 Chain 或者 Runnable 部署成一个 REST API 服务。 同时安装langserve的服务端和客户端。 只安装客户端 只安装服务端 1.1 服务端代码 从代码来看创建LangServe的重点: (1)创建

    2024年03月28日
    浏览(63)
  • LangChain大模型应用落地实践(二):使用LLMs模块接入自定义大模型,以ChatGLM为例

    angChain版本:0.0.147 ;(没想到第二更LangChain已经更新到147了) 图1 大模型时间线(2023-arxiv-A Survey of Large Language Models) 模型名称 企业/高校 发布时间 ERNIE Bot(文心一言) 百度 2023年3月 ChatGLM 清华大学 2023年3月 通义千问 阿里 2023年4月 MOSS 复旦大学 2023年4月 从图1中可以看出,

    2024年02月09日
    浏览(43)
  • 自学大语言模型的应用程序框架Langchain(初入门)

    现阶段chatGPT非常火热。带动了第三方开源库:LangChain火热。它是一个在大语言模型基础上实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能的应用程序。 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 langchain的目标:最强大和差

    2024年02月07日
    浏览(49)
  • 大模型技术实践(三)|用LangChain和Llama 2打造心灵疗愈机器人

    上期文章我们实现了Llama 2-chat-7B模型的云端部署和推理,本期文章我们将用 “LangChain+Llama 2” 的架构打造一个定制化的 心灵疗愈机器人 。有相关知识背景的读者可以直接阅读 「实战」 部分。 01nbsp; 背景 1.1 微调 vs. 知识库 由于大模型在垂直行业领域的问答效果仍有待提升,

    2024年02月06日
    浏览(46)
  • 自然语言处理从入门到应用——LangChain:快速入门-[快速开发聊天模型]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(41)
  • 【AI大模型应用开发】【LangChain系列】实战案例3:深入LangChain源码,你不知道的WebResearchRetriever与RAG联合之力

    大家好,我是同学小张,日常分享AI知识和实战案例 欢迎 点赞 + 关注 👏, 持续学习 , 持续干货输出 。 +v: jasper_8017 一起交流💬,一起进步💪。 微信公众号也可搜【同学小张】 🙏 本站文章一览: 上篇文章我们学习了如何利用 LangChain 通过 URL 获取网页内容。本文我们继

    2024年04月17日
    浏览(47)
  • 大模型从入门到应用——LangChain:索引(Indexes)-[基础知识]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月07日
    浏览(42)
  • chatglm2-6b模型在9n-triton中部署并集成至langchain实践

    近期, ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布,引入了如下新特性: ①. 基座模型升级,性能更强大,在中文C-Eval榜单中,以51.7分位列第6; ②. 支持8K-32k的上下文; ③. 推理性能提升了42%; ④. 对学术研究完全开放,允许申请商用授权。 目前大多数部署方案采用的是

    2024年02月12日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包