构建LLM应用的核心框架
封装各种LLM接口
提示词模板管理
链式调用组合
智能代理执行任务
对话状态持久化
检索增强生成
| 模型 | 用途 |
|---|---|
| ChatOpenAI | OpenAI GPT-3.5/4 |
| ChatAnthropic | Claude系列 |
| HuggingFaceHub | 开源模型 |
| 类型 | 说明 |
|---|---|
| ChatPromptTemplate | 聊天格式模板 |
| PromptTemplate | 简单文本模板 |
| PipelinePrompt | 模板组合 |
| 类型 | 用途 |
|---|---|
| LLMChain | 简单链 |
| SequentialChain | 顺序链 |
| TransformChain | 转换链 |
| 类型 | 用途 |
|---|---|
| ConversationBuffer | 完整对话历史 |
| ConversationWindow | 窗口记忆 |
| VectorStoreMemory | 向量存储记忆 |
| 组件 | 作用 | 示例 |
|---|---|---|
| DocumentLoader | 加载文档 | PDFLoader, TextLoader |
| TextSplitter | 分割文本 | RecursiveCharacterTextSplitter |
| Embeddings | 向量化 | OpenAIEmbeddings |
| VectorStore | 向量存储 | FAISS, Chroma, Pinecone |
| Retriever | 检索器 | VectorStoreRetriever |
| 场景 | 推荐方案 |
|---|---|
| 模型选择 | GPT-4(复杂), GPT-3.5(简单), Claude(长文本) |
| 缓存策略 | 语义缓存、Redis缓存 |
| 速率限制 | Token限流、请求限流 |
| 错误处理 | 重试机制、降级方案 |
| 监控告警 | LangSmith、日志系统 |
| 模式 | 复杂度 | 适用场景 |
|---|---|---|
| 简单LLM调用 | ⭐ | 单次问答、简单任务 |
| 链式调用 | ⭐⭐ | 多步骤处理、复杂流程 |
| 对话系统 | ⭐⭐ | 聊天机器人、客服系统 |
| RAG系统 | ⭐⭐⭐ | 知识库、文档问答 |
| 代理系统 | ⭐⭐⭐⭐ | 工具调用、多任务协调 |
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
# 1. 初始化模型
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# 2. 定义提示词模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个专业的AI助手,请用简洁清晰的语言回答问题。"),
MessagesPlaceholder(variable_name="history", n_messages=10),
("human", "{input}")
])
# 3. 创建对话记忆
memory = ConversationBufferMemory(
return_messages=True,
memory_key="history"
)
# 4. 构建对话链
conversation = ConversationChain(
llm=llm,
prompt=prompt,
memory=memory,
verbose=True
)
# 5. 开始对话
while True:
user_input = input("\n你: ")
if user_input.lower() in ["exit", "quit", "退出"]:
break
response = conversation.invoke({"input": user_input})
print(f"AI: {response['response']}")
# 输出对话历史
print("\n=== 对话历史 ===")
for msg in memory.buffer:
print(f"{msg.type}: {msg.content}")