thread-master/apps/backend/internal/module/ai/openai_compatible_test.go

41 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package ai
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestExtractChatContent_String(t *testing.T) {
raw := []byte(`{"model":"grok-3","choices":[{"finish_reason":"stop","message":{"content":"你好世界"}}]}`)
text, meta, err := extractChatContent(raw)
require.NoError(t, err)
require.Equal(t, "你好世界", text)
require.Equal(t, "stop", meta.FinishReason)
}
func TestExtractChatContent_ArrayParts(t *testing.T) {
raw := []byte(`{"choices":[{"message":{"content":[{"type":"text","text":"第一段"},{"type":"text","text":"第二段"}]}}]}`)
text, _, err := extractChatContent(raw)
require.NoError(t, err)
require.Contains(t, text, "第一段")
require.Contains(t, text, "第二段")
}
func TestExtractChatContent_Empty(t *testing.T) {
raw := []byte(`{"choices":[{"finish_reason":"length","message":{"content":""}}]}`)
text, meta, err := extractChatContent(raw)
require.NoError(t, err)
require.Equal(t, "", text)
require.Equal(t, "length", meta.FinishReason)
}
func TestExtractChatContent_IgnoresReasoningOnly(t *testing.T) {
// deepseek / kimi 思考模型常只回 reasoning_content不可當聊天回覆
raw := []byte(`{"choices":[{"finish_reason":"length","message":{"content":null,"reasoning_content":"我們需要根據最近的對話來回應…"}}]}`)
text, meta, err := extractChatContent(raw)
require.NoError(t, err)
require.Equal(t, "", text)
require.Equal(t, "length", meta.FinishReason)
}