Agent 是怎么知道“要不要调用 Tool”的?它是在什么时候决定用 Tool,什么时候自己回答的?
Agent 的核心机制就是:大模型(LLM)负责“思考”,Tool 负责“执行”。 换句话说: Agent = 一种“思考 → 工具调用 → 再思考”的循环机制。
整个流程拆成 6 步如下:假设你调用的是:agent.run("帮我查一下苹果手机的库存,还有写一个促销文案")
LangChain Agent 背后的运行机制是这样的:
第 1 步:把你的问题打包成一段 Prompt这段 Prompt 里面包括: - 当前支持的工具列表(包含 name 和 description)
- 工具调用的格式约定(像 ReAct 的思考链格式)
这一大段 Prompt 会告诉 LLM:“你有以下这些能力,要根据用户的需求决定是否使用。”
第 2 步:把这个 Prompt 发给 LLM(比如 qwen-turbo)然后 LLM 会“模拟 Agent 的思考”,像人一样写出类似这样的回复: Thought: 用户要查库存,应该使用查库存工具 Action: 查库存 Action Input: "苹果手机"
LangChain 就从这段话里解析出: → OK,大模型的意思是要调用 Tool 叫 “查库存”,传参 “苹果手机”。
第 3 步:LangChain 调用对应 Tool 的 func也就是你之前注册的: Tool(name="查库存", func=check_stock, description="输入商品名称返回库存")
于是调用check_stock("苹果手机"),拿到返回值,比如: Observation: 当前库存还有 32 件
第 4 步:把 Observation 加进对话历史,继续 Prompt 给 LLM现在 LangChain 重新构造 Prompt,告诉模型: Thought: 用户要查库存... Action: 查库存 Action Input: "苹果手机" Observation: 当前库存还有 32 件
然后让 LLM 再接着想下一步怎么做。
第 5 步:LLM 可能再调用 Tool,或者直接输出回答比如它下一步可能会输出: Thought: 好的,现在我已经知道库存情况,可以生成促销文案了 Action: 写文案 Action Input: "苹果手机 + 库存还有 32 件"
或者: Final Answer: 苹果手机目前还有 32 件库存,推荐文案:买它!买它!库存紧张,限时抢购!
第 6 步:LangChain 检测到 Final Answer,返回给你!这个循环过程就结束了。 大模型每一次的“回复”,不是答案,而是一个行动计划。Agent 就是把这个“计划”翻译成实际工具调用,然后把结果返回给模型,继续思考。
再补一张流程图助你秒记:用户提问 → LangChain 构建 Prompt(含工具列表) → ↓ 模型“思考”(生成 Thought + Action) → ↓ LangChain 执行 Action 对应的 Tool → ↓ 拿到 Observation → ↓ 再喂回模型继续思考 → ↓ 直到输出 Final Answer → 返回用户
总结一下- Tool 不是“立刻”被调用的,而是“模型先思考一下”要不要用它
- 模型每次只做一小步:思考 → 执行动作 → 观察 → 再思考
- Agent 的本质是:提示词驱动的微循环执行器,不是魔法,是 prompt 技巧 + tool 调度
|