写了个gin+gorm加ai-agent 的小框架,希望和大家一起学习学习
https://gitee.com/dao_yi/ginchatginchat介绍golang 基于gin框架的web项目 ginchat快速开始项目启动go run main.go 启动前先配置数据库、修改config文件夹下的config.yaml文件 需要用到 AI-Agent 组件请先配置docker-compose.yaml文件、.evn文件软件架构config配置文件地址mysqlredis等文件 controller文件夹控制器业务逻辑 model文件夹数据库model文件 router路由地址 static静态文件地址 tool工具文件地址 view若使用gin自带的前端渲染前端文件存放地址接口不使用此文件夹 commponents文件夹ai-agent组件文件夹安装教程下载后请先配置数据库、修改config文件夹下的config.yaml文件然后直接go run main.go运行即可 需要用到 AI-Agent 组件请先配置docker-compose.yaml文件、.evn文件使用说明tool工具中含有大量的常用工具建议先阅读tool文件夹中文件并理清用法里面封装了大量的工具如curl请求数据库工具文件导入导出jwtlogredis封装好的responsemd5加密时间日期获取随机数获取等等……用户登录微信小程序等等功能数据库用的是gorm使用查询方法tool.Gdb如更具用户id查询用户名tool.Gdb.Table(za_admin).Where(id ?, models.Id).First() 具体使用方法请查看 gorm 文档本web框架用的是jwt存放token获取token中的存放的信息用法如需要拿到用Id首先Id需要存在token中 token, _ : tool.GetTokenFromRequest(c) uID : tool.GetValueFromTokenClaims(Id, token.Claims)本web已集成的功能用户登录 用户管理 用户权限分配 分类管理和token管理 微信登录 swagger自动生成接口文档等基础功能其他功能需用户自行添加。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#/本web框架集成了文件上传功能文件上传后数据统一存放于file表中若需特定功能请自行编写请查看admin/UploadController.go文件admin文件夹下的UploadController.go 文件 如单文件上传接口 /admin/upload/doUpload、多文件上传接口 /admin/upload/DuoUp、删除文件接口 /admin/upload/delFile 等等tool中包含的工具配置文件curl请求数据库工具文件导入导出jwtlogredis封装好的responsemd5加密时间日期获取随机数获取等等……ai-agent组件此组件是一个用于处理智能助手的组件它主要功能是将用户输入的消息发送给语言模型并获取模型的响应然后将响应返回给用户。是个很简单的模型若是需要更加详细的模型等需要自己调试这里的ai-agent组件 chatModel.go 文件此组件是一个用于与大语言模型交互的组件它的主要作用是将用户的输入消息发送给语言模型并获取模型的响应 embedder.go 此组件是一个用于将文本转换为向量表示的组件它的主要作用是将文本内容映射道向量空间是的语义相似的文本在向量空间中的距离较近这个组件在以下场景发挥重要作用。 indexer.go 此组件是用于存储和索引文档的组件它的作用是将文档存储到后端存储系统中(如Milvus向量数据库)并提供高效的检索能力。 retriever.go 此组件是用于从各种数据源检索文档的组件。它的主要作用是根据用户的查询条件从各种数据源中检索出最相关的文档。 tramsformer.go 该组件时用于文档转换和处理的组件它的主要作用是对输入的文档进行各种转换操作如分割、过滤、合并等从而得到满足特定需求的文档。 上面的组件在ai-agent中请根据自己的需求自行修改添加组件仅供参考ai-agent组件使用方法请参照controller文件夹下的admin文件夹下的Agent Controller.go 文件如何编排自己的ai-agent请阅读ai-agent组件具体使用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启动