营销推广有哪些公司,萤火虫网站建设优化,推广软件平台,优设网设计师导航引言
在LangChain的Agent框架中#xff0c;zero-shot-react-description 是一种预定义的Agent类型#xff0c;它结合了Zero-Shot#xff08;零样本学习#xff09; 和 ReAct#xff08;推理行动#xff09; 策略#xff0c;主要用于根据工具的描述动态选择和执行工具zero-shot-react-description 是一种预定义的Agent类型它结合了Zero-Shot零样本学习 和 ReAct推理行动 策略主要用于根据工具的描述动态选择和执行工具无需依赖预先提供的示例即不需要训练数据或上下文示例。以下是其核心特点和工作原理 1. 核心概念解析 Zero-Shot零样本 Agent无需依赖特定任务的示例few-shot examples仅通过自然语言指令和工具的描述即可决定如何行动。这使得它能够灵活应对新任务无需预先训练。 ReActReasoning Action 一种结合推理和行动的框架 推理Reasoning: Agent生成类似人类的思考过程如“我需要先查找天气再比较温度”。行动Action: 根据推理结果调用工具如调用搜索引擎或计算器。 工具描述Tool description 每个工具如Search、Calculator附带一个自然语言描述Agent通过这些描述判断何时使用哪个工具。 2. 工作原理 输入问题 用户提供问题如“北京现在的温度比上海高多少度”。 生成推理步骤 Agent根据ReAct提示模板生成类似以下的思考 Thought: 我需要先获取北京的温度再获取上海的温度最后计算差值。选择并执行工具 根据工具描述选择工具 调用Search工具获取北京的温度。调用Search工具获取上海的温度。调用Calculator计算差值。 循环直至完成 重复“推理→行动→观察结果”的循环直到得到最终答案。 3. 系统架构设计 #mermaid-svg-bcKjYbWPubQfzlWt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .error-icon{fill:#552222;}#mermaid-svg-bcKjYbWPubQfzlWt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-bcKjYbWPubQfzlWt .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-bcKjYbWPubQfzlWt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-bcKjYbWPubQfzlWt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-bcKjYbWPubQfzlWt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-bcKjYbWPubQfzlWt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-bcKjYbWPubQfzlWt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-bcKjYbWPubQfzlWt .marker.cross{stroke:#333333;}#mermaid-svg-bcKjYbWPubQfzlWt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-bcKjYbWPubQfzlWt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .cluster-label text{fill:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .cluster-label span{color:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .label text,#mermaid-svg-bcKjYbWPubQfzlWt span{fill:#333;color:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .node rect,#mermaid-svg-bcKjYbWPubQfzlWt .node circle,#mermaid-svg-bcKjYbWPubQfzlWt .node ellipse,#mermaid-svg-bcKjYbWPubQfzlWt .node polygon,#mermaid-svg-bcKjYbWPubQfzlWt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-bcKjYbWPubQfzlWt .node .label{text-align:center;}#mermaid-svg-bcKjYbWPubQfzlWt .node.clickable{cursor:pointer;}#mermaid-svg-bcKjYbWPubQfzlWt .arrowheadPath{fill:#333333;}#mermaid-svg-bcKjYbWPubQfzlWt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-bcKjYbWPubQfzlWt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-bcKjYbWPubQfzlWt .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-bcKjYbWPubQfzlWt .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-bcKjYbWPubQfzlWt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-bcKjYbWPubQfzlWt .cluster text{fill:#333;}#mermaid-svg-bcKjYbWPubQfzlWt .cluster span{color:#333;}#mermaid-svg-bcKjYbWPubQfzlWt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-bcKjYbWPubQfzlWt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 生成推理链 动态选择 动态选择 未完成 完成 用户输入 ReAct解析器 大语言模型 工具路由 工具库 Search Calculator 执行引擎 结果验证 答案生成 格式化输出 架构关键组件说明 ReAct解析器 实现ReAct论文提出的Thought→Action→Observation循环机制内置prompt模板控制推理格式示例代码见附录 工具路由层 向量匹配计算用户指令与工具描述的余弦相似度阈值过滤设置置信度0.7才触发工具调用 执行引擎 并行控制支持异步调用多个工具需配置max_execution_threads超时熔断默认10秒未响应终止工具执行 反馈验证环 自动检测工具输出是否符合预期格式通过output_parser异常重试机制最多3次循环后抛出AgentStop异常
数据流向特征
用户请求 -- 语义理解 -- 工具调度 -- 结果验证↑______________循环迭代_______________↓该架构实现了ReAct论文的核心思想arXiv:2210.03629通过三个关键设计保证zero-shot能力 ① 模块化工具接入 工具注册采用插件化设计新工具只需满足BaseTool接口
class BaseTool:name: str # 工具唯一标识description: str # 自然语言描述func: Callable[[str], str] # 执行函数② 分层决策机制
战略层LLM生成高层次任务分解Thought战术层工具路由根据描述选择最优工具Action执行层标准化接口调用工具Observation
③ 自校正能力 通过validate_observation()方法检测工具输出有效性当检测到无效响应时自动触发
重新生成工具选择指令调整工具输入参数降级使用备用工具 此架构已在LangChain 0.0.287版本中实现开发者可通过扩展AgentExecutor类实现自定义增强。 4. 典型应用场景
动态工具选择 当任务需要组合多个工具时如先搜索再计算Agent自动根据工具描述选择。无需示例的任务 适用于没有现成示例的新任务例如一次性查询或复杂问题分解。透明决策过程 生成的推理步骤Thought提供了可解释性方便调试逻辑。 5. 与其他Agent的区别
Agent类型是否需要示例适用场景特点zero-shot-react-description否单任务、工具组合依赖工具描述ReAct框架conversational-react-description是多轮对话保留对话历史适合聊天场景self-ask-with-search否需要中间提问的搜索任务自动分解子问题并调用搜索引擎 6. 代码示例
from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI# 初始化模型和工具
llm OpenAI(temperature0)
tools load_tools([serpapi, calculator], llmllm)# 创建zero-shot-react-description Agent
agent initialize_agent(tools, llm, agentzero-shot-react-description,verboseTrue
)# 执行任务
agent.run(北京现在的温度比上海高多少度)输出示例
Thought: 我需要先查找北京当前的温度再查找上海的温度然后用计算器算出差值。
Action: Search
Action Input: 北京当前温度
Observation: 25°C
Thought: 现在需要上海的温度。
Action: Search
Action Input: 上海当前温度
Observation: 22°C
Thought: 现在用计算器计算25减22。
Action: Calculator
Action Input: 25 - 22
Observation: 3
Final Answer: 北京比上海高3度。7. 注意事项
工具描述的清晰性工具的描述需简明准确否则可能影响选择。大模型依赖依赖底层LLM如GPT-3的推理能力结果受模型性能影响。复杂任务限制对于需要多步骤复杂推理的任务可能需要更定制化的Agent。
通过zero-shot-react-descriptionLangChain提供了一种高效、灵活的任务处理方式特别适合需要动态组合工具的一次性复杂查询。 参考
ReAct论文LangChain Agent文档