feat(session,llm): restore session runtime on resume; align Responses API details
This commit is contained in:
+12
-1
@@ -241,7 +241,7 @@ func normalizeProvider(name string, raw rawProviderConfig) ProviderConfig {
|
||||
}
|
||||
applyModelDefaults(&provider)
|
||||
if provider.ThinkingConfigured && provider.ThinkingParam == "" {
|
||||
provider.ThinkingParam = "thinking"
|
||||
provider.ThinkingParam = DefaultThinkingParam(provider.APIType)
|
||||
}
|
||||
return provider
|
||||
}
|
||||
@@ -268,6 +268,17 @@ func IsAPIType(value string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// DefaultThinkingParam returns the default request field used for the
|
||||
// thinking level. Chat-completions providers historically use a top-level
|
||||
// "thinking" field; the OpenAI Responses API uses "reasoning" with an
|
||||
// {"effort": ...} value.
|
||||
func DefaultThinkingParam(apiType string) string {
|
||||
if apiType == APITypeResponses {
|
||||
return "reasoning"
|
||||
}
|
||||
return "thinking"
|
||||
}
|
||||
|
||||
func normalizeModelConfigs(rawModels []rawModelConfig) ([]string, map[string]ModelConfig) {
|
||||
models := make([]string, 0, len(rawModels))
|
||||
configs := make(map[string]ModelConfig, len(rawModels))
|
||||
|
||||
@@ -441,3 +441,39 @@ providers:
|
||||
t.Fatalf("err = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadDefaultsThinkingParamByAPIType(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
t.Setenv("AGENTU_TEST_KEY", "sk-test")
|
||||
path := filepath.Join(dir, "agentu.yaml")
|
||||
if err := os.WriteFile(path, []byte(`
|
||||
providers:
|
||||
chat:
|
||||
api_type: chat
|
||||
base_url: https://chat.example.com
|
||||
api_key: ${AGENTU_TEST_KEY}
|
||||
models:
|
||||
- id: chat-model
|
||||
thinking: none
|
||||
responses:
|
||||
api_type: responses
|
||||
base_url: https://responses.example.com
|
||||
api_key: ${AGENTU_TEST_KEY}
|
||||
models:
|
||||
- id: responses-model
|
||||
thinking: high
|
||||
`), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cfg, err := Load(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := cfg.Providers["chat"].ThinkingParam; got != "thinking" {
|
||||
t.Fatalf("chat thinking param = %q, want %q", got, "thinking")
|
||||
}
|
||||
if got := cfg.Providers["responses"].ThinkingParam; got != "reasoning" {
|
||||
t.Fatalf("responses thinking param = %q, want %q", got, "reasoning")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user