按需向大模型暴露工具函数
数据模型、服务函数、页面、知识库、联网搜索和文件空间都可能为 Agent 提供工具。开发者可以根据实际需求选择性暴露需要的能力,让大模型在系统提示词中只看到当前任务需要的候选工具。
工具函数管理的目标不是做权限控制,而是管理大模型的可见工具面:减少不必要的 Token 消耗,降低模型误选工具的概率,让 Agent 更容易在当前任务中选择正确动作。
注意
启用或关闭工具函数不是安全边界。即使某个函数没有暴露在系统提示词中,如果用户直接发送明确的调用指令,仍可能触发调用。真正的权限控制必须在角色权限中配置,运行时会按当前用户角色自动阻止越权调用。
控制提示词中暴露哪些函数
在 Agent 编辑器中,工具相关配置主要分布在:
| 配置入口 | 用途 |
|---|---|
能力编排 -> 数据模型 | 控制模型信息、查询、新增、修改、删除和附件相关能力 |
能力编排 -> Functions | 控制服务函数信息查看和运行能力 |
能力编排 -> 知识库 | 控制 Agent 可查询哪些知识库,以及是否预检索 |
运行与安全 -> 工作页面 | 控制页面函数是否暴露给 Agent |
运行与安全 -> 联网搜索 | 控制公开网页搜索和网页读取能力 |
运行与安全 -> 文件空间 | 控制 Agent 可访问哪些文件空间及读写边界 |
数据模型、服务函数、Skill、知识库和子 Agent 通常支持三种模式:
- 智能模式:系统收集可用候选项,由 Agent 根据任务选择。
- 自定义模式:开发者手动选择当前 Agent 可使用的候选项。
- 禁用:不向 Agent 暴露该类能力。
自定义模式下,还可以继续按函数或工具项控制暴露范围。启用后,对应函数或工具会作为候选能力进入模型上下文;关闭后,可减少上下文干扰和 Token 消耗。
建议按下面顺序处理:
- 先确定 Agent 的核心任务。
- 只添加完成任务必须使用的模型、服务函数或页面函数。
- 关闭无关的增删改查、调试函数、联网搜索和高风险函数,避免它们干扰模型判断。
- 用真实任务测试 Agent 是否能选择正确函数。
哪些函数不建议暴露给大模型
以下函数不建议默认暴露给大模型:
- 与当前 Agent 任务无关的函数。
- 删除、批量修改、退款、审批通过等高风险函数。
- 不需要公开网页资料时的联网搜索和网页读取工具。
- 参数含义不清、缺少描述、容易误用的函数。
- 仅供开发调试使用的内部函数。
如果确实需要让大模型看到高风险函数,需要同时做好两件事:一是给函数写清晰的名称、描述和参数说明,降低误调用概率;二是在角色权限中配置数据模型权限或服务函数权限,确保未授权用户无法真正执行。
函数描述决定模型是否会正确调用
Agent 看到的不只是函数名称,还包括函数描述和参数信息。名称、描述和参数越清晰,模型越容易判断什么时候调用。
建议:
- 函数名称体现业务动作,例如
cancelOrder、queryCustomerRisk。 - 描述说明适用场景、执行结果和限制。
- 参数标题和说明要让非开发者也能理解。
服务函数的描述写法可参考让 Agent 调用服务函数。
注意
不要简单粗暴地启用全部函数,要根据实际需要针对性启用函数,否则会增加不必要的 Token 消耗、给大模型带来理解负担、引入不必要的误调用风险。需要安全控制时,请配置角色权限。