所有项目

AI Friends · 虚拟角色好友聊天

⭐ 精选

Django 6 + Vue 3 全栈 AI 聊天站。自定义创建虚拟角色,支持流式对话、长期记忆、语音输入输出(ASR + TTS)+ SSE 推流。

📅 2026Django 6.0Vue 3LangChainSimpleJWTSQLite3TailwindCSS + DaisyUIVite 7WebSocket (TTS)

核心想法

给每个人一个可以自定义性格的 AI 好友。不是通用 ChatGPT 式聊天,而是:

  • 创建虚拟角色 — 性格、外观、系统提示词都是你设计的
  • 长期记忆 — 不是每轮对话丢掉上下文,记忆图(Memory Graph)会把关键事件持久化
  • 语音输入输出 — 可以直接说话给角色,角色也能语音回你(VAD 断句 + ASR + TTS WebSocket 实时合成)
  • 流式回复 — SSE 推流,角色一个字一个字说出来,有交流感

双 Agent 协作

用 LangChain 把聊天拆成两个 Agent:

User Input
    ↓
[Chat Agent]            · 负责生成自然的对话回复
    ↓
生成回复 → 回给前端(SSE 流式)
    ↓
[Memory Agent]          · 异步跟进,判断这轮对话有无需要长期记住的信息
    ↓
更新用户画像 / 角色记忆向量库

让回复快,但记忆不遗漏。

架构(前后端分离)

backend/                   · Django 6.0 + DRF + JWT
├── web/models/            · user / character / friend / message
├── web/views/
│   ├── create/character/  · 角色 CRUD
│   ├── friend/message/
│   │   ├── chat/          · 流式聊天 API(graph 编排)
│   │   ├── memory/        · 记忆管理(update + graph)
│   │   └── asr/           · 语音识别
│   └── user/account/      · 注册 / 登录 / token 刷新
└── documents/utils/       · 自定义 embedding + 文档入库

frontend/                  · Vue 3.5 + Pinia + Vite
├── components/
│   ├── character/         · 角色组件 + 聊天输入 + 聊天历史
│   └── navbar/            · 导航栏 + 15 个功能图标
├── views/
│   ├── homepage/          · 首页
│   ├── friend/            · 好友列表
│   ├── create/character/  · 创建 / 更新角色
│   └── user/              · 登录 / 注册 / 资料 / 空间
└── js/
    ├── http/api.js        · 普通 HTTP 封装
    └── http/streamApi.js  · SSE 流式封装

语音环节

麦克风输入
    ↓
@ricky0123/vad-web      · 浏览器端 VAD 判定"说完了"
    ↓
传给 ASR                 · 后端识别成文字
    ↓
进入 Chat Agent 流程
    ↓
文字回复 + WebSocket 流式 TTS 合成
    ↓
前端播放

技术栈亮点

  • SSE + WebSocket 双通道:SSE 推送聊天文字(简单),WebSocket 传 TTS 二进制音频(需要双向)
  • LangChain Graph 编排:不是线性 chain,而是状态图,chat 和 memory 两个 agent 并发 + 结果汇总
  • JWT 前后端分离:SimpleJWT,access token + refresh token 轮换
  • TailwindCSS 4 + DaisyUI:配色方案可 live 切换

运行

# 后端
cd backend
python manage.py runserver

# 前端
cd frontend
npm run dev