140 lines
3.0 KiB
Markdown
140 lines
3.0 KiB
Markdown
# 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 |