OpenAI API v1/models returns nothing that v1/internal/model/list does

在 TextGen WebUI 中调用 OpenAI 兼容接口 /v1/models 时,返回的却是固定的 GPT 占位模型(如 gpt-3.5-turbo 、 text-embedding-ada-002 ),而不是本地实际加载的模型。优先确认 WebUI 版本,v4.1 之前属于已知行为。

快速结论:在 TextGen WebUI 中调用 OpenAI 兼容接口 /v1/models 时,返回的却是固定的 GPT 占位模型(如 gpt-3.5-turbo、text-embedding-ada-002),而不是本地实际加载的模型。优先确认 WebUI 版本,v4.1 之前属于已知行为。

适用环境:Issue 中涉及 TextGen WebUI 的 OpenAI 兼容 API 扩展(extensions/openai/script.py),用户通过 http://127.0.0.1:5000/docs 或脚本访问接口;评论中提到使用 exllamav2-hf loader 加载 mixtral8x7b,并提到 Continue(VSCode/Codium 扩展)。Issue 未提供系统、Python、CUDA、显卡等具体版本信息。

最快修复方案:升级到 TextGen WebUI v4.1。该版本已修复 /v1/models,使其返回当前已加载模型而不是占位条目。

注意事项:v4.1 修复后 /v1/models 只返回当前已加载的模型,而不是所有可用模型;评论中有人据此指出文档描述与实际返回不一致。发送与当前已加载模型不同的模型名是否会触发模型重载,Issue 中未给出验证结论。

问题场景

用户在 TextGen WebUI 中启用 OpenAI 兼容 API,然后通过以下几种方式访问模型列表接口:直接打开 http://127.0.0.1:5000/docs 对比返回结果、用脚本调用 API,或使用 Continue(VSCode/Codium 扩展)的自动检测模型功能。结果发现 /v1/models 和内部接口 /v1/internal/model/list 返回的内容完全不同:前者永远是 GPT 占位模型,后者才反映本地实际模型。

报错原文

OpenAI API v1/models returns nothing that v1/internal/model/list does

{"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"}]}

用户反馈:无论当前加载了什么模型,/v1/models 都返回上述固定内容;加载 mixtral8x7b 时也照样返回 chatgpt3.5。这导致 Continue 等依赖 OpenAI 模型列表做自动检测的客户端“看不到”本地模型,只能手动写入其 config.json。

原因分析

评论中有人定位到 extensions/openai/script.py 第 148 行:控制器调用的是 response = OAImodels.list_dummy_models(),而不是 response = OAImodels.list_models()。因此 /v1/models 返回的是模拟 OpenAI 响应的占位模型,本地模型列表需要通过 /v1/internal/model/list 这个内部接口获取。

关于这是否属于有意设计,评论中存在分歧:有人认为这是刻意模仿 OpenAI 返回的行为,也有人认为真正的 OpenAI API 兼容性需要返回真实模型。最终该问题在 v4.1 中按修复方向处理。

环境排查

  • 确认 TextGen WebUI 版本:v4.1 之前存在该问题,v4.1 已修复。
  • 确认 OpenAI 兼容 API 扩展是否启用,以及接口是否运行在 127.0.0.1:5000。
  • 确认当前加载的模型与 loader(评论中出现 exllamav2-hf)。
  • 确认调用方是直接访问 /v1/models,还是内部接口 /v1/internal/model/list。
  • Issue 未提供 Python、CUDA、PyTorch、显卡等版本信息,暂无需据此排查。

解决步骤

  1. 升级 TextGen WebUI 到 v4.1 或更高版本。官方在 v4.1 发布说明中确认:/v1/models 现在返回当前已加载的模型,而不是占位条目。
  2. 升级后重启 WebUI,重新加载目标模型。
  3. 如果暂时无法升级,可继续使用内部接口 /v1/internal/model/list 获取本地模型列表,或在客户端(如 Continue)中手动配置模型名。
  4. 如果使用依赖 OpenAI 模型列表自动检测的客户端,更新后重新触发自动检测,确认能识别到本地已加载模型。

验证方法

升级到 v4.1 后,重新访问 http://127.0.0.1:5000/v1/models,确认返回的 id 是当前实际加载的模型,而不是 gpt-3.5-turbo 或 text-embedding-ada-002。同时可对比 /v1/internal/model/list 的结果,或在 Continue 中重新执行自动检测,确认本地模型被正确列出。

参考来源

oobabooga/textgen #5675

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25589

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注