模型不存在Model ID / Deployment ID
404 model not found:模型名称不存在或不可访问怎么解决
404 model not found 多数不是网络 404,而是 model 字段、部署 ID、区域或接口类型不匹配。
排查结论
先用最小请求隔离问题:只保留 API Key、Base URL、模型名和一条 ping 消息。最小请求失败,先修配置;最小请求成功,再回到业务代码排查并发、上下文和部署环境。
1. 问题现象
- HTTP 状态码返回 404,错误信息出现 model not found、The model does not exist 或 deployment not found。
- curl 能访问 API,Key 也有效,但只要填某个模型名就失败。
- 从教程、博客或旧项目复制的模型名已经不可用,控制台里找不到。
- OpenAI SDK 能跑一个平台,换到另一个 OpenAI 兼容平台后同样模型名失效。
2. 最可能原因
model 字段不是控制台显示的精确模型 ID,多了空格、大小写错误或用了展示名称。
把 OpenAI 模型名填到了 DeepSeek、Kimi、通义千问等平台。
豆包、Azure OpenAI 等平台要求填写部署名或推理接入点 ID,而不是通用模型名。
模型只在特定区域、项目或套餐下可见。
直连 Claude/Gemini 却使用了 OpenAI 的 /v1/chat/completions 格式。
3. 快速排查清单
1
从控制台复制模型 ID
不要从截图、文章标题或营销名称手打;复制控制台或官方文档里的 exact id。
2
确认接口格式
OpenAI 兼容接口、Anthropic Messages API、Gemini API 的路径和参数并不一样。
3
列出当前 Key 可访问模型
如果平台支持 /v1/models,先打印模型列表;不支持时以控制台接入指南为准。
4
检查部署 ID 和区域
Azure、火山方舟、部分云平台需要填部署名、Endpoint ID 或区域内资源名。
5
清理不可见字符
从网页复制时可能带全角空格、换行或零宽字符,建议重新手动输入一次。
4. 对应 API 的特殊情况
DeepSeek
常见模型名是 deepseek-chat、deepseek-reasoner;不要填 OpenAI 的 gpt-* 模型名。
Kimi
常见模型名包括 moonshot-v1-8k、moonshot-v1-32k、moonshot-v1-128k;长上下文任务要选对应上下文版本。
通义千问 DashScope
OpenAI 兼容模式下用 DashScope 的模型 ID,例如 qwen-plus;Base URL 也要是 compatible-mode/v1。
豆包火山方舟
model 往往填写控制台创建的推理接入点 ID,而不是文章里的通用模型展示名。
Claude / Gemini
直连官方 API 时不要套 OpenAI 的模型名和路径;除非你使用的是明确支持 OpenAI 兼容的网关。
5. 可复制的修复示例
先列出当前 Key 可用的模型 ID
python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["API_KEY"],
base_url=os.environ["BASE_URL"],
)
for item in client.models.list().data:
print(item.id)把输出的 id 原样复制到 chat.completions.create 的 model 字段。
把模型名做成显式配置,避免混用平台
bash
# DeepSeek 示例
export BASE_URL="https://api.deepseek.com"
export MODEL_ID="deepseek-chat"
# Kimi 示例
# export BASE_URL="https://api.moonshot.cn/v1"
# export MODEL_ID="moonshot-v1-8k"每个平台的 Base URL 和模型名一起切换,不要只换其中一个。