Agent 是怎么知道“要不要调用 Tool”的?它是在什么时候决定用 Tool,什么时候自己回答的?
大模型(LLM)负责“思考”,Tool 负责“执行”。
换句话说: Agent = 一种“思考 → 工具调用 → 再思考”的循环机制。
agent.run("帮我查一下苹果手机的库存,还有写一个促销文案")
LangChain Agent 背后的运行机制是这样的:
这段 Prompt 里面包括:
这一大段 Prompt 会告诉 LLM:“你有以下这些能力,要根据用户的需求决定是否使用。”
然后 LLM 会“模拟 Agent 的思考”,像人一样写出类似这样的回复:
Thought: 用户要查库存,应该使用查库存工具
Action: 查库存
Action Input: "苹果手机"
LangChain 就从这段话里解析出: → OK,大模型的意思是要调用 Tool 叫 “查库存”,传参 “苹果手机”。
也就是你之前注册的:
Tool(name="查库存", func=check_stock, description="输入商品名称返回库存")
于是调用check_stock("苹果手机"),拿到返回值,比如:
Observation: 当前库存还有 32 件
现在 LangChain 重新构造 Prompt,告诉模型:
Thought: 用户要查库存...
Action: 查库存
Action Input: "苹果手机"
Observation: 当前库存还有 32 件
然后让 LLM 再接着想下一步怎么做。
比如它下一步可能会输出:
Thought: 好的,现在我已经知道库存情况,可以生成促销文案了
Action: 写文案
Action Input: "苹果手机 + 库存还有 32 件"
或者:
Final Answer: 苹果手机目前还有 32 件库存,推荐文案:买它!买它!库存紧张,限时抢购!
这个循环过程就结束了。
大模型每一次的“回复”,不是答案,而是一个行动计划。Agent 就是把这个“计划”翻译成实际工具调用,然后把结果返回给模型,继续思考。
用户提问 →
LangChain 构建 Prompt(含工具列表) →
↓
模型“思考”(生成 Thought + Action) →
↓
LangChain 执行 Action 对应的 Tool →
↓
拿到 Observation →
↓
再喂回模型继续思考 →
↓
直到输出 Final Answer → 返回用户
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |