mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-12 12:17:47 +08:00
80 lines
2.4 KiB
Go
80 lines
2.4 KiB
Go
package openai
|
|
|
|
import "testing"
|
|
|
|
type mockOpenAIConfig struct {
|
|
aliases map[string]string
|
|
wideInput bool
|
|
autoDeleteMode string
|
|
toolMode string
|
|
earlyEmit string
|
|
responsesTTL int
|
|
embedProv string
|
|
}
|
|
|
|
func (m mockOpenAIConfig) ModelAliases() map[string]string { return m.aliases }
|
|
func (m mockOpenAIConfig) CompatWideInputStrictOutput() bool {
|
|
return m.wideInput
|
|
}
|
|
func (m mockOpenAIConfig) CompatStripReferenceMarkers() bool { return true }
|
|
func (m mockOpenAIConfig) ToolcallMode() string { return m.toolMode }
|
|
func (m mockOpenAIConfig) ToolcallEarlyEmitConfidence() string { return m.earlyEmit }
|
|
func (m mockOpenAIConfig) ResponsesStoreTTLSeconds() int { return m.responsesTTL }
|
|
func (m mockOpenAIConfig) EmbeddingsProvider() string { return m.embedProv }
|
|
func (m mockOpenAIConfig) AutoDeleteMode() string {
|
|
if m.autoDeleteMode == "" {
|
|
return "none"
|
|
}
|
|
return m.autoDeleteMode
|
|
}
|
|
func (m mockOpenAIConfig) AutoDeleteSessions() bool { return false }
|
|
|
|
func TestNormalizeOpenAIChatRequestWithConfigInterface(t *testing.T) {
|
|
cfg := mockOpenAIConfig{
|
|
aliases: map[string]string{
|
|
"my-model": "deepseek-chat-search",
|
|
},
|
|
wideInput: true,
|
|
}
|
|
req := map[string]any{
|
|
"model": "my-model",
|
|
"messages": []any{map[string]any{"role": "user", "content": "hello"}},
|
|
}
|
|
out, err := normalizeOpenAIChatRequest(cfg, req, "")
|
|
if err != nil {
|
|
t.Fatalf("normalizeOpenAIChatRequest error: %v", err)
|
|
}
|
|
if out.ResolvedModel != "deepseek-chat-search" {
|
|
t.Fatalf("resolved model mismatch: got=%q", out.ResolvedModel)
|
|
}
|
|
if !out.Search || out.Thinking {
|
|
t.Fatalf("unexpected model flags: thinking=%v search=%v", out.Thinking, out.Search)
|
|
}
|
|
}
|
|
|
|
func TestNormalizeOpenAIResponsesRequestWideInputPolicyFromInterface(t *testing.T) {
|
|
req := map[string]any{
|
|
"model": "deepseek-chat",
|
|
"input": "hi",
|
|
}
|
|
|
|
_, err := normalizeOpenAIResponsesRequest(mockOpenAIConfig{
|
|
aliases: map[string]string{},
|
|
wideInput: false,
|
|
}, req, "")
|
|
if err == nil {
|
|
t.Fatal("expected error when wide input is disabled and only input is provided")
|
|
}
|
|
|
|
out, err := normalizeOpenAIResponsesRequest(mockOpenAIConfig{
|
|
aliases: map[string]string{},
|
|
wideInput: true,
|
|
}, req, "")
|
|
if err != nil {
|
|
t.Fatalf("unexpected error when wide input is enabled: %v", err)
|
|
}
|
|
if out.Surface != "openai_responses" {
|
|
t.Fatalf("unexpected surface: %q", out.Surface)
|
|
}
|
|
}
|