many improvements

This commit is contained in:
Luxferre
2026-08-15 08:27:24 +03:00
parent 398754dabb
commit e6acb066ca
9 changed files with 283 additions and 22 deletions
+83
View File
@@ -1290,3 +1290,86 @@ func TestCompactHappyPath(t *testing.T) {
t.Errorf("continuation message = %+v", msgs[1])
}
}
// ---------- setCfg and LLM parameter forwarding ----------
func TestSetCfgUpdatesAndAppends(t *testing.T) {
p := filepath.Join(t.TempDir(), "model.cfg")
if err := os.WriteFile(p, []byte("model=old-model\ntemperature=0.5\n"), 0644); err != nil {
t.Fatalf("WriteFile: %v", err)
}
if err := setCfg(p, "model", "new-model"); err != nil {
t.Fatalf("setCfg update: %v", err)
}
if err := setCfg(p, "reasoning_effort", "high"); err != nil {
t.Fatalf("setCfg append: %v", err)
}
cfg := getCfg(p)
if cfg.Model != "new-model" {
t.Errorf("Model = %q, want new-model", cfg.Model)
}
if cfg.Raw["reasoning_effort"] != "high" {
t.Errorf("Raw[reasoning_effort] = %q, want high", cfg.Raw["reasoning_effort"])
}
if cfg.Temperature != 0.5 {
t.Errorf("Temperature = %v, want 0.5", cfg.Temperature)
}
}
func TestLLMForwardsRelevantParameters(t *testing.T) {
var received map[string]any
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
json.NewDecoder(r.Body).Decode(&received)
w.Write([]byte(`{"choices":[{"message":{"role":"assistant","content":"ok"}}]}`))
}))
defer srv.Close()
cfgFile := writeCfg(t, strings.Join([]string{
"endpoint=" + srv.URL,
"model=custom-llm",
"temperature=0.3",
"stream=false",
"reasoning_effort=medium",
"top_p=0.95",
"max_tokens=4096",
"color=always",
"timeout=100",
}, "\n"))
cfg := getCfg(cfgFile)
_, err := llm(&cfg, []Message{{Role: "user", Content: strp("hi")}}, nil)
if err != nil {
t.Fatalf("llm: %v", err)
}
if received["model"] != "custom-llm" {
t.Errorf("model = %v, want custom-llm", received["model"])
}
if received["temperature"] != 0.3 {
t.Errorf("temperature = %v, want 0.3", received["temperature"])
}
if received["stream"] != false {
t.Errorf("stream = %v, want false", received["stream"])
}
if received["reasoning_effort"] != "medium" {
t.Errorf("reasoning_effort = %v, want medium", received["reasoning_effort"])
}
if received["top_p"] != 0.95 {
t.Errorf("top_p = %v, want 0.95", received["top_p"])
}
if received["max_tokens"] != float64(4096) {
t.Errorf("max_tokens = %v, want 4096", received["max_tokens"])
}
if _, exists := received["color"]; exists {
t.Errorf("color should not be forwarded to OpenAI endpoint")
}
if _, exists := received["timeout"]; exists {
t.Errorf("timeout should not be forwarded to OpenAI endpoint")
}
if _, exists := received["endpoint"]; exists {
t.Errorf("endpoint should not be forwarded to OpenAI endpoint")
}
}