fix(provider): normalize dotted anthropic model IDs

This commit is contained in:
Alix-007 2026-03-26 00:48:06 +08:00
parent 82c78e853b
commit 4f658f8e5e
4 changed files with 25 additions and 4 deletions

View file

@ -162,7 +162,7 @@ func buildRequestBody(
}
result := map[string]any{
"model": model,
"model": strings.ReplaceAll(model, ".", "-"),
"max_tokens": int64(maxTokens),
"messages": []any{},
}

View file

@ -117,6 +117,26 @@ func TestBuildRequestBody(t *testing.T) {
},
},
},
{
name: "normalizes dotted anthropic model ID",
messages: []Message{
{Role: "user", Content: "Hello"},
},
model: "claude-sonnet-4.6",
options: map[string]any{
"max_tokens": 8192,
},
want: map[string]any{
"model": "claude-sonnet-4-6",
"max_tokens": int64(8192),
"messages": []any{
map[string]any{
"role": "user",
"content": "Hello",
},
},
},
},
{
name: "missing max_tokens returns error",
messages: []Message{

View file

@ -218,6 +218,7 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err
if cfg.APIKey() == "" {
return nil, "", fmt.Errorf("api_key is required for anthropic protocol (model: %s)", cfg.Model)
}
modelID = strings.ReplaceAll(modelID, ".", "-")
return NewHTTPProviderWithMaxTokensFieldAndRequestTimeout(
cfg.APIKey(),
apiBase,

View file

@ -282,7 +282,7 @@ func TestGetDefaultAPIBase_Mimo(t *testing.T) {
}
}
func TestCreateProviderFromConfig_Anthropic(t *testing.T) {
func TestCreateProviderFromConfig_AnthropicAPIKeyNormalizesDottedModelID(t *testing.T) {
cfg := &config.ModelConfig{
ModelName: "test-anthropic",
Model: "anthropic/claude-sonnet-4.6",
@ -296,8 +296,8 @@ func TestCreateProviderFromConfig_Anthropic(t *testing.T) {
if provider == nil {
t.Fatal("CreateProviderFromConfig() returned nil provider")
}
if modelID != "claude-sonnet-4.6" {
t.Errorf("modelID = %q, want %q", modelID, "claude-sonnet-4.6")
if modelID != "claude-sonnet-4-6" {
t.Errorf("modelID = %q, want %q", modelID, "claude-sonnet-4-6")
}
}