Files
AI-Chat/README.md
2026-05-08 10:05:31 +08:00

153 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI Chat - 智能对话助手
> **版本v1.0.0** | **协议AGPLv3** | **PHP 8.0 + MySQL + Nginx**
一个基于 PHP 8.0 的 AI 聊天 Web 应用,支持多种 AI 服务供应商,提供流式对话体验。
## 功能特性
- 用户认证系统JWT
- 多 AI 服务供应商支持OpenAI、Claude、DeepSeek 等 12+ 供应商)
- 思考/非思考模式切换
- SSE 流式响应(打字机效果)
- 多会话管理
- 文件上传(图片 + 代码文件)
- 代码高亮和 Markdown 渲染
- 自定义提示词和可配置人格(预设 + 自定义)
- 双重历史记录存储(服务器 + 本地缓存)
- Web 安装界面(零配置部署)
- API 配置管理界面
## 技术栈
| 组件 | 技术 |
|------|------|
| 后端 | PHP 8.0(原生,无框架) |
| 数据库 | MySQL 5.7+ / 8.0PDO 驱动) |
| 前端 | PHP 模板 + 原生 JavaScript + AJAX |
| Web 服务器 | Nginx + PHP-FPM |
| 认证 | JWTfirebase/php-jwt v7.0.5 |
| 依赖管理 | ComposerPSR-4 自动加载) |
| 代码高亮 | highlight.jsCDN |
| Markdown 渲染 | marked.jsCDN |
## 项目结构
```
ai-chat/
├── public/ # Web 根目录Nginx 指向此目录)
│ ├── index.php # 首页入口(自动路由到登录/安装页)
│ ├── api.php # API 统一入口
│ ├── router.php # PHP 内置开发服务器路由文件
│ ├── login.php # 登录页面
│ ├── chat.php # 聊天主页面
│ ├── config.php # 配置管理页面
│ ├── install.php # 安装向导页面
│ ├── assets/ # 前端静态资源
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript 文件
│ │ └── img/ # 图片资源
│ └── uploads/ # 用户上传文件
├── app/ # 应用代码PSR-4 自动加载)
│ ├── Config/ # 配置管理Database、AppConfig
│ ├── Controllers/ # 控制器Auth、Chat、Session 等)
│ ├── Middleware/ # 中间件Auth、Admin
│ ├── Models/ # 数据模型User、Session、Message 等)
│ ├── Services/ # 服务层AIService、Installer、Providers
│ └── Views/ # 视图模板login、chat、config、layout
├── config/ # JSON 配置文件(安装后生成)
├── docs/ # 文档
├── vendor/ # Composer 依赖(安装后生成)
├── composer.json # PHP 依赖配置
└── .gitignore
```
## 快速开始
### 环境要求
- PHP >= 8.0
- MySQL >= 5.7
- Nginx或 Apache
- Composer
- PHP 扩展PDO、cURL、json、mbstring
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd ai-chat
```
2. **安装 PHP 依赖**
```bash
composer install
```
3. **启动开发服务器**(本地开发)
```bash
php -S localhost:8080 -t public/ public/router.php
```
然后访问 `http://localhost:8080/`
4. **或配置 Web 服务器**(生产部署)
- 宝塔面板:网站运行目录设为 `/public`,伪静态填入 `docs/baota-nginx-snippet.conf` 的内容
- 手动 Nginx使用 `docs/nginx.conf` 作为完整站点配置
- 两种方式的详细说明见 [DEPLOY.md](docs/DEPLOY.md)
5. **设置目录权限**(生产部署)
```bash
chmod -R 755 .
chown -R www:www .
```
6. **创建数据库**
- 安装向导不会自动创建数据库,请提前手动创建
- 宝塔面板:数据库 → 添加数据库
- 手动:`CREATE DATABASE ai_chat DEFAULT CHARSET utf8mb4;`
7. **运行安装向导**
- 访问 `http://your-domain.com/install.php`
- 填写数据库连接信息和 AI 服务商配置,完成安装
详细部署说明请查看 [DEPLOY.md](docs/DEPLOY.md)。
## 页面说明
| 页面 | 路径 | 说明 |
|------|------|------|
| 首页 | `/` | 自动重定向到登录页或安装页 |
| 登录 | `/login.php` | 用户登录 |
| 聊天 | `/chat.php` | AI 对话主界面 |
| 配置 | `/config.php` | 系统配置(需管理员权限) |
| 安装 | `/install.php` | 安装向导(安装后自动跳转) |
| API | `/api.php` | RESTful API 统一入口 |
## 文档
- [安装指南](INSTALL.md)
- [部署文档](docs/DEPLOY.md)
- [架构说明](docs/ARCHITECTURE.md)
- [API 文档](docs/API.md)
- [人格系统](docs/PERSONALITY.md)
- [Nginx 配置](docs/nginx.conf)
- [宝塔面板配置](docs/baota-nginx-snippet.conf)
## 开源协议
本项目基于 [GNU Affero General Public License v3.0 (AGPLv3)](LICENSE) 开源。
## 版本历史
| 版本 | 日期 | 说明 |
|------|------|------|
| v1.0.0 | 2026-05-05 | 初始版本PHP 8.0 全栈实现 |
| v1.0.1 | 2026-05-06 | 修复首页 403 错误 |
| v1.0.2 | 2026-05-06 | 移除页面 Emoji优化排版与交互 |
| v1.0.3 | 2026-05-06 | 全面 UI 重构(登录页 / 安装页 / CSS 变量体系) |
| v1.0.4 | 2026-05-06 | 内联脚本与样式全部迁移至外部文件 |
| v1.1.0 | 2026-05-06 | 升级 firebase/php-jwt 至 7.0.5 |
| v1.1.1 | 2026-05-07 | 资源目录迁移至 public/ 下;修复安装页 JSON 解析错误;新增 router.php |
| v1.2.0 | 2026-05-08 | 修复 3 个致命 Bug数据库配置键名、Provider 路由、人格 Prompt 传递AI 提供商改为安装可选;文档全面规范化 |