重磅开源 基于AI大语言模型的AI 助手全套开源解决方案 AI开源平台

介绍

  • GeekAI 基于AI大语言模型的AI 助手全套开源解决方案,自带运营管理后台,开箱即用。集成了 OpenAI, Claude, 通义千问,Kimi,DeepSeek等多个平台的大语言模型。
  • 基于极客学长大佬的开源项目geekai 二次开发而来。首先感谢大佬的开源,致敬。大佬的项目地址:https://gitee.com/blackfox/geekai
  • 我就是把前台页面修改了下,后端go语言我换成了python语言。
  • 后端go web框架gin 我换成了python web框架Django。
  • 我只是修改了大佬的一部分功能。
  • 我这个是基于geekai v4.0.5版本二次开发的。
  • 哈哈 bug比较多,本着学习的目的。欢迎大家可以一起交流,学习。

软件架构

  • 前端:Vue3 + element-plus

  • 后端:python3.11 + django

  • mysql: 8.0

  • redis: 6

  • daphne: 4.1.2

  • channels: 4.1.0

  • celery: 5.4.0

  • 邮件服务,邮箱登录需要用到,也可不用

  • 短信服务,短信登录需要用到,也可不用

  • 支付宝支付(企业用户),也可不用

  • 微信支付(企业用户),也可不用

安装后端

1,先安装python3.11

因为python3.11 不能yum安装,所以咱们就编译安装

复制代码
# 先安装依赖

yum groupinstall "Development Tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

# 下载软件包
wget https://mirrors.aliyun.com/python-release/source/Python-3.11.0.tgz
tar xf Python-3.11.0.tgz
cd Python-3.11.0

# 编译安装
./configure
make
make altinstall       # altinstall 为了不影响系统python,这样两个python都会同时存在

# 新建env环境,这样就可以每一个项目都有自己的环境,不会影响到其他的项目
python3.11 -m venv py311-geekai-django
source /root/flc-code/py-all-env/py311-geekai-django/bin/activate

# 如果退出虚拟环境就是    deactivate

# 这样python3.11 就安装好了

2,安装一些系统依赖包

复制代码
# 需要安装mysql-devel,因为mysqlclient需要用到
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql
yum install mysql-devel --nogpgcheck -y

3,安装项目依赖

复制代码
# 我直接用的豆瓣源 加速安装,国内比较慢
cd backend/
pip install -r requirements.txt -i https://pypi.doubanio.com/simple

4,修改配置

Django的配置文件在项目的settings.py文件。vim backend/ChatgptServer/settings.py

复制代码
# mysql 配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'chat_gpt_test',
        'USER': 'root',
        'PASSWORD': '12345678',
        'HOST': '10.8.100.113',
        'PORT': '3306',
        'OPTIONS': {
            # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES', time_zone = '+08:00'",
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}
复制代码
# websock 配置
ASGI_APPLICATION = "ChatgptServer.asgi.application"
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("redis://:[email protected]:6379")],
        },
    },
}
复制代码
# 阿里云短信服务
ALI_SMS_CONF = {
    "AccessKey": "LTAI5t7AkjSECLU6Bidsadehxsn",
    "AccessSecret": "fTLDxVwSeydsadsafxjARJM2r53aq",
    "SignName": "ai系统",
    "TemplateCode": "SMS_471500265"
}
复制代码
# 异步任务配置 celery
CELERY_BROKER_URL = 'redis://:[email protected]:6379/2'  # 使用 Redis 作为消息队列
CELERY_RESULT_BACKEND = 'redis://:[email protected]:6379/2'
CELERY_TIMEZONE = 'Asia/Shanghai'
复制代码
# 微信支付
WECHAT_PAY_CONFIG = {
    "Enabled": True,
    "AppId": "wx3614dsadfq399975",    # AppId
    "MchId": "15512441",    # 商户ID
    "SerialNo": "1D1061712edeasd2410D8E6DE8D1446644", # API 证书序列号
    "PrivateKey": "cert/apiclient_key.pem", # 将私钥拷贝到对应的目录
    "ApiV3Key": "kXnZPHg2Z213fdscsdcKeFbjG", # APIv3密钥
    "NotifyURL": "https://cs.dnzx.com/api/payment/wechat/notify", # 支付回调地址
    # "NotifyURL": "https://dev.dnzx.com/api/payment/wechat/notify", # 支付回调地址
    "ReturnURL": ""
}
复制代码
# 支付宝配置
ALI_PAY_CONFIG = {
    "Enabled" : True, # 启用支付宝支付通道,
    "UserId" : "208872102132481", # 商户ID
    "AppId" : "202143141238058", # App Id2021004198638058
    "PrivateKey" : "cert/alipay/app_private_key_test.pem",
    "PublicKey" : "cert/alipay/alipay_public_key_test.pem",
    "NotifyURL": "https://cs.dnzx.com/api/payment/wechat/notify", # 支付回调地址
    # "NotifyURL": "https://dev.dnzx.com/api/payment/alipay/notify", # 支付回调地址
}

5,迁移数据库

复制代码
python manage.py makemigrations
python manage.py migrate

6,初始化mysql数据

复制代码
# 初始化数据在backend/init-sql.sql里面
# 连接数据库 执行sql就行
# 后台管理的密码是admin/12345678

7,启动后端程序

复制代码
# 启动asgi服务
daphne ChatgptServer.asgi:application -b 0.0.0.0 -p 8080

# 启动异步任务
# 这个是为了 dell画图用的,因为画图使用了异步任务。画图时间会比较慢
celery -A CeleryProject worker --loglevel=INFO

这样咱们的后端程序 就启动起来了,正常应该没有啥问题,有问题可以关注我的仓库提交问题。或者关注我的公众号私信我。

安装前端

1,安装node v16.5

咱们使用nvm管理多个版本的node

国内使用github安装nvm比较慢,咱们之间使用gitee大佬的项目:nvm-cn

复制代码
bash -c "$(curl -fsSL https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh)"

# 这样就安装好了nvm
# 咱们再安装node
nvm install v16.5.0

2,安装依赖

复制代码
cd frontend/web

# 咱们在安装nvm-cn的时候,这个项目就直接把国内源给配置好了,安装应该会很快
npm install

3,修改配置

复制代码
vim frontend/web/.env.development

# api接口
VUE_APP_API_HOST=http://10.8.100.113:8080

# websocket地址
VUE_APP_WS_HOST=ws://10.8.100.113:8080

# 网站前缀
VUE_APP_KEY_PREFIX=ChatPLUS_DEV_
VUE_APP_TITLE="Chatgpt"
VUE_APP_VERSION=v1.0.0

4,启动服务

复制代码
npm run dev

5,访问服务

复制代码
http://ip:8888

# 后端地址
http://ip:8888/admin

# 账号密码
admin/12345678

Docker安装

安装docker

咱们就使用阿里云的centos7安装办法

复制代码
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils

# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

后端

复制代码
# 后端dockerfile在 backend下面的Dockerfile文件
cd backend

docker build -t geekai-django:v1 .

# 然后就会出现镜像geekai-django:v1
复制代码
Dockerfile文件内容
复制代码
FROM python:3.11-slim-bullseye


ARG APT_MIRROR=https://mirrors.aliyun.com
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=core-apt \
    --mount=type=cache,target=/var/lib/apt,sharing=locked,id=core-apt \
    sed -i "s@http://.*.debian.org@${APT_MIRROR}@g" /etc/apt/sources.list \
    && rm -f /etc/apt/apt.conf.d/docker-clean \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && apt-get update \
    && apt-get -y install --no-install-recommends pkg-config \
                                                  default-libmysqlclient-dev \
                                                  default-mysql-client \
                                                  gcc


# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1


# 创建工作目录
WORKDIR /app


# 安装依赖
COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt -i https://pypi.doubanio.com/simple

# 拷贝项目
COPY . /app/

前端

复制代码
# 前端的Dockerfile在frontend下面
cd frontend

# 然后执行脚本build-images.sh
# 你需要修改脚本里面的镜像名称啥的

dockerfile文件

复制代码
# 前端 Vue 项目构建
# 其实编译完后 就是一个dist目录
# 咱们把目录放到nginx下面就行
FROM registry.cn-beijing.aliyuncs.com/fanlichun/tedu-chat-web:nginx-1.20.2

WORKDIR /var/www/app
COPY ./web/dist /var/www/app/dist

EXPOSE 80
EXPOSE 443

启动

复制代码
# 关于启动的话,可以直接docker一个一个的启动
# 我这里提供docker-compose.yml文件启动
# 文件:backend/deploy/docker-compose.yml
# 你需要去修改yml文件里面的地址 以及新建一些目录

# 然后咱们就可以启动了
docker compose up -d
复制代码
docker-compose.yml文件
复制代码
version: '3.11'
 
services:
  api:
    image: teduchat-api:v1.0.2
    container_name: teduchat-api
    restart: always
    command: daphne ChatgptServer.asgi:application -b 0.0.0.0 -p 8080
    ports:
      - "8080:8080"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - /data/teduchat-api/media:/app/media
      - /data/teduchat-api/wechatpay-logs:/app/logs
      - /data/teduchat-api/wechatpay-cert:/app/cert


  task:
    image: teduchat-api:v1.0.2
    container_name: teduchat-task
    restart: always
    command: celery -A CeleryProject worker --loglevel=INFO
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - /data/teduchat-api/media:/app/media
 

  web:
    image: teduchat-web:v1.0.2
    container_name: teduchat-web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - /data/teduchat-web/nginx/conf/conf.d:/etc/nginx/conf.d
      - /data/teduchat-web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /data/teduchat-web/nginx/logs:/var/log/nginx
      - /data/teduchat-web/nginx/conf/ssl:/etc/nginx/ssl
      - /data/teduchat-api/media:/var/www/app/media

Q&A

1,关于OpenAI的模型

这个需要大家去找代理,进行访问。因为国内访问不了api

2,关于国内的模型

国内的模型,只要支持openai 的 SDK就可以在这个平台添加使用。

因为我这里直接用的openai 模块。没有用各大厂商的api。

3,关于一些bug

因为我是本着学习的目的去改写的,所以存在很多bug。

但是大家可以一起交流,学习。

4,关于问题

可以提交仓库的lssues。或者关注我的公众号私信我

我的公众号

项目地址

我的博客圆

我的开源项目

  1. 微信公众号自动发布文章,小绿书,自动发布热搜,利用AI自动发布种草小绿书 https://gitee.com/ccsang/wxmp

  2. jumpserver二次开发,简易工单管理。node,mysql,redis申请权限 https://gitee.com/ccsang/jumpserver-ticket

平台截图展示

首页