A web-based system for data annotation and quality testing of professional domain questions using Hunyuan AI API.
- Question Input Interface: Web form for contributors to input questions with LaTeX support
- AI Testing System: Automated testing with 8 stateless API calls per question
- Answer Verification: AI-powered verification of correctness
- Qualification System: Questions with success rate < 50% are marked as qualified
- Excel Export: Export results in standardized 10-column format
- Backend: Flask, SQLAlchemy, PostgreSQL/SQLite
- Frontend: Bootstrap 5, MathJax (LaTeX rendering)
- AI Integration: OpenAI Python SDK (Hunyuan API)
- Export: openpyxl
- Clone the repository:
cd question-testing-system- Create virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Configure environment variables:
cp .env.example .env
# Edit .env and add your Hunyuan API key- Initialize database:
flask db init
flask db migrate -m "Initial migration"
flask db upgradeEdit .env file with your settings:
FLASK_APP=run.py
FLASK_ENV=development
SECRET_KEY=your-secret-key-here
DATABASE_URL=sqlite:///questions.db
HUNYUAN_API_KEY=your-api-key-here
HUNYUAN_BASE_URL=https://api.hunyuan.cloud.tencent.com/v1
HUNYUAN_MODEL=hunyuan-turbos-latest
TEST_ATTEMPTS=8
QUALIFICATION_THRESHOLD=50
MAX_ANSWER_LENGTH_MATH=40
MAX_ANSWER_LENGTH_OTHER=50
- Start the application:
python run.py-
Open browser and navigate to
http://localhost:5000 -
Add questions via the web interface
-
Run tests on questions (8 stateless API attempts per question)
-
View test results and export qualified questions to Excel
question-testing-system/
├── app/
│ ├── __init__.py # Flask app factory
│ ├── config.py # Configuration
│ ├── models.py # Database models
│ ├── routes/
│ │ ├── question_routes.py # Question CRUD
│ │ └── testing_routes.py # Testing & export
│ ├── services/
│ │ ├── hunyuan_service.py # API integration
│ │ ├── testing_service.py # Testing logic
│ │ └── export_service.py # Excel export
│ ├── templates/ # HTML templates
│ └── static/ # CSS/JS files
├── exports/ # Generated Excel files
├── requirements.txt
├── run.py # Application entry point
└── README.md
- Basic info: title, type, subject, difficulty
- Content: question_text (LaTeX), standard_answer, solution_approach
- Metadata: knowledge_points, timestamps
- Test metrics: correct_count, success_rate, qualified status
- Difficulty status: "X/8" format
- Individual attempt details
- AI answers and verification responses
- Error tracking
The system uses stateless API calls to ensure varied responses:
- Each call is independent (no conversation history)
- Temperature > 0 for response variation
- 0.5s delay between calls for rate limiting
- Automatic retry with exponential backoff
10-column format:
- 标题 (Title)
- 题目类型 (Question Type)
- 领域 (Subject)
- 难度 (Difficulty)
- 知识点 (Knowledge Points)
- 问题 (Question Text)
- 答案 (Standard Answer)
- 解题思路 (Solution Approach)
- (Empty Column)
- 查难情况 (Difficulty Status: X/8)
MIT License