工具像遥控器上的按钮
给 Agent 的工具,理想状态像遥控器上的按钮:一看就知道干嘛、按下只做一件事。
🔆你不会想要一个写着“处理”的万能按钮——你想要“音量+”“静音”这种一目了然的。
单一职责:一个工具只干一件事
别造“瑞士军刀”工具。一个工具塞太多功能,模型反而难判断什么时候用、参数怎么填。
# 不好:一个工具啥都干
def handle_user(action, data): ...
# 好:拆成单一职责
def get_user(user_id: str) -> dict:
"""按用户 ID 查询用户资料。"""
...
def update_user_email(user_id: str, email: str) -> bool:
"""更新指定用户的邮箱。"""
...💡拆小之后,每个工具的用途和参数都更明确,模型挑得更准。
描述就是给模型看的说明书
模型靠名字 + 描述判断何时调用一个工具。描述写得清楚,调用准确率立刻上去。
def send_invoice(order_id: str) -> str:
"""给指定订单生成并发送发票。仅在用户明确要发票时调用。"""
...⚠️描述含糊,模型要么该用时不用,要么乱用——错不在模型,在你的说明书。
自测 · 学完检查一下
想真正动手做题、记进度、攒连胜?到互动课里练。
“单一职责”的工具有什么好处?
答案:用途和参数更明确,模型更好选
一个工具只干一件事,模型判断何时用、参数怎么填都更容易。
判断:把多个功能塞进一个“万能工具”,能让模型用得更准。
答案:错
功能堆在一起反而让模型难判断何时用、参数怎么填,应拆成单一职责。
判断:下面这个工具设计得好吗?
def do(t, v):
return run(t, v)答案:不好
名字 do、参数 t/v 都看不出含义,也没有描述,模型无从判断何时调用。
下面哪个工具定义最符合“好用工具”的标准?
答案:def get_order_status(order_id: str) -> str: 查询指定订单的当前状态。
名字清晰、单一职责、参数有含义、描述说明白用途,这才是好工具。
模型主要靠工具的名字和 ___ 来判断什么时候调用它。
答案:描述
名字加描述就是给模型看的说明书,写清楚才调得准。
判断:如果工具描述写得含糊导致被乱用,问题主要出在工具设计上,而非模型。
答案:对
描述是给模型的说明书,说明书含糊,调用出错的责任在设计者。