Spaces:
Sleeping
Sleeping
File size: 2,938 Bytes
6ee159d 4c3edc4 49382de e227d9a be76f2f e227d9a f114d79 81f7613 be76f2f 6ee159d be76f2f 6ee159d 49382de 6ee159d be76f2f 6ee159d 4c3edc4 be76f2f 81f7613 49382de 81f7613 49382de 81f7613 4c3edc4 6ee159d 4c3edc4 81f7613 49382de 81f7613 49382de 9e59807 e227d9a 9e59807 81f7613 e227d9a 4c3edc4 9e59807 be76f2f 81f7613 e227d9a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
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() |