【模型接入】字节豆包
项目基于 Spring AI + 自己实现的 models/doubao,以及火山方舟官方 SDK,实现 doubao 豆包大模型 (opens new window) 的接入:
| 功能 | 模型 | 客户端 |
|---|---|---|
| AI 对话 | Doubao-Seed-2.1-pro、Doubao-Seed-2.1-lite、Doubao-Seed-2.1-turbo 等 | DouBaoChatModel |
| AI 绘画 | Seedream (opens new window) 图片生成模型 | 火山方舟官方 SDK(volcengine-java-sdk-ark-runtime)的 ArkService |
# 1. 申请密钥
由于字节豆包是非开源的模型,所以无法私有化部署,需要去官网申请 API Key,然后通过项目自定义的 DouBaoChatModel 接入。
# 1.1 申请字节密钥
① 在 火山引擎 (opens new window) 上,注册一个账号。
② 在 系统设置 -> API Key 管理 (opens new window) 上,创建一个 API Key 密钥。

③ 在 智能广场 -> 模型广场 (opens new window) 上,开通 “Doubao-Seed-2.1-pro” 或 “Doubao-Seed-2.1-turbo” 模型。如果要使用 AI 绘画,还需要开通 Seedream 图片生成模型,例如说 doubao-seedream-5-0-flash-260915 对应的模型。

申请完成后,可以在我们系统的 [AI 大模型 -> 控制台 -> API 密钥] 菜单,进行密钥的配置。只需要填写“密钥”,不需要填写“自定义 API URL”(因为 Spring AI 默认官方地址)。如下图所示:

# 2. 模型配置
# 2.1 AI 对话
使用 《AI 对话》 时,需要在 [AI 大模型 -> 控制台 -> 模型配置] 菜单,配置对应的聊天模型。
不同模型的 max_tokens(回复数 Token 数)上限不同,可以参考下表填写:
| 模型标识 | max_tokens 最大输出 Tokens |
|---|---|
doubao-seed-2-1-pro-260915 | 262144 |
doubao-seed-2-1-lite-260915 | 262144 |
doubao-seed-2-1-turbo-260628 | 262144 |
doubao-seed-2-1-pro-260915、doubao-seed-2-1-lite-260915 的上下文窗口为 1024K,doubao-seed-2-1-turbo-260628 为 256K;不设置 max_tokens 时最大回答默认 4K,见 模型列表 (opens new window)。
# 2.2 AI 绘图
使用 《AI 图片生成》 时,需要在 [AI 大模型 -> 控制台 -> 模型配置] 菜单,配置对应的图片模型:
- 所属平台:选择「字节跳动」,API 秘钥选择上文配置的豆包密钥,可以与对话模型共用
- 模型类型:选择「图片」
- 模型标识:填写 Seedream 的模型标识,例如说
doubao-seedream-5-0-flash-260915

Seedream 不走 Spring AI 的 ImageModel,而是使用火山方舟官方 SDK:AiModelFactory 的 #getOrCreateArkService(...) 方法,按密钥创建并缓存 ArkService 对象;API 密钥的「自定义 API URL」为空时,使用 SDK 默认的官方地址。
绘图工作台为 doubao-seedream-5-0-flash-260915 开放 2K 文生图,不开放参考图;工作台的能力常量中还登记了 doubao-seedream-5-0-260128、doubao-seedream-4-5-251128、doubao-seedream-4-0-250828 等版本,支持 1 ~ 10 张参考图。
请求的固定参数、提示词写法建议等,见 《AI 图片生成》 的「2.2 Seedream」小节。
# 3. 如何使用?
① 如果你的项目里需要直接通过 @Resource 注入 DouBaoChatModel 等对象,需要把 application.yaml 配置文件里的 yudao.ai.bytedance.chat 配置项,替换成你的!
yudao:
ai:
bytedance: # 字节豆包
chat:
enable: true
api-key: ${DOUBAO_API_KEY}
model: doubao-seed-2-1-turbo-260628
② 如果你希望使用 [AI 大模型 -> 控制台 -> API 密钥] 菜单的密钥配置,则可以通过 AiModelService 的 #getChatModel(...) 方法,获取对应的模型对象;Seedream 绘图则通过 #getArkService(...) 方法,获取对应的 ArkService 对象。
① 和 ② 这两者的后续使用,就是标准的 Spring AI 客户端的使用,调用对应的方法即可。
另外,DouBaoChatModelTests 里有对应的测试用例,可以参考。