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

41 lines
1.4 KiB
Go
Raw Permalink Normal View History

2026-07-13 01:15:30 +00:00
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)
}