diff --git a/app/main.py b/app/main.py index 7a7222c..2df6bb8 100644 --- a/app/main.py +++ b/app/main.py @@ -41,18 +41,21 @@ try: except FileNotFoundError: raise FileNotFoundError("CSV file 'quran_arabic.csv' not found. Please check the path.") -# Request schema -class TafsirRequest(BaseModel): - verse_key: str # e.g., "1:2" - verse_text: str # e.g., "ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَـٰلَمِينَ" +class VerseItem(BaseModel): + surahNo: int + verseNo: int + verseText: str -# Build LLM prompt -def build_arabic_prompt(reference: str, text: str) -> str: - return ( +class TafsirRequest(BaseModel): + verses: List[VerseItem] + +# Prompt builder +def build_arabic_prompt(text: str) -> str: + return ( "أنت عالم متخصص في تفسير القرآن الكريم.\n" "يرجى تقديم تفسير مختصر ومبسط للآية التالية:\n\n" - f"{reference}\t{text}\n\n" - "اكتب التفسير باللغة العربية الفصحى وبأسلوب مختصر و واضح وميسر للقارئ العام." + f"{text}\n\n" + " اكتب التفسير باللغة العربية الفصحى وبأسلوب مختصر و واضح وميسر للقارئ العام." ) # Call Groq LLM @@ -67,16 +70,28 @@ def query_llm_arabic(prompt: str) -> str: except Exception as e: raise HTTPException(status_code=500, detail=f"LLM Error: {str(e)}") -# Full tafsir workflow -def get_tafsir_from_input(verse_key: str, verse_text: str) -> dict: - prompt = build_arabic_prompt(verse_key, verse_text) - tafsir = query_llm_arabic(prompt) - return {"reference": verse_key, "text": verse_text, "tafsir": tafsir} +# Tafsir logic for list of verses +def get_tafsir_for_verses(verses: List[VerseItem]) -> List[dict]: + results = {} + final_prompts = "" + for verse in verses: + prompt = str(verse.surahNo) + ":" + str(verse.verseNo) + "\t" + verse.verseText + final_prompts += prompt + "\n" -# Route: Tafsir + results = build_arabic_prompt(final_prompts) + + tafsir = query_llm_arabic(results) + results = { + "verseText": final_prompts, + "tafsir": tafsir + } + + return results + +# API endpoint @app.post("/tafsir") async def get_tafsir(request: TafsirRequest): - return get_tafsir_from_input(request.verse_key, request.verse_text) + return get_tafsir_for_verses(request.verses) # Health check @app.get("/health")