43

如何为Agent设计工具(Tool)?一个好的Tool Definition包含哪些要素?

Agent开发与工具调用中等

📋 面试问题

如何为Agent设计工具(Tool)?一个好的Tool Definition包含哪些要素?

✅ 期望回答

Tool Definition要素:
  • 名称:简洁明了(如「search_web」、「query_database」、「send_email」)
  • 描述:用自然语言说明工具的功能、使用场景和限制
  • 参数Schema:每个参数的名称、类型、描述、是否必选(JSON Schema格式)
  • 返回值说明:返回什么类型的数据,格式是什么样的

设计原则:
  • 原子化:一个工具只做一件事(单一职责原则)
  • 好描述 > 多参数:让LLM通过描述理解何时用、怎么用
  • 描述应详细:在描述中提供工具的使用场景和示例
  • 错误处理:工具返回标准化错误信息(LLM据此决定重试还是放弃)
  • 幂等性:能安全重试的工具(查询类天然幂等,写操作需要去重保护)

示例Tool Definition(Function Calling格式):
{

"name": "get_weather",

"description": "获取指定城市的天气信息。使用场景:用户询问天气时使用。",

"parameters": {

"type": "object",

"properties": {

"city": {"type": "string", "description": "城市名称,如北京、上海"}

},

"required": ["city"]

}

}

#Tool#Function Calling#Schema