Spaces:
Sleeping
Sleeping
import gradio as gr | |
from PIL import Image | |
import io | |
import base64 | |
import requests | |
# استيراد الإعدادات | |
from config import OPENROUTER_API_KEY, OPENROUTER_API_URL, MODEL_NAME | |
# تعليمات الذكاء الاصطناعي | |
SYSTEM_PROMPT = """ | |
You are a professional technical analyst with 10 years of experience in financial markets. | |
Analyze the chart provided and answer the following: | |
1. What is the current trend? (Uptrend / Downtrend / Sideways) | |
2. Are there any key support/resistance levels? | |
3. What technical indicators do you see? (RSI, MACD, Bollinger Bands...) | |
4. Suggest a trade idea: Entry point, Stop Loss, Take Profit | |
5. Timeframe and Risk/Reward ratio | |
6. Strategy name and explanation | |
Answer in Arabic in a professional tone. | |
""" | |
# دالة تحويل الصورة إلى Data URI | |
def image_to_data_uri(img): | |
buffered = io.BytesIO() | |
img_format = img.format if img.format else "PNG" | |
img.save(buffered, format=img_format) | |
return "data:image/png;base64," + base64.b64encode(buffered.getvalue()).decode("utf-8") | |
# دالة التحليل | |
def analyze_chart(image): | |
if image is None: | |
return "❌ لم يتم تحميل أي صورة." | |
try: | |
data_uri = image_to_data_uri(image) | |
response = requests.post( | |
OPENROUTER_API_URL, | |
headers={ | |
"Authorization": f"Bearer {OPENROUTER_API_KEY}", | |
"Content-Type": "application/json" | |
}, | |
json={ | |
"model": MODEL_NAME, | |
"messages": [ | |
{ | |
"role": "user", | |
"content": [ | |
{"type": "text", "text": SYSTEM_PROMPT}, | |
{"type": "image_url", "image_url": {"url": data_uri}} | |
] | |
} | |
], | |
"max_tokens": 512 | |
} | |
) | |
result = response.json() | |
# التعامل مع الخطأ إذا لم يُعَدّ النموذج إجابة | |
if "choices" not in result or len(result["choices"]) == 0: | |
return f"❌ لم يتم العثور على إجابة من الذكاء الاصطناعي.\nالاستجابة: {result}" | |
return result["choices"][0]["message"]["content"] | |
except Exception as e: | |
return f"❌ حدث خطأ أثناء التحليل:\n{str(e)}" | |
# واجهة Gradio | |
interface = gr.Interface( | |
fn=analyze_chart, | |
inputs=gr.Image(type="pil", label="تحميل مخطط التداول"), | |
outputs=gr.Markdown(label="تحليل الذكاء الاصطناعي"), | |
title="🤖 منصة تحليل التداول الذكية (Google Gemini)", | |
description="ارسل مخططًا وسيقوم الذكاء الاصطناعي بتحليله وتقديم صفقات احترافية.", | |
theme="default" | |
) | |
if __name__ == "__main__": | |
interface.launch() |