DeepSeek与Next.js全栈AI应用的开发教程

大明吖_7982

大明吖_7982

2026-05-25

391人浏览

原创

usechat 不能直接连接 deepseek,因其依赖 openai 兼容接口,而 deepseek api 在认证头、模型名、字段支持等方面存在差异;需在 app/api/chat/route.ts 中手动适配请求与响应格式,并禁用流式以避免双流冲突。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

deepseek与next.js全栈ai应用的开发教程

useChat 是你在 Next.js App Router 里对接 DeepSeek 最直接的入口,但直接调用它会失败——因为 useChat 默认只认 /api/chat 这个路由,而 DeepSeek 的 API 不是标准 OpenAI 兼容接口,必须自己写适配层。


useChat 为什么不能直接连 DeepSeek

useChat 是 Vercel AI SDK 提供的 React Hook,它内部依赖一个符合 OpenAI Chat Completion API 格式的后端接口。DeepSeek 的官方 API(如 @#@#@#@#@#@#@#@#@#@1)虽然结构接近,但存在几处关键差异:

  • 请求头必须带 Authorization: Bearer <deepseek_api_key></deepseek_api_key>,不能复用 OpenAI 的 api-key 字段名
  • model 字段值必须是 deepseek-chat 或 deepseek-r1,不是 gpt-4 类命名
  • 某些字段如 response_format、tool_choice 不被支持,传了会报错 400 Bad Request
  • 流式响应的 data: 块格式一致,但非流式响应的 choices[0].message.content 路径是通的

你如果直接在 app/api/chat/route.ts 里转发请求却不做字段清洗,前端就会卡在 isLoading 状态,控制台看不到错误,但 Network 面板里能看到 400。


如何写一个兼容 useChat 的 DeepSeek 路由

你需要在 app/api/chat/route.ts(注意路径必须叫 chat)里手动构造请求,并把 DeepSeek 响应转成 OpenAI 兼容格式:

  • 使用 fetch 发起 POST 请求到 @#@#@#@#@#@#@#@#@#@1
  • 把 req.json() 拿到的原始 body 中的 messages、model、temperature 等字段原样透传,但过滤掉 DeepSeek 不认的字段(比如 response_format)
  • 设置 headers:{"Content-Type": "application/json", "Authorization": <code>Bearer ${process.env.DEEPSEEK_API_KEY}}
  • 对响应做简单转换:提取 choices[0].message.content,包装成 { id, object, created, model, choices: [...] } 结构
export async function POST(req: Request) {
  const { messages, model = 'deepseek-chat', temperature = 0.7 } = await req.json();
<p>const response = await fetch('<a href="https://www.php.cn/link/a4fe3e4de8ad631acb028b271b1fc271">https://www.php.cn/link/a4fe3e4de8ad631acb028b271b1fc271</a>', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': <code>Bearer ${process.env.DEEPSEEK_API_KEY}</code>,
},
body: JSON.stringify({
messages,
model,
temperature,
// 不要加 stream: true —— useChat 自己处理流式,后端统一走非流式即可
}),
});</p><p>const data = await response.json();</p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7644" title="Wjs Localizing Video"><img
														src="https://img.php.cn/upload/skill/000/000/081/179161038881467.jpg" alt="Wjs Localizing Video" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/skill7644" title="Wjs Localizing Video" class="overflowclass">Wjs Localizing Video</a>
													<p class="overflowclass">用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...</p>
												</div>
												<a rel="nofollow" href="/xiazai/skill7644" title="Wjs Localizing Video" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div><p>return Response.json({
id: data.id || Date.now().toString(),
object: 'chat.completion',
created: data.created || Math.floor(Date.now() / 1000),
model: data.model || model,
choices: [{
index: 0,
message: { role: 'assistant', content: data.choices?.[0]?.message?.content || '' },
finish_reason: data.choices?.[0]?.finish_reason || 'stop',
}],
});
}</p>

⚠️ 注意:不要在后端开启 stream: true。Vercel AI SDK 的 useChat 会自动发起带 text/event-stream 的请求并解析 SSE;你若在 route.ts 里也用流式响应,容易出现双流嵌套、解码失败或连接中断。


useChat 前端页面怎么写才不踩坑

app/chat/page.tsx 必须标记 'use client',且不能混用服务端组件逻辑:

  • input 和 messages 状态交给 useChat 管理,别自己用 useState 同步
  • handleSubmit 直接调用 handleSubmit(来自 useChat 返回值),不要手动 fetch
  • 如果想加 loading 效果,用 isLoading,不是靠 status === 'pending'
  • 消息列表渲染时,确保每个 message 的 role 是 'user' 或 'assistant',DeepSeek 返回的 role 是对的,不用改
'use client';
import { useChat } from '@ai-sdk/react';
<p>export default function Chat() {
const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat();</p><p>return (</p><div>
<form onsubmit="{handleSubmit}">
<input value="{input}" onchange="{handleInputChange}" disabled><button type="submit" disabled>
          {isLoading ? '...' : 'Send'}
        </button>
</form>
<pre class="brush:php;toolbar:false;">  <div>
    {messages.map(m => (
      <div key="{m.id}">{m.role}: {m.content}</div>
    ))}
  </div>

); }


环境变量和部署时最容易漏的三件事

  • .env.local 里必须定义 DEEPSEEK_API_KEY,Next.js App Router 默认不注入环境变量到客户端,但 route.ts 可以读取
  • Vercel 部署时,要在项目 Settings → Environment Variables 里手动添加同名变量,否则线上 500
  • 本地开发若用 npm run dev,确保 Node 版本 ≥ 18.17,低版本下 fetch 在 route.ts 中可能返回 undefined 而不是 Promise

真正卡住人的往往不是模型调用本身,而是 OpenAI 兼容层那几行字段映射逻辑,以及环境变量在不同运行时的可见性边界。

相关专题

更多
DeepSeek官方入口
DeepSeek官方入口

DeepSeek,一个综合性的搜索引擎,提供来自学术数据库、新闻网站和社交媒体的广泛结果。访问 DeepSeek 的官方网站。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.02.17

39269

6

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

2026.02.27

1149

50

DeepSeek 入门与快速上手指南
DeepSeek 入门与快速上手指南

面向 AI 工具新手,从 DeepSeek 的账号注册、网页端与客户端使用讲起,介绍 DeepSeek-V3、DeepSeek-R1 等模型的能力定位与选择建议、对话提示词(Prompt)编写技巧、深度思考模式与联网搜索功能的使用场景、API Key 申请与首次接口调用流程,帮助用户快速上手 DeepSeek 并将其融入日常工作与学习。

2026.05.12

2309

18

DeepSeek API开发与应用集成教程合集
DeepSeek API开发与应用集成教程合集

系统讲解 DeepSeek 开放平台 API 的开发与集成方法,涵盖 API Key 鉴权与请求签名、Chat Completions 接口参数详解(temperature/top_p/max_tokens)、多轮对话上下文管理、流式输出(SSE Streaming)的前后端实现、Function Call 函数调用与外部工具对接、Embeddings 文本向量接口的使用、Python requests / openai SDK / J

2026.05.12

371

19

DeepSeek 提示词工程与高效使用教程合集
DeepSeek 提示词工程与高效使用教程合集

聚焦如何通过提示词工程充分发挥 DeepSeek 的能力上限,涵盖基础 Prompt 结构(角色/任务/格式/约束)设计、System Prompt 系统指令的最佳实践、Few-shot 示例引导与 Zero-shot 直接提问的场景选择、思维链(Chain of Thought)逐步推理引导、复杂任务的分步拆解策略、输出格式控制(JSON/Markdown/表格)、避免幻觉与提升准确率的约束技巧、DeepSeek-R1 深度推理模式的

2026.05.12

447

26

DeepSeek本地部署与私有化方案
DeepSeek本地部署与私有化方案

面向有数据隐私需求的开发者与企业,讲解 DeepSeek 开源模型的本地化部署方案,涵盖 DeepSeek-R1 各蒸馏版本(1.5B/7B/8B/14B/32B/70B)的硬件需求与能力对比、Ollama 一键本地运行与模型管理、vLLM 高性能推理服务部署、llama.cpp 量化推理(GGUF 格式/Q4/Q8 量化)在消费级显卡上的实践、Hugging Face Transformers 加载与微调、Docker 容器化部署、多

2026.05.12

322

21

DeepSeek行业应用场景实战
DeepSeek行业应用场景实战

以实际业务场景为导向,展示 DeepSeek 在不同行业中的落地应用方案,涵盖代码开发辅助(代码生成/审查/重构/单元测试编写)、长文写作与内容创作(报告/文案/论文大纲)、Excel 数据分析与可视化建议、智能客服机器人搭建(意图识别/多轮对话/知识库检索)、RAG 检索增强生成实现企业知识库问答、合同与法律文本审查、教育领域个性化辅导,帮助用户将 DeepSeek 转化为切实的生产力工具。

2026.05.12

492

17

DeepSeek 与主流 AI 大模型对比评测
DeepSeek 与主流 AI 大模型对比评测

从多个维度对 DeepSeek 与市场主流大语言模型进行客观对比,涵盖模型参数规模与架构差异(MoE 混合专家架构)、中文理解与生成能力对比、英文与多语言表现、数学推理与代码能力基准评测(MMLU/HumanEval/GSM8K)、长文本处理与上下文窗口对比、API 定价与性价比分析、响应速度与并发能力、开源生态与私有化部署灵活性,帮助用户根据自身需求在 DeepSeek、ChatGPT、Claude、Gemini、Llama 等模型中

2026.05.12

225

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
腾讯元宝使用手册
腾讯元宝使用手册

共0课时 | 0人学习

DeepSeek手册
DeepSeek手册

共0课时 | 0人学习