开发者必备!基于开发者空间的 DeepSeek 模型 API 调用及参数调试攻略
摘要:本文通过在开发者空间Notebook调用DeepSeek V3模型API,演示如何调试温度采样参数temperature及累积概率采样参数top_p来控制模型的输出。 1 概述1.1 案例介绍
DeepSeek大语言模型算法是一种深度合成服务算法,该模型以Transformer架构为基础,自主研发的深度神经网络模型。模型基于注意力机制,通过海量语料数据进行预训练,并经过监督微调、人类反馈的强化学习等进行对齐,构建形成深度神经网络,并增加审核、过滤等安全机制,使算法模型部署后能够根据人类的指令或者提示,实现语义分析、计算推理、问答对话、篇章生成、代码编写等任务。本案例通过在开发者空间调用DeepSeek V3模型API,演示如何调试温度采样参数temperature及累积概率采样参数top_p来控制模型的输出。通过本案例可以掌握DeepSeek大模型API的调用方法及temperature和累积概率采样参数top_p参数调试技巧。1.2 案例流程
说明:① 在ModelArts Studio大模型即服务平台中领取DeepSeek V3模型;② 登录开发者空间,启动Notebook;③ Notebook运行DeepSeek V3 API调用程序;④ 调试温度采样参数和top_p采样参数进行效果查看。1.3 资源总览
本案例预计花费总计0元。 资源名称规格单价(元)时长(分钟)开发者空间—NotebookNPU
basic · 1 * NPU 910B · 8v CPU · 24GB
euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook免费30 2 资源与开发环境准备
2.1 领取DeepSeek V3 模型
在浏览器访问ModelArts Studio首页, 点击ModelArts Studio控制台,跳转到登录界面,按照提示登录,即可进入ModelArts Studio控制台。 签署免责声明。 进入ModelArts Studio控制台首页,在左侧菜单栏,选择模型推理下在线推理,在免费服务中选择DeepSeek-V3-32K(NEW)模型,点击领取额度,领取200万免费tokens。 2.2 启动Notebook
为了给广大开发者提供更加便捷、高效、稳定的开发环境,华为开发者空间正式上线一站式开发工具Notebook,融合交互式编程、云端资源管理与自动化工作流,让开发更智能、更流畅,本次案例代码在Notebook中进行调试。 首先,需要登录开发者空间,登录后页面如下: 在左侧导航选择工作台,在我的开发工具下点击AI Notebook旁边的立即前往。 当前AI Notebook包含NPU环境和CPU环境,环境参数包含:
[*]右上角配额:每日固定时间配额。
[*]硬件配置:环境的硬件配置,例如:NPU basic · 1 * NPU 910B · 8v CPU · 24GB表示包含1个昇腾910B NPU处理器、8核24G内存配置。
[*]预装镜像:必选,可以选择不同的镜像版本。镜像名中包含对应系统软件版本,例如:
euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook表示Euler系统版本2.9-Python版本3.10- Torch版本2.1.0-CANN版本8.0-openMind版本0.9.1。
[*]关联模型(可选):可选,关联后启动Notebook可在model文件夹下查看/使用模型文件。
[*]关联数据集(可选):可选,关联后启动Notebook可在dataset文件夹下查看/使用数据集。
根据实际配置要求选择不同环境的Notebook,我们以NPU环境为例启动Notebook: 选择NPU环境选项卡,点击立即启动按钮启动Notebook。 然后点击查看Notebook进入Notebook。 在打开的窗口,点击笔记本下的Python 3 (ipykernel)创建Notebook。 新建Notebook效果如下: 3 模型调用及参数调试
3.1 声明大模型调用参数
在Notebook的新执行框中输入如下代码,声明变量大模型调用参数地址api_url和密钥api_key。 api_url = ""
api_key = ""
在浏览器另开一个窗口访问进入ModelArts Studio控制台首页在左侧菜单栏,选择模型推理下在线推理,在免费服务中点击DeepSeek-V3-32K(NEW)模型对应操作的调用说明。 点击API地址内容后面的复制按钮复制api_url。 切换到Notebook粘贴赋值给api_url。 切换到浏览器窗口ModelArts Studio控制台,点击API Key管理。 进入API Key管理页面,点击创建API Key,自定义输入标签和API Key描述,点击确定,完成API Key的创建。 您的密钥弹窗中的密钥值就是api_key的值,请点击右侧复制图标复制密钥。注意:这是唯一一次可以查看密钥的机会。您以后将无法查看它。但您可以随时创建新的访问密钥。 切换到Notebook粘贴赋值给api_key并运行。 3.2 调用DeepSeek模型推理服务API
配置完成后,我们先进行DeepSeek模型推理服务API接口调用测试。在新的执行框中输入如下代码并运行。import requests
# 定义 API 的 URL (你的调用地址)
url = api_url
# 定义请求头,包括认证信息(如果有)
headers = {
"Content-Type": "application/json",
'Authorization': 'Bearer '+ api_key
}
# content可以替换为自己想和模型对话的内容
# "max_tokens":每个输出序列要生成的最大Tokens数量。
# "top_k": -1 表示考虑所有Tokens。
# "top_p": 1,表示模型会考虑Token总和概率100%,这相当于没有使用 "Top-P sampling"。
# "temperature": 0,表示模型统会触发贪婪采样以进行下一个单词预测,即简单地选取词汇表中概率最高的单词
# "stream": "false"表示以非流式方式,等待模型输出所有字符再返回给客户端
payload = {
"model": "DeepSeek-V3",
"messages": [
{"role": "user", "content": "介绍下大语言模型"}
],
"max_tokens": 150,
"top_k": -1,
"top_p": 1,
"temperature": 0,
"stream": "false"
}
# 发送 POST 请求
response = requests.post(url, headers=headers, json=payload)
result = response.json()['choices']['message']['content']
print("Response:", result)
可以看到response返回了大语言模型介绍,则说明推理服务API调用成功。3.3 调试温度采样参数效果
温度参数temperature,是用来控制采样的随机性,就像给AI装了个“创意开关”:数值越小(接近0),回答越保守准确;数值越大,回答越天马行空。默认0.6是平衡点,既能保持合理又不失创意。设为0时,AI每次都会选最稳妥的答案,适合需要确定性的场景;调高后,AI会更愿意尝试不同可能,适合需要创意的任务。数值高低定义参考:
[*]低温度(0-0.3):回答稳定但保守(例:客服问答、数学题);
[*]中温度(0.4-0.7):平衡合理性和创意(默认0.6,适合日常聊天);
[*]高温度(0.8-1+):答案更随机发散(适合写诗、头脑风暴)。
下面通过将temperature的数值设定为0、1和0.1去回答“介绍下大预言模型”,观察不同的回答结果差别,去理解温度采样参数的设定。 1.构建客户端。新的执行框中输入如下代码并运行,构建模型调用客户端。import requests
import json
class TextGenerationClient:
def __init__(self, api_url, api_key):
self.api_url = api_url
self.api_key = api_key
def generate_text(self, payload):
headers = {
"Content-Type": "application/json",
'Authorization': f'Bearer {self.api_key}'
}
response = requests.post(self.api_url, headers=headers, data=json.dumps(payload))
if response.status_code == 200:
return response.json()['choices']['message']['content']
else:
raise Exception(f"Error: {response.status_code} - {response.text}")
2. temperature设为0。在新的执行框中输入如下代码并运行,实例化客户端并调用模型,此时temperature参数的值设定为0。 client = TextGenerationClient(api_url,api_key) payload = {"model": "DeepSeek-V3","messages": [{"role": "user", "content": "介绍下大语言模型"}],"max_tokens": 150,"top_k": -1,"top_p": 1,"temperature": 0,"ignore_eos": "false","stream": "false" } generated_text = client.generate_text(payload) print(generated_text) 3. temperature设为1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整temperature采样为1。client = TextGenerationClient(api_url,api_key)
payload = {
"model": "DeepSeek-V3",
"messages": [
{"role": "user", "content": "介绍下大语言模型"}
],
"max_tokens": 150,
"top_k": -1,
"top_p": 1,
"temperature": 0,
"ignore_eos": "false",
"stream": "false"
}
generated_text = client.generate_text(payload)
print(generated_text)
参考运行结果如下: 再次运行上述代码,可以看到虽然temperature设定都是1,但是两次输出的结果中对大语言模型的介绍内容随机发散,差异很大。 4. temperature设为0.1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整temperature采样为0.1。 payload = {
"model": "DeepSeek-V3",
"messages": [
{"role": "user", "content": "介绍下大语言模型"}
],
"max_tokens": 30,
"temperature": 1,
}
generated_text = client.generate_text(payload)
print(generated_text)
参考运行结果如下: 再次运行上述代码,可以看到两次输出的结果基本一致,差异很小。 由以上可见,当温度采样参数temperature的值较小时模型推理结果更加稳定,反之值较高时模型推理结果更加随机。 实用参照: ▸ 需要精准答案 → 调低(0-0.3) ▸ 需要自然交流 → 0.4-0.7 ▸ 需要创意输出 → 0.8-1.2+ 超过1.5可能产生混乱内容,需谨慎使用。 3.4 调式top_p采样参数效果
top_p参数的全称是累积概率采样,是一种在大模型推理过程中用于控制生成文本多样性的采样策略,它通过调整模型生成文本时的多样性来影响输出质量。工作机制是AI按概率排序候选词,从最高概率开始累加,直到超过设定的阈值(如0.8),仅保留这部分词作为随机选择范围。比如:苹果65%,香蕉20%,葡萄10%,榴莲5%...,设定top_p=0.8时,AI会从最可能的词开始累加概率,直到总和超过80%就停:苹果(65%) + 香蕉(20%)=85% → 超过80%,于是只保留苹果和香蕉作为候选池,AI只会在这个缩小后的候选池里随机选择,既保证质量又保留随机性。 参数类型为浮点型,取值范围0~1:
[*]低值(如0.3):候选词少,输出保守精准(例:天气播报);
[*]高值(如0.8):候选词多,输出灵活创意(例:写诗歌);
[*]1=关闭筛选,全候选词(可能胡言乱语);
[*]0=极端模式,每次都选最保险的一个词,强制选择最高概率词(易死板)。
经典场景:
[*]天气预报(设0.3):“明天__”→只会选“晴/雨/多云”;
[*]小说续写(设0.8):“神秘来客__”→可能选“摘下墨镜/突然消失/变成巨龙”。
1. top_p设定为1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整Top采样为1。payload = {
"model": "DeepSeek-V3",
"messages": [
{"role": "user", "content": "介绍下大语言模型"}
],
"max_tokens": 30,
"top_p": 1,
}
generated_text = client.generate_text(payload)
print(generated_text)
参考执行结果如下: 再次运行上述代码,可以看到两次输出对大语言模型的介绍内容文本差异较大: 2. top_p设定为0.1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整Top采样为0.1。 payload = {
"model": "DeepSeek-V3",
"messages": [
{"role": "user", "content": "介绍下大语言模型"}
],
"max_tokens": 30,
"top_p": 0.1,
}
generated_text = client.generate_text(payload)
print(generated_text)
参考执行结果如下: 再次运行上述代码,可以看到两次输出对大语言模型的介绍内容文本相同。 由此可见,当top_p采样参数的值较小时,模型推理生成文本多样性更小更准确,反之值较高时模型推理生成文本更多样。数值越小输出越稳定,数值越大脑洞越开。 总结:
温度采样(Temperature)与top_p的搭配使用就像调节AI写作的“油门”和“方向盘”,温度管脑洞大小,top_p控制候选范围,二者配合能更精准控制输出效果,下方表格数值设定可以作为参考:组合模式温度值top_p值效果适用场景精准输出0.2~0.50.3~0.6保守准确拒绝冒险代码/法律文件平衡创作0.7~1.00.7~0.9合理创新适度发散商业文案/邮件疯狂脑洞1.2~1.50.9~1.0突破常规天马行空诗歌/科幻小说注意,下面的极端组合慎用:<uldata-offset-key="2q73a-0-0"><lidata-block="true" data-editor="btje9" data-offset-key="2q73a-0-0">温度>1.5 + top_p=1 → 可能输出乱码;<lidata-block="true" data-editor="btje9" data-offset-key="b5ua8-0-0">温度
页:
[1]