LangChain为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务简化,让创意和创新更加易于实现。本文从LangChain是什么到LangChain的实际案例到智能体的快速发展做了全面的讲解。
我们小时候都玩过乐高积木。通过堆砌各种颜色和形状的积木,我们可以构建出城堡、飞机、甚至整个城市。现在,想象一下如果有一个数字世界的乐高,我们可以用这样的“积木”来构建智能程序,这些程序能够阅读、理解和撰写文本,甚至与我们对话。这就是大型语言模型(LLM)能够做到的,比如GPT-4,它就像是一套庞大的乐高积木套装,等待我们来发掘和搭建。
1. LangChain是什么?
LangChain就是那个让我们能将这些语言模型乐高积木组合成有趣应用的工具箱。它不是一个实物,而是一个开源的软件框架,帮助开发者像搭乐高一样快速构建和优化基于语言模型的应用。
2. 为什么需要Langchain?
想一想,虽然我们有了乐高积木,但如果没有说明书或者构建工具,那么要搭建出一个复杂的模型将是非常困难的。同样地,即使我们有了强大的LLM,比如GPT-4,它们也需要“说明书”和“工具”来更好地服务于现实世界的需求。GPT-4有无与伦比的能力去处理语言,但是它还是需要额外的组件和连接才能完全发挥潜力,比如访问最新的数据、与外部API互动、处理用户的上下文信息等。LangChain就是这样一套“说明书”和“工具”,让GPT-4能够更好地融入到我们的应用中去。
3. LangChain的乐高世界
举个例子,假设你想要用GPT-4建一个旅行顾问机器人。单独的GPT-4就像是一堆杂乱无章的乐高积木。它可能知道很多关于世界各地的信息,但如果不能实时查找最新的航班信息或者酒店价格,它提供的旅行建议可能就不够准确或实用。LangChain就好比是提供了一本指导手册和一套辅助工具,它能让你的旅行顾问机器人链接到航班数据库,记住用户的旅行偏好,甚至根据用户以往的提问历史来提供个性化的建议。
假设你正计划一场旅行,你向智能旅行问答助手提问:“我该带些什么去泰国旅行?”如果只有GPT-4,它可能会基于以往的数据提供一般性的建议,如防晒霜、泳衣等。但配备了LangChain的问答系统,它可以查询实时的天气预报API,了解当前泰国的季节和天气情况,提供更精确的建议,比如“泰国正处于雨季,记得带上雨具和防潮包”。同样地,如果你问:“泰国哪里的垂钓体验最佳?”LangChain可以帮助连接到最新的旅行博客和垂钓爱好者论坛,甚至直接查阅最近的旅行者评论,给你提供最受推荐的目的地。
另一个例子,如果你想要一个可以帮你总结长篇报告的工具,单用GPT-4可能会因文章太长而无法处理。LangChain提供的工具就像是设计用来构建复杂构造的专用乐高积木,它可以帮你把长篇报告切分成小部分让GPT-4处理,再将结果整合起来,最终生成一个完整的摘要。
4. LangChain主要概念
Langchain主要提供了6大类组件帮助我们更好的使用大语言模型,可以视为开源版的GPT插件,提供了丰富的大语言模型工具,可以在开源模型基础上快速增强模型的能力。想象一下,你手中有一盒乐高积木,但这不是普通的积木,而是能够编程、交流甚至思考的智能积木。LangChain就像是这样一盒特殊的积木盒,里面装满了不同功能的积木块,这些积木组件集成了数十种大语言模型、多样的知识库处理方法以及成熟的应用链,几十种可调用的工具箱,为用户提供了一个快速搭建和部署大语言模型智能应用程序的平台。
1)Models(模型)
-
LLMs(大型语言模型)
这些模型是LangChain积木盒中的基础积木。如同用乐高搭建房屋的地基,LLMs为构建复杂的语言理解和生成任务提供了坚实的基础。 -
Chat Models(聊天模型)
这些模型就像是为你的乐高小人制作对话能力。它们能够让应用程序进行流畅的对话,好比是给你的乐高积木人注入了会说话的灵魂。 -
Text Embedding Models(文本嵌入模型)
如果说其他模型让积木能够理解和生成文本,文本嵌入模型则提供了理解文本深度含义的能力。它们就像是一种特殊的积木块,可以帮助其他积木更好地理解每个块应该放在哪里。
2)Prompts(提示)
- Prompt Templates(提示模板)
想象一下,你正在给乐高小人编写剧本,告诉他们在不同场景下应该说什么。Prompt Templates就是这些剧本,它们指导模型如何回答问题或者生成文本。
3)Indexes(索引)
LangChain通过Indexs索引允许文档结构化,让LLM更直接、更有效地与文档互动。
-
Document Loaders(文档加载器)
这些就像是一个个小仓库,帮助你的乐高世界中的智能模型存储和访问信息。Document Loaders能够将文档加载到系统中,方便模型快速查找。 -
Text Splitters(文本分割器)
有时候你需要将一大块乐高板分成几个小块来构建更复杂的结构。Text Splitters可以将长篇文本拆分成易于处理的小块。 -
Vector Stores(向量存储)
这些是一种特殊的存储设施,帮助你的乐高模型记住文本的数学表示(向量)。这就像是让积木块记住它们在整个结构中的位置。 -
Retrievers(检索器)
想象一下你需要从一堆积木中找到一个特定的小部件。Retrievers能够快速在向量存储中检索和提取信息,就像是乐高世界里的搜索引擎。
4)Memory(记忆):对话的连贯性
LangChain通过Memory工具类为Agent和Chain提供了记忆功能,让智能应用能够记住前一次的交互,比如在聊天环境中这一点尤为重要。
- Chat Message History(聊天消息历史)
最常见的一种对话内容中的Memory类,这就好比是在你的乐高角色之间建立了一个记忆网络,使它们能够记住过去的对话,这样每次交流都能在之前的基础上继续,使得智能积木人能够在每次对话中保持连贯性。
5)Chains(链)
- Chain、LLM Chain、Index-related Chains
CHAIN模块整合了大型语言模型、向量数据库、记忆系统及提示,通过Agents的能力拓展至各种工具,形成一个能够互相合作的独立模块网络。它不仅比大模型API更加高效,还增强了模型的各种应用,诸如问答、摘要编写、表格分析和代码理解等。
Chain是连接不同智能积木块的基本方式,而LLM Chain是最简单的LLM+Prompts的一种chain,专门用于链接语言模型。Index-related Chains则将索引功能集成进来,确保信息的高效流动。
6)Agents(代理)
在LangChain的世界里,Agent是一个智能代理,它的任务是听取你的需求(用户输入)和分析当前的情境(应用场景),然后从它的工具箱(一系列可用工具)中选择最合适的工具来执行操作。这些工具箱里装的是LangChain提供的各种积木,比如Models、Prompts、Indexes等。
如下图所示,Agent接受一个任务,使用LLM(大型语言模型)作为它的“大脑”或“思考工具”,通过这个大脑来决定为了达成目标需要执行什么操作。它就像是一个有战略眼光的指挥官,不仅知道战场上的每个小队能做什么,还能指挥它们完成更复杂的任务。
LangChain中Agent组件的架构图如下,本质上也是基于Chain实现,但是它是一种特殊的Chain,这个Chain是对Action循环调用的过程,它使用的PromptTemplate主要是符合Agent Type要求的各种思考决策模版。Agent的核心思想在于使用LLM进行决策,选择一系列要执行的动作,并以此驱动应用程序的核心逻辑。通过Toolkits中的一组特定工具,用户可以设计特定用例的应用。
Agent执行过程:AgentExecutor
AgentExecuter负责迭代运行代理,直至满足设定的停止条件,这使得Agent能够像生物一样循环处理信息和任务。
观察(Observation)
在这个阶段,代理通过其输入接口接收外部的触发,比如用户的提问或系统发出的请求。代理对这些输入进行解析,提取关键信息作为处理的基础。观察结果通常包括用户的原始输入或预处理后的数据。
思考(Thought)
在思考阶段,代理使用预先设定的规则、知识库或者利用机器学习模型来分析观察到的信息。这个阶段的目的是确定如何响应观察到的情况。代理可能会评估不同的行动方案,预测它们的结果,并选择最合适的答案或行为。
在LangChain中,这个过程可能涉及以下几个子步骤:
1.理解用户意图: 使用NLP(自然语言处理)技术来理解用户的问题是什么。
2.推断所需工具: 确定哪个工具(或工具组合)能解决用户的问题。
3.提取参数: 提取所需工具运行的必要参数。这可能涉及文本解析、关键信息提取和验证等过程。
行动(Action)
根据思考阶段的结果,代理将执行特定的行动。行动可能是提供答案、执行任务、调用工具或者与用户进行进一步的交云。
在LangChain代理中,这通常涉及以下几个子步骤:
1.参数填充: 将思考阶段提取的参数填入对应的工具函数中。
2.工具执行: 运行工具,并获取执行结果。这可能是查询数据库、运行算法、调用API等。
3.响应生成: 根据工具的执行结果构建代理的响应。响应可以是纯文本消息、数据、图像或其他格式。
4.输出: 将生成的响应输出给用户或系统。
Agent推理方式:AgentType
代理类型决定了代理如何使用工具、处理输入以及与用户进行交互,就像给机器人挑选不同的大脑一样,我们有很多种"智能代理"可以根据需要来选择。有的代理是为聊天模型(接收消息,输出消息)设计的,可以支持聊天历史;有的代理更适合单一任务,是为大语言模型(接收字符串,输出字符串)而设计的。而且,这些代理的能力也不尽相同:有的能记住你之前的对话(支持聊天历史),有的能同时处理多个问题(支持并行函数调用),也有的只能专心做一件事(适用于单一任务)。此外,有些代理需要我们提供一些额外信息才能更好地工作(所需模型参数),而有些则可以直接上手,不需要额外的东西。所以,根据你的需求和你所使用的模型,你可以选择最合适的代理来帮你完成任务,常见的代理类型如下:
智能代理类型 | 预期模型类型 | 支持聊天历史 | 支持多输入工具 | 支持并行函数调用 | 需要的模型参数 | 何时使用 | API参考 |
OpenAI Tools | 聊天型 | ✅ | ✅ | ✅ | tools | 如果你使用的是较新的OpenAI模型(1106及以后) | Ref[18] |
OpenAI Functions | 聊天型 | ✅ | ✅ | functions | 如果你使用的是OpenAI模型,或者是经过微调以支持函数调用的开源模型,并且暴露与OpenAI相同的函数参数 | Ref[19] | |
XML | 大型语言模型 | ✅ | 如果你使用的是Anthropic模型,或者其他擅长XML的模型 | Ref[20] | |||
Structured Chat | 聊天型 | ✅ | ✅ | 如果你需要支持具有多个输入的工具 | Ref[21] | ||
JSON Chat | 聊天型 | ✅ | 如果你使用的是擅长JSON的模型 | Ref[22] | |||
ReAct | 大型语言模型 | ✅ | 如果你使用的是简单模型,推理观察再行动 | Ref[23] | |||
Self Ask With Search | 大型语言模型 | 如果你使用的是简单模型,并且只有一个搜索工具,追问+中间答案的技巧,who/when/how | Ref[24] |
Agent与Chain的关系
如果说Chain是LangChain中的基础连接方式,那么Agent就是更高阶的版本,它不仅可以绑定模板和LLM,还能够根据具体情况添加或调整使用的工具。简单来说,如果Chain是一条直线,那么Agent就是能够在多个路口根据交通情况灵活选择路线的专业司机。
最后分享
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型面试题
面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费
】
如有侵权,请联系删除。