编写一个优秀的 Agent Skill(通常称为 Tool 或 Function)

5次阅读
没有评论

编写一个优秀的 Agent Skill(通常称为 ToolFunction),本质上是给大模型(LLM)写一份极其精准的“外挂说明书”。模型会根据你提供的描述(Description)来决定何时调用它。

以下是编写高质量 Agent Skill 的标准框架和实战案例。


1. 核心结构:JSON Schema

大多数 Agent 框架(如 LangGraph, AutoGPT, 或 OpenAI Assistants)都采用 JSON Schema 来定义技能。

示例:一个“复杂数据查询”技能

JSON

{
  "name": "query_inventory_db",
  "description": "当用户询问特定商品的库存数量、仓库位置或补货状态时使用。支持模糊搜索商品名称。",
  "parameters": {
    "type": "object",
    "properties": {
      "item_name": {
        "type": "string",
        "description": "商品的全称或关键词,例如 'iPhone 15 Pro'"
      },
      "warehouse_region": {
        "type": "string",
        "enum": ["华东", "华北", "华南", "海外"],
        "description": "可选:指定查询的区域。若用户未提及,则默认为全区。"
      },
      "include_out_of_stock": {
        "type": "boolean",
        "description": "是否包含缺货商品,默认为 true。"
      }
    },
    "required": ["item_name"]
  }
}

2. 编写技能的“黄金准则”

为了让 Agent 不“乱搞”,请遵循以下逻辑:

维度 建议 错误做法
描述 (Description) 场景化:说明“在XX情况下,当用户想要XX时,调用此工具”。 “这是一个搜索工具。”(太模糊)
参数命名 使用具有语义的变量名,如 arrival_date 而非 date1 使用 arg1, input 等无意义词汇。
边界限制 在描述中明确**“不能做什么”**。例如:“仅支持 2023 年以后的数据”。 没有任何约束,导致模型尝试越权查询。
错误处理 技能执行失败时,返回清晰的文本,如“未找到该用户,请核对 ID”。 只返回一个错误代码 500

3. 三大实战案例

A. 搜索类(Agent 的“眼睛”)

描述: “当用户提出的问题涉及实时新闻、当前的股票价格,或模型知识库截止日期(2023年10月)之后发生的事件时,请调用此工具。请尽量提取用户问题中的核心实体作为关键词。”

B. 执行类(Agent 的“手”)

描述: “用于向指定的电子邮箱发送正式通知。在调用此工具前,必须已经确认了收件人地址、邮件主题和正文内容。严禁用于发送营销垃圾邮件。”

C. 逻辑类(Agent 的“计算器”)

描述: “用于计算复杂的财务比例(如 ROI, ROE)。输入原始财务数值,输出格式化的百分比分析报告。不要尝试用它处理非财务数据。”


4. 进阶技巧:Prompting in Description

你可以在描述里直接对模型下达“心法”:

“注意:如果用户没有提供 user_id,请先询问用户 ID,不要尝试猜测或伪造。”

这种“反向约束”能极大地提高 Agent 的交互质量,避免模型在信息不足时强行调用接口。

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)