【MIT-PHP-推荐】imi-ai 是一个 ChatGPT 开源项目

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 目录,内部文件放到站点根目录。

相关推荐
测试者家园34 分钟前
为什么意图驱动测试是自动化测试的下一站,而不是替代品
自动化测试·软件测试·人工智能·持续测试·ai赋能·智能化测试·软件测试变革
D202020202 小时前
TikTok Shop禁止AI语音直播落地后,跨境卖家如何通过达秘合规调整带货内容
人工智能
像风一样自由20202 小时前
20.Milvus常见问题检索不到维度错误和数据一致性
人工智能·大模型·milvus
现代野蛮人2 小时前
【深度学习实验】—— 基于 LSTM 与 Optuna 调参的丙型肝炎预测
人工智能·深度学习·lstm
支支დ2 小时前
VO by Vercel 前端特定优势:为什么它是构建 AI 应用的新范式
前端·人工智能
ZGIAI2 小时前
ZGI 让那些"等你去处理"的事,真正跑起来
人工智能·架构
ZGIAI3 小时前
ZGI:别再做Agent Demo了,先问问它在业务里能不能撑过下周三
人工智能·架构
香芋芋圆3 小时前
AI 冲击内卷之下,普通前端如何破局?WebGIS—— 低门槛突围赛道
前端·javascript·人工智能·学习·职场发展
m0_614523553 小时前
完整教程|输入一句描述,能不能直接生成一段可以继续剪辑的视频:写结构化描述到生成短样片
人工智能·音视频
stormzhangV3 小时前
AGI 时代终于来了!
人工智能·openai