Local /api/embed and /api/generate return “500 Internal Server Error: tokenize error: {“error”:{“message”:”Invalid API Key”,”type”:”authenti

该报错通常发生在本地 Ollama 环境未配置任何云凭据的情况下,Ollama 调用 /api/embed 或 /api/generate 时返回 401 认证错误。优先排查系统环境变量中是否存在 LLAMA_API_KEY 或 OLLAMA_NEW_ENGINE 残留值。

快速结论:该报错通常发生在本地 Ollama 环境未配置任何云凭据的情况下,Ollama 调用 /api/embed 或 /api/generate 时返回 401 认证错误。优先排查系统环境变量中是否存在 LLAMA_API_KEYOLLAMA_NEW_ENGINE 残留值。

适用环境:Windows 10 (19045.6466),Ollama 0.32.14(通过 winget 安装),未配置 Ollama Cloud 登录、OLLAMA_API_KEY 及反向代理。

最快修复方案:清除用户级与系统级环境变量中的 LLAMA_API_KEYOLLAMA_NEW_ENGINE(设置为 $null),重启 Ollama 服务后即可恢复。

注意事项:该方案基于 Issue 评论中的验证结果,但其后续完整日志未公布,属于“已确认可恢复”的处理方式;如果清除后仍然报错,需检查其他第三方环境变量注入或 Ollama 版本升级残留配置。

问题场景

用户在本机安装 Ollama 0.32.14(winget 安装),未登录 Ollama Cloud、未设置 OLLAMA_API_KEY、无反向代理。在调用本地嵌入模型(如 nomic-embed-text-v2-moe)、命令行 ollama run qwen3.5:0.8b 或通过 curl 请求 /api/embed 时,均返回 500 错误,错误体为“tokenize error”并嵌套 401 认证异常。该错误与模型无关(在 3 个不同模型上复现),且与客户端无关(原生 curl 同样触发)。

报错原文

{"error":"tokenize error: {\"error\":{\"message\":\"Invalid API Key\",\"type\":\"authentication_error\",\"code\":401}}"}
Error: 500 Internal Server Error: tokenize error: {"error":{"message":"Invalid API Key","type":"authentication_error","code":401}}

原因分析

该错误的 JSON 结构("type":"authentication_error","code":401)与 llama-server 原生的纯文本 Unauthorized: Invalid API Key 输出不一致,说明认证异常可能由请求路径中的其他组件包装后通过 Ollama 的“tokenize error:”前缀返回。根据 Issue 评论中的排查线索,可能原因是系统或用户环境变量中存在 LLAMA_API_KEYOLLAMA_NEW_ENGINE 的残留值,导致 Ollama 在 tokenize 阶段错误地尝试进行云 API 认证。用户最初忽略了这两个变量,直到评论者提醒后才通过 CMD 的 set | findstr LLAMA 发现。

环境排查

  • 检查 PowerShell 或 CMD 中 LLAMA_API_KEY 环境变量(用户级和系统级)。
  • 检查 OLLAMA_NEW_ENGINE 环境变量(用户级和系统级)。
  • 确认 OLLAMA_API_KEY 是否已彻底清除(用户与机器作用域)。
  • 确认 ~/.ollama/id_ed25519 是否存在(虽然 Issue 中删除后错误未变,但建议检查残留备份)。
  • 确认当前 Ollama 版本是否为 0.32.14,以及升级前是否使用过其他 API Key 配置。

解决步骤

  1. 打开 PowerShell 或 CMD,运行 set | findstr LLAMA,确认是否存在 LLAMA_API_KEY 或其他包含 LLAMA 的变量。
  2. 如果存在,执行以下命令清除用户级和系统级变量(需要管理员权限):
  3. [Environment]::SetEnvironmentVariable("LLAMA_API_KEY", $null, "User")
  4. [Environment]::SetEnvironmentVariable("OLLAMA_NEW_ENGINE", $null, "User")
  5. [Environment]::SetEnvironmentVariable("LLAMA_API_KEY", $null, "Machine")
  6. [Environment]::SetEnvironmentVariable("OLLAMA_NEW_ENGINE", $null, "Machine")
  7. 重启 Ollama 服务(任务管理器结束 ollama.exe 进程后重新启动,或使用 ollama stop 后重启)。
  8. 重新尝试 ollama run qwen3.5:0.8b 或 curl 请求 /api/embed 验证。

验证方法

清除变量并重启服务后,使用同一型号重新执行 curl http://127.0.0.1:11434/api/embed -d '{"model":"nomic-embed-text-v2-moe","input":"test"}',如果返回正常的嵌入向量 JSON(不再包含 "error" 字段),说明问题已解决。

参考来源

ollama/ollama #17822

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19754

发表回复

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