使用 Eino 框架调用 DeepSeek 大模型

1
使用字节 Eino 框架调用 DeepSeek 大模型
安装框架依赖
1
2
go get -v -u github.com/cloudwego/eino/schema
go get -v -u github.com/cloudwego/eino-ext/components/model/deepseek
定义 DeepSeek 大模型使用的配置项
1
2
3
4
// .env
DEEPSEEK_BASE_URL=https://api.deepseek.com // 接口请求地址
DEEPSEEK_MODEL_NAME=deepseek-v4-pro // 模型名称
DEEPSEEK_API_KEY=sh-sfgsadfghsdsaff // 请求密钥
Eino调用DeepSeek大模型例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
func main() {
err := godotenv.Load(".env")
if err != nil {
panic(err)
}
// 创建上下文
ctx := context.Background()

// 初始化 DeepSeek 对话模型实例
model, err := deepseek.NewChatModel(ctx, &deepseek.ChatModelConfig{
APIKey: os.Getenv("DEEPSEEK_API_KEY"),
BaseURL: os.Getenv("DEEPSEEK_BASE_URL"),
Model: os.Getenv("DEEPSEEK_MODEL_NAME"),
})
if err != nil {
log.Fatalf("failed to create chatModel:%v", err)
}

// 构造对话消息列表
// SystemMessage:系统提示词定义 AI 角色人设
// UserMessage:用户提问内容
message := []*schema.Message{
schema.SystemMessage("你是一位友好的 AI 助手"),
schema.UserMessage("你好,请介绍一下 deepseek."),
}
// 调用Generate执行同步对话请求,获取大模型完整返回结果
resp, err := model.Generate(ctx, message)
if err != nil {
log.Fatalf("failed to generate message:%v", err)
}
// 打印模型回复文本内容
log.Printf("generated message:%s", resp.Content)

// 解析 token 消耗统计信息(输入token、输出token、总token)
if resp.ResponseMeta != nil && resp.ResponseMeta.Usage != nil {
log.Printf("prompt token:%d\n", resp.ResponseMeta.Usage.PromptTokens)
log.Printf("completion token:%d\n", resp.ResponseMeta.Usage.CompletionTokens)
log.Printf("total token:%d\n", resp.ResponseMeta.Usage.TotalTokens)
}
}