找回密码
 立即注册
首页 业界区 安全 GoChatIAI -Go语言AI应用服务平台

GoChatIAI -Go语言AI应用服务平台

梭净挟 昨天 22:00
项目描述

基于Go语言实现AI应用服务平台,使用Gin框架构建Web服务,实现了用户注册登录,AI助手聊天主要功能。
功能要点

采用Vue.js开发用户界面,实现登录注册、AI聊天、等功能,提升用户体验。
搭建基于Gin框架的高性能HTTP服务器,支持并发请求处理,提升系统响应速度和吞吐量。
集成OpenAI模型,接入阿里云百炼模型SDK调用,实现本地部署。
实现JWT令牌认证和会话管理,支持用户登录状态维护和权限控制。
集成MySQL数据库和Redis缓存,使用连接池和ORM简化数据操作,提高查询效率。
采用RabbitMQ实现异步消息队列,支持高并发场景下的消息存储和消费。
采用zap记录操作日志,方便调试排查问题。
项目地址

https://gitee.com/oow3b/GoChatAI.git
参考文档

GopherAI(Go)开源代码:https://github.com/youngyangyang04/GopherAI
基于QQ邮箱实现验证码:https://blog.csdn.net/weixin_41957626/article/details/131386155
1.png

阿里云百炼:https://bailian.console.aliyun.com/cn-beijing/?tab=model#/api-key
进入此链接,获取自己本账号的api-key,后续会用到
https://bailian.console.aliyun.com/?spm=5176.29619931.J__Z58Z6CX7MY__Ll8p1ZOR.1.1369521crCDcVM&tab=api#/api
功能模块

用户模块
  1. package router
  2. import (
  3.         "GoChatAI/controller/user"
  4.         "github.com/gin-gonic/gin"
  5. )
  6. func InitUserRouter(r *gin.RouterGroup) {
  7.         var userController = user.UserController{}
  8.         // 注册
  9.         r.POST("/register", userController.Register)
  10.         // 登录
  11.         r.POST("/login", userController.Login)
  12.         // 发送邮箱验证码
  13.         r.POST("/captcha", userController.HandleCaptcha)
  14. }
复制代码
AI模块
  1. package router
  2. import (
  3.         "GoChatAI/controller/session"
  4.         "github.com/gin-gonic/gin"
  5. )
  6. func InitAIRouter(r *gin.RouterGroup) {
  7.         var sessionController = session.SessionController{}
  8.         {
  9.                 // 获取用户所有的会话id和标题
  10.                 r.GET("/chat/sessions", sessionController.GetUserSessionsByUserName)
  11.                 // 创建会话
  12.                 r.POST("/chat/send-new-session", sessionController.CreateSessionAndSendMessage)
  13.                 // 发送消息
  14.                 r.POST("/chat/send", sessionController.ChatSend)
  15.                 // 同步历史消息
  16.                 r.POST("/chat/history", sessionController.ChatHistory)
  17.                 // r.POST("/chat/tts", AI.ChatSpeech)                  // ChatSpeechHandler
  18.                 // 创建会话--流式响应
  19.                 r.POST("/chat/send-stream-new-session", sessionController.CreateStreamSessionAndSendMessage)
  20.                 // 发送消息--流式响应
  21.                 r.POST("/chat/send-stream", sessionController.ChatStreamSend)
  22.         }
  23. }
复制代码
项目部署

Docker安装
  1. # 更新
  2. yum update
  3. (1)yum 包更新到最新
  4. > yum update
  5. (2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
  6. > yum install -y yum-utils device-mapper-persistent-data lvm2
  7. (3)设置yum源为阿里云
  8. > yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  9. (4)安装docker
  10. > yum install docker-ce -y
  11. (5)安装后查看docker版本
  12. > docker -v
  13. # 启动docker:
  14. systemctl start docker
  15. # 停止docker:
  16. systemctl stop docker
  17.   
  18. # 重启docker:
  19. systemctl restart docker
  20. # 查看docker状态:
  21. systemctl status docker
  22. # 开机启动:  
  23. systemctl enable docker
  24. # 查看docker概要信息
  25. docker info
  26. # 查看docker帮助文档
  27. docker --help
  28. # 配置修改
  29. sudo systemctl daemon-reexec
  30. # 重启docker
  31. sudo systemctl restart docker
复制代码
Go项目打包到Linux服务器中
  1. set CGO_ENABLED=0
  2. set GOARCH=amd64
  3. set GOOS=linux
  4. # go build main.go
  5. # 指定名字打包
  6. go build -o build/GoChatAI main.go
复制代码
文件传输到Linux服务器上

2.png

Linux服务器赋予可执行权限
  1. chmod +x ./GoChatAI
复制代码
编写Dockerfile
  1. # 依赖环境
  2. FROM alpine:latest
  3. # 安装bash和必要工具
  4. RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
  5.     && apk update \
  6.     && apk add --no-cache \
  7.         bash \
  8.         vim \
  9.         nodejs \
  10.         npm \
  11.         curl \
  12.         # pnpm 需要通过 npm 安装
  13.     && npm install -g pnpm \
  14.     && rm -rf /var/cache/apk/*
  15.    
  16. # 先创建目录结构
  17. RUN mkdir -p /root/GoChatAI/conf
  18. # 复制执行文件到容器的根目录下
  19. COPY GoChatAI ./root/GoChatAI/
  20. COPY conf ./root/GoChatAI/conf/
  21. COPY web ./root/GoChatAI/web
  22. # 置顶容器服务的端口
  23. #EXPOSE 9090
  24. # 赋予权限
  25. RUN chmod +x /root/GoChatAI/GoChatAI
  26. # 安装前端依赖
  27. WORKDIR /root/GoChatAI/web
  28. RUN pnpm install
  29. # 创建启动脚本(前端和后端 一起启动)
  30. RUN echo "#!/bin/sh" > /start.sh && \
  31.     echo "echo 'Starting GoChatAI backend...'" >> /start.sh && \
  32.     echo "/root/GoChatAI/GoChatAI &" >> /start.sh && \
  33.     echo "echo 'Starting frontend server...'" >> /start.sh && \
  34.     echo "cd /root/GoChatAI/web && npm run serve  &" >> /start.sh && \
  35.     echo "echo 'Services started. Waiting...'" >> /start.sh && \
  36.     echo "wait" >> /start.sh && \
  37.     chmod +x /start.sh
  38. # 启动命令
  39. WORKDIR /root/GoChatAI
  40. CMD ["/start.sh"]
复制代码
生成镜像
  1. 生成镜像
  2. docker build -t gochatai:1.9 .
  3. # 查看打包镜像
  4. docker images
复制代码
创建容器
  1. docker run -d \
  2.   --name gochatai \
  3.   --network mynet \
  4.   -p 8080:8080 \
  5.   -p 9090:9090 \
  6.   -e LD_LIBRARY_PATH="/root/onnxruntime-linux-x64-1.22.0/lib:$LD_LIBRARY_PATH" \
  7.   -e OPENAI_API_KEY="sk-049180344ba84fb7b07d794d0c6f10db" \
  8.   -e OPENAI_MODEL_NAME="qwen-plus" \
  9.   -e OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1" \
  10.   gochatai:1.9
  11. # 查看容器进程
  12. docker ps -a
  13. docker logs
复制代码
安装Mysql
  1. docker run -d -p 3306:3306 \
  2. -v /home/mysql/conf:/etc/mysql/conf.d \
  3. -v /home/mysql/data:/var/lib/mysql \
  4. -e MYSQL_ROOT_PASSWORD=123456 \
  5. --name mysql \
  6. mysql:5.7
  7. # 进入mysql容器
  8. docker exec -it 3f bash
  9. # 登录 MySQL
  10. mysql -u root -p
  11. -- 如果存在小写的,先删除(可选)
  12. DROP DATABASE IF EXISTS gochatai;
  13. -- 创建大写名称的数据库
  14. CREATE DATABASE GoChatAI
  15.   CHARACTER SET utf8mb4
  16.   COLLATE utf8mb4_unicode_ci;
  17. -- 验证
  18. SHOW DATABASES LIKE 'GoChatAI';
  19. # 退出 MySQL
  20. exit
复制代码
安装Redis
  1. # 创建数据目录
  2. mkdir -p /data/redis
  3. # 运行带持久化的 Redis
  4. docker run -d \
  5.   --name redis \
  6.   -p 6379:6379 \
  7.   -v /data/redis:/data \
  8.   -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf \
  9.   redis:latest redis-server /usr/local/etc/redis/redis.conf
复制代码
安装rabbitmq并部署网络配置
  1. //重新启动一个命令行窗口,执行如下:
  2. //创建一个网络,方便后续两个docker互联
  3. docker network create mynet
  4. //执行以下语句,创建一个rabbitmq容器(若本身有rabbitmq容器或端口被占用,自行删除即可)
  5. docker run -d --name rabbitmq --network=mynet \
  6.   -p 5672:5672 -p 15672:15672 \
  7.   rabbitmq:3-management
  8. //进入容器
  9. docker exec -it rabbitmq bash
  10. //启动消息队列,rabbitmq这一块可能需要等一会,没有那么快开启
  11. rabbitmq-server -detached
  12. //在rabbitmq中创建root用户&&给予config.toml中默认用户权限
  13. rabbitmqctl add_user root 123456
  14. rabbitmqctl set_user_tags root administrator
  15. rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
  16. # 打开RabbitMQWeb管理界面插件  rabbitmq 管理页面:http://ip:15672/#/
  17. rabbitmq-plugins enable rabbitmq_management
  18. //退出rabbitmq容器
  19. exit
  20. //将rabbitmq容器放入当前网络
  21. docker network connect mynet rabbitmq
  22. //将刚刚创建的容器也加入到当前网络中
  23. docker network connect mynet <你的项目容器>
  24. # redis,mysql,的容器 也要加入到网络中
  25. docker network connect mynet redis
  26. docker network connect mynet mysql
复制代码

后续功能开发

1.前端代码重构采用vue3写法。
2.会话支持搜索(曾经问过的问题可以快速查找,减少调用token频率)
3.ai回复支持流式响应返回(等待用户访问以为卡住了)
4.ai回复支持语音播放
5.图像文字识别功能

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册