|
- package openaicompat
-
- import (
- "github.com/QuantumNous/new-api/common"
- "testing"
-
- "github.com/QuantumNous/new-api/dto"
- "github.com/QuantumNous/new-api/setting/model_setting"
- "github.com/stretchr/testify/require"
- )
-
- func TestShouldChatCompletionsUseResponsesPolicyRequiresEnabledChannelAndMatchingModel(t *testing.T) {
- policy := model_setting.ChatCompletionsToResponsesPolicy{
- Enabled: true,
- ChannelIDs: []int{42},
- ModelPatterns: []string{`^gpt-5(?:-mini)?$`, `[`},
- }
-
- require.True(t, ShouldChatCompletionsUseResponsesPolicy(policy, 42, 0, "gpt-5-mini"))
- require.False(t, ShouldChatCompletionsUseResponsesPolicy(policy, 42, 0, "gpt-4o"))
- require.False(t, ShouldChatCompletionsUseResponsesPolicy(policy, 7, 0, "gpt-5"))
- }
-
- func TestNormalizeChatImageURLToStringSupportsSDKAndDecodedForms(t *testing.T) {
- require.Equal(t, "https://example.com/image.png", normalizeChatImageURLToString("https://example.com/image.png"))
- require.Equal(t, "https://example.com/image.png", normalizeChatImageURLToString(map[string]any{"url": "https://example.com/image.png"}))
- require.Equal(t, "https://example.com/image.png", normalizeChatImageURLToString(&dto.MessageImageUrl{Url: "https://example.com/image.png"}))
-
- unknown := map[string]any{"other": "value"}
- require.Equal(t, unknown, normalizeChatImageURLToString(unknown))
- }
-
- func TestConvertChatResponseFormatToResponsesTextFlattensJSONSchema(t *testing.T) {
- input := &dto.ResponseFormat{Type: "json_schema", JsonSchema: []byte(`{"name":"answer","json_schema":{"schema":{"type":"object"},"strict":true}}`)}
-
- raw := convertChatResponseFormatToResponsesText(input)
- var payload map[string]map[string]any
- require.NoError(t, common.Unmarshal(raw, &payload))
- format := payload["format"]
- require.Equal(t, "json_schema", format["type"])
- require.Equal(t, "answer", format["name"])
- require.Equal(t, true, format["strict"])
- require.Equal(t, map[string]any{"type": "object"}, format["schema"])
- }
-
- func TestShouldChatCompletionsUseResponsesPolicyAllowsConfiguredChannelType(t *testing.T) {
- policy := model_setting.ChatCompletionsToResponsesPolicy{
- Enabled: true,
- ChannelTypes: []int{9},
- ModelPatterns: []string{`^o[0-9]+$`},
- }
-
- require.True(t, ShouldChatCompletionsUseResponsesPolicy(policy, 0, 9, "o3"))
- }
|