mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
32c864c309
Signed-off-by: Kai Xia <kaix+github@fastmail.com>
163 lines
4.0 KiB
Go
163 lines
4.0 KiB
Go
package agent
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/sipeed/picoclaw/pkg/config"
|
|
)
|
|
|
|
func TestNewAgentInstance_UsesDefaultsTemperatureAndMaxTokens(t *testing.T) {
|
|
tmpDir, err := os.MkdirTemp("", "agent-instance-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
cfg := &config.Config{
|
|
Agents: config.AgentsConfig{
|
|
Defaults: config.AgentDefaults{
|
|
Workspace: tmpDir,
|
|
Model: "test-model",
|
|
MaxTokens: 1234,
|
|
MaxToolIterations: 5,
|
|
},
|
|
},
|
|
}
|
|
|
|
configuredTemp := 1.0
|
|
cfg.Agents.Defaults.Temperature = &configuredTemp
|
|
|
|
provider := &mockProvider{}
|
|
agent := NewAgentInstance(nil, &cfg.Agents.Defaults, cfg, provider)
|
|
|
|
if agent.MaxTokens != 1234 {
|
|
t.Fatalf("MaxTokens = %d, want %d", agent.MaxTokens, 1234)
|
|
}
|
|
if agent.Temperature != 1.0 {
|
|
t.Fatalf("Temperature = %f, want %f", agent.Temperature, 1.0)
|
|
}
|
|
}
|
|
|
|
func TestNewAgentInstance_DefaultsTemperatureWhenZero(t *testing.T) {
|
|
tmpDir, err := os.MkdirTemp("", "agent-instance-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
cfg := &config.Config{
|
|
Agents: config.AgentsConfig{
|
|
Defaults: config.AgentDefaults{
|
|
Workspace: tmpDir,
|
|
Model: "test-model",
|
|
MaxTokens: 1234,
|
|
MaxToolIterations: 5,
|
|
},
|
|
},
|
|
}
|
|
|
|
configuredTemp := 0.0
|
|
cfg.Agents.Defaults.Temperature = &configuredTemp
|
|
|
|
provider := &mockProvider{}
|
|
agent := NewAgentInstance(nil, &cfg.Agents.Defaults, cfg, provider)
|
|
|
|
if agent.Temperature != 0.0 {
|
|
t.Fatalf("Temperature = %f, want %f", agent.Temperature, 0.0)
|
|
}
|
|
}
|
|
|
|
func TestNewAgentInstance_DefaultsTemperatureWhenUnset(t *testing.T) {
|
|
tmpDir, err := os.MkdirTemp("", "agent-instance-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
cfg := &config.Config{
|
|
Agents: config.AgentsConfig{
|
|
Defaults: config.AgentDefaults{
|
|
Workspace: tmpDir,
|
|
Model: "test-model",
|
|
MaxTokens: 1234,
|
|
MaxToolIterations: 5,
|
|
},
|
|
},
|
|
}
|
|
|
|
provider := &mockProvider{}
|
|
agent := NewAgentInstance(nil, &cfg.Agents.Defaults, cfg, provider)
|
|
|
|
if agent.Temperature != 0.7 {
|
|
t.Fatalf("Temperature = %f, want %f", agent.Temperature, 0.7)
|
|
}
|
|
}
|
|
|
|
func TestNewAgentInstance_ResolveCandidatesFromModelListAlias(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
aliasName string
|
|
modelName string
|
|
apiBase string
|
|
wantProvider string
|
|
wantModel string
|
|
}{
|
|
{
|
|
name: "alias with provider prefix",
|
|
aliasName: "step-3.5-flash",
|
|
modelName: "openrouter/stepfun/step-3.5-flash:free",
|
|
apiBase: "https://openrouter.ai/api/v1",
|
|
wantProvider: "openrouter",
|
|
wantModel: "stepfun/step-3.5-flash:free",
|
|
},
|
|
{
|
|
name: "alias without provider prefix",
|
|
aliasName: "glm-5",
|
|
modelName: "glm-5",
|
|
apiBase: "https://api.z.ai/api/coding/paas/v4",
|
|
wantProvider: "openai",
|
|
wantModel: "glm-5",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
tmpDir, err := os.MkdirTemp("", "agent-instance-test-*")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
cfg := &config.Config{
|
|
Agents: config.AgentsConfig{
|
|
Defaults: config.AgentDefaults{
|
|
Workspace: tmpDir,
|
|
Model: tt.aliasName,
|
|
},
|
|
},
|
|
ModelList: []config.ModelConfig{
|
|
{
|
|
ModelName: tt.aliasName,
|
|
Model: tt.modelName,
|
|
APIBase: tt.apiBase,
|
|
},
|
|
},
|
|
}
|
|
|
|
provider := &mockProvider{}
|
|
agent := NewAgentInstance(nil, &cfg.Agents.Defaults, cfg, provider)
|
|
|
|
if len(agent.Candidates) != 1 {
|
|
t.Fatalf("len(Candidates) = %d, want 1", len(agent.Candidates))
|
|
}
|
|
if agent.Candidates[0].Provider != tt.wantProvider {
|
|
t.Fatalf("candidate provider = %q, want %q", agent.Candidates[0].Provider, tt.wantProvider)
|
|
}
|
|
if agent.Candidates[0].Model != tt.wantModel {
|
|
t.Fatalf("candidate model = %q, want %q", agent.Candidates[0].Model, tt.wantModel)
|
|
}
|
|
})
|
|
}
|
|
}
|