AI大模型从入门到精通系列教程(五):LangChain 框架入门指南(上)

102 阅读9分钟

image.png

一、什么是 LangChain​

想象一下,你想要建造一座房子。大型语言模型(LLMs)就像是一堆优质的建筑材料,比如砖块、木材等,但光有这些材料,你很难直接盖出一座实用又漂亮的房子。这时,LangChain 就像是一套非常实用的建筑工具和指南,它能帮你把这些材料(语言模型的能力)组合起来,建成各种各样功能丰富的房子(语言模型应用程序)。​

简单来说,LangChain 是一个用于开发由大型语言模型驱动的应用程序的框架。它能让开发者更轻松地利用语言模型的强大功能,去实现各种复杂的任务,比如创建智能聊天机器人、构建文档问答系统、开发文本摘要工具等等。举个例子,如果你想做一个能回答公司内部各种文档问题的智能助手,使用 LangChain,你就可以方便地将文档数据与语言模型连接起来,让模型根据文档内容回答问题,而不用自己从头去处理复杂的数据读取、模型交互等底层操作。

二、LangChain 体系​

LangChain 体系包含多个重要部分,就像一座房子有不同的结构组件一样,这些部分共同协作,让基于语言模型的应用程序得以高效构建。​

image.png

  1. 模型(Models):这是核心部分,就如同房子的主体结构。大型语言模型(LLMs)接受字符串输入,返回字符串输出。比如 GPT 系列模型。还有聊天模型,它以一系列消息作为输入并返回聊天消息作为输出,支持为对话消息分配不同角色,像区分 AI、用户和系统消息等指令消息。例如在聊天机器人中,聊天模型负责处理用户输入的消息并生成回复。LangChain 不托管任何聊天模型,而是依赖于第三方集成,像 OpenAI、Anthropic 等。​

  2. 提示词模板(Prompt Templates):可以把它想象成房子的设计图纸。在任何基于语言模型的应用中,提示词是引导模型输出的关键文本输入。LangChain 提供灵活的提示词模板,让你能创建可重复使用且能根据用户输入或上下文动态变化的提示词。例如,你要做一个故事创作应用,使用提示词模板,你可以根据用户提供的主题、角色等信息,快速生成合适的提示词,引导模型创作出精彩的故事。​

  3. 链(Chains):链就像是房子搭建过程中的施工步骤串联。它代表一系列的动作序列,前一个步骤的输出作为下一个步骤的输入。LangChain 支持将提示词、API 调用和其他函数进行链式操作,便于实现复杂的工作流程,比如多轮对话或者多任务处理的流程。例如,在一个智能客服应用中,链可以将用户问题处理、知识检索、模型回答生成等步骤按顺序连接起来,高效地解决用户问题。​

  4. 代理(Agents):代理如同房子建造中的智能工人。它可以根据预定义的工具和指令自主行动,决定采取哪些行动以及行动的顺序,非常适合需要决策以及与外部系统交互的应用场景。比如在一个能自动完成办公任务的应用中,代理可以根据用户的自然语言指令,决定调用哪些办公软件的 API(如发送邮件、创建文档等工具),并按正确顺序执行,实现任务自动化。​

  5. 记忆(Memory):记忆好比房子里记录各种信息的地方。它允许应用程序在交互过程中保留信息,提高上下文感知能力,从而实现更自然、更像人类对话的交流。例如在聊天机器人中,记忆可以记住用户之前提到的信息,当用户后续再次询问相关内容时,机器人能结合之前的信息给出更连贯、更准确的回答。像短期记忆可以记录当前对话中的关键信息,用于即时回复;长期记忆可以存储用户的历史偏好等信息,为长期交互提供个性化服务。​

  6. 数据连接器(Data Connectors):数据连接器如同房子与外界连接的管道。LangChain 能与各种数据源顺畅集成,让语言模型能够与数据库、API、文件系统等进行交互,实现实时数据访问,使模型能基于最新信息给出有依据的回复。比如在一个金融数据分析应用中,数据连接器可以连接到金融数据库,获取最新的股票数据等信息,语言模型根据这些数据回答用户关于金融市场的问题。​

  7. 索引(Indexes):索引就像是房子里的目录系统。LangChain 的索引能让语言模型高效访问外部数据源的数据,优化搜索操作,加快响应时间,提升用户体验。向量存储是最常见的索引类型,它存储文档及其相关的嵌入向量,并能通过嵌入向量快速查找相关文档。例如在一个文档检索系统中,通过索引可以快速找到与用户查询相关的文档,为后续的问题回答或内容处理提供数据支持。​

  8. 回调(Callbacks):回调类似于房子建造过程中的进度监控工具。它允许 LangChain 用户注册一些函数,这些函数会在特定事件(如语言模型操作完成)发生后被执行。它可以记录和流式传输任何链的中间步骤。比如在一个复杂的文本处理链中,回调可以在每一步处理完成后记录相关信息,方便开发者了解整个处理过程,进行调试和优化。

三、LangChain 应用程序生命周期​

  1. 开发阶段:在这个阶段,就像是在搭建房子的基础和框架。开发者使用 LangChain 的开源构建模块、组件以及第三方集成来构建应用程序。可以利用各种现成的提示词模板快速定义与模型交互的输入方式;通过链将不同的操作步骤连接起来,形成完整的业务逻辑;使用代理来处理复杂的决策和外部系统交互;利用记忆组件来实现上下文感知;通过数据连接器连接各种数据源,让模型能获取到所需的数据。例如,开发一个简单的文档问答应用,开发者可以使用 LangChain 提供的文档加载器(数据连接器的一种)读取文档,利用提示词模板构建合适的问题提示,通过链将文档检索和模型回答步骤连接起来,使用记忆组件记录用户的问题历史,以便在后续交互中提供更好的服务。​

  2. 生产化阶段:此时如同对建好的房子进行装修和质量检查。使用 LangSmith 这个工具来检查、监控和评估应用程序中的链。LangSmith 可以帮助开发者可视化链中每一步的输入和输出,了解语言模型在做什么,从而对应用程序进行持续优化,并能更自信地将其部署到生产环境中。比如通过 LangSmith 可以查看模型在回答用户问题时使用了哪些数据、生成的中间结果是什么,通过分析这些信息,开发者可以优化提示词、调整链的结构,提高应用程序的性能和准确性。​

  3. 部署阶段:这一步就像是将装修好的房子正式交付使用。可以使用 LangServe 将 LangChain 应用程序转化为生产就绪的 API,使得应用程序能够方便地与其他系统集成,供更多用户使用。例如将开发好的文档问答应用部署为 API 后,公司内部的其他业务系统可以方便地调用这个 API,实现文档信息的快速查询和利用。

四、增强提示词模版和输出解析器​

  1. 增强提示词模版:提示词模版就像是给语言模型的详细任务说明。普通的提示词可能只是简单地描述问题,而增强提示词模版可以更精细地控制模型的输出。它可以根据不同的上下文、用户需求或者应用场景,动态地调整提示内容。例如,在一个电商产品推荐应用中,增强提示词模版可以根据用户的浏览历史、购买记录(上下文信息),以及当前的促销活动(应用场景),生成更有针对性的提示词给语言模型。比如 “根据用户之前购买过的电子产品以及当前正在进行的电子产品促销活动,为用户推荐相关产品,并详细说明产品的优势和促销价格”。这样,模型就能生成更符合用户需求的产品推荐内容。​

  2. 输出解析器:语言模型生成的输出有时候格式并不一定符合我们应用程序的直接使用要求,这时候就需要输出解析器。输出解析器就像是一个翻译和整理员,它将模型输出的内容解析成我们需要的格式和结构。例如,模型可能输出一段关于某个事件的描述文本,但我们希望得到的是一个结构化的数据,包含事件的时间、地点、人物等信息。输出解析器可以按照我们预先定义的规则,从模型输出的文本中提取出这些关键信息,并整理成结构化的数据格式,如 JSON 格式。比如模型输出 “昨天在公园小明和小红一起玩”,输出解析器可以将其解析为 {“时间”: “昨天”, “地点”: “公园”, “人物”: [“小明”, “小红”]},方便应用程序后续进行处理和使用。