https://gitee.com/dao_yi/ginchat

ginchat

介绍

golang 基于gin框架的web项目 ginchat

快速开始

项目启动:go run main.go
启动前先配置数据库、修改config文件夹下的config.yaml文件
需要用到 AI-Agent 组件,请先配置:docker-compose.yaml文件、.evn文件

软件架构

config:配置文件地址,mysql,redis等文件
controller文件夹:控制器业务逻辑
model文件夹:数据库model文件
router:路由地址
static:静态文件地址
tool:工具文件地址
view:若使用gin自带的前端渲染,前端文件存放地址(接口不使用此文件夹)
commponents文件夹:ai-agent组件文件夹

安装教程

下载后请先配置数据库、修改config文件夹下的config.yaml文件,然后直接go run main.go运行即可
需要用到 AI-Agent 组件,请先配置:docker-compose.yaml文件、.evn文件

使用说明

  1. tool工具,中含有大量的常用工具,建议先阅读tool文件夹中文件,并理清用法

      里面封装了大量的工具,如:curl请求,数据库工具,文件导入导出,jwt,log,redis,封装好的response,md5加密,时间日期获取,随机数获取等等……用户登录微信小程序等等功能
    
  2. 数据库用的是gorm,使用查询方法:tool.Gdb如更具用户id查询用户名:

     tool.Gdb.Table("za_admin").Where("id = ?", models.Id).First()
      具体使用方法请查看 gorm 文档
    
  3. 本web框架用的是jwt存放token,获取token中的存放的信息用法:

        如需要拿到用Id:首先Id需要存在token中
        token, _ := tool.GetTokenFromRequest(c)
        uID := tool.GetValueFromTokenClaims("Id", token.Claims)
    
    1. 本web已集成的功能:

       用户登录
       用户管理 
       用户权限分配
       分类管理和token管理
       微信登录
       swagger自动生成接口文档等基础功能,其他功能需用户自行添加。
      
      1. swagger生成的接口文档地址:

         使用方法:如管理员列表:
          // List
          //
          //	@Summary	管理员列表分页数据
          //	@Tags		后台-管理员
          //	@param		page	query		int		false	"多少页"
          //	@param		limit	query		int		false	"每页多少条"
          //	@param		sort	query		string	false	"排序"
          //	@param		role_id	query		int		false	"角色id"
          //	@param		key		query		string	false	"搜索条件"
          //	@param		status	query		string	false	"状态(1:正常 2:禁用)"
          //	@Success	200		{string}	json{"code","message","data"}
          //	@Router		/admin/admins/list [GET]
          func (Admins) List(c *gin.Context) {
             page := controller.GetPageIndex(c)
             limit := controller.GetPageLimit(c)
             sort := controller.GetPageSort(c)
             key := controller.GetPageKey(c)
             status := controller.GetQueryToUint(c, "status")
             role_id := controller.GetQueryToUint(c, "role_id")
          }
        
          上面注释的说明就是接口说明,请自行编写接口说明,具体使用发放请查看 go swagger文档
        
          编写好接口文档后,使用swag init 命令生成接口文档,然后启动项目即可访问
        
         访问地址:
         http://localhost:你的端口/swagger/index.html#/
        
  4. 本web框架集成了文件上传功能,文件上传后数据统一存放于file表中,若需特定功能请自行编写

      请查看admin/UploadController.go文件,admin文件夹下的UploadController.go 文件
      如:单文件上传接口: /admin/upload/doUpload、多文件上传接口: /admin/upload/DuoUp、删除文件接口: /admin/upload/delFile 等等
    
  5. tool中包含的工具:

     配置文件,curl请求,数据库工具,文件导入导出,jwt,log,redis,封装好的response,md5加密,时间日期获取,随机数获取等等……
    
  6. ai-agent组件:

     此组件是一个用于处理智能助手的组件,它主要功能是,将用户输入的消息发送给语言模型,并获取模型的响应,然后将响应返回给用户。是个很简单的模型,若是需要更加详细的模型等需要自己调试这里的ai-agent组件
     
     chatModel.go 文件:此组件是一个用于与大语言模型交互的组件,它的主要作用是将用户的输入消息发送给语言模型,并获取模型的响应
     embedder.go 此组件是一个用于将文本转换为向量表示的组件,它的主要作用是将文本内容映射道向量空间,是的语义相似的文本在向量空间中的距离较近,这个组件在以下场景发挥重要作用。
     indexer.go 此组件是用于存储和索引文档的组件,它的作用是将文档存储到后端存储系统中(如:Milvus向量数据库),并提供高效的检索能力。
     retriever.go 此组件是用于从各种数据源检索文档的组件。它的主要作用是根据用户的查询条件,从各种数据源中检索出最相关的文档。
     tramsformer.go 该组件时用于文档转换和处理的组件,它的主要作用是,对输入的文档进行各种转换操作,如分割、过滤、合并等,从而得到满足特定需求的文档。
     
     上面的组件,在ai-agent中,请根据自己的需求自行修改添加,组件仅供参考
    
  7. ai-agent组件使用方法:

     请参照controller文件夹下的admin文件夹下的Agent Controller.go 文件,如何编排自己的ai-agent,请阅读ai-agent组件,具体使用
    
  8. ai-agent组件需要配置的参数:

     请看.env文件 和 docker-compose.yaml 文件中关于ai-agent的配置
     ai-agent需要使用到:etcd + milvus + minio + attu 需要这些软件的支持
     1、启动docker // docker启动
     2、 第一次 docker compose up -d // docker-compose启动,这个过程中会安装你在docker-compose.yaml文件中配置的镜像
     3、 启动成功后,请查看.env文件,修改ai-agent的配置参数
     4、 以后启动 docker compose up -d // docker-compose启动
    
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐