2025年2月6日

如何使用DeepSeek的API开发大模型应用

作者 柳 永强
内容目录

如何使用DeepSeek的API开发大模型应用

DeepSeek-v3 和 DeepSeek-r1

最近Deepseek因为连续发布了Deepseek-v3和Deepseek-r1两个模型而迅速出圈,在全球科技领域引起了很大的轰动。

Deepseek2024年12月底发布并开源了DeepSeek-V3模型,性能可比肩顶级闭源模型。

Deepseek2025年1月发布了推理模型DeepSeek-R1,在多项测试中超越了OpenAI的o1模型。

以下是它们的基本介绍:

DeepSeek-V3

DeepSeek-V3 是一种混合专家(MoE)模型,具有 6710 亿参数,同时激活 370 亿参数。它在知识基础任务、长文本处理、代码生成和数学推理方面表现出色。它在中文语言能力方面也颇具特色。DeepSeek-V3 结合了多头潜在注意力(MLA)、DeepSeekMoE 和多标记预测(MTP)等创新。

主要特性和亮点:

  • 性能:DeepSeek V3 在一些领域超越了其他开源模型,并在某些方面与顶尖闭源模型如 GPT-4o 和 Claude 竞争。它在 MMLU(EM)上达到了 88.5% 的准确率,在 MMLU-Redux(EM)上达到了 89.1% 的准确率。
  • 速度:其生成速度提高了三倍,从每秒 20 个标记增加到 60 个标记(TPS)。
  • 架构:DeepSeek-V3 采用了一种新的负载平衡策略,不依赖于辅助损失。它使用细粒度专家系统,动态调整专家路由,以确保负载平衡而不牺牲模型性能。
  • 训练:DeepSeek-V3 使用 FP8 混合精度训练框架,完成了对 14.8 万亿标记的预训练,使用了 2.664M H800 GPU 小时。它从 DeepSeek R1 等模型中提炼推理能力,以提高其推理性能。

DeepSeek R1

DeepSeek R1 是一个基于开源和强化学习(RL)的模型,以其推理能力而闻名。它几乎完全依赖于 RL 进行微调,最小化了对标记数据集的需求。

主要特性和亮点:

  • 推理:DeepSeek R1 在数学、代码和自然语言任务中表现出强大的推理能力。在 AIME 2024 数学竞赛中,它达到了 79.8% 的 pass@1 得分。在 Codeforces 上获得了 2029 Elo 评分,超过了 96.3% 的人类参与者。
  • 训练:DeepSeek R1 使用多阶段训练过程,在强化学习之前集成冷启动数据。它采用基于规则的方法,确保可扩展的强化学习,并将强大的推理能力推广到其他领域。
  • 性价比:与 OpenAI 的 o1 模型相比,DeepSeek R1 的训练成本更低。每百万个标记的输入成本便宜 90%,输出价格约低 27 倍。
  • 开源:DeepSeek R1 在 MIT 许可下开源,允许用户自由使用、修改、分发和商业化该模型。

申请DeepSeek的API Key

进入DeepSeek官网, 点击右上角的“API开放平台”按钮,进入API开放平台页面。
选择“API Key”,点击“创建API Key”按钮,创建一个API Key。将你的API Key保存到安全的地方,后续会用到。

使用API Key调用DeepSeek的API

使用curl调用DeepSeek的API


curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer " \
  -d '{
        "model": "deepseek-chat",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "stream": false
      }'

使用Python调用DeepSeek的API

DeepSeek的API与OpenAI的API兼容,因此完全可以使用OpenAI的SDK直接调用DeepSeek的API。
这也是官方文档推荐的方法。


# Please install OpenAI SDK first: pip3 install openai

from openai import OpenAI

client = OpenAI(api_key="", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

使用Langchain封装的接口调用DeepSeek的API

使用OpenAI的库是相对简单和直接的方法,但是OpenAI的库功能相对单一,如果需要更复杂
的功能,比如链式调用、内存管理、工具调用等,还是需要使用LangChain。

LangChain介绍

LangChain 是一个用于开发由大型语言模型(LLMs)驱动的应用程序的框架。简化了 LLM
应用程序生命周期的每个阶段,提供了一套工具、组件和接口,帮助开发者更高效地构建智
能应用。 LangChain 的主要功能包括:

  • 模型输入/输出(Model I/O):理大型语言模型的输入(Prompts)和输出格式化
    (Output Parsers)。
  • 数据连接(Data Connection):理向量数据存储(Vector Stores)、内容数据获取
    (Document Loaders)和转换(Transformers),以及向量数据查询(Retrievers)。
  • 记忆(Memory):于存储和获取对话历史记录的功能模块。
  • 链(Chains): Memory、Model I/O 和 Data Connection 串联起来,实现连续对话
    和推理流程。
  • 代理(Agents):于 Chains 进一步集成工具(Tools),将大语言模型的能力与本
    地或云服务结合。
  • 回调(Callbacks):供回调系统,可连接到 LLM 应用的各个阶段,便于日志记录和
    追踪。过这些功能,开发者可以创建各种应用程序,包括聊天机器人、智能问答工具、文档
    摘要生成等。

LangChain 还支持与外部数据源的连接,使语言模型能够与其环境进行交互,增强应用程序
的功能和灵活性。2022 年 10 月推出以来,LangChain 迅速获得了开发者的关注和支持,
成为构建 LLM 驱动应用程序的强大工具。

使用LangChain Python调用DeepSeek的API


# 安装必要库(如果未安装)
# pip install langchain-core langchain-openai

import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

# 设置环境变量(替换为您的API Key)
os.environ["DEEPSEEK_API_KEY"] = "sk-your-api-key-here"

# 创建 DeepSeek 模型实例
# 假设 DeepSeek API 兼容 OpenAI 格式
model = ChatOpenAI(
    model="deepseek-chat",  # 指定模型名称
    base_url="https://api.deepseek.com/v1",  # DeepSeek API 地址
    api_key=os.environ["DEEPSEEK_API_KEY"],
    temperature=0.7,  # 控制生成随机性(0-1)
    max_tokens=512  # 最大输出长度
)

# 创建对话提示模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个乐于助人的AI助手"),
    ("user", "{input}")
])

# 创建简单对话链
chain = prompt | model

# 执行对话
response = chain.invoke({
    "input": "请用Python写一个快速排序算法,并解释其原理"
})

print("AI回复:\n", response.content)

另外一种选择是,最新的langchain库已经提供了deepseek的扩展库 langchain-deepseek
因此直接使用该库,也可以很方便的调用DeepSeek的API。


# 安装必要库(如果未安装)
# pip install -U langchain-deepseek
export DEEPSEEK_API_KEY="your-api-key"

from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    # api_key="...",
    # other params...
)

messages = [
    ("system", "You are a helpful translator. Translate the user sentence to French."),
    ("human", "I love programming."),
]
response = llm.invoke(messages)
print(response)

# Stream response
response = llm.stream(messages)
for chunk in response:
    print(chunk)

使用LangChain Go调用DeepSeek的API

Golang 非常适合开发云原生后端应用,同时相比Python,Golang的性能更高,更适合开发高性能的应用。
LangchainGo is the Go Programming Language port/fork of LangChain.
以下提供一个使用LangchainGo调用DeepSeek的API的示例。


package main

import (
    "context"
    "fmt"
    "log"

    "github.com/tmc/langchaingo/llms"
    "github.com/tmc/langchaingo/llms/openai"
)

func main() {
    // Initialize the OpenAI client with Deepseek model
    llm, err := openai.New(
        openai.WithModel("deepseek-reasoner"),
    )
    if err != nil {
        log.Fatal(err)
    }

    ctx := context.Background()

    // Create messages for the chat
    content := []llms.MessageContent{
        llms.TextParts(llms.ChatMessageTypeSystem, "You are a helpful assistant that explains complex topics step by step"),
        llms.TextParts(llms.ChatMessageTypeHuman, "Explain how quantum entanglement works and why it's important for quantum computing"),
    }

    // Generate content with streaming to see both reasoning and final answer in real-time
    completion, err := llm.GenerateContent(
        ctx,
        content,
        llms.WithMaxTokens(2000),
        llms.WithTemperature(0.7),
        llms.WithStreamingFunc(func(ctx context.Context, chunk []byte) error {
            fmt.Print(string(chunk))
            return nil
        }),
    )
    if err != nil {
        log.Fatal(err)
    }

    // Access the reasoning content and final answer separately
    if len(completion.Choices) > 0 {
        choice := completion.Choices[0]
        fmt.Printf("\n\nReasoning Process:\n%s\n", choice.ReasoningContent)
        fmt.Printf("\nFinal Answer:\n%s\n", choice.Content)
    }
}

使用DeepSeek模型开发智能应用的场景

DeepSeek 模型和其他大模型一样,在多个领域具有广泛的应用:

  • 城市治理:AI 可以处理公众请求,协助政府工作人员,并通过 AI 助手和公众关切问题的智能分析来支持决策制定。
  • 客户服务:通过集成 DeepSeek API,企业可以创建 24/7 全天候可用的 AI 助手,用于回答客户问题并提高响应速度。
  • 内容创作:DeepSeek 能够快速生成高质量的文本,例如新闻报道、博客文章和营销内容,提高内容创作效率。
  • 教育:DeepSeek 可用于开发智能教育平台,根据学生的表现个性化学习计划,识别知识盲点,并提供针对性的练习。
  • 医疗:DeepSeek 的智能诊断系统可以快速分析医学影像,提供精准的诊断建议,从而辅助诊断和药物研发。
  • 金融:它可以分析金融数据,提供投资建议、风险评估以及欺诈预防。

DeepSeek 模型还可应用于智能家居,实现语音交互和场景识别;在智能交通领域,用于优化交通流量和辅助驾驶。

此外,DeepSeek 模型适用于需要高推理能力的任务,例如解决数学问题、编写代码以及处理逻辑复杂的场景。
DeepSeek V3 模型兼容 OpenAI API,具有高性价比和优异性能,能够降低获取、部署和使用大模型的成本,
加速其在商业和消费场景中的应用。

我个人的开发案例

目前我正在探索使用AI大模型来提升Linux运维效率,以下是一些探索和实践。

基于DeepSeek 的 nuwa-terminal 智能终端助手

nuwa-terminal 是一个在终端中与大语言模型(LLM)聊天的程序,该工具基于LLM,旨在使终端更加智能。这个终端可以帮助用户使用自然语言 执行命令或任务,同时它还可以作为终端智能助手,你可以询问任何关于软件开发的任何问题。

该文章基于原生deepseek开发的智能终端工具nuwa-terminal 会有详细的介绍。

GitHub地址:nuwa-terminal

基于DeepSeek 的 Linux 系统监控程序

AI Agentic Monitor 是一个基于 AI 智能体技术的系统监控工具。它旨在监控Linux及Cloud系统的状态,并提供实时警报和系统优化建议。
它还非常智能,可以帮助您找到问题的根本原因并提供解决方案。目前该项目还在开发中,欢迎感兴趣的朋友一起参与。

GitHub地址:AI Agentic Monitor