logo
LangChain 框架指南
AI Engineer

LangChain 框架指南

LangChain 是构建 LLM 应用的流行框架,提供了链式调用、Agent、RAG 等丰富的功能模块。

LangChain 框架指南LangChain 简介

LangChain 简介

LangChain 是构建 LLM 应用的流行框架,提供了链式调用、Agent、RAG 等丰富的功能模块,让你能够快速构建复杂的 AI 应用。

#为什么使用 LangChain?

#1. 统一的抽象层

LangChain 提供统一的接口,轻松切换不同的 LLM:

python
# 切换模型只需改一行 from langchain_openai import ChatOpenAI from langchain_anthropic import ChatAnthropic # OpenAI llm = ChatOpenAI(model="gpt-4") # Claude llm = ChatAnthropic(model="claude-3-sonnet") # 使用方式完全一样 response = llm.invoke("Hello!")

#2. 强大的功能模块

模块功能用途
ModelsLLM 接口统一调用各种模型
Prompts提示模板动态构建 Prompt
Chains链式调用组合多个步骤
Memory对话记忆保持上下文
Agents智能代理自主决策和工具使用
RAG检索增强连接外部知识库

#3. 丰富的生态系统

  • 支持 100+ 种 LLM
  • 支持 50+ 种向量数据库
  • 支持多种文档格式
  • 活跃的社区和文档

#快速开始

#安装

bash
# Python pip install langchain langchain-openai # 或者安装完整版 pip install langchain[all]

#第一个示例

python
from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate # 创建模型 llm = ChatOpenAI(model="gpt-4") # 创建提示模板 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个专业的翻译,将{source_lang}翻译成{target_lang}"), ("user", "{text}") ]) # 创建链 chain = prompt | llm # 调用 result = chain.invoke({ "source_lang": "英语", "target_lang": "中文", "text": "Hello, world!" }) print(result.content) # 输出: 你好,世界!

#核心概念

#1. Prompts (提示模板)

动态构建提示词:

python
from langchain_core.prompts import ChatPromptTemplate # 简单模板 prompt = ChatPromptTemplate.from_template( "给 {product} 写一句广告语" ) # 多消息模板 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个创意文案"), ("user", "为 {product} 写广告语,风格:{style}") ])

#2. Chains (链)

组合多个步骤:

python
from langchain_core.output_parsers import StrOutputParser # 使用 LCEL (LangChain Expression Language) chain = prompt | llm | StrOutputParser() # 顺序执行 result = chain.invoke({"product": "咖啡"})

#3. Memory (记忆)

保持对话上下文:

python
from langchain.memory import ConversationBufferMemory memory = ConversationBufferMemory() memory.save_context( {"input": "我叫小明"}, {"output": "你好小明!"} ) # 后续对话可以记住用户名字

#4. Agents (代理)

让 LLM 自主使用工具:

python
from langchain.agents import create_openai_functions_agent, AgentExecutor from langchain_community.tools import DuckDuckGoSearchRun # 定义工具 tools = [DuckDuckGoSearchRun()] # 创建 Agent agent = create_openai_functions_agent(llm, tools, prompt) agent_executor = AgentExecutor(agent=agent, tools=tools) # Agent 会自动决定是否需要搜索 result = agent_executor.invoke({"input": "今天北京天气怎么样?"})

#5. RAG (检索增强生成)

连接外部知识库:

python
from langchain_community.vectorstores import Chroma from langchain_openai import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter # 1. 加载文档 loader = TextLoader("knowledge.txt") documents = loader.load() # 2. 分割文档 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000) docs = text_splitter.split_documents(documents) # 3. 创建向量存储 vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings()) # 4. 创建检索器 retriever = vectorstore.as_retriever() # 5. 检索相关内容 relevant_docs = retriever.get_relevant_documents("问题")

#LCEL 表达式语言

LangChain Expression Language 是构建链的推荐方式:

python
from langchain_core.runnables import RunnablePassthrough # 使用管道操作符组合 chain = ( {"context": retriever, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() ) # 流式输出 for chunk in chain.stream("问题"): print(chunk, end="")

#最佳实践

#1. 使用流式输出

python
# 提升用户体验 for chunk in chain.stream(input): print(chunk.content, end="", flush=True)

#2. 错误处理

python
from langchain_core.runnables import RunnableWithFallbacks # 添加备用模型 chain_with_fallback = chain.with_fallbacks([backup_chain])

#3. 缓存响应

python
from langchain.cache import SQLiteCache import langchain langchain.cache = SQLiteCache(database_path=".langchain.db")

#常见应用场景

#1. 智能问答系统

python
# 基于文档的问答 qa_chain = RetrievalQA.from_chain_type( llm=llm, retriever=retriever, chain_type="stuff" )

#2. 聊天机器人

python
# 带记忆的对话 conversation = ConversationChain( llm=llm, memory=ConversationBufferMemory() )

#3. 数据分析 Agent

python
# 让 Agent 分析 CSV 数据 agent = create_pandas_dataframe_agent(llm, df)

#下一步


提示:LangChain 发展迅速,建议查看 官方文档 获取最新 API。

1v1免费职业咨询