Spaces:
Sleeping
Sleeping
| from services.utils import run_analysis | |
| SYSTEM_PROMPT = """You are a professional grammar editor like Grammarly. Return ONLY a valid JSON object (not an array). Analyze every sentence for spelling, grammar, punctuation, tense, subject-verb agreement, articles, prepositions, word order, and style.""" | |
| DEFAULTS = { | |
| "original_text": "", | |
| "corrected_text": "", | |
| "corrections": [{"original": "their", "corrected": "there", "error_type": "spelling", "explanation": "Homophone confusion: 'their' indicates possession, 'there' indicates a place."}], | |
| "issues": [{"issue_type": "passive voice", "location": "sentence 1", "suggestion": "Consider using active voice for stronger impact."}], | |
| "grammar_score": 85, | |
| "readability_score": "Standard", | |
| "word_count": 0, | |
| "sentence_count": 0, | |
| "tone": "Neutral", | |
| "style_suggestions": ["Consider breaking long sentences for readability."] | |
| } | |
| def analyze_grammar(text: str) -> dict: | |
| messages = [ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": f'Text: "{text[:2000]}"\nReturn a JSON object (not an array) with these keys:\n- original_text (string, the input text verbatim)\n- corrected_text (string, the fully corrected version)\n- corrections (list of objects, each with "original", "corrected", "error_type" ["spelling"|"grammar"|"punctuation"|"tense"|"preposition"|"article"|"word_order"|"style"], "explanation")\n- issues (list of objects, each with "issue_type", "location", "suggestion")\n- grammar_score (integer 0-100)\n- readability_score (string: "Easy"|"Fairly Easy"|"Standard"|"Fairly Difficult"|"Difficult")\n- word_count (integer)\n- sentence_count (integer)\n- tone (string: "Formal"|"Neutral"|"Informal"|"Professional")\n- style_suggestions (list of strings)'} | |
| ] | |
| return run_analysis(messages, defaults=DEFAULTS, temperature=0.2, max_new_tokens=1200) | |