Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from PIL import Image | |
| import os | |
| from groq import Groq | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| st.set_page_config(page_title="AI Trade Predictor", layout="wide") | |
| st.markdown(""" | |
| <style> | |
| .main { | |
| background-color: #f5f7fa; | |
| } | |
| h1 { | |
| color: #3b3b3b; | |
| } | |
| .stButton > button { | |
| color: white; | |
| background-color: #4CAF50; | |
| font-size: 16px; | |
| border-radius: 10px; | |
| padding: 10px 24px; | |
| } | |
| </style> | |
| """, unsafe_allow_html=True) | |
| st.title("π AI Trade Predictor") | |
| uploaded_file = st.file_uploader("Upload a candlestick chart image", type=["png", "jpg", "jpeg"]) | |
| if uploaded_file: | |
| image = Image.open(uploaded_file) | |
| st.image(image, caption='Uploaded Chart', use_column_width=True) | |
| st.write("Analyzing chart using AI model...") | |
| # Convert image to base64 string | |
| import base64 | |
| import io | |
| buffered = io.BytesIO() | |
| image.save(buffered, format="PNG") | |
| img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") | |
| # Connect to Groq and send the image analysis prompt | |
| client = Groq(api_key=os.environ.get("GROQ_API_KEY")) | |
| user_prompt = f""" | |
| Analyze the following candlestick chart image (base64-encoded PNG) and provide a trading decision: | |
| - Tell whether the action should be BUY, SELL, or HOLD. | |
| - Give confidence level in percentage. | |
| - Suggest timeframes (e.g., 30 min, 1 hour, 4 hour, 1 day) and what signal applies to each. | |
| - List any risks or reasons the prediction may fail. | |
| - Use clear language that a beginner can understand. | |
| - Give a short summary at the end. | |
| Image (base64 PNG): {img_str} | |
| """ | |
| try: | |
| chat_completion = client.chat.completions.create( | |
| messages=[ | |
| {"role": "user", "content": user_prompt} | |
| ], | |
| model="meta-llama/llama-guard-4-12b" | |
| ) | |
| response = chat_completion.choices[0].message.content | |
| st.success("Prediction Complete") | |
| st.markdown(response) | |
| except Exception as e: | |
| st.error(f"Something went wrong: {e}") | |
| # --- FOOTER --- | |
| st.markdown("---") | |
| st.markdown("Made β€οΈ by Abdullah's AI Labs") | |