接入真实 AI:DeepSeek

想让产品「真的会聊天 / 会总结 / 会写文案」,就需要接一个真实的大模型。本文用 DeepSeek 走通整条链路——国内直连、便宜稳定、和 OpenAI 协议完全兼容,换任何模型都是同一套写法。

为什么选 DeepSeek:国内服务器直连不需要代理、价格是 GPT 的零头、接口跟 OpenAI 一模一样(以后想换 GPT/Qwen/Kimi 只改两行)。新手第一个 AI 产品,从它起步最省心。

第一步:申请 API Key

  1. 打开 platform.deepseek.com 注册账号(手机号即可)。
  2. 充值:DeepSeek 需要先充值才能调用(充 10 块就能用很久;新账号常有少量赠送额度可先试)。在控制台「充值」页面操作。
  3. 进入 API keys 页面 → 点「创建 API key」→ 复制那串 sk- 开头的字符串。

⚠️ 这串 Key 只显示一次,立刻复制存好。它等于你的钱包密码——泄露了别人就能用你的余额,绝不能写进前端代码、截图发群、或提交到 GitHub。

第二步:接入代码

DeepSeek 兼容 OpenAI 协议,关键就两个常量:

  • Base URL:https://api.deepseek.com
  • 模型:deepseek-v4-flash(便宜快的日常款)/ deepseek-v4-pro(需要推理时用)

旧模型名 deepseek-chatdeepseek-reasoner 会在 2026/07/24 弃用,新项目直接用 deepseek-v4-flash

用 Vercel AI SDK(推荐,自带流式打字机)

npm i ai @ai-sdk/openai @ai-sdk/react

服务端 API 路由(密钥只在这里出现):

import { createOpenAI } from "@ai-sdk/openai";
import { streamText } from "ai";

const deepseek = createOpenAI({
  baseURL: "https://api.deepseek.com",
  apiKey: process.env.DEEPSEEK_API_KEY, // 来自环境变量,不写死
});

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = streamText({ model: deepseek("deepseek-v4-flash"), messages });
  return result.toDataStreamResponse();
}

前端:

"use client";
import { useChat } from "@ai-sdk/react";

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();
  return (
    <div>
      {messages.map((m) => (
        <p key={m.id}><b>{m.role}:</b> {m.content}</p>
      ))}
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} placeholder="说点什么…" />
      </form>
    </div>
  );
}

不用框架,一个 fetch 也行

const res = await fetch("https://api.deepseek.com/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.DEEPSEEK_API_KEY}`,
  },
  body: JSON.stringify({
    model: "deepseek-v4-flash",
    messages: [{ role: "user", content: "你好" }],
  }),
});
const data = await res.json();
console.log(data.choices[0].message.content);

第三步:Key 安全存放

永远不要把 Key 写进代码或前端。按部署环境放进环境变量:

  • 本地开发:项目根 .env.local 里写 DEEPSEEK_API_KEY=sk-xxx,并确认 .env* 已在 .gitignore 里。
  • Cloudflare Workers:用 secret,不进代码库——
    printf '%s' "sk-xxx" | npx wrangler secret put DEEPSEEK_API_KEY
    
  • Vercel:项目 Settings → Environment Variables 里添加 DEEPSEEK_API_KEY

调用 AI 的请求一定走你自己的服务端路由中转,前端只跟自己的后端说话——这样 Key 永远不出现在浏览器里。

常见报错对照

报错 原因 解决
401 Authentication Fails Key 错了 / 没带 检查环境变量是否拼对、是否 sk- 开头
402 Insufficient Balance 余额不足 去控制台充值
429 Rate Limit 请求太频繁 前端加节流,做重试退避
模型名报错 用了将弃用的旧名 改用 deepseek-v4-flash

换成别的模型?

同一套代码,只改 Base URL 和模型名就能换供应商(都兼容 OpenAI 协议):

  • 通义千问 Qwen:https://dashscope.aliyuncs.com/compatible-mode/v1
  • 月之暗面 Kimi:https://api.moonshot.cn/v1
  • OpenAI 官方:https://api.openai.com/v1(国内需代理)

把上面这整篇丢给你的 Coding Agent(点页面顶部「复制文档给 AI 部署」),它能照着帮你把 AI 接进现有项目。