从零理解 LangChain:让大模型“动”起来的开发框(上)

发布于:2025-07-29 ⋅ 阅读:(25) ⋅ 点赞:(0)

✍️ 作者:山药蓝莓酸奶昔
🕓 更新时间:2025年7月
🔗 标签:LangChain、大语言模型、Prompt Engineering、AI应用开发


🌱 一、为什么会出现 LangChain?(技术背景)

过去几年,随着 ChatGPT、Claude、Gemini 等大型语言模型(LLMs)横空出世,我们仿佛触碰到了“通用人工智能”的边缘。只要输入一个Prompt(提示语),模型就能输出高质量的文本甚至写代码、做推理。

听起来像是梦想照进现实?但等等,如果你想真正开发一个实用系统(比如:问答机器人、写作助手、自动报告生成器),你就会发现:

“开发大模型应用程序并不像对话那么简单。”

我们需要进行:

  • 多轮交互(而不是一次性问答)

  • 提取结构化输出

  • 接入数据库、调用 API

  • 管理记忆、状态跟踪

  • 控制执行流程、工具调用...

于是,**大量胶水代码(glue code)**出现了,繁琐又容易出错。为了解决这一开发“痛点”,LangChain 诞生了。

🔧 LangChain = LLM 应用开发的工程工具包

由 Harrison Chase 于 2022 年发起,LangChain 是一个帮助你用链式方式调用大模型、组合组件、构建复杂应用的开源框架。

如今,LangChain 开源社区已拥有上百位活跃贡献者,持续快速更新,成为 LLM 应用开发的“标配”。


🔧 二、LangChain 是什么?用它能干嘛?

LangChain 提供了一套完整的模块化框架,帮助开发者将 LLM 与其他组件(搜索引擎、数据库、API)进行组合,最终构建“端到端”的智能应用程序。

LangChain 的两个核心版本:

  • 🐍 Python(主力版本)

  • 🌐 JavaScript / TypeScript(面向前端与 Web 应用)

核心组件一览:

模块名 作用 示例
Models 调用大模型(如 OpenAI GPT、Anthropic、Claude) chat, completion, embedding
Prompts 管理提示词模板 模板复用、填充变量
Indexes 数据接入模块,做 RAG(检索增强生成) 文档、向量库、数据库
Chains 串联模型调用的执行链 多步推理、多轮对话
Agents 拥有“推理能力”的智能体 决策调用工具、执行任务
Memory 给模型“装上记忆” 聊天历史、摘要记忆

LangChain 的优势在于:

“将每一个复杂的逻辑模块抽象为可复用组件,像搭积木一样组合,轻松构建复杂系统。”


🏗️ 三、LangChain 应用开发流程详解

假设你想构建一个“论文评分机器人”,流程可能是这样的:

  1. 用户上传一篇作业

  2. 系统使用 LLM 给出评分 + 修改建议

  3. 评分标准是你预设的 Rubric(提示模板)

  4. 多轮追问细节,记录用户上下文信息

这看似简单,但你需要解决:

  • 模型调用 + 提示管理

  • 输出格式化解析

  • 记忆用户对话历史

  • 多模块串联控制流程

在 LangChain 中,你可以这样实现:

1️⃣ 使用提示模板(PromptTemplate)

LangChain 支持变量填充 + 多语言提示模板复用,适合处理复杂场景下的 prompt 构建。

python

from langchain.prompts import PromptTemplate template = """ 你是一名负责评分的助教,请根据以下标准评分学生作业。 评分标准:{rubric} 学生作业:{essay} 请给出打分(满分10分)以及详细的修改建议。 """ prompt = PromptTemplate(input_variables=["rubric", "essay"], template=template)

2️⃣ 构建链(Chain)

把提示和模型串联起来形成逻辑链。

python

from langchain.llms import OpenAI from langchain.chains import LLMChain llm = OpenAI(model="gpt-4") chain = LLMChain(llm=llm, prompt=prompt) response = chain.run({ "rubric": "结构清晰,论证充分,语言流畅", "essay": "这是一篇关于人工智能的论文..." })

3️⃣ 使用输出解析器(OutputParser)

帮助你将模型输出“结构化”处理,方便后续使用

python

from langchain.output_parsers import StructuredOutputParser parser = StructuredOutputParser.from_response_schemas([...]) parsed_result = parser.parse(response)

4️⃣ 增加记忆模块(Memory)

大语言模型是“无状态”的,LangChain 通过 Memory 组件给它加上“短期记忆”。

常见记忆类型:
类型 特点
ConversationBufferMemory 缓存全部对话内容
ConversationBufferWindowMemory 保留最近 N 轮对话
ConversationTokenBufferMemory 限制最大 token 数量
ConversationSummaryMemory 总结对话摘要再储存

python

from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory()

将 memory 接入 chain,即可支持连续对话。

后面的内容我们下次再讲!


网站公告

今日签到

点亮在社区的每一天
去签到