【模型接入】OpenAI
项目基于 Spring AI 提供的 spring-ai-openai (opens new window),实现 OpenAI 的接入:
| 功能 | 模型 | Spring AI 客户端 |
|---|---|---|
| AI 对话 | GPT-6 Astra、GPT-6.1 Sol、GPT-6 Luna 等 | OpenAIChatModel (opens new window) |
| AI 绘画 | GPT Image (opens new window) | OpenAIImageModel (opens new window) |
友情提示:
如果你使用的是微软 Azure 提供的 OpenAI 服务,可阅读 《【模型接入】微软 OpenAI》 文档。
# 1. 申请密钥
由于 OpenAI 是非开源的模型,所以无法私有化部署,需要去官网申请 API Key,然后通过 Spring AI 提供的客户端接入。
不过,目前市面上有很多 OpenAI 的中转 API 服务,通过购买这些服务,也能实现接入。
疑问:什么是“中转 API 服务”?
简单来说,就是有人通过一定的渠道,获取了大量的 OpenAI、MidJourney 等 API 账号,然后部署一个 API 池子(服务)。
中转人卖给你一个 API KEY 令牌,你就可以把 AI 请求发送到他的池子:池子采取一定的算法选取一个 API 账号帮你把请求发送到大模型后端,然后再把大模型返回的结果转发给你。
下面,我们来看看这两种方式怎么申请?
# 1.1 方式一:官方 API 申请
可以参考 《OpenAI API keys 的申请和测试小结 》 (opens new window) 进行申请。
会略微麻烦一些,我自己是直接采用了“方式二:中转 API 申请”。
申请完成后,可以在我们系统的 [AI 大模型 -> 控制台 -> API 密钥] 菜单,进行密钥的配置。只需要填写“密钥”,不需要填写“自定义 API URL”(因为 Spring AI 默认官方地址)。如下图所示:

友情提示:官方的 API 禁止国内直接访问,需要有 VPN 代理~
# 1.2 方式二:中转 API 申请
提供中转 API 服务的有很多,也可以 Google 直接搜索“openai API 中转”,例如说:
- TeamoRouter (opens new window) 【最佳推荐,官方 10% 左右的价格,Codex/Claude Code 也可以用】
- 毫秒 API (opens new window)
- AIHubMix (opens new window)
购买完成后,可以在我们系统的 [AI 大模型 -> 控制台 -> API 密钥] 菜单,进行密钥的配置。需要填写“密钥” + “自定义 API URL”(因为让 Spring AI 使用该地址)。如下图所示:

# 2. 模型配置
友情提示:
目前 ai_model 表中,已经预置了一些模型,可以直接使用!!!
# 2.1 AI 对话
使用 《AI 对话》 时,需要在 [AI 大模型 -> 控制台 -> 模型配置] 菜单,配置对应的聊天模型。
不同模型的 max_tokens(回复数 Token 数)上限不同,可以参考下表填写:
| 模型标识 | max_tokens 最大输出 Tokens |
|---|---|
gpt-6-astra | 128000 |
gpt-6.1-sol | 128000 |
gpt-6.1-terra | 128000 |
gpt-6-luna | 128000 |
gpt-5.4 | 128000 |
gpt-5.4-mini | 128000 |
上述模型的上下文窗口为 1.05M(gpt-5.4-mini 为 400K),见 Models (opens new window)。项目通过 Chat Completions 接口调用 OpenAI,使用 GPT-6 系列需要注意 Using GPT-6 (opens new window) 中的限制:
- 推理强度(
reasoning_effort)不为none时不支持temperature。gpt-6-astra、gpt-6.1-sol不支持none,gpt-6.1-terra、gpt-6-luna默认为medium;而项目当前固定传递模型配置的「温度参数」(未填写时 Spring AI 1.1.8 会补上默认值 0.7),未配置思考等级时也不传递推理强度,与该要求冲突。推理强度可以通过 《推理模式(thinking)》 的思考等级配置,但temperature仍会一并发送,所以配置none以外的档位时,同样会冲突。 gpt-6-astra、gpt-6.1-sol、gpt-6.1-terra的工具调用需要 Responses API,gpt-6-luna仅在推理强度为none时支持 Chat Completions 工具调用,所以角色绑定工具(含 MCP)时不能使用。
gpt-5.4、gpt-5.4-mini 的默认推理强度为 none,不受上述温度限制。另外,项目以 max_tokens 字段发送「回复数 Token 数」,官方已将该字段标记为 Deprecated,推荐使用 max_completion_tokens,见 Create chat completion (opens new window)。
# 2.2 AI 绘图
使用 《AI 绘图》 时,需要在 [AI 大模型 -> 控制台 -> 模型配置] 菜单,配置对应的图像模型。
模型有:gpt-image-2.5-sunburst、gpt-image-2.5-flare、gpt-image-2 等等,见 Image generation (opens new window)。dall-e-3、dall-e-2 已于 2026-05-12 下线,见 Deprecations (opens new window)。
GPT Image 模型不支持 response_format、style 参数(固定返回 Base64),见 Create image (opens new window)。项目 OpenAI 绘图当前固定传递 response_format: b64_json 及风格参数,需要调整这部分代码后才能使用 GPT Image 模型。
# 3. 如何使用?
① 如果你的项目里需要直接通过 @Resource 注入 OpenAiChatModel、OpenAiImageModel 等对象,需要把 application.yaml 配置文件里的 spring.ai.openai 配置项,替换成你的!
spring:
ai:
openai:
api-key: # 你的密钥
base-url: # 如果是中转 API,这里填写中转 API 的地址;如果是官方的,这里不需要填写
② 如果你希望使用 [AI 大模型 -> 控制台 -> API 密钥] 菜单的密钥配置,则可以通过 AiModelService 的 #getChatModel(...) 或 #getImageModel(...) 方法,获取对应的模型对象。
① 和 ② 这两者的后续使用,就是标准的 Spring AI 客户端的使用,调用对应的方法即可。
另外,OpenAIChatModelTests 和 OpenAiImageModelTests 里有对应的测试用例,可以参考。