many improvements
This commit is contained in:
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user