跳到主要内容

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.promptsPrompt 模板
langchain.chainsChain 定义
langchain.agentsAgent 创建
langchain.memory记忆管理
langchain.retrievers检索器
langchain.tools工具定义

下一步

恭喜完成 LangChain 基础学习!建议继续深入: