from pydantic import BaseModel, Field from typing import List, Dict, Literal, Optional # ========= 1. Parameters for DNA methodology + topic ========= class DNAMetadata(BaseModel): topic: str = Field( ..., title="The main topic to generate an outline for", description="The specific subject or concept that the outline should focus on. Example: 'Time Management', 'Machine Learning Basics', 'Healthy Nutrition'", ) domain: str = Field( ..., title="Knowledge domain", description="The broader field of knowledge or industry where the topic belongs. Example: IT, Engineering, Education, Healthcare, Business", ) # content_type: Literal["Educational", "Awareness", "Training"] = Field( content_type: str = Field( ..., title="Type of content", description=( "Educational → for structured learning (e.g., lessons, modules)\n" "Awareness → for informative/raising awareness purposes (e.g., campaigns, workshops)\n" "Training → for skill development with step-by-step practice (e.g., hands-on, exercises)" ), ) # audience: str = Field( # ..., # title="Target audience", # description=( # "The group of people intended to benefit from the material. Example:\n" # "- Kids (age 6–12)\n" # "- High School Students (teenagers)\n" # "- University Students (academic level)\n" # "- Professionals (working individuals)\n" # "- General Public (all ages, non-technical)" # ) # ) audience: str = Field( ..., title="Target audience", description=( "The group of people intended to benefit from the material. Examples:\n" "- Education (Teachers, Principals, Students, Faculty, Instructional Designers)\n" "- Special Education (Special Needs Teachers, Speech Therapists, Psychologists, ABA Specialists, Children with Disabilities)\n" "- Family & Child (Parents, Counselors, Social Workers, Children, Adolescents, Youth, Elderly)\n" "- Women Empowerment (Mothers, Teenage Girls, Women Entrepreneurs, Researchers, Artists)\n" "- Self-Development (Individuals seeking personal growth, Life Coaches, Students, Graduates, Employees)\n" "- Training (Soft/Technical Skills Trainers, Training Designers, Training Institutes)\n" "- Human Resources (HR Managers, Recruiters, Employee Relations, L&D Officers)\n" "- Management & Leadership (CEOs, Directors, Team Leaders, Consultants, Entrepreneurs)\n" "- Law (Lawyers, Judges, Prosecutors, Legal Advisors, Notaries)\n" "- Public Relations & Media (PR Officers, Journalists, Broadcasters, Media Professionals)\n" "- Marketing & Sales (Marketing Managers, Sales Representatives, Digital Marketing Specialists, Content Creators)\n" "- Technology & IT (Software Developers, Data Scientists, AI Engineers, Cybersecurity Specialists)\n" "- Languages & Translation (Translators, Interpreters, Language Teachers, Proofreaders)\n" "- Medicine & Nutrition (Doctors, Nurses, Pharmacists, Nutritionists, Mental Health Specialists)\n" "- Occupational Health & Safety (HSE Officers, Safety Inspectors, First Aid Trainers)\n" "- Sports (Athletes, Coaches, Referees, Nutritionists, Physiotherapists)\n" "- Arts & Fashion (Artists, Designers, Photographers, Art Directors)" ), ) material_type: List[str] = Field( ..., title="Nature of the scientific material", description=( "Defines the learning approach:\n" "- Conceptual → focuses on theories, principles, and abstract knowledge.\n" "- Procedural → step-by-step methods, instructions, or processes.\n" "- Structural → frameworks, models, and organized structures.\n" "- Personal → reflections, personal skills, and self-development aspects.\n" "- Realistic → practical, case-based, real-world examples and applications." ), ) note: Optional[str] = None