完整题目
请系统阐述大语言模型实现外部工具调用(Tool Use / Function Calling)的主要技术路径与架构方案,包括提示工程、微调、代理框架等方法的典型流程、适用场景、优劣对比,并分析其在构建智能Agent中的核心作用及面临的关键挑战。
本文目录
先分清三个层次
Tool Calling不是提示工程、微调和Agent框架三选一。它至少包含:模型如何表达调用候选、应用如何编排状态、服务端如何授权并执行。微调可改善特定分布上的工具选择,却不能替代运行时校验;框架是工程封装,不是复杂任务的必需条件。
一条可审计的执行链
用户请求 → 服务端鉴权并选择可见工具 → 模型提出结构化调用候选
→ 服务端校验schema/对象权限/当前状态/预算 → 必要时用户确认
→ 带幂等键执行 → 返回结构化结果与来源 → 决定继续、响应或停止模型只能提出调用候选。即使参数符合 schema,也必须在服务端重新验证工具白名单、字段范围、资源归属和业务状态。网页、文件和工具结果属于不可信输入,不能覆盖系统策略或扩大可用工具。
表达、编排和训练怎样选择
- 原生工具调用/严格结构化输出:目标模型支持时优先采用,减少自写解析器;仍需处理拒答、截断、未知工具和语义无效参数。
- 显式状态机或工作流:步骤、分支和补偿规则明确时通常更容易测试。模型只负责需要语义判断的节点。
- Agent循环:步骤事先不确定且真实观察会改变计划时再使用,并设置最大步数、端到端截止时间、费用和副作用预算。
- SFT/微调:有足量、代表性且版本匹配的调用样本,并证明提示/检索/工具描述不足时再评估。新增工具不一定必须重训,但任何模型都可能错选或错填参数。