2026-04-19 15:12:32 +08:00
package llm
import (
2026-04-19 15:58:41 +08:00
"context"
2026-04-19 15:12:32 +08:00
"knowledge-graph-backend/internal/config"
"log"
"testing"
2026-04-19 15:58:41 +08:00
"github.com/tmc/langchaingo/llms"
2026-04-19 15:12:32 +08:00
)
func TestNewClient ( t * testing . T ) {
cfg , err := config . Load ()
if err != nil {
log . Printf ( "[WARN] config.Load() returned error: %v, using default config" , err )
} else {
log . Printf ( "[INFO] config loaded successfully, LLM config: %+v" , cfg . LLM )
}
client , err := NewClient ( cfg . LLM )
if err != nil {
t . Fatalf ( "NewClient() returned unexpected error: %v" , err )
}
log . Printf ( "[INFO] NewClient() succeeded, client created" )
// 验证返回的 Client 实例不为 nil
if client == nil {
t . Fatal ( "NewClient() returned nil client" )
}
log . Printf ( "[INFO] client instance is non-nil, validation passed" )
// 验证 llm 实例被成功创建(不调用,只检查非 nil)
2026-04-20 15:34:40 +08:00
if client . model == nil {
t . Error ( "client.model is nil, expected a non-nil llms.Model" )
2026-04-19 15:12:32 +08:00
} else {
2026-04-20 15:34:40 +08:00
log . Printf ( "[INFO] client.model is non-nil, llms.Model created successfully" )
2026-04-19 15:12:32 +08:00
}
log . Printf ( "[INFO] TestNewClient completed successfully" )
2026-04-19 15:58:41 +08:00
}
func TestClient_Chat ( t * testing . T ) {
// 1. 加载配置
cfg , err := config . Load ()
if err != nil {
log . Printf ( "[WARN] config.Load() returned error: %v, using default config" , err )
} else {
log . Printf ( "[INFO] config loaded successfully, LLM config: %+v" , cfg . LLM )
}
// 2. 创建客户端
client , err := NewClient ( cfg . LLM )
if err != nil {
log . Printf ( "[ERROR] NewClient() returned unexpected error: %v" , err )
t . Fatalf ( "NewClient() returned unexpected error: %v" , err )
}
log . Printf ( "[INFO] NewClient() succeeded, client created" )
messages := [] llms . MessageContent {
{
Role : "human" ,
Parts : [] llms . ContentPart {
llms . TextContent { Text : "你好,请介绍一下你自己" },
},
},
}
log . Printf ( "[INFO] preparing chat request, messages count: %d, content: %q" , len ( messages ), messages [ 0 ]. Parts [ 0 ].( llms . TextContent ). Text )
// 3. 调用被测方法
log . Printf ( "[INFO] calling client.Chat()..." )
got , err := client . Chat ( context . Background (), messages )
2026-04-20 15:34:40 +08:00
2026-04-19 15:58:41 +08:00
// 4. 校验结果
if err != nil {
log . Printf ( "[ERROR] Chat() returned error: %v" , err )
t . Errorf ( "Chat() error = %v, want nil" , err )
return
}
log . Printf ( "[INFO] client.Chat() call completed without error" )
if len ( got ) == 0 {
log . Printf ( "[ERROR] Chat() returned empty response, got: %v" , got )
t . Errorf ( "Chat() returned empty response, want non-empty" )
} else {
// 截取前100个字符打印,防止LLM返回内容过长刷屏,同时方便调试确认内容
preview := got
if len ( preview ) > 100 {
preview = preview [: 100 ] + "..."
}
log . Printf ( "[INFO] Chat() response validation passed, response preview: %q" , preview )
}
log . Printf ( "[INFO] TestClient_Chat completed successfully" )
2026-04-20 14:23:41 +08:00
}
func TestClient_ChatWithSystemPrompt ( t * testing . T ) {
// 1. 加载配置
cfg , err := config . Load ()
if err != nil {
log . Printf ( "[WARN] config.Load() returned error: %v, using default config" , err )
} else {
log . Printf ( "[INFO] config loaded successfully, LLM config: %+v" , cfg . LLM )
}
// 2. 创建客户端
client , err := NewClient ( cfg . LLM )
if err != nil {
log . Printf ( "[ERROR] NewClient() returned unexpected error: %v" , err )
t . Fatalf ( "NewClient() returned unexpected error: %v" , err )
}
log . Printf ( "[INFO] NewClient() succeeded, client created" )
// 3. 构造系统提示词与消息列表
systemPrompt := "你是一个专业的知识图谱助手,请用简洁的中文回答问题。"
messages := [] llms . MessageContent {
{
Role : "human" ,
Parts : [] llms . ContentPart {
llms . TextContent { Text : "请简要介绍一下知识图谱的概念" },
},
},
}
log . Printf ( "[INFO] preparing chat with system prompt request, system prompt: %q, messages count: %d, content: %q" , systemPrompt , len ( messages ), messages [ 0 ]. Parts [ 0 ].( llms . TextContent ). Text )
// 4. 调用被测方法
log . Printf ( "[INFO] calling client.ChatWithSystemPrompt()..." )
got , err := client . ChatWithSystemPrompt ( context . Background (), systemPrompt , messages )
2026-04-20 15:34:40 +08:00
2026-04-20 14:23:41 +08:00
// 5. 校验结果
if err != nil {
log . Printf ( "[ERROR] ChatWithSystemPrompt() returned error: %v" , err )
t . Errorf ( "ChatWithSystemPrompt() error = %v, want nil" , err )
return
}
log . Printf ( "[INFO] client.ChatWithSystemPrompt() call completed without error" )
if len ( got ) == 0 {
log . Printf ( "[ERROR] ChatWithSystemPrompt() returned empty response, got: %v" , got )
t . Errorf ( "ChatWithSystemPrompt() returned empty response, want non-empty" )
} else {
// 截取前100个字符打印,防止LLM返回内容过长刷屏,同时方便调试确认内容
preview := got
if len ( preview ) > 100 {
preview = preview [: 100 ] + "..."
}
log . Printf ( "[INFO] ChatWithSystemPrompt() response validation passed, response preview: %q" , preview )
}
log . Printf ( "[INFO] TestClient_ChatWithSystemPrompt completed successfully" )
2026-04-20 15:34:40 +08:00
}