Files
CLIProxyAPI/internal/thinking/provider/xai/apply_test.go
T
Luis Pater bac006e72b feat(thinking): add xAI provider support with reasoning.effort implementation
- Implemented `xAI` provider for thinking configurations with support for reasoning.effort levels.
- Registered `xAI` in available providers and updated relevant APIs for compatibility.
- Added unit tests for `xAI` provider functionality, including fallback logic for unsupported levels.
- Integrated `xAI` with executor handling and ensured conformance with OpenAI-compatible standards.
2026-05-19 03:09:53 +08:00

52 lines
1.4 KiB
Go

package xai
import (
"testing"
"github.com/router-for-me/CLIProxyAPI/v7/internal/registry"
"github.com/router-for-me/CLIProxyAPI/v7/internal/thinking"
"github.com/tidwall/gjson"
)
func TestApplySetsReasoningEffort(t *testing.T) {
applier := NewApplier()
modelInfo := &registry.ModelInfo{
ID: "grok-4.3",
Thinking: &registry.ThinkingSupport{
ZeroAllowed: true,
Levels: []string{"none", "low", "medium", "high"},
},
}
out, err := applier.Apply([]byte(`{"input":"hello"}`), thinking.ThinkingConfig{
Mode: thinking.ModeLevel,
Level: thinking.LevelHigh,
}, modelInfo)
if err != nil {
t.Fatalf("Apply() error = %v", err)
}
if got := gjson.GetBytes(out, "reasoning.effort").String(); got != "high" {
t.Fatalf("reasoning.effort = %q, want high; body=%s", got, string(out))
}
}
func TestApplyNoneFallsBackToLowestLevelWhenDisableUnsupported(t *testing.T) {
applier := NewApplier()
modelInfo := &registry.ModelInfo{
ID: "grok-3-mini",
Thinking: &registry.ThinkingSupport{
Levels: []string{"low", "medium", "high"},
},
}
out, err := applier.Apply([]byte(`{"input":"hello"}`), thinking.ThinkingConfig{
Mode: thinking.ModeNone,
}, modelInfo)
if err != nil {
t.Fatalf("Apply() error = %v", err)
}
if got := gjson.GetBytes(out, "reasoning.effort").String(); got != "low" {
t.Fatalf("reasoning.effort = %q, want low; body=%s", got, string(out))
}
}