feat: 依据 LLM 参数实例化 client

This commit is contained in:
2026-04-19 15:12:32 +08:00
parent 8cb77d38c1
commit 004a5d685a
4 changed files with 103 additions and 43 deletions
+29
View File
@@ -0,0 +1,29 @@
package llm
import (
"fmt"
"knowledge-graph-backend/internal/config"
"github.com/tmc/langchaingo/llms"
"github.com/tmc/langchaingo/llms/openai"
)
type Client struct {
llm llms.Model
config config.LLMConfig
}
// 创建 LLM 实例
func NewClient(cfg config.LLMConfig) (*Client, error) {
model, err := openai.New(
openai.WithToken(cfg.APIKey),
openai.WithBaseURL(cfg.BaseURL),
openai.WithModel(cfg.Model),
)
if err != nil {
return nil, fmt.Errorf("failed to create llm client: %w", err)
}
return &Client{config: cfg, llm: model}, nil
}
+37
View File
@@ -0,0 +1,37 @@
package llm
import (
"knowledge-graph-backend/internal/config"
"log"
"testing"
)
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)
if client.llm == nil {
t.Error("client.llm is nil, expected a non-nil llms.Model")
} else {
log.Printf("[INFO] client.llm is non-nil, llms.Model created successfully")
}
log.Printf("[INFO] TestNewClient completed successfully")
}