返回项目作品

AI Chat 数字分身

个人主页内嵌的 AI 聊天组件。通过精心设计的 System Prompt 构建石头的人设,支持 SSE 流式输出、对话上下文记忆,让访客体验到和「真人」聊天而非机器人问答的感觉。

DeepSeekNext.jsSSEAgentPrompt Engineering

为什么做这个项目

主页如果只是展示作品和技能,太像一个静态名片了。想加一个互动入口让访客能真正「对话」。不是冷冰冰的「我是 AI 助手」,而是模拟石头本人的说话风格、知识背景、甚至语气习惯。Prompt Engineering 能力直接决定了聊天体验,想深入实践一下。

技术实现

核心是 Next.js 的 API Route(/api/chat)+ 前端 SSE 处理。用户发消息 → POST 到 /api/chat → 拼接 System Prompt + 历史消息 → 转发 DeepSeek API(stream=true)→ 后端把 SSE 流原样透传给前端 → 前端逐字渲染打字机效果。消息状态用 React useState 管理,自动滚动到底部。交互细节花了功夫:loading 状态的渐变动画引用了外部 loader 设计(Uiverse.io),发送按钮在输入为空时灰色不可点。

核心功能

  • SSE 流式输出 + 打字机逐字渲染
  • 精心调教的 System Prompt(22岁 AI Agent 工程师人设)
  • 对话上下文记忆(全历史跟随)
  • 浮动球形态:右下角悬浮球,点击展开面板
  • 优雅的三种状态:欢迎语 / 加载中动画 / 对话中
  • 移动端适配:底部全屏弹窗式

踩过的坑 & 收获

流式输出的边界 case 比想象的多。网络中断时要清掉半截消息、DeepSeek API 偶尔返回非 JSON 格式要容错、用户连发多条消息要正确处理并发。另外人设 prompt 调了很多版——太正式像客服、太随意像话痨、英文太多不像中文母语者。最后定下来的是「话少、有观点、偶尔开小差」的松弛风格。

技术栈

Next.js API Route + DeepSeek API(deepseek-chat)+ SSE(Server-Sent Events)+ React useState + Framer Motion + Tailwind CSS + Prompt Engineering