✍️ 作者:山药蓝莓酸奶昔
🕓 更新时间: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 应用开发流程详解
假设你想构建一个“论文评分机器人”,流程可能是这样的:
用户上传一篇作业
系统使用 LLM 给出评分 + 修改建议
评分标准是你预设的 Rubric(提示模板)
多轮追问细节,记录用户上下文信息
这看似简单,但你需要解决:
模型调用 + 提示管理
输出格式化解析
记忆用户对话历史
多模块串联控制流程
在 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,即可支持连续对话。
后面的内容我们下次再讲!