Islamic-Web-AI / app.py
xTHExBEASTx's picture
Update app.py
ecc164c verified
from fastapi import FastAPI
import requests
from bs4 import BeautifulSoup
from googlesearch import search
from huggingface_hub import InferenceClient
import os
app = FastAPI()
client = InferenceClient("google/gemma-3-4b-it", token=os.getenv("HF_TOKEN"))
def search_and_scrape(question):
# نفس منطق البحث والاستخراج السابق
full_query = f"site:islamweb.net {question}"
try:
results = search(full_query, num_results=1, lang="ar")
link = next(results)
headers = {'User-Agent': 'Mozilla/5.0'}
resp = requests.get(link, headers=headers, timeout=5)
soup = BeautifulSoup(resp.text, 'html.parser')
content = soup.find('div', {'class': 'item'}).get_text(strip=True)[:3000]
return content, link
except:
return None, None
@app.post("/ask")
async def ask_ai(data: dict):
question = data.get("question")
context, link = search_and_scrape(question)
if not context:
return {"answer": "لم أجد نتائج.", "source": ""}
system_msg = f"Answer only from context: {context}"
# طلب الإجابة من الموديل
response = client.chat_completion(
messages=[
{"role": "system", "content": system_msg},
{"role": "user", "content": question}
],
max_tokens=500
)
return {
"answer": response.choices[0].message.content,
"source": link
}
# تشغيل FastAPI بدلاً من Gradio
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)