MALAKMO / app.py
GeethAl0954's picture
Update app.py
f73413d verified
import gradio as gr
import requests
import os
import time
# السيرفرات الأربعة الأقوى والأكثر استقراراً
MODELS = [
"meta-llama/Meta-Llama-3-8B-Instruct",
"mistralai/Mistral-7B-Instruct-v0.3",
"HuggingFaceH4/zephyr-7b-beta",
"microsoft/Phi-3-mini-4k-instruct"
]
IMAGE_API = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0"
def chat_engine(message, history):
token = os.getenv('HF_TOKEN')
headers = {"Authorization": f"Bearer {token}"}
# التوجيه الخاص بالطبخ والتطبيقات
system_instruction = "أنت مالاكمو، مساعد خبير. قدم وصفات طبخ بدقة، واقترح تطبيقات آمنة مع ذكر أنها متوفرة على Google Play."
prompt = f"<|system|>\n{system_instruction}\n"
for user_msg, bot_msg in history:
prompt += f"<|user|>\n{user_msg}\n<|assistant|>\n{bot_msg}\n"
prompt += f"<|user|>\n{message}\n<|assistant|>\n"
for model in MODELS:
api_url = f"https://api-inference.huggingface.co/models/{model}"
try:
# تقليل الـ timeout لسرعة التنقل بين السيرفرات
response = requests.post(api_url, headers=headers, json={"inputs": prompt, "parameters": {"max_new_tokens": 500, "wait_for_model": True}}, timeout=25)
if response.status_code == 200:
res = response.json()
return res[0]['generated_text'].split("<|assistant|>\n")[-1]
except:
continue
return "السيرفرات العالمية مزدحمة حالياً، يرجى الضغط على 'إرسال' مرة أخرى."
def make_image(prompt):
headers = {"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"}
response = requests.post(IMAGE_API, headers=headers, json={"inputs": prompt})
return response.content if response.status_code == 200 else None
# واجهة ChatGPT الاحترافية
with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", neutral_hue="slate")) as demo:
gr.HTML("<h1 style='text-align: center;'>🇸🇾 MALAKMO AI - المنصة الشاملة</h1>")
with gr.Tabs():
with gr.TabItem("💬 الدردشة والطبخ والتطبيقات"):
gr.ChatInterface(fn=chat_engine, chatbot=gr.Chatbot(height=400), submit_btn="إرسال")
with gr.TabItem("🎨 مصمم الصور"):
with gr.Row():
img_in = gr.Textbox(label="صف الصورة بالإنجليزية")
img_btn = gr.Button("تصميم")
img_out = gr.Image()
img_btn.click(make_image, img_in, img_out)
with gr.TabItem("🔍 بحث الصور"):
search_in = gr.Textbox(label="ابحث عن صور ذات صلة")
search_out = gr.HTML()
search_btn = gr.Button("بحث")
search_btn.click(lambda q: f"<a href='https://www.bing.com/images/search?q={q}' target='_blank'>إضغط هنا لرؤية نتائج {q}</a>", search_in, search_out)
demo.launch()