一个基于 Vue 3 + Flask 的全栈 AI 聊天应用,使用 CNB API 提供智能对话服务。
git clone https://cnb.cool/xwsir/CNB-Chat.git
cd CNB-Chat
cd backend
pip install -r requirements.txt
cd ../frontend
npm install
cd ../backend
python app.py
后端服务将在 http://127.0.0.1:5000 运行
cd ../frontend
npm run dev
前端服务将在 http://localhost:3000 运行
打开浏览器访问 http://localhost:3000
CNB-Chat/ ├── backend/ # Flask 后端 │ ├── app.py # 主应用入口 │ ├── requirements.txt # Python 依赖 │ └── data/ # 数据目录 │ └── .encryption_key # 加密密钥(自动生成) ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面组件 │ │ │ ├── ChatView.vue # 聊天页面 │ │ │ ├── LoginView.vue # 登录页面 │ │ │ ├── RegisterView.vue # 注册页面 │ │ │ ├── ProfileView.vue # 个人中心 │ │ │ └── AdminView.vue # 管理后台 │ │ ├── stores/ # Pinia 状态管理 │ │ │ ├── auth.js # 认证状态 │ │ │ ├── chat.js # 聊天状态 │ │ │ └── theme.js # 主题状态 │ │ ├── utils/ # 工具函数 │ │ │ ├── api.js # API 封装 │ │ │ └── markdown.js # Markdown 渲染 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── index.html │ ├── package.json │ └── vite.config.js ├── data/ # 数据目录 │ └── chat.sqlite # SQLite 数据库(自动生成) └── README.md
支持以下 Markdown 语法:
language ... ...编辑 backend/app.py 中的配置:
# JWT 密钥(生产环境请修改)
app.config['JWT_SECRET_KEY'] = os.environ.get(
'JWT_SECRET_KEY',
'ai-chat-secret-key-change-in-production-2024'
)
# 数据库路径
DATABASE = os.path.join(os.path.dirname(__file__), 'data', 'chat.sqlite')
编辑 frontend/src/utils/api.js:
const api = axios.create({
baseURL: 'http://127.0.0.1:5000/api',
timeout: 30000,
})
后端支持以下环境变量:
| 变量名 | 说明 | 默认值 |
|---|---|---|
JWT_SECRET_KEY | JWT 签名密钥 | ai-chat-secret-key-change-in-production-2024 |
ENCRYPTION_KEY | API 密钥加密密钥 | 自动生成 |
欢迎提交 Issue 和 Pull Request!