跳到主要内容

R1-0528模型接入指南

课程说明:

  体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(MCP强化班)

d0c81dfe43a1becced8c07db33c3a787_

《2025大模型Agent智能体开发实战》(MCP强化班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

img

同时,5月班重磅新增DeepSeek+Agents SDK+谷歌ADK+MCP技术应用与Qwen3智能体开发相关实战内容:

34533e2c95414b3dc5ab1131d9d1e38

部分项目成果演示

from IPython.display import Video
  • MateGen项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/4.MateGen%20Pro%20%E9%A1%B9%E7%9B%AE%E5%8A%9F%E8%83%BD%E6%BC%94%E7%A4%BA.mp4", width=800, height=400)
  • 智能客服项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E6%99%BA%E8%83%BD%E5%AE%A2%E6%9C%8D%E6%A1%88%E4%BE%8B%E6%BC%94%E7%A4%BA.mp4", width=800, height=400)
  • Dify项目演示
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/2f1b47f42c65fd59e8d3a83e6cb9f13b_raw.mp4", width=800, height=400)
  • LangChain&LangGraph搭建Multi-Agnet
Video("https://ml2022.oss-cn-hangzhou.aliyuncs.com/%E5%8F%AF%E8%A7%86%E5%8C%96%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90Multi-Agent%E6%95%88%E6%9E%9C%E6%BC%94%E7%A4%BA%E6%95%88%E6%9E%9C.mp4", width=800, height=400)

此外,若是对大模型底层原理感兴趣,也欢迎报名由我和菜菜老师共同主讲的《2025大模型原理与实战课程》(5月班)

da5d51c998df07d747cd223c1ed25f7

两门大模型课程5月班目前上新特惠中,立减2000起,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇

ca76dfaf224da7825b4fa3e9c6ab435

DeepSeek-R1-0528模型Agent开发实战

Part 1.R1-0528模型接入指南

一、DeepSeek-R1-0528线API接入指南

1.DeepSeek账号注册与API获取

  在调用DeepSeek R1 API之前,需要先完成注册,并获取对应的API-KEY。DeepSeek官网地址:https://www.deepseek.com/

image-20250327173819455

点击API开放平台,开始注册。注册完成后即可进入到个人主页,可在其中进行充值:

image-20250107155925049

目前DeepSeek按照统一模型名称进行命名,其中deepseek-chat指的是最新版DeepSeek-V3-0324模型,而deepseek-reasoner则指的是最新版DeepSeek-R1-0528模型。其中两款模型定价如下:

image-20250327173652790

目前API调用暂时不限速:

image-20250107160659366

且模型调用风格和OpenAI完全一致,deepseek-chat模型支持Function calling、提示词缓存、Json Output等Agent开发关键功能。

image-20250107161014344 image-20250107161058708

同时,最新发布的deepseek-reasoner(DeepSeek-R1)模型也全新支持了Function calling功能,但官网目前暂时未更新此说明,官网目前还保留着第一代R1模型的功能说明:

image-20250327174215476

2.DeepSeekAPI-KEY获取与DeepSeek-R1-0528模型调用流程

  接下来需要在官网申请API-KEY:https://platform.deepseek.com/api_keys

image-20250107162553252 image-20250107162642821

由于DeepSeek采用OpenAI风格API,因此需要先安装OpenAI库:

! pip install openai

然后按照如下代码进行调用:

import openai
openai.__version__
from openai import OpenAI

接下来需要在项目同级目录下创建一个.env文件存储DeepSeek API Key,并通过如下代码加载到当前的环境变量中:

import os
from dotenv import load_dotenv
load_dotenv(override=True)


DS_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DS_BASE_URL = os.getenv("DEEPSEEK_API_BASE")


print(DS_BASE_URL)
# 实例化客户端
client = OpenAI(api_key=DS_API_KEY,
base_url=DS_BASE_URL)
# 调用 deepseekv3 模型
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
{"role": "user", "content": "你好,好久不见!"}
]
)

本节公开课仍然采用chat.completions进行模型调用,而目前OpenAI已发布最新版Responses API,后续各大厂商或许会兼容Responses API进行模型调用。

# 输出生成的响应内容
print(response.choices[0].message.content)

模型完整回复内容如下:

response

其中reasoning_content字段中的内容则是DeepSeek-R1-0528模型在回答问题之前生成的思考过程信息:

response.choices[0].message.reasoning_content

同样,我们也可以按照如下方式查看DeepSeek目前支持的模型范围:

models_list = client.models.list()
models_list.data

DeepSeek R1 模型是推理模型,提供了多种参数,帮助开发者定制化模型的生成行为。以下是对主要参数的详细解释,以及如何在 Python 中使用这些参数进行请求。

3.DeepSeek-R1-0528API调用过程中参数介绍

3.1 核心参数:messages参数

messages 参数是 DeepSeek R1 模型 API 中必填的参数之一,用于定义聊天上下文,包括用户的输入、系统的指令、助手的回复等。通过 messages 数组,模型可以理解当前对话的背景,从而生成更加连贯的响应。根据不同的使用场景,messages 包含多种类型的消息,例如 system messageuser messageassistant message。下面是对 messages 参数及其各个子类型的详细解释。

3.1.1 System message

system message 用于设置系统消息,通常由开发者设定,以指导模型如何进行对话。这类消息可以定义规则或约束,并提供有关对话的背景信息。

  • content (必填):系统消息的内容,可以是字符串或数组。如果是数组,可能包含多个类型的内容(如文本、图像)。
  • role (必填):此处角色为 system,表明这是系统发出的消息。
  • name (可选):提供系统消息发送者的名称,尤其适用于区分多个具有相同角色的参与者。

示例: FENCE0

# 定义一个字典,键为'system_message',用于存储系统消息
system_message = {
# 'role'键对应的值是一个字符串"system",表示消息的发送者是系统
"role": "system",
# 'content'键对应的值是一个字符串,表示系统消息的内容
"content": "你是一位大学教授。"
}
3.1.2 User message

user message 表示用户发给模型的消息,是对话的核心部分之一。它定义了用户的输入内容,模型根据这些内容生成响应。

  • content (必填):用户消息的内容,通常为文本或图像链接的数组。对于支持图像输入的模型,如 DeepSeek v2.5 ,还可以传递图像。
    • 文本内容:单纯的字符串形式,用户输入的文本。
    • 数组形式的内容:由文本或图像链接组成的数组,可以同时传递多张图像或多段文本内容。
  • role (必填):角色为 user,表示该消息来自用户。
  • name (可选):可以为用户指定一个名称,用于区分多个具有相同角色的用户。

示例: FENCE0

# 创建用户消息
user_message = {
"role": "user",
"content": "你好,请介绍下你自己。"
}
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
system_message,
user_message
]
)
# 输出生成的响应内容
print(response.choices[0].message.content)
  • 测试切换角色
system_message = {"role": "system","content": "你是一名马戏团小丑。"}
user_message = {"role": "user","content": "请帮我介绍下什么是机器学习。"}
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[
system_message,
user_message
]
)

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

3.2 模型其他参数介绍

以下是DeepSeek-v3模型可以调用的全部参数,其中部分参数DeepSeek R1 在官方的说明中显示暂不支持,但经过我们的测试已经有部分参数支持使用,如下所示:

DeepSeek-R1-0528模型 参数汇总表

参数名类型必填/可选默认值说明
modelstring必填指定要使用的模型 ID,例如 deepseek-chatdeepseek-reasoner
storeboolean or null可选false是否存储本次对话的输出,供模型精炼或评估产品使用。
metadataobject or null可选null开发者自定义的标签和值,用于过滤仪表盘中的补全结果。
frequency_penaltynumber or null可选0数值在 -2.02.0 之间,正值减少重复生成内容的可能性。
logit_biasmap可选null调整某些特定 tokens 出现的可能性,值在 -100100 之间。
logprobsboolean or null可选false是否返回生成的每个 token 的对数概率。
top_logprobsinteger or null可选null指定返回最有可能出现的前几个 tokens 及其概率,需开启 logprobs
max_completion_tokensinteger or null可选null指定模型生成的最大 token 数,包括可见文本和推理 tokens。
ninteger or null可选1每个输入生成的对话补全选项数量,值越大,生成的回复越多。
presence_penaltynumber or null可选0数值在 -2.02.0 之间,正值鼓励生成新的主题和内容。
response_formatobject可选null指定生成结果的格式,可以设置为 json_schema 以确保结构化输出,或 json_object 用于 JSON 格式。
seedinteger or null可选null保持生成的一致性,重复相同请求将尽量生成相同的结果。
service_tierstring or null可选auto指定服务延迟等级,适用于付费订阅用户,默认为 auto
stopstring / array / null可选null最多指定 4 个序列,API 遇到这些序列时会停止生成进一步的 tokens。
streamboolean or null可选false是否启用流式响应,若启用,生成的 tokens 将逐步返回。
stream_optionsobject or null可选null流式响应的选项,仅当 streamtrue 时设置。
temperaturenumber or null可选1控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或 top_p,而不是同时调整。
top_pnumber or null可选1使用核采样方法,选择最有可能的 tokens,总概率达到 top_p 百分比。建议与 temperature 二选一。
toolsarray可选null模型可以调用的工具列表,目前仅支持函数调用。
userstring可选null表示最终用户的唯一标识符,用于监控和检测滥用行为。

参数解释:

  1. 模型和输出相关参数

    • model 是必填参数,决定使用哪个模型(如 deepseek-chat deepseek-code)。
    • store 控制是否存储生成的对话结果,便于后续模型训练或评估。
    • metadata 用于添加开发者自定义的标签,便于在仪表盘中过滤补全结果。
    • max_completion_tokensn 控制生成内容的数量和长度,帮助管理生成成本。
  2. 生成行为控制

    • frequency_penaltypresence_penalty 都用于影响生成结果的内容重复度和新颖性。
    • logit_bias 是用于调整特定 token 出现概率的高级控制工具。
    • temperaturetop_p 通过不同的方式控制生成结果的随机性,建议选其一进行调整。
  3. 高级功能

    • logprobstop_logprobs 用于返回每个 token 的概率信息,适合对模型输出进行更细粒度分析。
    • stream 启用后会实时返回生成的结果,适用于需要逐步展示内容的场景。
    • tools 允许模型调用外部工具(如函数),适用于扩展模型的功能。
  4. 服务和用户相关参数

    • service_tier 控制服务的延迟和稳定性,适合高性能要求的付费用户。
    • user 用于标识最终用户,有助于监控使用行为,防止滥用。

image-20250107162553252

大家可以自行尝试进行验证。

4.借助Messages参数构建多轮对话机器人

  • 构建多轮对话机器人
import re
from IPython.display import display, Code, Markdown
# 实例化客户端
client = OpenAI(api_key=DS_API_KEY,
base_url=DS_BASE_URL)
def chat_with_DeepSeek(client, messages):
"""
使用 DeepSeek 模型进行多轮对话。

参数:
client: 实例化的 OpenAI 客户端。
messages (list): 对话上下文消息列表。

返回:
str: 模型生成的回复文本。
"""
response = client.chat.completions.create(
model="deepseek-reasoner", # 注意:这里加载 DeepSeek R1 模型
messages=messages
)
return response.choices[0].message.content

def multi_round_chat(client):
"""
多轮对话机器人示例函数,支持纯文本对话(不处理 URL)。
用户输入 'exit' 时退出对话。
"""
# 初始化消息列表,加入系统消息
messages = [{"role": "system", "content": "你是一名助人为乐的助手。"}]

while True:
user_input = input("User: ").strip()
if user_input.lower() == 'exit':
print("对话结束。")
break

# 直接构造用户消息
messages.append({"role": "user", "content": user_input})

# 调用 DeepSeek 模型获取回复
assistant_reply = chat_with_DeepSeek(client, messages)
display(Markdown(f"Assistant: {assistant_reply}"))

# 添加助手回复到消息列表中
messages.append({"role": "assistant", "content": assistant_reply})
multi_round_chat(client)

二、DeepSeek-R1模型本地指南

  作为开源模型,除了能够借助官网API直接进行调用使用外,同时也支持进行本地部署。不过由于R1模型是671B超大规模参数模型,因此本地部署非常复杂,对于这部分内容感兴趣的同学,可以扫码加入大模型技术社区进行学习:

f2a020126010dddb844f48fd439b366

社区中包含全方位R1、V3模型本地部署指南,包括硬件配置指南、CPU+GPU混合部署等。

image-20250529170750128