Lazy loaded image
技术分享
使用LangChain构建多步工作流程的简单示例
字数 2428阅读时长 7 分钟
2025-9-24
2025-9-24
type
status
date
slug
summary
tags
category
icon
password

一、什么是Langchain?

LangChain 是一个开源的开发框架,旨在帮助开发者更轻松、更高效地构建基于大型语言模型 (LLM) 的应用程序。你可以把它理解为一套工具箱和一套标准化的方法,用来解决在使用 LLM 构建复杂应用时遇到的各种挑战。其核心思想是:LLM 虽然强大,但通常需要与其他组件(如数据源、其他工具、内存等)结合才能发挥最大潜力。LangChain 就是为这种“结合”和“链式调用”而设计的。
那么,什么是LangChain Agent呢?从一个宏观和概念性的角度来看,理解 LangChain 中的“链” (Chains) 和“智能代理” (Agents) 的根本区别至关重要。
首先,我们可以将 链 (Chains) 视为一种固定的、预设的步骤序列。这意味着,当你构建一个链时,你已经明确地定义了任务执行的每一个环节,以及这些环节将如何按照一个既定的、不可更改的顺序依次执行。例如,一个链可能被设计为:第一步从数据库中检索信息,第二步用大型语言模型对信息进行总结,第三步再用总结结果生成一份报告。这个流程是硬编码的,每一步都严格按照计划进行,不包含任何运行时(runtime)的动态决策或路径调整。它提供了一种可预测且结构化的方式来编排 LLM 应用程序的流程,非常适合那些任务流程清晰、逻辑固定的场景。
notion image
与此形成鲜明对比的是,智能代理 (Agents) 更像是一个动态的决策者和问题解决者。它的核心能力在于其内在的大型语言模型(LLM)充当了“大脑”,赋予了它根据当前情境、目标和可用资源进行自主思考、规划并采取行动的能力。智能代理不会遵循一个固定的脚本,而是在任务执行过程中,不断地观察、推理、决策和迭代。
具体来说,智能代理会根据其所处的上下文信息——比如用户提出的问题、之前执行动作的结果、当前可用的工具集等——来动态地决定应该使用哪种工具,以及这些工具的使用顺序。这意味着它在运行时具备极高的灵活性,能够应对各种复杂且可能存在不确定性的任务。它不是简单地执行预设指令,而是主动地分析问题,选择最合适的工具(如搜索引擎、计算器、API 调用、代码解释器等),并决定如何组合这些工具来一步步地逼近最终目标。

二、Langchain的关键组件

  1. 模型接口 (LLMs / ChatModels): 提供统一的接口,方便连接和管理各种大型语言模型(LLM),无论是传统的文本补全模型还是更现代的聊天模型。它支持 OpenAI、Hugging Face 等多种服务商,是与 LLM 交互的基础。
  1. 提示词模板 (Prompts): 用于创建、管理和优化发送给 LLM 的提示词。它允许开发者通过模板动态插入变量,使提示词更灵活、可复用,并能更好地引导 LLM 理解任务和生成期望的输出。
  1. 链 (Chains): LangChain 的核心概念之一,用于将多个 LLM 调用或其他组件(如数据处理、逻辑判断)按照预设的固定顺序串联起来。它将一系列操作自动化,形成一个端到端的任务流程,例如先总结再提问。
  1. 数据增强生成 (Retrieval Augmented Generation, RAG) / 数据连接: 提供工具集,用于连接、加载、分割、嵌入和存储外部数据(如文档、数据库、网页)。通过检索(Retrieval)功能,将相关信息作为上下文提供给 LLM,从而增强其回答的准确性和时效性,克服 LLM 知识时效性或私有数据缺失的问题。关键组件包括文档加载器、文本分割器、向量存储和检索器。
  1. 记忆 (Memory): 允许 LLM“记住”之前的对话内容或重要信息。这使得 LLM 能够在多轮对话中保持上下文连贯性,支持更自然和复杂的交互,是构建聊天机器人等应用的必备功能。
  1. 智能代理 (Agents) 和工具 (Tools): 这是 LangChain 最强大的功能之一。Agents 让 LLM 不仅仅生成文本,还能作为“大脑”进行动态决策,根据目标和当前情境,选择并使用可用的工具 (Tools)(如搜索引擎、计算器、API、自定义函数等)规划并执行一系列行动,从而与外部世界交互并解决复杂问题。
  1. 回调 (Callbacks): 允许开发者在 LangChain 应用执行的各个阶段(如 LLM 调用前/后、工具使用前/后)插入自定义逻辑。这对于日志记录、监控、调试、成本跟踪和用户界面反馈等功能提供了高度的可观察性和可扩展性。
notion image

三、Langchain Agent简单示例

这个Agent的目的是通过给定的公司名称,然后在后台获取最新消息,并总结情绪。
首先,这个智能系统会调用 SerpAPI。通过这个调用,系统能够有效地检索到与特定主题相关的最新新闻报道和信息。这一步的目的是收集原始数据,为后续的分析奠定基础,确保我们能获得外部世界的实时动态信息。
在成功获取到一系列新闻搜索结果之后,系统会进入下一步:解析文章片段。由于 SerpAPI 返回的数据通常是结构化的,但可能包含链接和摘要,因此需要进一步处理以提取核心内容。系统会智能地识别并抽取新闻文章中的关键文本片段,这可能涉及到访问链接、抓取正文内容,并过滤掉不相关的元素。
紧接着,被解析和准备好的文章片段会被送入大型语言模型 (LLM)。在这里,LLM 的强大推理能力和文本理解力被充分利用,以总结文章的情绪。这意味着 LLM 不仅仅是简单地提取关键词,而是要进行深层次的语义分析,判断新闻报道整体的倾向性是积极的、消极的还是中立的。LLM 会运用其在海量文本上训练出的对情感和语气的理解,生成一个关于文章情绪的简洁而准确的摘要。
最终,经过 LLM 的情绪总结后,系统会将这些分析结果返回为结构化的分析。这意味着原始的、散乱的新闻信息和 LLM 生成的情绪总结,将被整合到一个清晰、易于理解和机器处理的格式中。这种结构化的输出使得后续的自动化处理、存储或向用户展示都变得更为高效和便捷。

四、多步工作流程的Tips

  1. 限制自由度:精心限定代理可用的工具范围,避免过度授权,以确保可控性和预测性。
  1. 分解任务:将复杂任务拆分为 2-5 个清晰、离散的步骤,而非无限制的序列,从而提高效率和可管理性。
  1. 规范输出:强制代理输出结构化数据,建议使用 Pydantic 或 LangChain 提供的输出解析器来定义明确的模式。
  1. 增强鲁棒性:预设工具可能失败的场景(如 API 中断或查询错误),集成重试机制和回退提示,以提升系统的容错能力。

五、结语

LangChain通过构建微型代理,解决了直接使用大型语言模型(LLM)的几大挑战:首先它通过简化复杂的多步骤AI工作流程,减少了开发人员编写大量代码的需要,从而显著提升开发效率;同时,它极大促进了LLM与API、数据库等现实世界数据的集成,使AI应用能够真正转化为实用的商业工具;此外,其模块化设计还确保了应用具备出色的可扩展性,允许从简单的功能逐步演变为复杂的多代理系统。
上一篇
如何在你的业务中选择RAG和Fine tuning?
下一篇
国内 Docker 镜像加速地址最新可用清单(持续更新中20250501……)

评论
Loading...