# imi-ai
<p align="center">
<a href="https://www.imiphp.com" target="_blank">
<img src="https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/logo.png" alt="imi" />
</a>
</p>
[![Server test](https://github.com/imiphp/imi-ai/actions/workflows/server.yml/badge.svg)](https://github.com/imiphp/imi-ai/actions/workflows/server.yml)
[![Web test](https://github.com/imiphp/imi-ai/actions/workflows/web.yml/badge.svg)](https://github.com/imiphp/imi-ai/actions/workflows/web.yml)
[![Php Version](https://img.shields.io/badge/php-%3E=8.1-brightgreen.svg)](https://secure.php.net/)
[![Swoole Version](https://img.shields.io/badge/swoole-%3E=5.0.3-brightgreen.svg)](https://github.com/swoole/swoole-src)
[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/imiphp/imi-ai/blob/master/LICENSE)
## 介绍
imi-ai 是一个 ChatGPT 开源项目,支持聊天、问答、写代码、写文章、做作业等功能。
项目架构合理,代码编写优雅,简单快速部署。前后端代码完全开源,不管是学习自用还是商用二开都很适合。
本项目现已支持 ChatGPT 聊天 AI 和 Embedding 模型训练对话。
项目采用 MIT 协议开源,你可以方便地进行二次开发,并且可以用于商业用途。
## 演示
公益演示地址:https://ai.imiphp.com/ (注册送额度,付费可用 gpt-4、gpt-3.5-turbo-16k)
![演示](https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/1.jpg)
![演示](https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/2.jpg)
![演示](https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/3.jpg)
![演示](https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/4.jpg)
## 技术栈
后端基于 [imi](https://github.com/imiphp/imi) (PHP+Swoole)
前端基于 [Chanzhaoyu/chatgpt-web](https://github.com/Chanzhaoyu/chatgpt-web) (TypeScript+Vue3+Vite3+NaiveUI)
后台基于 [honghuangdc/soybean-admin](https://github.com/honghuangdc/soybean-admin) (TypeScript+Vue3+Vite3+NaiveUI)
## 功能列表
### 用户
* [x] 用户邮箱注册和登录
* [ ] 用户手机号注册和登录
* [ ] 微信登录(PC/公众号/小程序)
### 聊天 AI
* [x] ChatGPT 聊天 AI(OpenAI)
* [x] 支持设置提示语(Prompt)
* [x] 支持模型参数调参
* [x] 服务端多会话储存和上下文逻辑
* [x] 渲染代码高亮
* [x] 渲染 LaTeX 公式
* [x] 保存消息到本地图片
* [x] 提示词模型商店
* [x] 支持限流
### 模型训练
* [x] OpenAI 多文件(压缩)模型训练
* [x] OpenAI 单文件模型训练
* [x] 聊天 AI 回答问题(可用于问题解答和客服等场景)
* [ ] 搜索引擎,可定位文件
* [x] 支持解压文件(zip、rar、7z、xz、gz、bz、tar.*)
* [x] 支持解析 txt 文件
* [x] 支持解析 md 文件
* [x] 支持解析 docx 文件
* [x] 支持解析 pdf 文件
* [ ] 消息队列异步处理训练任务
* [x] 支持对话限流
### AI 生图
* [ ] OpenAI 图片生成
* [ ] Midjourney 图片生成
### 计费系统
* [x] Tokens 计费系统(卡)
* [ ] 在线支付购买卡
* [x] 输入卡号激活
### 支持的模型厂商
* [x] OpenAI
* [x] Swoole AI
### 其它
* [x] 设计文档
* [x] 接口文档
* [ ] 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](https://wiki.swoole.com/#/environment?id=-enable-swoole-pgsql) 编译)
> 建议直接使用 swoole-cli,可在 [Swoole Release 下载](https://github.com/swoole/swoole-src/releases)。
* MySQL >= 8.0.17
* Redis
* PostgreSQL + [pgvector](https://github.com/pgvector/pgvector) (可选,使用模型训练必选,需为项目数据库启用扩展 `CREATE EXTENSION vector;`)
* 7-Zip,可选,但使用模型训练必选,用于解压文件。[下载](https://7-zip.org/download.html) 并将 `7zz` / `7zzs` 解压到 `/usr/bin/7z` 或 `/usr/local/bin/7z` 目录
* Pandoc,可选,安装后可支持 docx 文件模型训练。[下载](https://pandoc.org/installing.html)
* poppler-utils,可选,安装后可支持 pdf 文件模型训练。
**安装:**
```shell
# Debian/Ubuntu
apt install poppler-utils
# CentOS
yum install poppler-utils
# Alpine
apk add poppler-utils
```
**安装依赖:**
`composer update`
**生成证书:**
jwt 签名需要,必须生成自己的证书!
```shell
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` 中修改。
执行生成表结构命令:
```shell
vendor/bin/imi-swoole generate/table
```
**导入 PostgreSQL:**
首先创建 `db_imi_ai` 数据库,如果使用其它名称,需要在 `.env` 中修改。
为 `db_imi_ai` 或你使用的数据库启用 `pgvector` 扩展:
```sql
CREATE EXTENSION vector;
```
导入 `pgsql.sql` 文件,创建表。
> 不使用模型训练功能,可以不配置 PostgreSQL。
**运行服务:**
```shell
vendor/bin/imi-swoole swoole/start
```
**生产环境:**
编辑 **.env** 文件。
必须的设置:
```env
# 生产环境禁用热更新
@app.beans.hotUpdate.status=0
# 生产环境禁用调试
APP_DEBUG=false
```
其它设置根据自身需要进行配置。
### 用户端H5
**目录:**`web`
**环境要求:**
`node` 需要 `^16 || ^18 || ^19` 版本(`node >= 14` 需要安装 [fetch polyfill](https://github.com/developit/unfetch#usage-as-a-polyfill)),使用 [nvm](https://github.com/nvm-sh/nvm) 可管理本地多个 `node` 版本
```shell
node -v
```
**安装依赖:**
```shell
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:1002/`
**开发调试:**
```shell
npm run dev
```
**生产环境:**
#### 编译
```shell
npm run build-only
```
> `npm run build` 也可以,但会执行类型检查,不规范的代码编译不通过。
#### 编译结果
所有文件都在 `dist` 目录,内部文件放到站点根目录。
### 管理后台
**目录:**`admin`
**环境要求:**
`node` 需要 `^16 || ^18 || ^19` 版本(`node >= 14` 需要安装 [fetch polyfill](https://github.com/developit/unfetch#usage-as-a-polyfill)),使用 [nvm](https://github.com/nvm-sh/nvm) 可管理本地多个 `node` 版本
```shell
node -v
```
**安装依赖:**
```shell
npm install
```
> 也可以使用 yarn、pnpm 等。
**配置:**
复制 **.env.tpl** 改名为 **.env** 文件。
编辑 **.env** 文件。
* `VITE_API_URL`,服务端接口地址,如:`http://127.0.0.1:12333`
**开发调试:**
```shell
npm run dev
```
**生产环境:**
#### 编译
```shell
npm run build
```
> `npm run build` 也可以,但会执行类型检查,不规范的代码编译不通过。
#### 编译结果
所有文件都在 `dist` 目录,内部文件放到站点根目录。
## 技术支持
可提供以下服务:项目搭建部署、技术咨询、定制开发等
**QQ群:** 17916227
**微信群:**
![微信](https://cdn.jsdelivr.net/gh/imiphp/imi-ai@master/res/wechat.png)
## 赞助开发
imi-ai 是基于 MIT 协议完全开源的项�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
imi-ai is a ChatGPT open source project based on PHP+Swool.zip (764个子文件)
.eslintrc.cjs 58B
commit-msg 84B
nginx.conf 2KB
reset.css 7KB
transition.css 1KB
global.css 446B
tailwind.css 59B
.env.development 45B
swoole.dockerfile 416B
Dockerfile 370B
.dockerignore 363B
.dockerignore 69B
.editorconfig 198B
.editorconfig 198B
.eslintignore 34B
.eslintignore 26B
generate-facade 235B
generate-model 410B
.gitattributes 306B
.gitattributes 304B
.gitignore 445B
.gitignore 396B
.gitignore 158B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
index.html 2KB
index.html 396B
favicon.ico 41KB
1.jpg 153KB
4.jpg 129KB
3.jpg 127KB
2.jpg 73KB
avatar.jpg 5KB
.eslintrc.js 3KB
tailwind.config.js 470B
tailwind.config.js 452B
postcss.config.js 82B
postcss.config.js 81B
color.json 11KB
package.json 3KB
theme.json 3KB
package.json 2KB
composer.json 2KB
settings.json 2KB
settings.json 1KB
tsconfig.json 677B
tsconfig.json 630B
recommend.json 627B
extensions.json 523B
launch.json 433B
extensions.json 65B
.commitlintrc.json 53B
github-markdown.less 25KB
highlight.less 3KB
style.less 894B
global.less 567B
license 1KB
LICENSE 1KB
LICENSE 1KB
Makefile 377B
README.md 9KB
PULL_REQUEST_TEMPLATE.md 158B
phpstan.neon 550B
.npmrc 63B
.npmrc 31B
EmbeddingUploadParser.php 21KB
EmbeddingService.php 19KB
MemberCardService.php 17KB
EmbeddingProjectBase.php 16KB
MemberBase.php 15KB
PromptBase.php 14KB
EmbeddingQaBase.php 14KB
ChatService.php 13KB
ChatSessionBase.php 13KB
CardService.php 13KB
EmbeddingController.php 12KB
ChatService.php 12KB
EmbeddingSectionBase.php 11KB
EmbeddingFileBase.php 11KB
config.php 11KB
AdminMemberBase.php 10KB
ChatMessageBase.php 10KB
CardDetailBase.php 9KB
CardBase.php 9KB
CardTypeBase.php 8KB
MemberCardOrderBase.php 8KB
EmbeddingConfig.php 8KB
AdminOperationLogBase.php 8KB
PromptService.php 8KB
ChatController.php 7KB
EmbeddingRetryParser.php 7KB
MdFileHandler.php 7KB
MemberService.php 6KB
EmailAuthService.php 5KB
EmbeddingPublicProjectService.php 5KB
PromptCategoryBase.php 5KB
EmbeddingController.php 5KB
MemberConfig.php 5KB
AdminMemberService.php 5KB
共 764 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C183579-123578-c1235789.jpg
- Qt5.14 绘画板 Qt Creator C++项目
- python实现Excel表格合并
- Java实现读取Excel批量发送邮件.zip
- 【java毕业设计】商城后台管理系统源码(springboot+vue+mysql+说明文档).zip
- 【java毕业设计】开发停车位管理系统(调用百度地图API)源码(springboot+vue+mysql+说明文档).zip
- 星耀软件库(升级版).apk.1
- 基于Django后端和Vue前端的多语言购物车项目设计源码
- 基于Python与Vue的浮光在线教育平台源码设计
- 31129647070291Eclipson MXS R.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功