DeepSeek Api 开发实践

春节前后,DeepSeek 无疑是 AI 领域最火爆的话题,也在国内外掀起轩然大波。一时间各种介绍、私有化部署、应用尝试的文章层出不穷,仿佛不提 DeepSeek 就远远落后于这个时代。
最近政府机关、国央企更是热闹非凡,各种接入 DeepSeek、用 DeepSeek 办公的消息层出不穷,也不知道到底是真实解决了领域问题,还是单纯凑热闹,反正从官方角度说肯定是效率提升 xx,形式一片大好。
作为开发人员,自然更不能落于人后,从接收到接入 DeepSeek 的需求开始,就对模型部署和 API 调用做了了解。受限于资源,要把大模型本地部署后支撑业务的高频调用显然不现实,毕竟企业应用不是一个本地起来运行一下就可以拿来吹牛的玩具;DeepSeek 官方 API 不稳定并且也停止了重置服务,所以最终选择了某大厂提供的 DeepSeek API。
一 API 选择
1.1 百炼
阿里云百炼平台,地址:https://bailian.console.aliyun.com/?spm=5176.12818093_47.console-base_search-panel.dtab-product_sfm.3be916d0tDDQuP#/model-market。 模型广场中增加了 DeepSeek 相关模型,DeepSeek-R1 和 V3 提供 100 万的免费 token 额度;70B 及以下目前都提供限时免费调用。
1.2 硅基流动(siliconflow)
官网地址:https://cloud.siliconflow.cn/models。与百炼类似,模型广场包括 DeepSeek-R1、V3、70B、32B、14B、8B 等等。其中 8B 以下模型提供免费调用。
这里选择使用百炼平台 API。
二 DeepSeek 模型简介及 API 说明
2.1 DeepSeek 各模型说明
DeepSeek-R1 模型包含 671B 参数,激活 37B,在后训练阶段大规模使用了强化学习技术,在仅有极少标注数据的情况下,极大提升了模型推理能力,尤其在数学、代码、自然语言推理等任务上。
DeepSeek-V3 为 MoE 模型,671B 参数,激活 37B,在 14.8T Token 上进行了预训练,在长文本、代码、数学、百科、中文能力上表现优秀。
DeepSeek-R1-Distill 系列模型是基于知识蒸馏技术,通过使用 DeepSeek-R1 生成的训练样本对 Qwen、Llama 等开源大模型进行微调训练后,所得到的增强型模型。
几个版本的模型支持的上下文长度、最大输入长度、最大思维链长度和回复长度信息如下所示:

注意:
最大输出的 Token 数包含思考过程(
reasoning_content
字段)与最终输出(content
字段)的 Token 之和。
2.2 API 调用(百炼版)
这里以百炼提供的 API 为例。第一步自然是在平台获取 Api key,由于兼容 OpenAI,可以通过 OpenAI SDK 或 OpenAI 兼容的 HTTP 方式快速体验 DeepSeek 模型。
2.2.1 Python 调用示例
2.2.2 Node.js
2.2.3 HTTP 请求
这也是可以跨语言调用的方式,Java 语言可以直接使用 RestTemplate 进行调用:
json 结构的返回结果:
注意,当前是非流式请求,并且没有开启互联网搜索。 R1 模型的返回结果包含思考过程,接入后可以在前端展示,来实现与 DeepSeek 官方页面相同的效果,也可以减少等待时间,提升用户体验。
三 注意事项
3.1 能力范畴
DeepSeek 模型仅支持文本输入,不支持输入图片或文档,因此 API 无法处理图片或文档。但实际上官网支持上传文档,虽然只能识别图片/文档中的文字。个人推测是在调用 DeepSeek 模型前,前置了图片、文档识别的小模型或简单的 OCR/文档内容提取。

3.2 不支持参数说明
DeepSeek-R1 类模型不支持 Function Calling、JSON Output、对话前缀续写、上下文硬盘缓存;
参数temperature
、top_p
、presence_penalty
、frequency_penalty
、logprobs
、top_logprobs
,设置这些参数都不会生效,即使没有输出错误提示。
DeepSeek官方不建议设置 System Message,原文:"Avoid adding a system prompt; all instructions should be contained within the user prompt."
DeepSeek-V3:参数默认值:
temperature
:0.7(取值范围是[0:2)
);top_p
:0.6;presence_penalty
:0.95。不支持设置的参数和功能:
frequency_penalty
、logprobs
、top_logprobs
参数;不支持 Function Call、JSON Output 等功能。
3.3 DeepSeek 流式请求
与通义千问的 API 流式返回不同,DeepSeek 的每个流返回的内容仅包含部分文字,而不像通义千问那样是从开始到当前拼接好的文字。示例如下:
另外,DeepSeek 模型进行数学问题推理时,会返回 Latex 格式的一些字符,可以通过前端插件处理,或者后端简单粗暴通过字符串正则表达式处理(效果差,会存在大量无用换行)。
版权声明: 本文为 InfoQ 作者【程序员架构进阶】的原创文章。
原文链接:【http://xie.infoq.cn/article/4518a4378edc53a2bde1f2fa6】。文章转载请联系作者。
评论