Go-DeepSeek调用 DeepSeek 模型:包括在线 API 和本地部署API
DeepSeek
是一个强大的 AI 模型平台,支持多种自然语言处理任务,如对话生成、代码补全和函数调用。为了方便 Go 开发者快速集成 DeepSeek 的功能,我开发了一个非官方的 Go 客户端库:go-deepseek
。本文将详细介绍如何使用该库,从在线 API 调用到本地模型部署,帮助你快速上手。
项目简介
go-deepseek 是一个 Go 语言编写的客户端库,支持以下功能:
- Chat Completion:对话生成
- FIM (Fill-in-Middle) Completion:代码补全
- Function Calling:函数调用
- Embeddings:文本嵌入
此外,go-deepseek
还支持通过 Ollama 调用本地模型(如 deepseek-r1),为开发者提供更灵活的部署选项。
安装
使用以下命令安装 go-deepseek:
go get github.com/p9966/go-deepseek
注意:该库需要 Go 1.23
或更高版本。
快速开始
- 使用 DeepSeek API 进行对话生成
以下是一个简单的示例,展示如何使用go-deepseek调用 DeepSeek 的在线 API 进行对话生成:
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/p9966/go-deepseek"
)
func main() {
client := deepseek.NewClient(os.Getenv("DEEPSEEK_API_KEY"))
request := deepseek.ChatCompletionRequest{
Model: deepseek.DeepSeekChat,
Messages: []deepseek.ChatCompletionMessage{
{
Role: deepseek.ChatMessageRoleUser,
Content: "Hello!",
},
},
}
ctx := context.Background()
resp, err := client.CreateChatCompletion(ctx, &request)
if err != nil {
log.Fatalf("ChatCompletion failed: %v", err)
}
if len(resp.Choices) == 0 {
log.Fatal("No response choices available")
}
fmt.Println(resp.Choices[0].Message.Content)
}
使用 Ollama 调用本地模型
如果你想在本地运行模型,可以通过 Ollama 部署 deepseek-r1,并使用以下代码调用:
package main
import (
"context"
"fmt"
"log"
"github.com/p9966/go-deepseek"
)
func main() {
client := deepseek.Client{
BaseUrl: "http://localhost:11434",
}
request := deepseek.OllamaChatRequest{
Model: "deepseek-r1:7b",
Messages: []deepseek.OllamaChatMessage{
{
Role: "user",
Content: "Hello!",
},
},
}
response, err := client.CreateOllamaChatCompletion(context.TODO(), &request)
if err != nil {
log.Fatalf("Error: %v", err)
}
fmt.Println(response.Message.Content)
}