
关于
精通 LangChain 框架,用于构建具有代理、链、记忆和工具集成的复杂 LLM 应用。
name: langchain-architecture description: "掌握 LangChain 框架,构建具有代理、链、记忆和工具集成的复杂 LLM 应用。" risk: unknown source: community date_added: "2026-02-27"
LangChain 架构
掌握 LangChain 框架,构建具有代理、链、记忆和工具集成的复杂 LLM 应用。
不要在以下情况使用此技能
- 任务与 LangChain 架构无关
- 你需要此范围之外的不同领域或工具
指令
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作的步骤和验证方法。
- 如需详细示例,请打开
resources/implementation-playbook.md。
在以下情况使用此技能
- 构建具有工具访问权限的自主 AI 代理
- 实现复杂的多步骤 LLM 工作流
- 管理对话记忆和状态
- 将 LLM 与外部数据源和 API 集成
- 创建模块化、可复用的 LLM 应用组件
- 实现文档处理管道
- 构建生产级 LLM 应用
核心概念
1. 代理
使用 LLM 决定采取哪些操作的自主系统。
代理类型:
- ReAct:推理 + 行动交替进行
- OpenAI Functions:利用函数调用 API
- Structured Chat:处理多输入工具
- Conversational:为聊天界面优化
- Self-Ask with Search:分解复杂查询
2. 链
对 LLM 或其他工具的调用序列。
链类型:
- LLMChain:基本提示词 + LLM 组合
- SequentialChain:多个链按顺序执行
- RouterChain:将输入路由到专门的链
- TransformChain:步骤间的数据转换
- MapReduceChain:并行处理与聚合
3. 记忆
跨交互维护上下文的系统。
记忆类型:
- ConversationBufferMemory:存储所有消息
- ConversationSummaryMemory:总结旧消息
- ConversationBufferWindowMemory:保留最近 N 条消息
- EntityMemory:跟踪实体信息
- VectorStoreMemory:语义相似度检索
4. 文档处理
加载、转换和存储文档以供检索。
组件:
- Document Loaders:从各种来源加载
- Text Splitters:智能分块文档
- Vector Stores:存储和检索嵌入向量
- Retrievers:获取相关文档
- Indexes:组织文档以高效访问
5. 回调
用于日志记录、监控和调试的钩子。
用例:
- 请求/响应日志
- Token 使用量跟踪
- 延迟监控
- 错误处理
- 自定义指标收集
快速开始
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
# Initialize LLM
llm = OpenAI(temperature=0)
# Load tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# Add memory
memory = ConversationBufferMemory(memory_key="chat_history")
# Create agent
agent = initialize_agent(
tools,
llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True
)
# Run agent
result = agent.run("What's the weather in SF? Then calculate 25 * 4")
架构模式
模式 1:使用 LangChain 的 RAG
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
# Load and process documents
loader = TextLoader('documents.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
texts = text_splitter.split_documents(documents)
# Create vector store
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(texts, embeddings)
# Create retrieval chain
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(),
return_source_documents=True
)
# Query
result = qa_chain({"query": "What is the main topic?"})
模式 2:带工具的自定义代理
from langchain.agents import Tool, AgentExecutor
from langchain.agents.react.base import ReActDocstoreAgent
from langchain.tools import tool
@tool
def search_database(query: str) -> str:
"""Search internal database for information."""
# Your database search logic
return f"Results for: {query}"
@tool
def send_email(recipient: str, content: str) -> str:
"""Send an email to specified recipient."""
# Email sending logic
return f"Email sent to {recipient}"
tools = [search_database, send_email]
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
模式 3:M
兼容工具
Claude CodeCursor
标签
AI与机器学习