AI4SE_Practices/AI4SE-survey/api
xmy 2808af29fd fastapi 2025-11-18 16:34:15 +08:00
..
routers fastapi 2025-11-18 16:34:15 +08:00
schemas fastapi 2025-11-18 16:34:15 +08:00
services fastapi 2025-11-18 16:34:15 +08:00
README.md fastapi 2025-11-18 16:34:15 +08:00
__init__.py fastapi 2025-11-18 16:34:15 +08:00
main.py fastapi 2025-11-18 16:34:15 +08:00

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文档

启动服务后,访问以下地址:

📚 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: 工具ID
  • name: 工具名称
  • type: 工具类型
  • category: 工具分类
  • description: 工具描述
  • website: 网站信息
  • pricing: 定价信息
  • language_support: 语言支持
  • features: 功能列表
  • pros: 优点列表
  • cons: 缺点列表

测试结果模型TestResult

  • id: 测试结果ID
  • tool_id: 工具ID
  • task_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