Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from config import SessionManager, validate_all_keys | |
| from services.market import get_market_data, get_current_price | |
| from ai.service import AIService | |
| session = SessionManager() | |
| ai = AIService() | |
| def set_keys( | |
| openai_key, kucoin_key, kucoin_secret, kucoin_passphrase, provider, hf_token | |
| ): | |
| session.set_keys( | |
| openai_key, kucoin_key, kucoin_secret, kucoin_passphrase, provider, hf_token | |
| ) | |
| ok, msg = validate_all_keys(session) | |
| return msg | |
| def clear_keys(): | |
| session.clear() | |
| return "β Session cleared" | |
| def generate(symbol, timeframe, leverage, amount): | |
| if not session.is_ready(): | |
| return {"error": "π Enter API keys first."} | |
| market_data = get_market_data(symbol, timeframe, session) | |
| current_price = get_current_price(symbol, session) | |
| result = ai.generate( | |
| symbol=symbol, | |
| leverage=leverage, | |
| trade_amount=amount, | |
| current_price=current_price, | |
| market_data=market_data, | |
| provider=session.provider, | |
| openai_key=session.openai_key, | |
| hf_token=session.hf_token, | |
| ) | |
| return ( | |
| result.to_prompt_dict() | |
| if result | |
| else {"error": "Failed to generate suggestion"} | |
| ) | |
| with gr.Blocks(theme=gr.themes.Monochrome()) as ui: | |
| gr.Markdown("# πΉ AI Crypto Trader") | |
| with gr.Accordion("π API Keys", open=True): | |
| openai_key = gr.Textbox(label="OpenAI Key", type="password") | |
| kucoin_key = gr.Textbox(label="KuCoin Key", type="password") | |
| kucoin_secret = gr.Textbox(label="KuCoin Secret", type="password") | |
| kucoin_pass = gr.Textbox(label="KuCoin Passphrase", type="password") | |
| hf_token = gr.Textbox(label="HF Token (if using HuggingFace)", type="password") | |
| provider = gr.Radio( | |
| ["OpenAI", "HuggingFace"], value="OpenAI", label="AI Provider" | |
| ) | |
| connect = gr.Button("Connect") | |
| status = gr.Textbox(label="Connection Status") | |
| connect.click( | |
| set_keys, | |
| inputs=[ | |
| openai_key, | |
| kucoin_key, | |
| kucoin_secret, | |
| kucoin_pass, | |
| provider, | |
| hf_token, | |
| ], | |
| outputs=status, | |
| ) | |
| gr.Button("β Clear Session").click(clear_keys, outputs=status) | |
| gr.Markdown("---") | |
| with gr.Row(): | |
| symbol = gr.Textbox(label="Symbol", value="SOLUSDTM") | |
| timeframe = gr.Dropdown( | |
| ["15m", "1h", "4h", "1d"], label="Timeframe", value="15m" | |
| ) | |
| leverage = gr.Slider(10, 75, step=1, value=20, label="Leverage") | |
| amount = gr.Number(label="Trade Amount ($)", value=100) | |
| output = gr.JSON(label="AI Suggestion") | |
| gr.Button("π Generate Suggestion").click( | |
| generate, inputs=[symbol, timeframe, leverage, amount], outputs=output | |
| ) | |
| ui.launch() | |