一、为什么选 DeepSeek
在动手之前,先说清楚为什么推荐 DeepSeek,而不是其他:
- 便宜:价格大约是 GPT 系列的几十分之一,个人练手、小项目几乎零成本;
- 兼容 OpenAI 格式:接口几乎和 OpenAI 一模一样,市面上大部分教程、SDK 都能直接套用;
- 中文友好:中文理解、生成质量稳定,适合做中文场景;
- 接入方式多:官方 API、硅基流动等第三方中转都可以,Key 通用。
一句话:对个人开发者来说,DeepSeek 是当前性价比和易用性的最优解之一。
二、申请 API Key(5 分钟)
- 打开 DeepSeek 开放平台:platform.deepseek.com
- 注册 / 登录(支持手机号)
- 左侧「API Keys」→「创建 API Key」
- 复制生成的
sk-xxxx,只显示一次,务必保存好
⚠️ 提醒:API Key 等于你的钱包钥匙,谁拿到谁就能花你的额度。下面会重点讲怎么保护它。
三、发第一个请求(10 分钟)
先装个 requests:
pip install requests写一段最简单的调用:
import requests
API_KEY = "sk-你的Key"
url = "https://api.deepseek.com/chat/completions"
resp = requests.post(
url,
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "你是小易AI实践的 AI 助手。"},
{"role": "user", "content": "用一句话介绍你自己"},
],
},
)
print(resp.json()["choices"][0]["message"]["content"])运行,几秒后就能看到 DeepSeek 的回复。到这里,你已经完成了一次真实的大模型调用。
核心就三个概念:
| 参数 | 含义 |
|---|---|
model | 用哪个模型(deepseek-chat 是对话模型) |
messages | 对话上下文,system 是系统设定,user 是用户输入 |
max_tokens | 限制回复长度,控制成本(可选) |
四、做成一个网页(10 分钟)
命令行里跑通了,接下来让它在浏览器里能用。这里有个关键的安全决策:
API Key 绝对不能写在前端代码里。 前端代码是公开的,任何人打开浏览器按 F12 就能看到你的 Key,然后盗刷你的额度。
正确做法是「前端 → 后端代理 → DeepSeek」:Key 只存在你自己的服务器上,前端只和你的后端通信。
前端(一个聊天框,发消息到 /api/chat):
const res = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message: 用户输入 })
});
const data = await res.json();
// data.reply 就是 AI 的回复后端(Python,把请求转发给 DeepSeek,Key 藏在服务器环境变量里):
import os, json
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from urllib import request
API_KEY = os.environ["DEEPSEEK_API_KEY"] # 从环境变量读,不写死在代码里
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
# 读取前端发来的消息,转发给 DeepSeek
body = json.loads(self.rfile.read(int(self.headers["Content-Length"])))
reply = call_deepseek(body["message"])
self._json({"reply": reply})
def call_deepseek(msg):
req = request.Request(
"https://api.deepseek.com/chat/completions",
data=json.dumps({
"model": "deepseek-chat",
"messages": [{"role": "user", "content": msg}],
}).encode(),
headers={"Authorization": f"Bearer {API_KEY}"},
)
with request.urlopen(req, timeout=120) as r:
return json.loads(r.read())["choices"][0]["message"]["content"]小技巧:后端代理我用的是 Python 标准库(http.server+urllib),零第三方依赖,服务器上不用装任何包,部署更干净。
五、上线前,一定要加这两样(5 分钟)
我自己的 demo 上线前,还补了两层保护,强烈建议你也加上:
1. 限流(防刷)
不设防的话,接口被人写脚本狂刷,你的额度几分钟就烧光了。给后端加一条简单的频率限制——同一 IP 每分钟最多 10 次、每天最多 100 次:
# 伪代码:单 IP 每分钟计数,超了就返回 429
if ip_this_minute >= 10:
return 429, "请求过于频繁,请稍后再试。"2. 额度上限
设一个「每日总调用量」的天花板,比如 1000 次/天。哪怕有人刷,最多也就消耗到上限为止,损失可控。
六、在线体验
我把这套完整流程做成了一个在线 demo,跑在自有服务器上,可以直接对话:
演示环境,回复由 AI 生成,仅供参考。
写在最后
从申请 Key 到上线一个能对话的 AI 应用,核心其实只有三步:
- 调通 API(10 分钟)
- 包一个后端代理,藏好 Key(10 分钟)
- 加限流和额度,安全上线(5 分钟)
真正拦住大多数人的不是技术,而是「以为很难」。希望这篇文章能帮你跨过那道坎。
我会持续更新企业 AI 落地的真实实践,欢迎关注「小易AI实践」公众号,一起把 AI 用起来。
本文为「AI 应用实战」系列第一篇,下一篇将分享:怎么把 AI 接进 Flask 后端,做成一个可复用的接口。
WECHAT OFFICIAL ACCOUNT
小易AI实践
持续更新企业 AI 落地经验