R-Ray-Ai-space / app.py
Alhdrawi's picture
Update app.py
faf59a3 verified
import os
from dotenv import load_dotenv
from huggingface_hub import InferenceClient
import gradio as gr
# تحميل متغيرات البيئة
load_dotenv()
api_key = os.getenv("FIREWORKS_API_KEY")
if not api_key:
raise ValueError("❌ لم يتم العثور على FIREWORKS_API_KEY في ملف .env")
# إعداد عميل InferenceClient
client = InferenceClient(
provider="fireworks-ai",
api_key=api_key
)
# إعداد رسالة النظام
system_message = {
"role": "system",
"content": (
"أنت مساعد ذكي متخصص في مجال الأشعة الطبية. "
"تقدم إجابات دقيقة وواضحة في تفسير الصور الشعاعية والاستشارات المرتبطة بها فقط."
)
}
MAX_HISTORY_TURNS = 6
# دالة المحادثة
def chat_fn(message, history):
try:
messages = [system_message]
# الاحتفاظ بآخر الرسائل فقط
if history:
history = history[-MAX_HISTORY_TURNS:]
for user_msg, bot_msg in history:
messages.append({"role": "user", "content": user_msg})
messages.append({"role": "assistant", "content": bot_msg})
# إضافة الرسالة الحالية
messages.append({"role": "user", "content": message})
# استدعاء النموذج
completion = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1",
messages=messages,
max_tokens=4096,
temperature=0.7,
)
if not completion or not completion.choices or not completion.choices[0].message.content.strip():
return "❌ لم يتم استلام رد من النموذج. حاول مرة أخرى أو تحقق من الاتصال."
return completion.choices[0].message.content.strip()
except Exception as e:
return f"❌ خطأ: {e}"
# إعداد واجهة Gradio بشكل جميل
chat_interface = gr.ChatInterface(
fn=chat_fn,
title="🧠 RAY AI Chat - متخصص في الأشعة",
description="مرحبًا بك في مساعد الذكاء الاصطناعي الخاص بتفسير الأشعة. يرجى طرح سؤالك الطبي المتعلق بالتصوير الشعاعي 👇",
theme=gr.themes.Base(
primary_hue="blue",
secondary_hue="slate",
font=["Cairo", "sans-serif"]
),
submit_btn="أرسل 📨",
retry_btn="🔁 إعادة",
clear_btn="🧹 مسح",
textbox=gr.Textbox(
placeholder="اكتب سؤالك هنا... مثال: ما معنى وجود تكلسات في الغدة الدرقية؟",
container=True,
scale=7
),
)
# إطلاق التطبيق
if __name__ == "__main__":
chat_interface.launch()