forked from Kexing/AI4SE_Practices
|
|
||
|---|---|---|
| .. | ||
| routers | ||
| schemas | ||
| services | ||
| README.md | ||
| __init__.py | ||
| main.py | ||
README.md
AI4SE Survey API
FastAPI实现的AI4SE工具调研API,提供统一的接口用于查看和管理工具信息、测试结果等。
📋 功能特性
- ✅ 工具信息管理(查看、搜索、筛选)
- ✅ 测试任务管理
- ✅ 测试结果管理(创建、更新、查询)
- ✅ RESTful API接口
- ✅ 自动API文档(Swagger UI)
🚀 快速开始
安装依赖
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
# 或
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
启动服务
# 方式1:使用run.py
python run.py
# 方式2:使用uvicorn直接运行
uvicorn api.main:app --reload --host 0.0.0.0 --port 8000
访问API文档
启动服务后,访问以下地址:
- Swagger UI:http://localhost:8000/docs
- ReDoc:http://localhost:8000/redoc
- API根路径:http://localhost:8000/
📚 API接口说明
工具相关接口
获取工具列表
GET /api/tools/
参数:
page: 页码(默认:1)page_size: 每页数量(默认:20)type: 工具类型筛选category: 分类筛选search: 搜索关键词
示例:
curl "http://localhost:8000/api/tools/?page=1&page_size=10&type=code-generation"
获取工具详情
GET /api/tools/{tool_id}
示例:
curl "http://localhost:8000/api/tools/code-generation_github-copilot"
获取所有分类
GET /api/tools/categories
获取所有工具类型
GET /api/tools/types
根据分类获取工具
GET /api/tools/category/{category}
根据类型获取工具
GET /api/tools/type/{tool_type}
刷新工具缓存
POST /api/tools/refresh
测试任务相关接口
获取所有测试任务
GET /api/test-tasks/
获取测试任务详情
GET /api/test-tasks/{task_type}
任务类型:
task1-api: RESTful API开发task2-debug: React组件调试task3-refactor: 代码重构task4-requirements: 需求分析task5-architecture: 微服务架构设计
测试结果相关接口
获取测试结果列表
GET /api/test-results/
参数:
page: 页码page_size: 每页数量tool_id: 工具ID筛选task_type: 任务类型筛选status: 测试状态筛选
获取测试结果详情
GET /api/test-results/{result_id}
创建测试结果
POST /api/test-results/
请求体示例:
{
"tool_id": "code-generation_github-copilot",
"task_type": "task1-api",
"environment": {
"python": "3.10",
"fastapi": "0.103.1"
},
"original_code": "# 原始生成代码",
"final_code": "# 最终可用代码",
"metrics": {
"efficiency": {
"development_time": 20,
"interaction_count": 3
},
"quality": {
"code_accuracy": 85.0,
"test_pass_rate": 90.0
}
}
}
更新测试结果
PUT /api/test-results/{result_id}
删除测试结果
DELETE /api/test-results/{result_id}
🏗️ 项目结构
api/
├── main.py # FastAPI应用入口
├── schemas/ # Pydantic数据模型
│ ├── tool.py # 工具相关模型
│ └── test.py # 测试相关模型
├── routers/ # API路由
│ ├── tools.py # 工具相关路由
│ ├── test_results.py # 测试结果路由
│ └── test_tasks.py # 测试任务路由
├── services/ # 服务层
│ ├── tool_service.py # 工具服务
│ └── test_service.py # 测试服务
└── models/ # 数据库模型(如需要)
🔧 配置说明
环境变量
创建.env文件:
# API配置
API_HOST=0.0.0.0
API_PORT=8000
API_RELOAD=true
# 工具数据路径(可选)
TOOLS_BASE_PATH=./tools
CORS配置
在生产环境中,应该修改api/main.py中的CORS配置:
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:3000", "https://your-domain.com"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
📝 数据模型
工具模型(Tool)
id: 工具IDname: 工具名称type: 工具类型category: 工具分类description: 工具描述website: 网站信息pricing: 定价信息language_support: 语言支持features: 功能列表pros: 优点列表cons: 缺点列表
测试结果模型(TestResult)
id: 测试结果IDtool_id: 工具IDtask_type: 测试任务类型status: 测试状态metrics: 测试指标original_code: 原始代码final_code: 最终代码pros: 优点cons: 缺点
🧪 测试
运行测试
# 运行所有测试
pytest
# 运行特定测试文件
pytest tests/test_tools.py
# 运行测试并显示覆盖率
pytest --cov=api
🚀 部署
Docker部署
创建Dockerfile:
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "8000"]
构建和运行:
docker build -t ai4se-survey-api .
docker run -p 8000:8000 ai4se-survey-api
生产环境部署
使用Gunicorn和Uvicorn Workers:
pip install gunicorn
gunicorn api.main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
🔗 相关链接
提示:更多详细信息请查看项目根目录的README.md。