fix: use Anthropic SDK when api_key is configured

When provider=anthropic and api_key is set in config, use the Anthropic
SDK instead of generic HTTP provider to avoid 404 errors on
/v1/chat/completions.
This commit is contained in:
root 2026-02-19 12:23:39 +00:00
parent b1e3b11a5d
commit 292d866b7c

View file

@ -6,6 +6,7 @@ import (
"github.com/sipeed/picoclaw/pkg/auth" "github.com/sipeed/picoclaw/pkg/auth"
"github.com/sipeed/picoclaw/pkg/config" "github.com/sipeed/picoclaw/pkg/config"
anthropicprovider "github.com/sipeed/picoclaw/pkg/providers/anthropic"
) )
const defaultAnthropicAPIBase = "https://api.anthropic.com/v1" const defaultAnthropicAPIBase = "https://api.anthropic.com/v1"
@ -17,6 +18,7 @@ type providerType int
const ( const (
providerTypeHTTPCompat providerType = iota providerTypeHTTPCompat providerType = iota
providerTypeClaudeAuth providerTypeClaudeAuth
providerTypeClaudeAPIKey
providerTypeCodexAuth providerTypeCodexAuth
providerTypeCodexCLIToken providerTypeCodexCLIToken
providerTypeClaudeCLI providerTypeClaudeCLI
@ -118,6 +120,7 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
if sel.apiBase == "" { if sel.apiBase == "" {
sel.apiBase = defaultAnthropicAPIBase sel.apiBase = defaultAnthropicAPIBase
} }
sel.providerType = providerTypeClaudeAPIKey
} }
case "openrouter": case "openrouter":
if cfg.Providers.OpenRouter.APIKey != "" { if cfg.Providers.OpenRouter.APIKey != "" {
@ -342,6 +345,8 @@ func CreateProvider(cfg *config.Config) (LLMProvider, error) {
switch sel.providerType { switch sel.providerType {
case providerTypeClaudeAuth: case providerTypeClaudeAuth:
return createClaudeAuthProvider(sel.apiBase) return createClaudeAuthProvider(sel.apiBase)
case providerTypeClaudeAPIKey:
return anthropicprovider.NewProviderWithBaseURL(sel.apiKey, sel.apiBase), nil
case providerTypeCodexAuth: case providerTypeCodexAuth:
return createCodexAuthProvider(sel.enableWebSearch) return createCodexAuthProvider(sel.enableWebSearch)
case providerTypeCodexCLIToken: case providerTypeCodexCLIToken: