当前位置: 首页 > news >正文

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

项目地址

https://gitee.com/oow3b/GoChatAI.git

项目描述

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

功能要点

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

参考文档

GopherAI(Go)开源代码:https://github.com/youngyangyang04/GopherAI
基于QQ邮箱实现验证码:https://blog.csdn.net/weixin_41957626/article/details/131386155
图片
阿里云百炼: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

功能模块

用户模块

package routerimport ("GoChatAI/controller/user""github.com/gin-gonic/gin"
)func InitUserRouter(r *gin.RouterGroup) {var userController = user.UserController{}// 注册r.POST("/register", userController.Register)// 登录r.POST("/login", userController.Login)// 发送邮箱验证码r.POST("/captcha", userController.HandleCaptcha)
}

AI模块

package routerimport ("GoChatAI/controller/session""github.com/gin-gonic/gin"
)func InitAIRouter(r *gin.RouterGroup) {var sessionController = session.SessionController{}{// 获取用户所有的会话id和标题r.GET("/chat/sessions", sessionController.GetUserSessionsByUserName)// 创建会话r.POST("/chat/send-new-session", sessionController.CreateSessionAndSendMessage)// 发送消息r.POST("/chat/send", sessionController.ChatSend)// 同步历史消息r.POST("/chat/history", sessionController.ChatHistory)// r.POST("/chat/tts", AI.ChatSpeech)                  // ChatSpeechHandler// 创建会话--流式响应r.POST("/chat/send-stream-new-session", sessionController.CreateStreamSessionAndSendMessage)// 发送消息--流式响应r.POST("/chat/send-stream", sessionController.ChatStreamSend)}
}

项目部署

Docker安装

# 更新
yum update(1)yum 包更新到最新
> yum update(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
> yum install -y yum-utils device-mapper-persistent-data lvm2(3)设置yum源为阿里云
> yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(4)安装docker
> yum install docker-ce -y(5)安装后查看docker版本
> docker -v# 启动docker:
systemctl start docker# 停止docker:
systemctl stop docker# 重启docker:
systemctl restart docker# 查看docker状态:
systemctl status docker# 开机启动:  
systemctl enable docker# 查看docker概要信息
docker info# 查看docker帮助文档
docker --help# 配置修改
sudo systemctl daemon-reexec
# 重启docker
sudo systemctl restart docker

Go项目打包到Linux服务器中

set CGO_ENABLED=0
set GOARCH=amd64
set GOOS=linux
# go build main.go
# 指定名字打包
go build -o build/GoChatAI main.go

文件传输到Linux服务器上

图片

Linux服务器赋予可执行权限

chmod +x ./GoChatAI

编写Dockerfile

# 依赖环境
FROM alpine:latest
# 安装bash和必要工具
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk update \&& apk add --no-cache \bash \vim \nodejs \npm \curl \# pnpm 需要通过 npm 安装&& npm install -g pnpm \&& rm -rf /var/cache/apk/*# 先创建目录结构
RUN mkdir -p /root/GoChatAI/conf
# 复制执行文件到容器的根目录下
COPY GoChatAI ./root/GoChatAI/
COPY conf ./root/GoChatAI/conf/
COPY web ./root/GoChatAI/web# 置顶容器服务的端口
#EXPOSE 9090
# 赋予权限
RUN chmod +x /root/GoChatAI/GoChatAI# 安装前端依赖
WORKDIR /root/GoChatAI/web
RUN pnpm install# 创建启动脚本(前端和后端 一起启动)
RUN echo "#!/bin/sh" > /start.sh && \echo "echo 'Starting GoChatAI backend...'" >> /start.sh && \echo "/root/GoChatAI/GoChatAI &" >> /start.sh && \echo "echo 'Starting frontend server...'" >> /start.sh && \echo "cd /root/GoChatAI/web && npm run serve  &" >> /start.sh && \echo "echo 'Services started. Waiting...'" >> /start.sh && \echo "wait" >> /start.sh && \chmod +x /start.sh# 启动命令
WORKDIR /root/GoChatAI
CMD ["/start.sh"]

生成镜像

生成镜像
docker build -t gochatai:1.9 .# 查看打包镜像
docker images

创建容器


docker run -d \--name gochatai \--network mynet \-p 8080:8080 \-p 9090:9090 \-e LD_LIBRARY_PATH="/root/onnxruntime-linux-x64-1.22.0/lib:$LD_LIBRARY_PATH" \-e OPENAI_API_KEY="sk-049180344ba84fb7b07d794d0c6f10db" \-e OPENAI_MODEL_NAME="qwen-plus" \-e OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1" \gochatai:1.9# 查看容器进程
docker ps -a
docker logs 

安装Mysql

docker run -d -p 3306:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:5.7# 进入mysql容器
docker exec -it 3f bash
# 登录 MySQL
mysql -u root -p-- 如果存在小写的,先删除(可选)
DROP DATABASE IF EXISTS gochatai;-- 创建大写名称的数据库
CREATE DATABASE GoChatAI CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;-- 验证
SHOW DATABASES LIKE 'GoChatAI';# 退出 MySQL
exit

安装Redis

# 创建数据目录
mkdir -p /data/redis# 运行带持久化的 Redis
docker run -d \--name redis \-p 6379:6379 \-v /data/redis:/data \-v /path/to/redis.conf:/usr/local/etc/redis/redis.conf \redis:latest redis-server /usr/local/etc/redis/redis.conf

安装rabbitmq并部署网络配置

//重新启动一个命令行窗口,执行如下:
//创建一个网络,方便后续两个docker互联
docker network create mynet
//执行以下语句,创建一个rabbitmq容器(若本身有rabbitmq容器或端口被占用,自行删除即可)
docker run -d --name rabbitmq --network=mynet \-p 5672:5672 -p 15672:15672 \rabbitmq:3-management//进入容器
docker exec -it rabbitmq bash//启动消息队列,rabbitmq这一块可能需要等一会,没有那么快开启
rabbitmq-server -detached 
//在rabbitmq中创建root用户&&给予config.toml中默认用户权限
rabbitmqctl add_user root 123456
rabbitmqctl set_user_tags root administrator
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"# 打开RabbitMQWeb管理界面插件  rabbitmq 管理页面:http://ip:15672/#/
rabbitmq-plugins enable rabbitmq_management//退出rabbitmq容器
exit//将rabbitmq容器放入当前网络
docker network connect mynet rabbitmq
//将刚刚创建的容器也加入到当前网络中
docker network connect mynet <你的项目容器># redis,mysql,的容器 也要加入到网络中
docker network connect mynet redis
docker network connect mynet mysql

图片

http://www.jsqmd.com/news/455381/

相关文章:

  • Ansible+cpolar NAS 设备远程自动化管理,不再手动操作!
  • 【2026强制新规预警】:MCP系统OAuth接入失败率下降83%的5个关键配置项
  • Agentic RAG深度解析教程(非常详细):最新论文揭秘技术真相,从入门到精通,收藏这一篇就够了!
  • UnityLive2DExtractor:自动化资源提取赋能Live2D工作流的效率革命
  • PyTorch二分类实战:BCEWithLogitsLoss的3个常见坑与解决方案
  • 用Gazebo+ROS打造智能家居仿真环境:从建模到自动化启动全流程
  • RAG评估体系搭建教程(非常详细):RAGAS+LangFuse实战全解,从入门到精通,收藏这一篇就够了!
  • Java 17中5种高效复制List的方法对比(附性能测试)
  • LLM Prompt Cache深度解析(非常详细):从KV Cache原理到推理架构,从入门到精通,收藏这一篇就够了!
  • 小龙虾-热门论文抓取
  • 为什么你的Spring Cloud Function在Knative上冷启动翻倍?深度解析ClassLoader隔离与Native Image兼容性黑洞
  • 使用Qwen3-TTS-Tokenizer-12Hz和MATLAB进行语音信号分析研究
  • 快速原型设计:用快马AI构建轻量替代方案,验证卸载openclaw后的可行性
  • QwQ-32B开源模型落地:ollama支撑的轨道交通信号逻辑推理
  • 2026广东浴室柜厂家优质推荐榜 - 资讯焦点
  • 开源工具RPFM全流程指南:从入门到精通Total War MOD开发
  • 慢阻肺长期气短、易感冒?2026 温和调理产品榜单,养无极补肺丸排第一 - 资讯焦点
  • 不用Root!这些隐藏代码能一键开启安卓诊断端口(小米/OPPO/魅族机型实测)
  • 效率倍增:使用快马平台快速开发AI测试数据生成器,解放双手
  • 中心拓展法求回文
  • 7个秘诀解锁Poppins字体的专业排版能力
  • 零基础玩转VRoidStudio汉化插件:从安装到个性化定制完全指南
  • 艾尔登法环存档守护者:让你的冒险记忆永不消逝
  • UnityLive2DExtractor:自动化Live2D资源提取解决方案
  • 自指宇宙学的数学证明:九层收敛定理是如何推导的?
  • 专业术语简介【二】:数据库排水、哈希碰撞、彩虹表漏洞、多因子认证、流状态(Flow State)
  • 【算法打卡day17(2026-03-09 周一)DP - 完全背包问题】4-卡码网57-爬楼梯(进阶版) 5-力扣322-零钱兑换 6-力扣279-完全平方数
  • IMX6Q实战:如何用EIM总线扩展4路SJA1000 CAN控制器(附完整DTS配置)
  • ChatGLM3-6B在电商场景的创新应用:智能客服与推荐系统
  • Z-Image Atelier 效率工具整合:像使用Typora一样流畅地管理生成图像与提示词