LangChain 知识速查表
本页面汇总了 LangChain 编程中最常用的语法和知识点,方便快速查阅。
安装
# 核心包
pip install langchain
# 模型支持
pip install langchain-openai
pip install langchain-anthropic
pip install langchain-google-genai
# 社区包
pip install langchain-community
pip install langchain-text-splitters
# 向量数据库
pip install langchain-chroma
pip install langchain-pinecone
pip install langchain-qdrant
初始化模型
from langchain.chat_models import init_chat_model
# OpenAI
model = init_chat_model(
model="gpt-4o-mini",
model_provider="openai"
)
# Anthropic
model = init_chat_model(
model="claude-3-5-sonnet-20240620",
model_provider="anthropic"
)
# Google
model = init_chat_model(
model="gemini-1.5-pro",
model_provider="google_genai"
)
调用模型
from langchain.schema import HumanMessage
# 简单调用
response = model.invoke("你好")
print(response.content)
# 带消息
messages = [
("system", "你是一个助手"),
("user", "你好")
]
response = model.invoke(messages)
# 流式输出
for chunk in model.stream("讲故事"):
print(chunk.content, end="", flush=True)
Prompt 模板
from langchain.prompts import PromptTemplate
# 简单模板
template = PromptTemplate.from_template("请解释{concept}")
prompt = template.format(concept="Python")
# 聊天模板
from langchain.prompts import ChatPromptTemplate
template = ChatPromptTemplate.from_messages([
("system", "你是一个{role}专家"),
("user", "{question}")
])
LCEL 组合
# 管道组合
chain = (
{"question": lambda x: x["question"]}
| prompt_template
| model
)
# 调用
result = chain.invoke({"question": "什么是Python?"})
Chains
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
chain = LLMChain(
llm=model,
prompt=PromptTemplate.from_template("{question}")
)
result = chain.invoke({"question": "?"})
Agents
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def get_weather(city: str) -> str:
"""获取城市天气"""
return f"{city}天气晴朗"
agent = create_agent(
model=model,
tools=[get_weather],
system_prompt="你是一个助手"
)
result = agent.invoke({
"messages": [{"role": "user", "content": "北京天气?"}]
})
Memory
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="history",
return_messages=True
)
# 添加对话
memory.chat_memory.add_user_message("你好")
memory.chat_memory.add_ai_message("你好,有什么可以帮您?")
# 在 Chain 中使用
chain = LLMChain(llm=model, prompt=prompt, memory=memory)
向量存储
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
# 创建向量存储
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings()
)
# 检索
docs = vectorstore.similarity_search("查询", k=3)
RAG
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
# 创建 RAG 链
qa_chain = create_stuff_documents_chain(model, prompt)
retrieval_chain = create_retrieval_chain(
retriever=vectorstore.as_retriever(),
combine_docs_chain=qa_chain
)
# 执行
result = retrieval_chain.invoke({"input": "我的问题"})
工具定义
from langchain.tools import tool
@tool
def my_tool(param: str) -> str:
"""工具描述"""
return "结果"
# 调用
result = my_tool.invoke({"param": "value"})
消息类型
from langchain.schema import HumanMessage, AIMessage, SystemMessage
# 人类消息
msg = HumanMessage(content="你好")
# AI 消息
msg = AIMessage(content="你好")
# 系统消息
msg = SystemMessage(content="你是助手")
环境变量
# API Keys
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=AIza...
# LangSmith 追踪
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=ls-...
常用配置
# 模型参数
model = init_chat_model(
model="gpt-4o-mini",
model_provider="openai",
temperature=0.7, # 控制随机性
max_tokens=1000, # 最大输出
streaming=True, # 流式输出
)
# 检索器配置
retriever = vectorstore.as_retriever(
search_type="similarity",
search_kwargs={"k": 3}
)
错误处理
try:
result = chain.invoke({"input": "test"})
except Exception as e:
print(f"错误: {e}")
常用模块速查
| 模块 | 用途 |
|---|---|
langchain.chat_models | 模型调用 |
langchain.prompts | Prompt 模板 |
langchain.chains | Chain 定义 |
langchain.agents | Agent 创建 |
langchain.memory | 记忆管理 |
langchain.retrievers | 检索器 |
langchain.tools | 工具定义 |
下一步
恭喜完成 LangChain 基础学习!建议继续深入:
- 阅读 LangChain 官方文档
- 学习 LangGraph - 更复杂的 Agent 编排
- 探索各种 集成包