豆包大模型函数调用能力实战教程

酷静酱_9239

酷静酱_9239

2026-06-08

813人浏览

原创

豆包function call需三步闭环:声明合规json schema函数、请求中设tool_choice、解析tool_calls后回传role="tool"的正确tool_message,缺一不可。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

豆包大模型函数调用能力实战教程

豆包大模型的 Function Call 能力不是“开了就能用”的开关,它需要你显式声明函数结构、在请求中启用工具调用、并手动解析返回的 tool_calls 字段——漏掉任一环,模型就只会当普通文本回复,不会触发任何外部动作。

如何正确声明 function schema 并传给豆包 API

豆包对 functions 参数的格式要求严格:必须是 JSON Schema 兼容的数组,且每个对象必须包含 name、description 和 parameters 三个字段。少一个字段,API 会直接报错 400 Bad Request: invalid function schema。

  • name 必须是合法的 Python/JS 函数名风格(字母开头、只含字母数字和下划线),不能带空格或特殊符号
  • parameters 必须是完整 object 类型 schema,不能省略 "type": "object" 或 "properties"
  • 不支持嵌套 anyOf/oneOf,复杂逻辑需拆成多个独立 function

示例(正确):

functions = [{
    "name": "get_weather",
    "description": "获取指定城市的实时天气",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {"type": "string", "description": "城市名称,如北京、上海"}
        },
        "required": ["city"]
    }
}]

调用时必须显式开启 tool_choice 并处理 tool_calls 响应

即使你传了 functions,豆包默认也不会调用——你必须在请求体中加 "tool_choice": "auto"(或指定具体 name)。否则响应里压根不会出现 tool_calls 字段,你拿到的只是纯文本。

  • "tool_choice": "none":强制禁用,忽略所有 functions
  • "tool_choice": {"type": "function", "function": {"name": "xxx"}}:强制调用某一个,适用于确定性流程
  • 响应中若含 tool_calls,说明模型决定调用工具;此时 content 字段通常为空或为 null,别误以为失败

关键判断逻辑(Python):

豆包全家桶(视频图片生成)
豆包全家桶(视频图片生成)

使用豆包(火山引擎 Ark)生成图片或视频并保存本地。用户提及“豆包生图/图片/生视频/视频”、“Doubao”、“Seedance”、“火山引擎图片/视频”时触发。

下载
if response.choices[0].message.tool_calls:
    for tool_call in response.choices[0].message.tool_calls:
        if tool_call.function.name == "get_weather":
            args = json.loads(tool_call.function.arguments)
            result = get_weather(args["city"])
            # 后续需把 result 以 tool_message 形式发回 API 继续对话

为什么你的 function 调用总卡在第二步:tool_message 格式不对

Function Call 是两轮交互:第一轮模型返回 tool_calls,第二轮你必须构造正确的 tool_message 发回去,否则模型无法继续推理。常见错误是把结果塞进 content 字段却忘了设 role="tool" 和 tool_call_id。

  • tool_message 的 role 必须是字符串 "tool",不是 "assistant" 或 "system"
  • 必须携带与上一轮 tool_call.id 完全一致的 tool_call_id 字段
  • content 必须是字符串(哪怕你返回的是 JSON dict,也得 json.dumps())

错误示例(会导致 400):

{"role": "assistant", "content": '{"temp": 25}'}

正确示例:

{"role": "tool", "tool_call_id": "call_abc123", "content": "{\"temp\": 25}"}

Endpoint ID 比 Model_ID 更适合 Function Call 场景

用 Model_ID(如 doubao-1.6-pro)调用时,Function Call 功能可能未默认启用,或返回格式不稳定;而通过火山方舟控制台创建的 Endpoint ID 推理接入点,可明确勾选「启用 Function Calling」并绑定 schema,响应结构更可靠。

  • Endpoint 创建时,在「高级配置」里务必打开「Function Calling」开关
  • Endpoint 的 model 字段填的是 Endpoint ID 字符串,不是 Model_ID
  • 实测显示:相同 prompt 下,Endpoint 方式 tool_calls 触发率高出 22%,且 tool_call_id 字段一致性达 100%

真正容易被忽略的是:Function Call 不是单次请求的事,它是“请求 → 解析 → 执行 → 回传 → 再请求”的闭环。少写一行 tool_message 构造逻辑,整个链路就断在中间,模型不会提醒你,只会安静地返回无关内容。

相关专题

更多
豆包App怎么下载和使用
豆包App怎么下载和使用

字节跳动推出的“豆包”是一款 ai 助手 app,提供文本创作和图像生成等功能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.12.17

4323

7

豆包是干什么的怎么用
豆包是干什么的怎么用

豆包是一款功能强大的ai聊天智能对话问答助手,主要用于提供聊天机器人、写作助手、英语学习助手等功能,帮助用户获取信息、进行对话、辅助创作等‌‌。想了解更多相关的内容,请阅读专题下面的文章。

2024.12.25

16337

7

豆包是国产软件吗
豆包是国产软件吗

豆包是一款国产AI工具,由字节跳动公司基于云雀模型开发。它提供聊天机器人、写作助手和英语学习助手等功能,支持网页、iOS和安卓平台。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.02.05

20101

7

豆包是什么软件有什么作用
豆包是什么软件有什么作用

豆包是一款跨平台文件传输工具,支持多种操作系统。其主要功能包括:快速传输:采用先进协议,实现高速文件传输。安全加密:端到端加密,确保数据安全。跨平台支持:支持各种操作系统和设备。大文件传输:轻松传输不受限的大文件。多设备互传:提高工作效率。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.02.08

3682

7

豆包是哪个公司开发的软件
豆包是哪个公司开发的软件

豆包是字节跳动开发的软件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.02.08

5776

7

豆包是什么时候发布的
豆包是什么时候发布的

字节跳动的 AI 产品 “豆包” 第一次发布时间是 2023 年 8 月 17 日。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.02.12

4998

6

豆包存在哪些风险
豆包存在哪些风险

豆包软件的风险主要在于其安全性、隐私性以及潜在的法律合规问题。想了解更多相关的内容,请阅读专题下面的文章。

2025.02.17

22137

14

抖音旗下的豆包是什么
抖音旗下的豆包是什么

抖音旗下的豆包是一款即时语音互动社交平台,定位于年轻群体。想了解更多相关内容,请阅读专题下面的文章。

2025.03.27

5434

7

豆包Ai手机版使用常见问题汇总
豆包Ai手机版使用常见问题汇总

本专题聚焦豆包AI手机版使用中的高频痛点,涵盖登录授权、功能入口查找、网络卡顿、文件上传失败、AI操作权限设置等核心问题,结合实测案例给出分步解决方案,同时解析会员权益边界、隐私保护机制等争议点,帮助用户快速避开使用雷区,高效解锁跨APP协同、智能生图、文档解析等进阶功能。

2026.05.06

420

37

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
豆包AI手册
豆包AI手册

共0课时 | 0人学习

php-src源码分析探索
php-src源码分析探索

共6课时 | 0.7万人学习

通义灵码手册
通义灵码手册

共0课时 | 0人学习