deepseek

package module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2026 License: MIT Imports: 12 Imported by: 0

README

# adk-deepseek

Go Reference Go Version

DeepSeek 模型适配器 for Google ADK Go v2

实现 google.golang.org/adk/v2/model.LLM 接口,一行代码将 DeepSeek 接入 ADK Agent。

安装

go get github.com/Linsugar/adk-deepseek

快速开始

package main

import (
    deepseek "github.com/Linsugar/adk-deepseek"
    "google.golang.org/adk/v2/agent/llmagent"
)

func main() {
    // 方式 1:自动读环境变量
    llm := deepseek.New("deepseek-v4-flash")

    // 方式 2:直接传 Key(无需配环境变量,Windows 友好)
    // llm := deepseek.New("deepseek-v4-flash", "sk-xxxxxxxxxxxxxxxx")

    agent, _ := llmagent.New(llmagent.Config{
        Name:  "my-assistant",
        Model: llm,
        Instruction: "你是一个有用的AI助手。",
    })
}

环境变量(可选)

如果你不想每次传 Key,可以设环境变量:

# Linux / macOS
export DEEPSEEK_API_KEY="sk-xxx"

# Windows PowerShell
$env:DEEPSEEK_API_KEY = "sk-xxx"

# Windows CMD
set DEEPSEEK_API_KEY=sk-xxx

API Key 优先级:函数参数 > 环境变量

获取 API Key

配置选项

// 方式 1:简洁模式
llm := deepseek.New("deepseek-v4-pro")

// 方式 2:完整配置
llm := deepseek.NewWithConfig(deepseek.Config{
    ModelName: "deepseek-v4-pro",
    APIKey:    os.Getenv("DEEPSEEK_API_KEY"),
    BaseURL:   "https://api.deepseek.com/v1",    // 代理或私有部署
    HTTPClient: &http.Client{Timeout: 30 * time.Second},
})

支持的模型

模型名 说明
deepseek-v4-flash 快速推理(推荐日常使用)
deepseek-v4-pro 旗舰模型(最强推理能力)

工作原理

ADK 内部格式                     DeepSeek API
──────────                       ──────────────
genai.Content (对话)      ──▶    messages
genai.Schema  (工具定义)   ──▶    tools
genai.FunctionCall        ◀──    tool_calls
iter.Seq2 (流式)          ◀──    SSE chunk →

本包在 model.LLM 接口层完成所有格式转换,对 ADK 上层完全透明。

与 Python ADK 对比

# Python ADK
from google.adk.models.lite_llm import LiteLlm
model = LiteLlm(model="deepseek/deepseek-v4-pro", api_base="...")
// Go ADK + adk-deepseek(同等体验)
import deepseek "github.com/Linsugar/adk-deepseek"
model := deepseek.New("deepseek-v4-pro")

许可证

MIT

Documentation

Overview

Package deepseek 为 Google ADK Go v2 提供 DeepSeek 模型适配器。

DeepSeek API 兼容 OpenAI Chat Completion 协议,本包实现 model.LLM 接口, 在 ADK 内部格式(genai.Content)与 OpenAI 格式之间自动转换, 支持流式和非流式两种调用模式。

快速开始

设置环境变量:

export DEEPSEEK_API_KEY="sk-xxx"

一行接入:

import deepseek "github.com/Linsugar/adk-deepseek"

llm := deepseek.New("deepseek-v4-flash")
agent, _ := llmagent.New(llmagent.Config{Model: llm, ...})

支持的模型

deepseek-v4-pro      — 旗舰模型(最强推理能力)
deepseek-v4-flash    — 快速推理(推荐日常使用)

自定义配置

llm := deepseek.New(deepseek.Config{
    ModelName: "deepseek-v4-pro",
    APIKey:    os.Getenv("DEEPSEEK_API_KEY"),
    BaseURL:   "https://api.deepseek.com/v1",
})

实现细节

本包将以下 ADK 类型转换为 OpenAI Chat Completion 格式:

  • genai.Content(对话历史) → messages 数组
  • genai.Schema(工具 JSON Schema) → tools 数组
  • genai.FunctionCall(工具调用) ← tool_calls 字段
  • genai.FunctionResponse(工具结果) → tool 角色消息
  • model.LLMRequest.Config → temperature, max_tokens 等参数

流式模式下,工具调用的函数名和参数可能分多个 SSE chunk 返回, 本包自动累积碎片,流结束后合并为完整的 FunctionCall 事件。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// ModelName DeepSeek 模型名称,如 "deepseek-v4-flash"、"deepseek-v4-pro"。
	ModelName string

	// APIKey 从 DeepSeek 平台获取的 API Key。
	// 若为空,自动从环境变量 DEEPSEEK_API_KEY 读取。
	APIKey string

	// BaseURL API 端点地址,默认 "https://api.deepseek.com/v1"。
	// 可用于代理、私有部署等场景。
	BaseURL string

	// HTTPClient 自定义 HTTP 客户端,nil 使用 http.DefaultClient。
	HTTPClient *http.Client
}

Config 配置 DeepSeek 客户端。

type LLM

type LLM struct {
	// contains filtered or unexported fields
}

LLM 实现 model.LLM 接口,连接 DeepSeek API。

func New

func New(modelName string, fallbackKey ...string) *LLM

New 创建一个 DeepSeek 模型客户端(便捷方法)。

API Key 读取优先级:参数传入 > 环境变量 DEEPSEEK_API_KEY

// 方式 1:自动从环境变量读取(Linux/macOS/Windows 均支持)
llm := deepseek.New("deepseek-v4-flash")

// 方式 2:直接传入 API Key(无需设环境变量,Windows 友好)
llm := deepseek.New("deepseek-v4-flash", "sk-xxxxxxxxxxxxxxxx")

// 方式 3:完整配置
llm := deepseek.NewWithConfig(deepseek.Config{...})

func NewWithConfig

func NewWithConfig(cfg Config) *LLM

NewWithConfig 使用完整配置创建 DeepSeek 模型客户端。

func (*LLM) GenerateContent

func (m *LLM) GenerateContent(ctx context.Context, req *model.LLMRequest, stream bool) iter.Seq2[*model.LLMResponse, error]

GenerateContent 实现 model.LLM 接口。

将 ADK 的 LLMRequest 转换为 OpenAI Chat Completion 格式, 调用 DeepSeek API,然后将响应转回 LLMResponse。

stream=false: 一次性返回完整响应 stream=true: 通过 iter.Seq2 逐个返回 SSE chunk

func (*LLM) Name

func (m *LLM) Name() string

Name 实现 model.LLM 接口。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL