Agent 工具
This content is not available in your language yet.
如果说前面的对话模型是在回答”模型能不能说话”,那么 Agent 这页解决的是下一步问题:
当模型需要去读网页、调工具、分步完成任务时,该怎么组织它?
Feat AI 的 Agent 是建立在 ReAct 思路上的:模型先做判断,再调用工具,再根据工具结果继续推进。
Agent 让模型能够调用工具、读取外部信息、分步完成任务。当普通对话模型回答不了需要实时数据的问题,或者任务本身需要多步骤执行时,就需要引入 Agent 机制。如果你当前只是普通问答、摘要、翻译或单次生成,对话模型 已经足够。
先看一个最小 Agent
Section titled “先看一个最小 Agent”import tech.smartboot.feat.ai.FeatAI;import tech.smartboot.feat.ai.agent.FeatAgent;import tech.smartboot.feat.ai.chat.ChatModelVendor;
public class AgentDemo { public static void main(String[] args) throws Exception { FeatAgent agent = FeatAI.agent(opts -> { opts.chatOptions().model(ChatModelVendor.GiteeAI.Qwen2_5_72B_Instruct); opts.tool(new tech.smartboot.feat.ai.agent.tools.WebPageReaderTool()); });
String result = agent.execute( "从 https://smartboot.tech/smart-mqtt/ 中给我看看这款产品的定价是多少" ).get();
System.out.println(result); System.out.println(agent.getState()); }}这段代码的重点只有两件事:
- 先给 Agent 一个对话模型
- 再给它至少一个它能调用的工具
没有工具时,Agent 只是”会多想一点”的模型;有了工具之后,它才真正开始具备完成复杂任务的能力。
Agent 和普通 ChatModel 的区别
Section titled “Agent 和普通 ChatModel 的区别”ChatModel
Section titled “ChatModel”适合:
- 单次问答
- 提示词生成
- 普通对话
FeatAgent
Section titled “FeatAgent”适合:
- 需要外部信息的任务
- 多步骤任务
- 要把”推理”和”执行”串起来的场景
所以不要把 Agent 理解成”更强的对话模型”,它更像是”对话模型 + 工具调度层”。
什么时候该开始注册工具
Section titled “什么时候该开始注册工具”这是 Agent 是否真正有用的分界点。
常见工具包括:
- 网页读取
- 搜索
- 文件操作
在 Feat AI 里,你可以把工具注册到 AgentOptions 上:
import tech.smartboot.feat.ai.agent.tools.SearchTool;import tech.smartboot.feat.ai.agent.tools.WebPageReaderTool;import tech.smartboot.feat.ai.agent.tools.FileOperationTool;
opts.tool(new SearchTool());opts.tool(new WebPageReaderTool());opts.tool(new FileOperationTool());Feat AI 内置了这些工具,所以你完全可以先从现成工具开始,而不是立刻写自定义工具。
一个容易踩的坑
Section titled “一个容易踩的坑”做 Agent 时,不要一开始就追求”大而全工具箱”。更稳的方式通常是:
- 先让一个 Agent 只接一两个工具
- 确认它真的能稳定完成任务
- 再继续加工具和更复杂的提示策略
否则你最后很可能不知道到底是模型问题、工具问题,还是调度策略问题。
Agent 总是在空想,不调用工具
Section titled “Agent 总是在空想,不调用工具”优先检查:
- 你是否真的注册了工具
- 任务本身是否明确暗示需要外部信息
- 模型能力是否足以理解当前工具描述
Agent 能调用工具,但结果质量一般
Section titled “Agent 能调用工具,但结果质量一般”这通常不是一个单点问题。可能涉及:
- 模型本身
- 工具描述是否清楚
- 工具返回内容是否可消费
- 提示策略是否过弱或过乱
我是不是应该先学 Agent 再学 Chat
Section titled “我是不是应该先学 Agent 再学 Chat”不建议。如果你还没把普通模型调用用熟,Agent 的排错成本会高很多。