Skip to content

fix: 修复 ollama 免 key 无法启动与示例 base_url 缺 /v1#29

Open
525300887039 wants to merge 1 commit into
voocel:mainfrom
525300887039:fix/ollama-keyless-and-base-url
Open

fix: 修复 ollama 免 key 无法启动与示例 base_url 缺 /v1#29
525300887039 wants to merge 1 commit into
voocel:mainfrom
525300887039:fix/ollama-keyless-and-base-url

Conversation

@525300887039
Copy link
Copy Markdown

问题

复现 #28:使用 ollama 时,按 config.example.jsonc 的示例(省略 api_keybase_url 不带 /v1)会启动失败:

error: create models: default model: provider ollama (ollama): provider error: llm: ollama: ollama provider validation failed: ollama: API key is required

根因

  1. api_key 被强制要求createModelFromConfig → litellm client.New() 在构造时无条件调用 provider.Validate()OpenAICompatProvider 未重写导出的 Validate(),沿用 BaseProvider.Validate()(只校验 key 非空),无视 ollama 的 SkipAPIKeyValidation。这与本项目 RequiresAPIKey("ollama") == false 的约定冲突,导致免 key provider 报 API key is required

  2. base_url 缺 /v1:示例里显式写 http://localhost:11434,会被原样拼成 /chat/completions;而 ollama 的 OpenAI 兼容端点在 /v1 下,应为 http://localhost:11434/v1

Ollama 官方文档佐证(docs/api/openai-compatibility.mdx):

  • base_url='http://localhost:11434/v1/'
  • api_key='ollama' # required but ignored —— "set the apiKey to any value, as it is not used by Ollama"

改动

  • internal/bootstrap/models.go:对 RequiresAPIKey == false 的 provider 在 api_key 为空时注入占位 key(no-key),绕过 litellm 构造期校验。ollama 忽略该值;免鉴权自定义代理同理。对 bedrock 无行为变化(其将 api_key 解析为 accessKeyID:secretAccessKey,无冒号占位后仍报相同的 AWS 凭证缺失错误)。
  • config.example.jsonc / internal/bootstrap/setup.go(向导预填 + 内嵌模板)/ README.md:ollama base_url 统一补全 /v1

这样既修好了 issue,也让"ollama / 免鉴权代理可省略 api_key"的文档承诺真正成立。

验证

  • go build ./...go vet ./internal/bootstrap:通过
  • gofmt:改动内容合规
  • go test ./...:通过(internal/rules 有一处 Windows 平台相关的既有失败,与本 PR 无关,已确认在未改动的 main 上同样失败)

Closes #28

litellm 构造客户端时无条件要求 api_key 非空(OpenAICompatProvider 未重写
Validate,沿用 BaseProvider 校验,无视 ollama 的 SkipAPIKeyValidation),
与本项目 RequiresAPIKey 约定冲突,ollama 等免 key provider 报
"ollama: API key is required" 无法启动。

- createModelFromConfig: 对 RequiresAPIKey==false 的 provider 在 key 为空时
  注入占位 api_key 绕过 litellm 构造校验(ollama 忽略该值)
- config.example.jsonc / setup.go / README.md: ollama base_url 补全 /v1
  (OpenAI 兼容端点在 /v1 下,省略会打到 /chat/completions 失败)

Closes voocel#28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bug] readme 中 的 config.example.jsonc 有误

1 participant