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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯:递增三元组

题目 递增三元组&#xff08;2018年蓝桥杯真题&#xff09; 题目描述&#xff1a; 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN]&#xff0c; 请你统计有多少个三元组(i, j, k) 满足&#xff1a; 1 < i, j, k < N Ai < Bj &…

都说了别用BeanUtils.copyProperties,这不翻车了吧

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 故事 新年新气象&#xff0c;小猫也是踏上了新年新征程&#xff0c;自从小猫按照老猫给的建议【系统梳理大法】完完整整地梳理完毕系统之后&#xff0c;小猫对整个系统的把控可谓又是上到可一个新的高度。…

yolov8学习笔记(二)模型训练

目录 yolov8的模型训练 1、制作数据集&#xff08;标记数据集&#xff09; 2、模型训练&#xff08;标记数据集、参数设置、跟踪模型随时间的性能变化&#xff09; 2.1、租服务器训练 2.2、加训练参数 2.3、看训练时的参数&#xff08;有条件&#xff0c;就使用TensorBoard&…

CCAA审核员认证通用基础考试大纲

认证通用基础考试大纲&#xff08;第1版&#xff09; 1.总则 本大纲依据CCAA认证人员注册准则制定&#xff0c;适用于拟向CCAA申请注册各领域实习级别的人员。 2.考试要求 2.1考试科目 各领域申请实习级别人员注册需通过“认证通用基础”科目考试。 2.2考试方式 “认证通…

(8)Linux使用C语言读取proc/stat等cpu使用数据

Linux使用C语言读取proc/stat数据 Author: OnceDay Date: 2024年2月23日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档: proc(5) - Linux manual page (man7.org) The /proc Filesystem — The Linux Kernel …

Open CASCADE学习|视图

目录 Mainwin.h Mainwin.cpp Mainwin.h ​#pragma once#include <QtWidgets/QMainWindow>#include "Displaywin.h"#include "OCC.h"class Mainwin : public QMainWindow{ Q_OBJECTpublic: Mainwin(QWidget* parent nullptr); ~Mainwin();​pri…

【Java程序设计】【C00277】基于Springboot的招生管理系统(有论文)

基于Springboot的招生管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的招生管理系统 本系统分为系统功能模块、管理员功能模块以及学生功能模块。 系统功能模块&#xff1a;在系统首页可以查看首页、专业…

opengl 学习纹理

一.纹理是什么&#xff1f; 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c;它可以用来添加物体的细节&#xff1b;类似于图像一样&#xff0c;纹理也可以被用来储存大量的数据&#xff0c;这些数据可以发送到着色器上。 采样是指用纹理坐标来获取纹…

机器学习简单介绍

&#xff08;本文为简单介绍&#xff0c;内容源于网络和AI&#xff09; 当今世界,技术与创新的步伐日新月异。在各类智能技术当中,如果说有一个绝对不容忽视的关键词,那就是“机器学习”(Machine Learning)。它是人工智能领域的核心分支,使得机器获得从数据中学习、进而做出决…

软件测试人员必会的linux命令

文件和目录操作: ● ls:列出目录中的文件和子目录。 ● cd:改变当前工作目录。 ● mkdir:创建新目录。 ● rm:删除文件或目录。 ● cp:复制文件或目录。 ● mv:移动或重命名文件或目录。 文本查看和编辑: ● cat:查看文件内容。 ● more或less:分页查看文件内…

Modern C++ std::variant的6个特性+原理

1 前言 上一节《Modern C std::variant的实现原理》我们简单分析了std::variant的实现原理&#xff0c;其实要学好C编程&#xff0c;除了看优秀的代码包括标准库实现&#xff0c;读文档也是很便捷且必须的一种办法。 本节我将逐条解析文档中的五个特性&#xff0c;解析的办法有…

我耀学IT—day01-Bootstrap介绍

1.1 Bootstrap 简介&#xff1a;什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap是前端开发中比较受欢迎的框架&#xff0c;简洁且灵活。它基于HTML、CSS和JavaScript&#xff0c;HTML定义页面元素&#xff0c;CSS定义页面布局&…

H12-821_77

77.如图所示的交换网络&#xff0c;所有交换机都运行了STP协议&#xff0c;当拓扑稳定后&#xff0c;在以下哪台交换机上修改配置BPDU的发送周期&#xff0c;可以影响STD配置BPDU的发送周期&#xff1f; A.STC B.SWD C.SWA D.SWB 答案&#xff1a;C 注释&#xff1a; 在根桥上…

外贸B2C独立站与外贸B2B独立站有什么区别

随着全球互联网的普及和电子商务的快速发展&#xff0c;越来越多的企业开始将业务拓展至线上。在外贸领域&#xff0c;B2B和B2C两种独立站模式逐渐崭露头角。虽然它们都属于电子商务范畴&#xff0c;但在很多方面存在明显的区别。本文将从概念、商业模式、网站设计、营销策略等…

(十九)devops持续集成开发——jenkins的一些常用插件和工具的安装

前言 本节内容会着重介绍jenkins持续集成开发工具的一些常用插件安装以及全局工具的配置安装&#xff0c;并说明其主要作用。在开始插件和工具安装之前&#xff0c;我们要保证可以正常访问网络&#xff0c;并且使用国内的插件更新地址&#xff0c;便于插件的正常安装。官方的地…

【JavaEE】网络原理: HTTPS协议相关内容

目录 HTTPS 是什么 HTTPS 的工作过程 对称加密 非对称加密 引入证书 理解数据签名 通过证书解决黑客攻击 HTTPS 是什么 HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…

蜂邮EDM-新手教程-新手也能使用

一、登录注册账号&#xff0c;注册登录地址&#xff1a;fengemail.com 二、配置邮箱 选择“账号设置”——“邮箱设置”进行发信邮箱配置。每个账号将默认存在一个“系统默认接口”&#xff0c;点击右侧的编辑按钮即可对该配置进行修改。 注&#xff1a;发信邮箱暂不支持个人…

抖音数据抓取工具|抖音视频下载工具

抖音数据抓取工具是一款基于C#开发的高效实用软件&#xff0c;旨在为用户提供便捷的抖音视频数据获取和处理功能。该工具不仅支持通过关键词进行搜索抓取&#xff0c;还能够通过分享链接进行单个视频的抓取和下载&#xff0c;为用户提供了多样化的数据采集方式。 主要功能模块…

SpringMVC 学习(四)之获取请求参数

目录 1 通过 HttpServletRequest 获取请求参数 2 通过控制器方法的形参获取请求参数 3 通过 POJO 获取请求参数&#xff08;重点&#xff09; 1 通过 HttpServletRequest 获取请求参数 public String handler1(HttpServletRequest request) <form action"${pageCont…

安装python的docker库

文章目录 一、在线安装二、制作离线安装包2.1 报错处理 一、在线安装 先确定是否有pip命令。 yum install python-pip直接安装。 pip install docker查看docker库。 pip list二、制作离线安装包 在有互联网的环境下直接安装。 #docker为下载下来的包名。 pip download do…