# 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] 输入卡号激活
### 支持的模型厂商
* [x] [OpenAI](https://openai.com/)
* [x] [Swoole AI](https://ai.swoole.com/)
* [x] [ChatGLM3](https://github.com/THUDM/ChatGLM3)
* [x] [Google Gemini](https://aistudio.google.com/)
### 其它
* [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:3100/`
**开发调试:**
```shell
npm run dev
```
**生产环境:**
#### 编译
```shell
npm run build-only
```
> `npm run build` 也可以,但会执行类型检查,不规范的代码编译不通过。
#### 编译结果
所有文件都在 `dist` 目录,内部文件放到站点根目录。
### 管理后台
后台默认账号密码都是 `admin`
**目录:**`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` 目录,内部文件放到站点根目录。
## 技术支持
可提
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能大作业 人工智能在计算机上实现时有2种不同的方式。一种是采用传统的编程技术,使系统呈现智能的效果,而不考虑所用方法是否与人或动物机体所用的方法相同。这种方法叫工程学方法(ENGINEERING APPROACH),它已在一些领域内作出了成果,如文字识别、电脑下棋等。另一种是模拟法(MODELING APPROACH),它不仅要看效果,还要求实现方法也和人类或生物机体所用的方法相同或相类似。遗传算法(GENERIC ALGORITHM,简称GA)和人工神经网络(ARTIFICIAL NEURAL NETWORK,简称ANN)均属后一类型。遗传算法模拟人类或生物的遗传-进化机制,人工神经网络则是模拟人类或动物大脑中神经细胞的活动方式。为了得到相同智能效果,两种方式通常都可使用。采用前一种方法,需要人工详细规定程序逻辑,如果游戏简单,还是方便的。如果游戏复杂,角色数量和活动空间增加,相应的逻辑就会很复杂(按指数式增长),人工编程就非常繁琐,容易出错。而一旦出错,就必须修改原程序,重新编译、调试,最后为用户提供一个新的版本或提供一个新补丁,非常麻烦。
资源推荐
资源详情
资源评论
收起资源包目录
imi-ai 是一个基于 PHP+Swoole+Vue 的 ChatGPT 开源项目,可以简单快速部署.zip (801个子文件)
.eslintrc.cjs 58B
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 702B
license 1KB
LICENSE 1KB
LICENSE 1KB
Makefile 377B
README.md 10KB
PULL_REQUEST_TEMPLATE.md 158B
phpstan.neon 550B
.npmrc 63B
.npmrc 31B
EmbeddingUploadParser.php 21KB
EmbeddingService.php 19KB
PaymentOrderBase.php 18KB
MemberCardService.php 17KB
CardService.php 16KB
EmbeddingProjectBase.php 16KB
CardTypeBase.php 16KB
MemberBase.php 15KB
ChatService.php 15KB
PromptBase.php 14KB
EmbeddingQaBase.php 14KB
ChatSessionBase.php 13KB
EmbeddingController.php 12KB
ChatService.php 12KB
PaymentService.php 12KB
EmbeddingSectionBase.php 11KB
config.php 11KB
EmbeddingFileBase.php 11KB
AdminMemberBase.php 10KB
CardBase.php 10KB
ChatMessageBase.php 10KB
CardDetailBase.php 9KB
MemberCardOrderBase.php 8KB
EmbeddingConfig.php 8KB
AdminOperationLogBase.php 8KB
ChatController.php 8KB
PromptService.php 8KB
EmbeddingRetryParser.php 7KB
MdFileHandler.php 7KB
MemberService.php 6KB
PaymentChannelService.php 6KB
PaymentConfig.php 5KB
EmailAuthService.php 5KB
EmbeddingPublicProjectService.php 5KB
PromptCategoryBase.php 5KB
共 801 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
野生的狒狒
- 粉丝: 2722
- 资源: 2219
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功