基于开发者空间的 DeepSeek API 调用及参数调试攻略

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 · 24GBeuler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook
免费30

2 资源与开发环境准备

2.1 领取DeepSeek V3模型

在浏览器访问ModelArts Studio_MaaS_大模型即服务_华为云, 点击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'][0]['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'][0]['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。

 payload = {
  "model": "DeepSeek-V3",
  "messages": [
  {"role": "user", "content": "介绍下大语言模型"}
  ],
  "max_tokens": 30,
  "temperature": 1,
 }
 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": 0.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突破常规天马行空诗歌/科幻小说

注意,下面的极端组合慎用:

  • 温度>1.5 + top_p=1 → 可能输出乱码;
  • 温度<0.2 + top_p=0.1 → 文字机械重复。

至此,DeepSeek模型API调用及参数调试结束,大家可以根据自己的场景去设定合适的参数值实现不同的效果。点击「链接」可以参考完整案例代码。