mi-ai 是一个 ChatGPT 开源项目,支持聊天、问答、写代码、写文章、做作业等功能。
项目架构合理,代码编写优雅,简单快速部署。前后端代码完全开源,不管是学习自用还是商用二开都很适合。
本项目现已支持 ChatGPT 聊天 AI 和 Embedding 模型训练对话。
项目采用 MIT 协议开源,你可以方便地进行二次开发,并且可以用于商业用途。
imi-ai: imi-ai 是一个基于 PHP+Swoole+Vue 的 ChatGPT 开源项目,可以简单快速部署。
演示
公益演示地址:https://ai.imiphp.com/ (注册送额度,付费可用 gpt-4、gpt-3.5-turbo-16k)




技术栈
后端基于 imi (PHP+Swoole)
前端基于 Chanzhaoyu/chatgpt-web (TypeScript+Vue3+Vite3+NaiveUI)
后台基于 honghuangdc/soybean-admin (TypeScript+Vue3+Vite3+NaiveUI)
功能列表
用户
- 用户邮箱注册和登录
- 用户手机号注册和登录
- 微信登录(PC/公众号/小程序)
聊天 AI- ChatGPT 聊天 AI(OpenAI)
- 支持设置提示语(Prompt)
- 支持模型参数调参
- 服务端多会话储存和上下文逻辑
- 渲染代码高亮
- 渲染 LaTeX 公式
- 保存消息到本地图片
- 提示词模型商店
- 支持限流
模型训练- OpenAI 多文件(压缩)模型训练
- OpenAI 单文件模型训练
- 聊天 AI 回答问题(可用于问题解答和客服等场景)
- 搜索引擎,可定位文件
- 支持解压文件(zip、rar、7z、xz、gz、bz、tar.*)
- 支持解析 txt 文件
- 支持解析 md 文件
- 支持解析 docx 文件
- 支持解析 pdf 文件
- 消息队列异步处理训练任务
- 支持对话限流
AI 生图- OpenAI 图片生成
- Midjourney 图片生成
计费系统- Tokens 计费系统(卡)
- 在线支付购买卡(接口层)
- 微信支付
- 支付宝支付
- 输入卡号激活
支持的模型厂商- OpenAI
- Swoole AI
其它- 设计文档
- 接口文档
- Docker 支持
- 视频讲解教程
更多功能计划中…… 项目正在持续迭代中,欢迎所有人来贡献代码 安装服务端目录:server 环境要求: -  Linux / MacOS,可用内存至少1G 
-  PHP >= 8.1(扩展:curl、gd、mbstring、pdo_mysql、redis、swoole) 
-  Swoole >= v5.0.3(必须启用 --enable-openssl --enable-swoole-curl 编译,模型训练需启用 --enable-swoole-pgsql 编译) 建议直接使用 swoole-cli,可在 Swoole Release 下载。 -  MySQL >= 8.0.17 
-  Redis 
-  PostgreSQL + pgvector (可选,使用模型训练必选,需为项目数据库启用扩展 CREATE EXTENSION vector;) 
-  7-Zip,可选,但使用模型训练必选,用于解压文件。下载 并将 7zz / 7zzs 解压到 /usr/bin/7z 或 /usr/local/bin/7z 目录 
-  Pandoc,可选,安装后可支持 docx 文件模型训练。下载 
-  poppler-utils,可选,安装后可支持 pdf 文件模型训练。 安装: # Debian/Ubuntu apt install poppler-utils # CentOS yum install poppler-utils # Alpine apk add poppler-utils 安装依赖: composer update 生成证书: jwt 签名需要,必须生成自己的证书! cd server/resource/jwt openssl genrsa -out pri_key.pem 2048 openssl rsa -in pri_key.pem -pubout -out pub_key.pem openssl genrsa -out admin_pri_key.pem 2048 openssl rsa -in admin_pri_key.pem -pubout -out admin_pub_key.pem 配置文件: 复制 .env.tpl 改名为 .env 文件。 根据文件内注释修改对应的配置。 应用配置: 后台-系统管理-系统设置 导入 MySQL: 首先创建 db_imi_ai 数据库,如果使用其它名称,需要在 .env 中修改。 执行生成表结构命令: vendor/bin/imi-swoole generate/table 导入 PostgreSQL: 首先创建 db_imi_ai 数据库,如果使用其它名称,需要在 .env 中修改。 为 db_imi_ai 或你使用的数据库启用 pgvector 扩展: CREATE EXTENSION vector; 导入 pgsql.sql 文件,创建表。 不使用模型训练功能,可以不配置 PostgreSQL。 运行服务: vendor/bin/imi-swoole swoole/start 生产环境: 编辑 .env 文件。 必须的设置: # 生产环境禁用热更新 @app.beans.hotUpdate.status=0 # 生产环境禁用调试 APP_DEBUG=false 其它设置根据自身需要进行配置。 用户端H5目录:web 环境要求: node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本 node -v 安装依赖: npm install 也可以使用 yarn、pnpm 等。 配置: 复制 .env.tpl 改名为 .env 文件。 编辑 .env 文件。 -  VITE_GLOB_API_URL,服务端接口地址,如:http://127.0.0.1:12333/ 
-  VITE_APP_API_BASE_URL 前端调试访问地址,如:http://127.0.0.1:3100/ 开发调试: npm run dev 生产环境: 编译npm run build-only npm run build 也可以,但会执行类型检查,不规范的代码编译不通过。 编译结果所有文件都在 dist 目录,内部文件放到站点根目录。 管理后台目录:admin 环境要求: node 需要 ^16 || ^18 || ^19 版本(node >= 14 需要安装 fetch polyfill),使用 nvm 可管理本地多个 node 版本 node -v 安装依赖: npm install 也可以使用 yarn、pnpm 等。 配置: 复制 .env.tpl 改名为 .env 文件。 编辑 .env 文件。 - VITE_API_URL,服务端接口地址,如:http://127.0.0.1:12333
开发调试: npm run dev 生产环境: 编译npm run build npm run build 也可以,但会执行类型检查,不规范的代码编译不通过。 编译结果所有文件都在 dist 目录,内部文件放到站点根目录。 
 
- VITE_API_URL,服务端接口地址,如:http://127.0.0.1:12333
 
-  
 
-  
 
-  
 
 
 
 
 
 









