
OpenAI API v1/models returns nothing that v1/internal/model/list does
快速结论:此问题发生在使用 TextGen WebUI 的 OpenAI 兼容 API 时,/v1/models 端点总是返回固定的虚拟模型(如 gpt-3.5-turbo、text-embedding-ada-002),而不是实际加载的模型。优先排查 TextGen WebUI 版本是否低于 v4.1,并考虑升级。
问题场景
用户在使用 TextGen WebUI 提供的 OpenAI 兼容 API 端点(默认端口 5000),通过 /v1/models 接口获取模型列表时,返回结果为固定的虚拟模型名称,而非当前实际加载的模型(例如通过 ExLlamaV2-HF 加载的 Mixtral 8x7B)。这导致使用该 API 的客户端(如 Continue VSCode/Codium 扩展)无法自动检测到可用模型。
报错原文
{
"object": "list",
"data": [
{
"id": "gpt-3.5-turbo",
"object": "model",
"created": 0,
"owned_by": "user"
},
{
"id": "text-embedding-ada-002",
"object": "model",
"created": 0,
"owned_by": "user"
}
]
}
原因分析
根据 Issue 讨论,根本原因是 extensions/openai/script.py 中第 148 行附近的控制器调用了 OAImodels.list_dummy_models(),而非 OAImodels.list_models()。这导致 /v1/models 端点总是返回固定的虚拟模型列表,而不是实际的加载模型。在 TextGen WebUI v4.1 版本中,此问题已被修复——/v1/models 端点现在返回当前加载的模型,而非虚拟条目。
注意:部分社区成员认为此行为可能是故意的,目的是模拟 OpenAI 的响应格式。但实际使用中(如 Continue 集成),虚拟模型无法工作,因此修复是必要的。
环境排查
- 确认 TextGen WebUI 版本(检查
--version或查看CMD_FLAGS.txt)。 - 确认使用的模型加载器(如 ExLlamaV2-HF、AutoGPTQ 等)。
- 确认是否启用了
--api或--openai相关启动参数。 - 确认客户端(如 Continue VSCode/Codium 扩展)的 API 配置是否正确。
解决步骤
- 升级 TextGen WebUI:将 TextGen WebUI 升级到 v4.1 或更高版本。该版本已修复
/v1/models端点返回虚拟模型的问题。 - 验证 API 响应:升级后,通过浏览器或 curl 访问
http://127.0.0.1:5000/v1/models,确认返回的是实际加载的模型名称。 - 替代方案(可选):如果无法升级,可以手动修改
extensions/openai/script.py文件,将第 148 行的list_dummy_models()替换为list_models()。但此方法需要自行承担代码维护风险。
验证方法
在 TextGen WebUI 启动后,使用 curl 命令或浏览器访问 http://127.0.0.1:5000/v1/models。确认返回的 data 列表中包含当前实际加载的模型名称(而非 gpt-3.5-turbo 等虚拟模型)。如果返回的是真实模型名称,则问题已解决。
参考来源
oobabooga/text-generation-webui #5675



