在 Dify 里接入本地 Xinference 时出现 “Model Not Found”,通常不是网络不通,也不是 Xinference 服务没起来,而是 Dify 拿到的模型标识与 Xinference 实际注册的模型名不一致。Dify 配置模型时填的“模型名称”必须与 Xinference 启动时注册的模型名称完全一致,包括大小写、后缀和路径形式。先不要改 Dify 代码或 Xinference 源码,优先核对两端实际使用的模型标识。
排查方向很明确:先确认 Xinference 侧模型注册名,再查看 Dify 请求日志中实际发送的模型名。两者一致时,再检查模型路径和格式是否合法。只改配置、不动代码,通常能解决绝大多数 “Model Not Found”。若仍失败,需要进入 Xinference 前端的模型列表页,看注册名是否被转换或追加了后缀。
先确认 Xinference 侧的模型注册名
使用 Xinference 启动模型时,模型名由两个地方决定:`--model-name` 参数和模型实际加载路径。无论你从 Hugging Face 拉取还是本地目录加载,Xinference 都以你指定的注册名为准。例如执行:
xinference launch `--model-name` my-embedding `--model-type` embedding `--model-path` /data/models/bge-large-zh-v1.5此时 Xinference 内部注册的是 my-embedding,不是 bge-large-zh-v1.5。如果之后在模型列表里看到的名字带着完整路径,比如 /data/models/bge-large-zh-v1.5,那也是合法注册名,但 Dify 端必须对应填写这个完整路径形式。
验证方式:在 Xinference 的 Web 管理界面打开“模型列表”,或者执行 xinference list,直接看列表里显示的模型名称。这个名称就是 Dify 要填的“Model Name”。如果列表为空,说明模型没有启动成功,或者服务地址不对,此时应先解决 Xinference 侧启动问题。
核对 Dify 中的模型配置
进入 Dify 的设置页面,选择“模型供应商”里的 Xinference 类型。需要检查两个字段:
- Server URL:是否是 Xinference 的对外地址,比如
http://127.0.0.1:9997。如果 Dify 部署在容器里,不能写localhost,要写宿主机 IP 或容器网络内可访问的地址。 - Model Name:必须和 Xinference 列表里的名称一模一样,建议直接复制。
常见错误是 Dify 里填了底层模型 ID,或填了模型目录名,而 Xinference 注册名加了业务前缀。比如 Xinference 注册名是 text-embedding-v1,Dify 里写成了 BAAI/bge-large-zh-v1.5,必然报错。
还有一种情况:Dify 里同时配置了多个同类型 Xinference 模型,比如两个 Embedding 模型,但默认模型选错了。Dify 调用时用的是“当前会话关联的模型”,而不一定是你刚才配置的那个。到“模型供应商”页面把 Xinference 的模型设置为默认,或者在知识库索引设置里重新选择该模型。
看请求日志:确认实际发送的模型名
如果两端配置看起来一致,仍报错,需要抓实际请求。在 Xinference 的日志里,或者用调试工具捕获 Dify 发出的 API 请求,重点看请求 JSON 里的 model 字段。
Dify 调用 Xinference 的 OpenAI 兼容接口时,请求体类似:
POST /v1/chat/completions
{
"model": "my-embedding",
"input": "...",
"encoding_format": "float"
}如果这里的 model 值和 Xinference 列表不一致,说明 Dify 端保存的配置有误,可能是模型名后面带了空格,或者复制时带上了换行。把 model 值改成 Xinference 列表中的显示值,重启 Dify 的模型服务或刷新页面即可。
验证清单与路径边界
- 在 Xinference 命令行执行
xinference list,记录返回的模型名称。 - 在 Dify 模型配置页面,把“Model Name”改为该名称,保存后重新发起调用。
- 如果仍报错,重启 Xinference 并重新注册模型,确认注册名没有临时性变更。
- 对于本地目录加载的模型,确保
`--model-path`指向的目录存在且包含完整模型文件,否则 Xinference 可能在启动时静默失败,列表里只有旧记录。
路径问题要单独看待:模型路径不匹配通常会在 Xinference 启动阶段报错,而不是在 Dify 调用时报 “Model Not Found”。如果 Xinference 列表里能看见模型,路径就基本没问题。真正需要关注的还是注册名与 Dify 配置的映射。若你把模型放在自定义目录下,建议先使用绝对路径启动,再在列表里确认最终名称,同时注意 Dify 配置的 Server URL 也要匹配 Xinference 的防火墙监听地址。