bac006e72b
- 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.
52 lines
1.4 KiB
Go
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 := ®istry.ModelInfo{
|
|
ID: "grok-4.3",
|
|
Thinking: ®istry.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 := ®istry.ModelInfo{
|
|
ID: "grok-3-mini",
|
|
Thinking: ®istry.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))
|
|
}
|
|
}
|