LangChain简介

简介

Agent

ReActChain

推理与行动交替执行,LLM在完成任务过程中边思考,变调用工具或执行操作。
适合的任务类型:多轮工具使用;中间步骤需要反思的任务;查询型或逻辑型的任务

内部实现:
是只需要通过构造合适的提示模板,就可以让LLM输出ReAct风格的输出吗?

Reflection

将人的“反思性学习”引入LLM,LLM在失败后复盘自己的决策路径,以进行自我改进。
典型的应用场景:编程、工具调用等。
LLM获得执行失败的信息途径:

  1. 环境反馈
  2. 用户反馈
  3. LLM自我反馈(self-critic)

Plan-and-Execute

将复杂任务拆分成两个阶段,分别由两个大模型作为Planner和Excutor承担任务拆解和执行拆解的子任务步骤的角色。

适合任务:

  1. 有清晰的任务结构与流程;
  2. 支持长期任务与复杂流程;
  3. 更容易集成多个 Agent 协作处理。

[]

Tools

Q&A

🧠 一、LangChain 的多智能体协作机制(Multi-Agent)

LangChain 多智能体系统是建立在 Chain、Tool 和 Agent 架构之上,支持多个 Agent 在一个任务中以协同或竞争方式工作。

🌐 核心机制:

  1. 定义多个 Agent

    • 每个 Agent 拥有独立的:

      • LLM(大模型或 API)
      • 工具集(Tools)
      • 专业角色(系统 prompt)
      • 状态与记忆(Memory)
  2. 中控调度(Coordinator Agent)

    • 通常采用一个「决策 Agent」管理任务分配,如:

      • Planner + Executor(ReAct 思维)
      • Router + SubAgents(基于任务类型路由)
  3. 通信机制

    • Agent 间通过消息传递或共享上下文合作,例如:

      1
      2
      3
      agent1_output = agent1.run(input)
      agent2_input = agent1_output
      agent2.run(agent2_input)
  4. 工具共享与上下文统一

    • 支持多个 Agent 共享一套工具(Toolset)或共享 Memory,提高协作效率。

✅ 示例:多人问诊助手系统

  • 👩‍⚕ 医学 Agent:调用症状分析工具
  • 🧑‍⚕ 药品 Agent:调用药品匹配与推荐工具
  • 🤖 中控 Agent:协调提问、信息整合与用户输出

🧠 二、LangChain 的记忆功能(Memory)

LangChain 的 Memory 是对语言模型 stateless 特性的补充,模拟「上下文记忆」,用于支持多轮对话、任务持久化、个性化响应等。

🌟 记忆的类型:

  1. ConversationBufferMemory

    • 存储全部历史对话内容(适合短对话)
  2. ConversationSummaryMemory

    • 使用 LLM 对历史对话总结摘要存储(适合长对话)
  3. VectorStoreRetrieverMemory

    • 将对话信息嵌入为向量,支持语义相似召回(记忆容量大)
  4. CombinedMemory

    • 结合多个 Memory 类型进行灵活存储与回忆

✨ 如何工作?

1
2
3
4
5
6
7
8
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()

agent_chain = LLMChain(
llm=ChatOpenAI(),
memory=memory,
prompt=prompt_template,
)
  • 每轮对话后自动 save_context
  • 下轮调用时 load_memory_variables 注入 prompt

⚔️ 三、LangChain vs AutoGen 核心差异

维度 LangChain AutoGen
理念 构建任务链式流程(Chain of Thought + 工具链) 多 Agent 协同完成复杂任务(像多人项目协作)
多智能体 有路由/子 Agent/中控支持,但偏「流程控制」 原生支持多角色对话,多 Agent 互发消息,结构灵活
通信机制 Agent 调用彼此输出,有限支持异步 Agent 间可自由 chat(同步/异步)
编程模型 基于 Chain → Agent → Tool 模式 基于 UserProxyAgent, AssistantAgent,强调轮流沟通
使用门槛 更偏工程流程,适合有结构化工具 更偏研究探索,适合探索 Agent 社会行为
典型场景 问答系统、RAG、对话机器人 多智能体论文生成、项目协作、AI团队实验

👉 总结:LangChain 更像搭流水线,AutoGen 更像组织项目组。


💾 四、基于 LangChain 开发一个本地知识库系统

🎯 目标:

构建一个支持文档上传、嵌入、检索、问答的本地知识库系统。


📌 技术架构:

  1. 文档预处理(PDF, Word, Markdown) → 文本
  2. 文本分块 → 向量嵌入
  3. 存储到本地向量数据库(如 Chroma)
  4. 用户提问 → 检索相关 chunk → 构建 Prompt → 回答

🧱 模块构建(简化版代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 1. 文档加载
docs = PyPDFLoader("my_paper.pdf").load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
chunks = splitter.split_documents(docs)

# 2. 向量化存储
embedding = HuggingFaceEmbeddings()
vector_db = Chroma.from_documents(chunks, embedding, persist_directory="./local_knowledge")

# 3. 检索并问答
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
retriever=vector_db.as_retriever()
)

print(qa_chain.run("这篇论文的核心贡献是什么?"))

🧠 可选增强:

  • 加入 ConversationBufferMemory,实现上下文连续问答
  • 加入 LangServe + FastAPI 提供 Web 服务
  • 使用 LangGraph 实现更复杂的知识流转(如结构化摘要 → QA)

✅ 总结

问题 回答摘要
多智能体协作机制 通过链式任务规划 + Agent 调度支持多角色协作
记忆实现 Memory 模块支持 Buffer、摘要、向量等多种记忆方式
与 AutoGen 区别 LangChain 偏流程驱动、插件化;AutoGen 偏角色协作、交互式
本地知识库系统构建 利用 LangChain 的向量检索 + Chain/QA 模型,快速搭建

参考


LangChain简介
https://summerchengh.github.io/tech-blog/2025/05/26/大模型-Agent-框架-LangChain/
Author
Your Name
Posted on
May 26, 2025
Licensed under