找回密码
 立即注册
首页 业界区 安全 开发者必备!基于开发者空间的 DeepSeek 模型 API 调用 ...

开发者必备!基于开发者空间的 DeepSeek 模型 API 调用及参数调试攻略

蓬庄静 2025-6-1 18:28:57
摘要:本文通过在开发者空间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 案例流程

1.png
说明:① 在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控制台。
2.png
 签署免责声明。
3.png
  进入ModelArts Studio控制台首页,在左侧菜单栏,选择模型推理下在线推理,在免费服务中选择DeepSeek-V3-32K(NEW)模型,点击领取额度,领取200万免费tokens。
4.png
 2.2 启动Notebook

为了给广大开发者提供更加便捷、高效、稳定的开发环境,华为开发者空间正式上线一站式开发工具Notebook,融合交互式编程、云端资源管理与自动化工作流,让开发更智能、更流畅,本次案例代码在Notebook中进行调试。 首先,需要登录开发者空间,登录后页面如下:
5.png
  在左侧导航选择工作台,在我的开发工具下点击AI Notebook旁边的立即前往。
6.png
  当前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文件夹下查看/使用数据集。
7.png
 根据实际配置要求选择不同环境的Notebook,我们以NPU环境为例启动Notebook: 选择NPU环境选项卡,点击立即启动按钮启动Notebook。
8.png
 然后点击查看Notebook进入Notebook。
9.png
  在打开的窗口,点击笔记本下的Python 3 (ipykernel)创建Notebook。
10.png
  新建Notebook效果如下:
11.png
  3 模型调用及参数调试

3.1 声明大模型调用参数

在Notebook的新执行框中输入如下代码,声明变量大模型调用参数地址api_url和密钥api_key。
  1. api_url = ""
  2. api_key = ""
复制代码
 
12.png
 在浏览器另开一个窗口访问进入ModelArts Studio控制台首页在左侧菜单栏,选择模型推理下在线推理,在免费服务中点击DeepSeek-V3-32K(NEW)模型对应操作的调用说明。
13.png
  点击API地址内容后面的复制按钮复制api_url。
14.png
  切换到Notebook粘贴赋值给api_url。
15.png
  切换到浏览器窗口ModelArts Studio控制台,点击API Key管理。
16.png
  进入API Key管理页面,点击创建API Key,自定义输入标签和API Key描述,点击确定,完成API Key的创建。
17.png
  您的密钥弹窗中的密钥值就是api_key的值,请点击右侧复制图标复制密钥。注意:这是唯一一次可以查看密钥的机会。您以后将无法查看它。但您可以随时创建新的访问密钥。
18.png
  切换到Notebook粘贴赋值给api_key并运行。
19.png
   3.2 调用DeepSeek模型推理服务API

配置完成后,我们先进行DeepSeek模型推理服务API接口调用测试。在新的执行框中输入如下代码并运行。
  1. import requests
  2. # 定义 API 的 URL (你的调用地址)
  3. url = api_url
  4. # 定义请求头,包括认证信息(如果有)
  5. headers = {
  6. "Content-Type": "application/json",
  7. 'Authorization': 'Bearer '+ api_key
  8. }
  9. # content可以替换为自己想和模型对话的内容
  10. # "max_tokens":每个输出序列要生成的最大Tokens数量。
  11. # "top_k": -1 表示考虑所有Tokens。
  12. # "top_p": 1,表示模型会考虑Token总和概率100%,这相当于没有使用 "Top-P sampling"。
  13. # "temperature": 0,表示模型统会触发贪婪采样以进行下一个单词预测,即简单地选取词汇表中概率最高的单词
  14. # "stream": "false"表示以非流式方式,等待模型输出所有字符再返回给客户端
  15. payload = {
  16. "model": "DeepSeek-V3",
  17. "messages": [
  18. {"role": "user", "content": "介绍下大语言模型"}
  19. ],
  20. "max_tokens": 150,
  21. "top_k": -1,
  22. "top_p": 1,
  23. "temperature": 0,
  24. "stream": "false"
  25. }
  26. # 发送 POST 请求
  27. response = requests.post(url, headers=headers, json=payload)
  28. result = response.json()['choices'][0]['message']['content']
  29. print("Response:", result)
复制代码
 
20.png
 可以看到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.构建客户端。新的执行框中输入如下代码并运行,构建模型调用客户端。
  1. import requests
  2. import json
  3. class TextGenerationClient:
  4. def __init__(self, api_url, api_key):
  5. self.api_url = api_url
  6. self.api_key = api_key
  7. def generate_text(self, payload):
  8. headers = {
  9. "Content-Type": "application/json",
  10. 'Authorization': f'Bearer {self.api_key}'
  11. }
  12. response = requests.post(self.api_url, headers=headers, data=json.dumps(payload))
  13. if response.status_code == 200:
  14. return response.json()['choices'][0]['message']['content']
  15. else:
  16. 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)
21.png
 3. temperature设为1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整temperature采样为1。
  1. client = TextGenerationClient(api_url,api_key)
  2. payload = {
  3. "model": "DeepSeek-V3",
  4. "messages": [
  5. {"role": "user", "content": "介绍下大语言模型"}
  6. ],
  7. "max_tokens": 150,
  8. "top_k": -1,
  9. "top_p": 1,
  10. "temperature": 0,
  11. "ignore_eos": "false",
  12. "stream": "false"
  13. }
  14. generated_text = client.generate_text(payload)
  15. print(generated_text)
复制代码
 
参考运行结果如下:
22.png
 再次运行上述代码,可以看到虽然temperature设定都是1,但是两次输出的结果中对大语言模型的介绍内容随机发散,差异很大。
23.png
 4. temperature设为0.1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整temperature采样为0.1。
  1. payload = {
  2. "model": "DeepSeek-V3",
  3. "messages": [
  4. {"role": "user", "content": "介绍下大语言模型"}
  5. ],
  6. "max_tokens": 30,
  7. "temperature": 1,
  8. }
  9. generated_text = client.generate_text(payload)
  10. print(generated_text)
复制代码
 
参考运行结果如下:
24.png
 再次运行上述代码,可以看到两次输出的结果基本一致,差异很小。
25.png
 由以上可见,当温度采样参数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。
  1. payload = {
  2. "model": "DeepSeek-V3",
  3. "messages": [
  4. {"role": "user", "content": "介绍下大语言模型"}
  5. ],
  6. "max_tokens": 30,
  7. "top_p": 1,
  8. }
  9. generated_text = client.generate_text(payload)
  10. print(generated_text)
复制代码
 
参考执行结果如下:
26.png
 再次运行上述代码,可以看到两次输出对大语言模型的介绍内容文本差异较大:
27.png
 2. top_p设定为0.1,两次运行对比。在新的执行框中输入如下代码并运行,此时调整Top采样为0.1。
  1. payload = {
  2. "model": "DeepSeek-V3",
  3. "messages": [
  4. {"role": "user", "content": "介绍下大语言模型"}
  5. ],
  6. "max_tokens": 30,
  7. "top_p": 0.1,
  8. }
  9. generated_text = client.generate_text(payload)
  10. print(generated_text)
复制代码
 
参考执行结果如下:
28.png
 再次运行上述代码,可以看到两次输出对大语言模型的介绍内容文本相同。
29.png
  由此可见,当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突破常规天马行空诗歌/科幻小说
注意,下面的极端组合慎用:<ul  data-offset-key="2q73a-0-0"><li  data-block="true" data-editor="btje9" data-offset-key="2q73a-0-0">温度>1.5 + top_p=1 → 可能输出乱码;<li  data-block="true" data-editor="btje9" data-offset-key="b5ua8-0-0">温度
您需要登录后才可以回帖 登录 | 立即注册