Spaces:
Sleeping
Sleeping
| import os | |
| import fitz # PyMuPDF | |
| import chainlit as cl | |
| from groq import Groq | |
| groq_client = Groq(api_key=os.environ.get("GROQ_API_KEY")) | |
| pdf_text = "" | |
| async def on_chat_start(): | |
| await cl.Message(content="📄 براہ کرم PDF فائل اپلوڈ کریں یا سوال پوچھیں۔").send() | |
| async def handle_message(message: cl.Message): | |
| global pdf_text | |
| if message.elements: | |
| for element in message.elements: | |
| if element.name.endswith(".pdf"): | |
| try: | |
| doc = fitz.open(element.path) | |
| pdf_text = "" | |
| for page in doc: | |
| pdf_text += page.get_text() | |
| pdf_text = pdf_text[:4000] | |
| await cl.Message(content="✅ PDF successfully uploaded! Now ask a question.").send() | |
| return | |
| except Exception as e: | |
| await cl.Message(content=f"❌ Error reading PDF: {e}").send() | |
| return | |
| user_prompt = message.content.strip() | |
| if not user_prompt: | |
| await cl.Message(content="⚠️ Please ask a valid question.").send() | |
| return | |
| prompt = f"PDF Content:\n{pdf_text}\n\nQuestion: {user_prompt}" if pdf_text else user_prompt | |
| try: | |
| response = groq_client.chat.completions.create( | |
| model="llama3-8b-8192", | |
| messages=[ | |
| {"role": "system", "content": "You are a helpful assistant."}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| ) | |
| answer = response.choices[0].message.content.strip() | |
| await cl.Message(content=answer).send() | |
| except Exception as e: | |
| await cl.Message(content=f"❌ Error from LLM: {e}").send() | |