DeepSeek API 实战:从接入到搭建你自己的 AI 助手

发布时间:2026/9/10 6:23:37

DeepSeek API 实战:从接入到搭建你自己的 AI 助手 DeepSeek API 实战从接入到搭建你自己的 AI 助手最近做项目需要接入大模型 API对比了一圈最终选了 DeepSeek。原因很简单便宜、中文效果好、兼容 OpenAI 协议。这篇文章记录我从零接入到搭建一个可用 AI 助手的全过程踩过的坑和最终方案都写出来了。一、为什么要选 DeepSeek选模型之前我列了几个硬性需求中文理解能力要强做的是面向国内用户的产品API 调用成本要低前期不想烧钱兼容 OpenAI 协议方便后续切换上下文窗口要够大需要处理长文档对比了几个主流模型后DeepSeek 是最符合的。模型 输入价格 输出价格 上下文 DeepSeek ¥1/百万token ¥2/百万token 64K GPT-4o ¥15/百万token ¥60/百万token 128K Claude3.5¥18/百万token ¥90/百万token 200K价格差距不是一点半点。对于大多数实际场景DeepSeek 的能力完全够用。二、接入过程DeepSeek 的 API 兼容 OpenAI 格式所以用起来和 OpenAI 几乎一样。1. 获取 API Key去 platform.deepseek.com 注册账号 → 创建 API Key。Key 的格式以sk-开头。2. 基础调用fromopenaiimportOpenAI clientOpenAI(api_keysk-your-key-here,base_urlhttps://api.deepseek.com/v1)responseclient.chat.completions.create(modeldeepseek-chat,messages[{role:system,content:你是一个帮助用户解决问题的助手。},{role:user,content:用 Python 写一个快速排序}])print(response.choices[0].message.content)就这么简单。如果你之前用过 OpenAI 的 API只需要把base_url和api_key换掉就行。3. 流式输出实际产品中不可能等完整响应再展示流式输出是标配streamclient.chat.completions.create(modeldeepseek-chat,messages[{role:user,content:讲一个技术笑话}],streamTrue)forchunkinstream:ifchunk.choices[0].delta.content:print(chunk.choices[0].delta.content,end)这样用户能看到文字一个字一个字出来体验好很多。三、搭建自己的 AI 助手有了 API 后我用 FastAPI 搭了一个简单的 AI 助手后端支持对话历史和流式输出。项目结构ai-assistant/ ├── main.py# FastAPI 服务├── chat.py# 对话逻辑├── config.py# 配置└── requirements.txtconfig.pyimportosfromdotenvimportload_dotenv load_dotenv()DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLhttps://api.deepseek.com/v1MODEL_NAMEdeepseek-chatchat.py——核心对话逻辑fromopenaiimportOpenAIfromconfigimportDEEPSEEK_API_KEY,DEEPSEEK_BASE_URL,MODEL_NAME clientOpenAI(api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL)classChatSession:def__init__(self,system_promptNone):self.messages[]ifsystem_prompt:self.messages.append({role:system,content:system_prompt})defadd_message(self,role,content):self.messages.append({role:role,content:content})defget_response(self):responseclient.chat.completions.create(modelMODEL_NAME,messagesself.messages,temperature0.7,max_tokens2000)replyresponse.choices[0].message.content self.add_message(assistant,reply)returnreplydefget_stream_response(self):streamclient.chat.completions.create(modelMODEL_NAME,messagesself.messages,streamTrue,temperature0.7)full_responseforchunkinstream:deltachunk.choices[0].delta.contentorfull_responsedeltayielddelta self.add_message(assistant,full_response)main.py——FastAPI 服务fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponsefrompydanticimportBaseModelfromchatimportChatSession appFastAPI()classChatRequest(BaseModel):message:strsession_id:strdefaultsessions{}app.post(/chat)asyncdefchat(request:ChatRequest):ifrequest.session_idnotinsessions:sessions[request.session_id]ChatSession(system_prompt你是一个有用的AI助手。请用中文回答。)sessionsessions[request.session_id]session.add_message(user,request.message)replysession.get_response()return{reply:reply,session_id:request.session_id}app.post(/chat/stream)asyncdefchat_stream(request:ChatRequest):ifrequest.session_idnotinsessions:sessions[request.session_id]ChatSession(system_prompt你是一个有用的AI助手。请用中文回答。)sessionsessions[request.session_id]session.add_message(user,request.message)returnStreamingResponse(session.get_stream_response(),media_typetext/event-stream)四、几个实战踩坑记录1. 上下文管理一开始我没限制对话历史长度结果聊了几十轮后 token 数爆炸每次请求都又慢又贵。解决方案限制 messages 列表长度超出后丢弃最早的对话。MAX_HISTORY20deftrim_messages(self):iflen(self.messages)MAX_HISTORY:# 保留 system prompt丢弃最早的对话system[mforminself.messagesifm[role]system]history[mforminself.messagesifm[role]!system]self.messagessystemhistory[-MAX_HISTORY:]2. 超时处理DeepSeek API 在高峰期偶尔会响应较慢客户端需要设置超时clientOpenAI(api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,timeout30,# 30秒超时max_retries2# 自动重试2次)3. 错误处理API 调用可能因为各种原因失败需要做好容错try:responseclient.chat.completions.create(...)exceptExceptionase:print(fAPI 调用失败:{e})return抱歉我现在有点忙请稍后再试。用户不关心技术细节给他们一个友好的错误提示就够了。五、成本估算我用这个方案跑了两个月来算算账日均请求约500次 平均每次约800tokens输入输出 日均消耗约 400K tokens 月均消耗约 12M tokens 月均成本约 ¥12按 ¥1/百万token 计算12 块钱一个月能跑一个完整的 AI 助手后端。对比 GPT-4o 同样用量要接近 200 块差距是十几倍。写在最后DeepSeek 是目前性价比最高的中文大模型 API没有之一。如果你在做 AI 相关的产品特别是面向中文用户的场景非常值得一试。接入成本极低——改一行base_url就能从 OpenAI 切过来。先跑起来等规模大了再考虑要不要换更贵的模型。你对 DeepSeek 有什么想了解的欢迎在评论区交流。文章中的代码已脱敏完整项目代码可以在 GitHub 上找到
延伸阅读

更多相关文章

2026/9/6 18:54:35

一针见血!用JSLeakWatcher解决HarmonyOS内存泄漏难题

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看: 一针见血!用JSLeakWatcher解决HarmonyOS内存泄漏难题-华为开发者话题 | 华为开发者联盟 一、为什么你的Harm…

2026/9/9 18:33:53

HarmonyOS应用性能监测服务APMS-崩溃问题定位分析指导

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看: HarmonyOS应用性能监测服务APMS-崩溃问题定位分析指导-华为开发者话题 | 华为开发者联盟 版本刚上线,崩溃告…

2026/9/8 17:44:18

HarmonyOS应用性能监测服务APMS-故障分析:快速定位线上崩溃根因

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看: HarmonyOS应用性能监测服务APMS-故障分析:快速定位线上崩溃根因-华为开发者话题 | 华为开发者联盟 线上崩溃…

2026/9/10 6:21:36

研发驱动AI落地:制造业智能转型的四步炼金术

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 6:21:36

4.5小时攻克单片机原理考试:聚焦51系列核心考点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 6:21:36

全离散扩散建模:Intern Lumina U2 的 token 级生成范式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 6:21:36

鸿蒙版Flutter天气应用:Staggered Grid多城市卡片墙实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 6:16:35

CANN/GE单算子执行接口

aclopExecuteV2 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码