如何规划电子商务网站,免费咨询制度,个人空间网站免费,地狱少女通信网站怎么做引言
LangChain 总结了 9 种经典的复杂模型交互模式#xff0c;每种都针对特定任务设计#xff0c;兼具独特优势与适用场景#xff0c;内容涵盖#xff1a; ReAct、Function Call、知识库、搜索等#xff0c;使用这些模式可以大大简化这些场景开发难度。这些模式可以使用…引言
LangChain 总结了 9 种经典的复杂模型交互模式每种都针对特定任务设计兼具独特优势与适用场景内容涵盖 ReAct、Function Call、知识库、搜索等使用这些模式可以大大简化这些场景开发难度。这些模式可以使用Agent形式来使用并以AgentType来做区分详见下面实例。在开发时选择合适的 AgentType 是成功的关键本文将逐一剖析这些代理类型结合特性分析、应用场景和代码示例助你在实际项目中快速找到最优解。 1. ZERO_SHOT_REACT_DESCRIPTION
特点
基于 ReAct 模型推理Reasoning与行动Action结合。无需训练样本即可完成任务零样本。
优势
简单直接适合快速推理与操作。
局限性
对复杂任务的处理能力有限。
应用场景
基础计算、逻辑推理或单步查询。
代码示例
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool# 定义工具计算平方
def square_number(n: str):return int(n) ** 2square_tool Tool(nameSquare Calculator, funcsquare_number, description计算一个数的平方)# 初始化代理
agent initialize_agent(tools[square_tool],llmChatOpenAI(modelgpt-4),agentAgentType.ZERO_SHOT_REACT_DESCRIPTION,verboseTrue
)# 执行任务
response agent.run(计算 5 的平方)
print(response) # 输出: 252. REACT_DOCSTORE
特点
在 ReAct 基础上集成文档存储DocStore。先检索文档再推理回答。
优势
增强了对知识库的支持适合信息密集型任务。
局限性
需要预先准备文档库初始化成本较高。
应用场景
知识库问答、RAG 系统。
代码示例
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.document_loaders import TextLoader
from langchain.tools import Tool# 加载文档并创建向量存储
loader TextLoader(knowledge.txt)
docs loader.load()
vectorstore FAISS.from_documents(docs, OpenAIEmbeddings())# 定义检索工具
def retrieve_docs(query: str):return vectorstore.similarity_search(query, k3)docstore_tool Tool(nameDocument Retriever, funcretrieve_docs, description检索文档内容)# 初始化代理
agent initialize_agent(tools[docstore_tool],llmChatOpenAI(modelgpt-4),agentAgentType.REACT_DOCSTORE,verboseTrue
)response agent.run(查找人工智能相关资料)
print(response)3. SELF_ASK_WITH_SEARCH
特点
将复杂问题拆解为子问题通过搜索工具逐一解决。动态获取外部信息。
优势
适合需要实时数据的任务。
局限性
依赖搜索工具质量响应时间可能较长。
应用场景
时事查询、专业资料搜集。
代码示例
from langchain.tools import Tool
from langchain.utilities import GoogleSearchAPIWrapper# 配置 Google 搜索工具需 API Key
search GoogleSearchAPIWrapper()
search_tool Tool(nameGoogle Search, funcsearch.run, description通过 Google 搜索信息)# 初始化代理
agent initialize_agent(tools[search_tool],llmChatOpenAI(modelgpt-4),agentAgentType.SELF_ASK_WITH_SEARCH,verboseTrue
)response agent.run(爱因斯坦哪年获得诺贝尔奖)
print(response) # 输出: 19214. CONVERSATIONAL_REACT_DESCRIPTION
特点
支持多轮对话具备上下文记忆。融合 ReAct 的推理与操作能力。
优势
动态适应用户需求交互性强。
局限性
对内存管理要求较高。
应用场景
聊天机器人、智能客服。
代码示例
from langchain.memory import ConversationBufferMemory# 配置上下文记忆
memory ConversationBufferMemory(memory_keychat_history)# 初始化代理
agent initialize_agent(tools[],llmChatOpenAI(modelgpt-4),agentAgentType.CONVERSATIONAL_REACT_DESCRIPTION,memorymemory,verboseTrue
)print(agent.run(中国的 GDP 是多少))
print(agent.run(比去年增长了多少)) # 利用上下文回答5. CHAT_ZERO_SHOT_REACT_DESCRIPTION
特点
为聊天场景优化的零样本 ReAct。注重自然语言表达。
优势
对话流畅适合轻量交互。
局限性
不支持复杂工具调用。
应用场景
简单聊天助手。
代码示例
agent initialize_agent(tools[],llmChatOpenAI(modelgpt-4),agentAgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,verboseTrue
)response agent.run(介绍 Python 语言的特点。)
print(response)6. CHAT_CONVERSATIONAL_REACT_DESCRIPTION
特点
结合聊天优化与上下文记忆。支持更复杂的多轮对话。
优势
适用于长时间、连贯的交互。
局限性
配置稍复杂计算资源需求较高。
应用场景
高级客服、交互式问答。
代码示例
agent initialize_agent(tools[],llmChatOpenAI(modelgpt-4),agentAgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,verboseTrue
)response agent.run(什么是机器学习)
print(response)7. STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION
特点
支持多工具调用返回结构化数据。任务处理更具条理性。
优势
适合复杂任务的综合处理。
局限性
对工具定义要求较高。
应用场景
天气查询、综合信息整合。
代码示例
from langchain.tools import Tool# 定义天气工具
def get_weather(city: str):return f{city} 当前温度为 25°Cweather_tool Tool(nameWeather Tool, funcget_weather, description获取城市天气)# 初始化代理
agent initialize_agent(tools[weather_tool],llmChatOpenAI(modelgpt-4),agentAgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,verboseTrue
)response agent.run(查询北京的天气)
print(response)8. OPENAI_FUNCTIONS
特点
利用 OpenAI 的 function calling 机制。直接调用外部 API返回结构化结果。
优势
调用精准响应高效。
局限性
依赖 OpenAI 模型支持。
应用场景
API 驱动任务如航班查询。
代码示例
from langchain.tools import StructuredTool
from pydantic import BaseModel# 定义查询结构
class FlightQuery(BaseModel):origin: strdestination: strdef search_flights(query: FlightQuery):return f从 {query.origin} 到 {query.destination} 的航班价格约为 1500 元flight_tool StructuredTool.from_function(funcsearch_flights, nameFlight Search, description查询航班价格)# 初始化代理
agent initialize_agent(tools[flight_tool],llmChatOpenAI(modelgpt-4),agentAgentType.OPENAI_FUNCTIONS,verboseTrue
)response agent.run(查询从北京到上海的航班价格。)
print(response)9. OPENAI_MULTI_FUNCTIONS
特点
支持多个 OpenAI 函数调用。可整合多源数据。
优势
处理多任务能力强。
局限性
配置复杂依赖多工具协作。
应用场景
综合查询如航班与汇率结合。
代码示例
from langchain.tools import Tool# 定义汇率工具
def get_exchange_rate():return 当前 1 USD 7.2 CNYexchange_tool Tool(nameExchange Rate Checker, funcget_exchange_rate, description获取美元兑人民币汇率)# 初始化代理
agent initialize_agent(tools[flight_tool, exchange_tool],llmChatOpenAI(modelgpt-4),agentAgentType.OPENAI_MULTI_FUNCTIONS,verboseTrue
)response agent.run(查询从北京到上海的航班价格并获取最新美元汇率。)
print(response)总结与选择指南
代理类型核心特点优势局限性适用场景ZERO_SHOT_REACT_DESCRIPTION零样本推理与操作简单高效不适合复杂任务基础计算、逻辑推理REACT_DOCSTORE文档检索 推理知识库支持强需预置文档知识库问答、RAGSELF_ASK_WITH_SEARCH问题拆解 搜索实时信息获取依赖搜索质量时事、专业查询CONVERSATIONAL_REACT_DESCRIPTION多轮对话 上下文交互性强内存需求高聊天机器人、智能客服CHAT_ZERO_SHOT_REACT_DESCRIPTION聊天优化零样本对话流畅无复杂工具支持简单聊天助手CHAT_CONVERSATIONAL_REACT_DESCRIPTION聊天 上下文记忆连贯性好配置复杂高级客服、多轮问答STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION多工具 结构化输出处理复杂任务工具定义要求高天气、综合查询OPENAI_FUNCTIONS单函数调用调用精准依赖 OpenAIAPI 驱动任务OPENAI_MULTI_FUNCTIONS多函数调用数据整合能力强配置复杂综合多任务查询
选择建议
轻量任务优先 ZERO_SHOT_REACT_DESCRIPTION 或 CHAT_ZERO_SHOT_REACT_DESCRIPTION。知识密集型选择 REACT_DOCSTORE 或 SELF_ASK_WITH_SEARCH。多轮交互推荐 CONVERSATIONAL_REACT_DESCRIPTION 或 CHAT_CONVERSATIONAL_REACT_DESCRIPTION。复杂工具调用使用 STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION 或 OPENAI_MULTI_FUNCTIONS。
希望这篇优化后的指南能为你的 LangChain 项目提供清晰指引如需更具体案例或代码调试建议请随时告诉我。