# AI Scheduler - 智能路由调度系统 基于Go语言开发的智能AI助手,支持Function Calling和工具调用,可以智能路由用户请求到合适的工具进行处理。 ## 功能特性 - 🤖 **智能对话**: 基于Ollama的AI对话能力 - 🔧 **工具调用**: 支持天气查询、计算器等工具 - 🎯 **智能路由**: 自动判断是否需要调用工具 - 📚 **API文档**: 集成Swagger文档 - ⚡ **高性能**: 基于Gin框架的HTTP服务 - 🏗️ **依赖注入**: 使用Wire进行依赖管理 ## 项目结构 ``` ai_scheduler/ ├── cmd/ # 应用程序入口 │ └── main.go ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── handlers/ # HTTP处理器 │ ├── models/ # 数据模型 │ ├── services/ # 业务服务 │ ├── tools/ # 工具实现 │ └── wire/ # 依赖注入 ├── pkg/ # 公共包 │ ├── ollama/ # Ollama客户端 │ └── types/ # 类型定义 ├── docs/ # API文档 ├── config.yaml # 配置文件 └── go.mod # Go模块 ``` ## 快速开始 ### 1. 环境要求 - Go 1.23+ - Ollama服务运行中 ### 2. 安装依赖 ```bash go mod tidy ``` ### 3. 配置文件 编辑 `config.yaml` 文件,确保Ollama服务地址正确: ```yaml server: port: "8080" host: "localhost" ollama: base_url: "http://localhost:11434" model: "llama2" timeout: 30s tools: weather: enabled: true mock_data: true calculator: enabled: true mock_data: false logging: level: "info" format: "json" ``` ### 4. 启动服务 ```bash go run cmd/main.go ``` 服务启动后,可以访问: - API服务: http://localhost:8080/api/v1/chat - Swagger文档: http://localhost:8080/swagger/index.html - 健康检查: http://localhost:8080/health ## API使用示例 ### 聊天接口 ```bash curl -X POST http://localhost:8080/api/v1/chat \ -H "Content-Type: application/json" \ -d '{ "message": "北京今天天气怎么样?", "model": "llama2" }' ``` ### 计算器示例 ```bash curl -X POST http://localhost:8080/api/v1/chat \ -H "Content-Type: application/json" \ -d '{ "message": "计算 15 + 25 * 3", "model": "llama2" }' ``` ## 支持的工具 ### 1. 天气查询工具 - 功能:查询指定城市的天气信息 - 示例:"北京今天天气怎么样?" ### 2. 计算器工具 - 功能:执行数学计算 - 支持:加减乘除、幂运算 - 示例:"计算 2 + 3 * 4" ## 开发说明 ### 添加新工具 1. 在 `internal/tools/` 目录下创建新工具文件 2. 实现 `types.Tool` 接口 3. 在 `tools.Manager` 中注册新工具 ### 配置管理 配置文件使用Viper加载,支持环境变量覆盖。 ### 依赖注入 使用Google Wire进行依赖注入,修改依赖关系后需要重新生成代码。 ## 许可证 MIT License