Team Ai
Apppublic

Shivaaaahdjdnd/code_analysis

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
app.py132 linesDownload Raw Back to root
1from flask import Flask, request, jsonify2from flask_cors import CORS3import os4from coding_analyzer import CodingAnalyzer5from config import config6 7app = Flask(__name__)8if config.server.cors_enabled:9    CORS(app)10 11# Initialize the coding analyzer (loads model at startup)12analyzer = CodingAnalyzer()13 14 15@app.route('/api/batch-analysis', methods=['POST'])16def batch_analyze_solutions():17    """18    Batch coding analysis endpoint.19 20    Request body:21    {22        "submissions": [23            {24                "question": "Problem statement",25                "user_code": "User solution",26                "correct_solution": "Reference solution",27                "language": "python",       (optional, default: python)28                "difficulty": "easy",       (optional, default: medium)29                "test_cases": [             (optional)30                    {"input": [...], "expected_output": "..."}31                ]32            }33        ]34    }35    """36    try:37        data = request.get_json()38 39        if not data or 'submissions' not in data or not isinstance(data['submissions'], list):40            return jsonify({'error': 'Missing or invalid submissions array'}), 40041 42        submissions = data['submissions']43 44        if len(submissions) == 0:45            return jsonify({'error': 'Submissions array is empty'}), 40046 47        if len(submissions) > 10:48            return jsonify({'error': 'Maximum 10 submissions allowed per request'}), 40049 50        results = []51        total_score = 052 53        for idx, submission in enumerate(submissions):54            required_fields = ['question', 'user_code', 'correct_solution']55            missing_fields = [f for f in required_fields if f not in submission]56 57            if missing_fields:58                results.append({59                    'submission_id': idx + 1,60                    'status': 'error',61                    'error': f'Missing required fields: {missing_fields}'62                })63                continue64 65            try:66                question = submission['question']67                user_code = submission['user_code']68                correct_solution = submission['correct_solution']69                language = submission.get('language', 'python')70                difficulty = submission.get('difficulty', 'medium')71                test_cases = submission.get('test_cases', None)72 73                analysis_result = analyzer.analyze_solution(74                    question=question,75                    user_code=user_code,76                    correct_solution=correct_solution,77                    language=language,78                    difficulty=difficulty,79                    test_cases=test_cases80                )81 82                analysis_result['submission_id'] = idx + 183                analysis_result['question_title'] = (84                    question[:50] + '...' if len(question) > 50 else question85                )86 87                results.append(analysis_result)88                total_score += analysis_result.get('overall_score', 0)89 90            except Exception as e:91                results.append({92                    'submission_id': idx + 1,93                    'status': 'error',94                    'error': str(e)95                })96 97        successful = [r for r in results if r.get('status') != 'error']98        avg_score = total_score / len(successful) if successful else 099 100        return jsonify({101            'status': 'completed',102            'total_submissions': len(submissions),103            'average_score': round(avg_score, 2),104            'results': results105        })106 107    except Exception as e:108        return jsonify({'error': str(e)}), 500109 110 111@app.route('/health', methods=['GET'])112def health_check():113    model_loaded = analyzer.pipe is not None114    return jsonify({115        'status': 'healthy',116        'service': 'Qwen2.5-1.5B Coding Analysis System',117        'model': config.model.model_name,118        'ai_enabled': model_loaded119    })120 121 122if __name__ == '__main__':123    print("๐Ÿš€ Starting Qwen2.5-1.5B Coding Analysis Server...")124    print(f"๐Ÿ“ Server: http://{config.server.host}:{config.server.port}")125    print(f"๐Ÿค– AI Model: {config.model.model_name}")126    print("=" * 60)127 128    app.run(129        debug=config.server.debug,130        host=config.server.host,131        port=config.server.port132    )