R1-0528模型接入指南
课程说明:
- 体验课内容节选自《2025大模型Agent智能体开发实战》(MCP强化班) 完整版付费课程
体验课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《2025大模型Agent智能体开发实战》(MCP强化班)
《2025大模型Agent智能体开发实战》(MCP强化班) 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!
同时,5月班重磅新增DeepSeek+Agents SDK+谷歌ADK+MCP技术应用与Qwen3智能体开发相关实战内容:
部分项目成果演示
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月班)
两门大模型课程5月班目前上新特惠中,立减2000起,合购还有更多优惠哦~详细信息扫码添加助教,回复“大模型”,即可领取课程大纲&查看课程详情👇
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/
点击API开放平台,开始注册。注册完成后即可进入到个人主页,可在其中进行充值:
目前DeepSeek按照统一模型名称进行命名,其中deepseek-chat指的是最新版DeepSeek-V3-0324模型,而deepseek-reasoner则指的是最新版DeepSeek-R1-0528模型。其中两款模型定价如下:
目前API调用暂时不限速:
且模型调用风格和OpenAI完全一致,deepseek-chat模型支持Function calling、提示词缓存、Json Output等Agent开发关键功能。
同时,最新发布的deepseek-reasoner(DeepSeek-R1)模型也全新支持了Function calling功能,但官网目前暂时未更新此说明,官网目前还保留着第一代R1模型的功能说明:
2.DeepSeekAPI-KEY获取与DeepSeek-R1-0528模型调用流程
接下来需要在官网申请API-KEY:https://platform.deepseek.com/api_keys
由于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 message、user message 和 assistant 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模型 参数汇总表
| 参数名 | 类型 | 必填/可选 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 必填 | 无 | 指定要使用的模型 ID,例如 deepseek-chat 或 deepseek-reasoner。 |
| store | boolean or null | 可选 | false | 是否存储本次对话的输出,供模型精炼或评估产品使用。 |
| metadata | object or null | 可选 | null | 开发者自定义的标签和值,用于过滤仪表盘中的补全结果。 |
| frequency_penalty | number or null | 可选 | 0 | 数值在 -2.0 到 2.0 之间,正值减少重复生成内容的可能性。 |
| logit_bias | map | 可选 | null | 调整某些特定 tokens 出现的可能性,值在 -100 到 100 之间。 |
| logprobs | boolean or null | 可选 | false | 是否返回生成的每个 token 的对数概率。 |
| top_logprobs | integer or null | 可选 | null | 指定返回最有可能出现的前几个 tokens 及其概率,需开启 logprobs。 |
| max_completion_tokens | integer or null | 可选 | null | 指定模型生成的最大 token 数,包括可见文本和推理 tokens。 |
| n | integer or null | 可选 | 1 | 每个输入生成的对话补全选项数量,值越大,生成的回复越多。 |
| presence_penalty | number or null | 可选 | 0 | 数值在 -2.0 到 2.0 之间,正值鼓励生成新的主题和内容。 |
| response_format | object | 可选 | null | 指定生成结果的格式,可以设置为 json_schema 以确保结构化输出,或 json_object 用于 JSON 格式。 |
| seed | integer or null | 可选 | null | 保持生成的一致性,重复相同请求将尽量生成相同的结果。 |
| service_tier | string or null | 可选 | auto | 指定服务延迟等级,适用于付费订阅用户,默认为 auto。 |
| stop | string / array / null | 可选 | null | 最多指定 4 个序列,API 遇到这些序列时会停止生成进一步的 tokens。 |
| stream | boolean or null | 可选 | false | 是否启用流式响应,若启用,生成的 tokens 将逐步返回。 |
| stream_options | object or null | 可选 | null | 流式响应的选项,仅当 stream 为 true 时设置。 |
| temperature | number or null | 可选 | 1 | 控制生成输出的随机性,值越高生成的文本越随机。建议调整此值或 top_p,而不是同时调整。 |
| top_p | number or null | 可选 | 1 | 使用核采样方法,选择最有可能的 tokens,总概率达到 top_p 百分比。建议与 temperature 二选一。 |
| tools | array | 可选 | null | 模型可以调用的工具列表,目前仅支持函数调用。 |
| user | string | 可选 | null | 表示最终用户的唯一标识符,用于监控和检测滥用行为。 |
参数解释:
-
模型和输出相关参数:
model是必填参数,决定使用哪个模型(如deepseek-chat或deepseek-code)。store控制是否存储生成的对话结果,便于后续模型训练或评估。metadata用于添加开发者自定义的标签,便于在仪表盘中过滤补全结果。max_completion_tokens和n控制生成内容的数量和长度,帮助管理生成成本。
-
生成行为控制:
frequency_penalty和presence_penalty都用于影响生成结果的内容重复度和新颖性。logit_bias是用于调整特定 token 出现概率的高级控制工具。temperature和top_p通过不同的方式控制生成结果的随机性,建议选其一进行调整。
-
高级功能:
logprobs和top_logprobs用于返回每个 token 的概率信息,适合对模型输出进行更细粒度分析。stream启用后会实时返回生成的结果,适用于需要逐步展示内容的场景。tools允许模型调用外部工具(如函数),适用于扩展模型的功能。
-
服务和用户相关参数:
service_tier控制服务的延迟和稳定性,适合高性能要求的付费用户。user用于标识最终用户,有助于监控使用行为,防止滥用。
大家可以自行尝试进行验证。
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超大规模参数模型,因此本地部署非常复杂,对于这部分内容感兴趣的同学,可以扫码加入大模型技术社区进行学习:
社区中包含全方位R1、V3模型本地部署指南,包括硬件配置指南、CPU+GPU混合部署等。
