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

慈云数据 2024-03-12 技术支持 121 0

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

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon