Download app/services/intelligence_brain.py from asnannp/DocDoeAI: direct link, hf CLI and curl.
- Browser
- Download file 5.47 kB
-
https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/app/services/intelligence_brain.py
- Command line
-
hf download hf://spaces/asnannp/DocDoeAI/app/services/intelligence_brain.py
-
curl -L -o intelligence_brain.py https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/app/services/intelligence_brain.py
5.47 kB
| from typing import Any, Optional | |
| from app.services.ai_provider import BaseAIProvider | |
| from app.schemas.intelligence import ( | |
| DiagnosticQuiz, | |
| DiagnosticResultResponse, | |
| WhatToStudyResponse, | |
| StudyPathResponse, | |
| ExamIntelligenceResponse, | |
| VideoPlanResponse | |
| ) | |
| class ExamIntelligenceBrain: | |
| def __init__(self, provider: BaseAIProvider): | |
| self.provider = provider | |
| def generate_diagnostic_quiz( | |
| self, | |
| context: str, | |
| document_id: str, | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| task = ( | |
| "Generate a diagnostic study quiz with 5-7 questions to assess a student's level. " | |
| "Questions must cover: concept understanding, memory (definitions), diagram recall, " | |
| "answer writing logic, and problem solving. Each question must have 4 options. " | |
| "Assign a category to each question from: concept, memory, diagram, answer_writing, problem_solving." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=context, | |
| language=language, | |
| metadata={"document_id": document_id}, | |
| response_schema=DiagnosticQuiz, | |
| ) | |
| def analyze_diagnostic_results( | |
| self, | |
| results: dict[str, Any], | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| # This one might be a simple logic if we want to save tokens, | |
| # but let's use the Brain for deeper analysis. | |
| task = ( | |
| "Analyze the following student diagnostic quiz results and classify their level. " | |
| "Calculate their accuracy per category (concept, memory, etc.) and identify specific weaknesses. " | |
| "Determine if they are 'beginner', 'intermediate', or 'advanced'. " | |
| "Explain why in the 'analysis' field." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=f"Results: {results}", | |
| language=language, | |
| response_schema=DiagnosticResultResponse, | |
| ) | |
| def generate_what_to_study( | |
| self, | |
| context: str, | |
| student_level: str, | |
| goal: str, | |
| pyq_context: Optional[str] = None, | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| task = ( | |
| f"As an Exam Intelligence Brain, determine what a {student_level} student aiming for '{goal}' should study. " | |
| "Categorize topics into: must study, high weightage, repeated PYQ topics, low priority, and skip for now. " | |
| "Identify 'easy marks' (simple but high value) and 'danger areas' (frequent mistake spots). " | |
| "Provide a logical 'study_order'. " | |
| "For every topic, include a 'reason' explaining if it is based on the source, syllabus, or PYQ. " | |
| f"Available PYQ data: {pyq_context or 'Not available yet'}. " | |
| "If PYQ data is missing, prioritize based on source structure and typical board patterns." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=context, | |
| language=language, | |
| response_schema=WhatToStudyResponse, | |
| ) | |
| def generate_study_path( | |
| self, | |
| context: str, | |
| plan_type: str, | |
| student_level: str, | |
| goal: str, | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| task = ( | |
| f"Create a high-density personal study path for a {plan_type} timeframe. " | |
| f"Target: {goal} for a {student_level} student. " | |
| "Break the plan into logical time blocks. Each block must have: " | |
| "time_block, topic, reason, task, output_expected, and revision_checkpoint. " | |
| "The plan must be realistic for the given time (1h, 3h, 5h, 7d, or 30d)." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=context, | |
| language=language, | |
| response_schema=StudyPathResponse, | |
| ) | |
| def generate_exam_intelligence( | |
| self, | |
| context: str, | |
| chapter_name: str, | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| task = ( | |
| f"Generate deep exam intelligence for the chapter: {chapter_name}. " | |
| "Include topic importance, PYQ patterns, likely question types, and " | |
| "mark-wise structured answers (1, 2, 4, 6 marks). " | |
| "List common mistakes and keywords that must be underlined in the exam." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=context, | |
| language=language, | |
| response_schema=ExamIntelligenceResponse, | |
| ) | |
| def generate_extended_video_plan( | |
| self, | |
| context: str, | |
| title: str, | |
| duration_type: str, | |
| style: str, | |
| language: str = "English" | |
| ) -> dict[str, Any]: | |
| task = ( | |
| f"Create an extended video teaching plan for '{title}'. " | |
| f"Duration category: {duration_type}. Style: {style}. " | |
| "The plan must include: hook, real-life analogy, simple explanation, official terms, " | |
| "visual suggestions for every scene, PYQ connection, exam answer format, common mistakes, " | |
| "a 3-question mini-quiz, and a final recap." | |
| ) | |
| return self.provider.generate_json( | |
| task=task, | |
| context=context, | |
| language=language, | |
| response_schema=VideoPlanResponse, | |
| ) | |