Skip to main content

什么是工具调用?

工具调用允许 AI 模型执行外部功能,如运行代码、查询数据库、生成特定格式的内容等。
重要:花卷智能体 API 采用服务端自动执行模式,一次请求即可完成工具调用和结果处理,无需客户端多轮交互。

工具调用流程

花卷智能体 API 在服务端自动完成工具调用的完整流程:
1

1. 用户发起请求

用户发送单次请求,包含 allowedTools 参数和必要的上下文:
用户请求
2

2. 服务端自动处理

服务端在一次请求中完成以下步骤:
  1. AI 决定需要调用工具
  2. 服务端执行工具(zhipin_reply_generator 等)
  3. AI 理解执行结果
  4. 生成最终回复
所有工具调用都在服务端自动完成,最多可执行 30 步(包括多次工具调用)。
3

3. 返回完整对话历史

API 返回包含所有中间步骤的完整对话历史:
API 响应
响应中的 messages 数组包含完整的执行历史,包括工具调用的输入和输出。

dynamic-tool 结构说明

工具调用使用 dynamic-tool 类型的 part,包含以下字段:
所有工具输入参数使用 snake_case 命名约定(如 candidate_message),而非 camelCase。

流程对比

当前采用的模式
优点
  • ✅ 单次请求完成
  • ✅ 无需客户端处理工具执行
  • ✅ 自动重试和错误处理
  • ✅ 完整的执行历史
适用场景
  • 服务端可以安全执行的工具(bash、数据库查询等)
  • 不需要用户交互的自动化任务

基础用法

简单示例

通过 allowedTools 数组启用工具:
基础工具调用
响应包含完整的执行过程,包括工具调用和智能生成的回复。

多轮对话场景

AI 可以在一次请求中理解上下文并调用工具:
多轮对话示例
服务端会根据对话历史和上下文,自动生成专业的招聘回复。

可用工具

使用 GET /api/v1/tools 查看所有可用工具及其配置要求。

Bash 工具

执行 Bash 命令,需要 E2B 沙盒环境
重要:bash 工具需要在沙盒环境中运行。使用前需要:
  1. 创建 E2B 沙盒客户端
  2. context 中提供 sandboxId
如果没有沙盒环境,工具将无法工作。
Bash 工具示例(需要沙盒)
推荐:对于一般的业务场景,建议使用 zhipin_reply_generator 等业务工具,而非 bash 工具。

zhipin_reply_generator 工具

生成 BOSS 直聘招聘回复,需要 configDatareplyPrompts 上下文:
招聘回复生成工具

工具上下文

某些工具需要额外的上下文信息:
使用 context 提供所有工具共享的上下文:
全局上下文
使用 toolContext 为特定工具提供上下文,会覆盖全局 context
工具级上下文
详见上下文管理文档

上下文策略

控制工具上下文缺失时的行为:
缺少必需上下文时返回 400 错误:
错误响应
适用场景:确保工具配置正确,避免运行时错误

流式输出中的工具事件

使用 stream: true 时,可以实时监控工具调用过程:
工具事件示例
流式模式允许你实时看到 AI 的思考过程和工具执行进度,特别适合需要实时反馈的招聘场景。

执行限制

为了防止无限循环,工具调用有以下限制:
如果达到步数限制或超时,API 会返回已执行的部分结果,并在响应中标记未完成状态。

完整示例

JavaScript 完整示例

常见问题

不需要。花卷智能体 API 在服务端自动完成所有工具调用,单次请求即可获得最终结果。错误理解
正确流程
使用 stream: true 可以实时监控工具调用:
流式监控
或者在非流式模式下,检查响应中的 messages 数组,包含所有中间步骤。
当前默认限制为 30 步。如果需要更严格的控制,可以:
  1. 使用更明确的提示词,减少不必要的工具调用
  2. 联系技术支持调整限制
  3. context 中提供更完整的信息,减少探索性调用
可能的原因:
  1. 工具未在 allowedTools 中
    正确配置
  2. 缺少必需的上下文
    完整配置示例
    • 使用 validateOnly: true 预检配置
    • 检查 GET /api/v1/toolsrequiredContext
  3. AI 判断不需要调用
    • 尝试更明确的提示词
    • 确认任务确实需要该工具
  4. bash 工具缺少沙盒环境
    • bash 工具需要 context.sandboxId
    • 建议使用业务工具而非 bash
使用 GET /api/v1/tools 端点查看每个工具的 requiredContext
查看工具要求
或使用 validateOnly: true 预检配置。

下一步

消息格式

了解 tool-call 和 tool-result 的消息结构

工具系统

深入了解工具系统和工具定义

上下文管理

理解工具上下文配置和验证

流式输出

学习如何使用流式输出监控工具执行