当前位置: 首页 > news >正文

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 client=OpenAI(api_key="sk-your-key-here",base_url="https://api.deepseek.com/v1")response=client.chat.completions.create(model="deepseek-chat",messages=[{"role":"system","content":"你是一个帮助用户解决问题的助手。"},{"role":"user","content":"用 Python 写一个快速排序"}])print(response.choices[0].message.content)

就这么简单。如果你之前用过 OpenAI 的 API,只需要把base_urlapi_key换掉就行。

3. 流式输出

实际产品中不可能等完整响应再展示,流式输出是标配:

stream=client.chat.completions.create(model="deepseek-chat",messages=[{"role":"user","content":"讲一个技术笑话"}],stream=True)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.txt

config.py:

importosfromdotenvimportload_dotenv load_dotenv()DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"MODEL_NAME="deepseek-chat"

chat.py——核心对话逻辑:

fromopenaiimportOpenAIfromconfigimportDEEPSEEK_API_KEY,DEEPSEEK_BASE_URL,MODEL_NAME client=OpenAI(api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL)classChatSession:def__init__(self,system_prompt=None):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):response=client.chat.completions.create(model=MODEL_NAME,messages=self.messages,temperature=0.7,max_tokens=2000)reply=response.choices[0].message.content self.add_message("assistant",reply)returnreplydefget_stream_response(self):stream=client.chat.completions.create(model=MODEL_NAME,messages=self.messages,stream=True,temperature=0.7)full_response=""forchunkinstream:delta=chunk.choices[0].delta.contentor""full_response+=deltayielddelta self.add_message("assistant",full_response)

main.py——FastAPI 服务:

fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponsefrompydanticimportBaseModelfromchatimportChatSession app=FastAPI()classChatRequest(BaseModel):message:strsession_id:str="default"sessions={}@app.post("/chat")asyncdefchat(request:ChatRequest):ifrequest.session_idnotinsessions:sessions[request.session_id]=ChatSession(system_prompt="你是一个有用的AI助手。请用中文回答。")session=sessions[request.session_id]session.add_message("user",request.message)reply=session.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助手。请用中文回答。")session=sessions[request.session_id]session.add_message("user",request.message)returnStreamingResponse(session.get_stream_response(),media_type="text/event-stream")

四、几个实战踩坑记录

1. 上下文管理

一开始我没限制对话历史长度,结果聊了几十轮后 token 数爆炸,每次请求都又慢又贵。

解决方案:限制 messages 列表长度,超出后丢弃最早的对话。

MAX_HISTORY=20deftrim_messages(self):iflen(self.messages)>MAX_HISTORY:# 保留 system prompt,丢弃最早的对话system=[mforminself.messagesifm["role"]=="system"]history=[mforminself.messagesifm["role"]!="system"]self.messages=system+history[-MAX_HISTORY:]

2. 超时处理

DeepSeek API 在高峰期偶尔会响应较慢,客户端需要设置超时:

client=OpenAI(api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL,timeout=30,# 30秒超时max_retries=2# 自动重试2次)

3. 错误处理

API 调用可能因为各种原因失败,需要做好容错:

try:response=client.chat.completions.create(...)exceptExceptionase:print(f"API 调用失败:{e}")return"抱歉,我现在有点忙,请稍后再试。"

用户不关心技术细节,给他们一个友好的错误提示就够了。


五、成本估算

我用这个方案跑了两个月,来算算账:

日均请求:约500次 平均每次:约800tokens(输入+输出) 日均消耗:约 400K tokens 月均消耗:约 12M tokens 月均成本:约 ¥12(按 ¥1/百万token 计算)

12 块钱一个月,能跑一个完整的 AI 助手后端。对比 GPT-4o 同样用量要接近 200 块,差距是十几倍。


写在最后

DeepSeek 是目前性价比最高的中文大模型 API,没有之一。如果你在做 AI 相关的产品,特别是面向中文用户的场景,非常值得一试。

接入成本极低——改一行base_url就能从 OpenAI 切过来。先跑起来,等规模大了再考虑要不要换更贵的模型。

你对 DeepSeek 有什么想了解的?欢迎在评论区交流。

(文章中的代码已脱敏,完整项目代码可以在 GitHub 上找到)

http://www.jsqmd.com/news/1209238/

相关文章:

  • 多智能体的协作方式-Agent Team和Agent Room
  • 2026/7/17-暑期学习日报
  • 科学内容本地化:构建多语言术语管理与翻译系统
  • BPI-Pico-RP2040驱动SSD1306 OLED全攻略
  • GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(六)设置页、Token 与下载历史
  • Jupyter Notebook与深度学习实战:从实验到生产部署
  • Ansible Playbook 基础与流程控制-Inventory 主机清单模板-003篇
  • 2026北京医保诈骗罪辩护律师推荐(附真实案例与排名) - GrowUME
  • 2026年7月最新昆明真力时官方售后热线及客户服务网点地址 - 亨得利官方服务中心
  • CPU 端火焰图:逻辑帧时间分解与热点定位
  • 如何在Windows 11 LTSC 24H2上快速安装Microsoft Store的完整指南
  • 年服务超4000人、进面率31%+,江苏粉笔基地班凭什么跑通? - 天涯视角
  • 短线交易实战指南:从选股到风控的完整交易体系搭建
  • LoRA过拟合反复发作?不是参数问题——而是你的训练数据集缺少这6维元数据校验(附Python自动化脚本)
  • 苏州防水补漏 10 个高频问题解答:2026 年最新价格、免砸砖效果、上门检测全说明 - 徽顺虹
  • 2026五家优质的北京美国留学中介推荐,深度评测报告 - 2027品牌AI展
  • MCP 系列(08):企业治理——Registry、路由与可观测性
  • 人工智能专业找工作难吗?本科生该怎么定位
  • 2026年裸眼3D动画制作多少钱
  • 创业做科技行业商学院该读MBA还是MTT-交大安泰与中银科技金融学院分流
  • 雷达中国官方售后服务中心|服务热线及门店官方地址权威信息通告(2026年7月更新) - 亨得利钟表维修中心
  • 2026年杭州装修短视频代运营机构推荐,流量与转化双落地 - 装企精灵GEO
  • Eclipse Java开发环境安装配置全指南(2024最新版)
  • 2026年7月最新劳力士乌鲁木齐高新万达广场维修保养服务电话 - 劳力士官方服务中心
  • 陶雅轩陶瓷是几线品牌?揭秘其在行业中的真实地位 - GrowUME
  • 本地汇总,天津滨海新非急救长途转运救护车租赁,异地就医往返接送服务 - 资讯速览
  • 真力时中国官方售后服务中心|电话和完整地址权威信息通知(2026年7月更新) - 亨得利官方服务中心
  • Day1——Jerry
  • OpenClaw Native 线程完整详解
  • 石家庄五个家庭第一次卖黄金的真实经历:从长安到高新区,我们找到不收折旧费不扣损耗的实体店 - 小城生活闲谈