* fix dependencies uv.lock * refactor test markers for clarity * refactor: clean up imports and remove unused files * refactor: remove unused agent files and clean up market API instructions * refactor: enhance wrapper initialization with keyword arguments and clean up tests * refactor: remove PublicBinanceAgent * refactor: aggregator - simplified MarketDataAggregator and related models to functions * refactor: update README and .env.example to reflect the latest changes to the project * refactor: simplify product info and price creation in YFinanceWrapper * refactor: remove get_all_products method from market API wrappers and update documentation * fix: environment variable assertions * refactor: remove status attribute from ProductInfo and update related methods to use timestamp_ms * feat: implement aggregate_history_prices function to calculate hourly price averages * refactor: update docker-compose and app.py for improved environment variable handling and compatibility * feat: add detailed market instructions and improve error handling in price aggregation methods * feat: add aggregated news retrieval methods for top headlines and latest news * refactor: improve error messages in WrapperHandler for better clarity * fix: correct quote currency extraction in create_product_info and remove debug prints from tests
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import gradio as gr
|
|
|
|
from dotenv import load_dotenv
|
|
from app.pipeline import Pipeline
|
|
from agno.utils.log import log_info
|
|
|
|
########################################
|
|
# MAIN APP & GRADIO INTERFACE
|
|
########################################
|
|
if __name__ == "__main__":
|
|
######################################
|
|
# DA FARE PRIMA DI ESEGUIRE L'APP
|
|
# qui carichiamo le variabili d'ambiente dal file .env
|
|
# una volta fatto, possiamo usare le API keys senza problemi
|
|
# quindi non è necessario richiamare load_dotenv() altrove
|
|
load_dotenv()
|
|
######################################
|
|
|
|
pipeline = Pipeline()
|
|
|
|
with gr.Blocks() as demo:
|
|
gr.Markdown("# 🤖 Agente di Analisi e Consulenza Crypto")
|
|
|
|
with gr.Row():
|
|
provider = gr.Dropdown(
|
|
choices=pipeline.list_providers(),
|
|
type="index",
|
|
label="Modello da usare"
|
|
)
|
|
provider.change(fn=pipeline.choose_provider, inputs=provider, outputs=None)
|
|
|
|
style = gr.Dropdown(
|
|
choices=pipeline.list_styles(),
|
|
type="index",
|
|
label="Stile di investimento"
|
|
)
|
|
style.change(fn=pipeline.choose_style, inputs=style, outputs=None)
|
|
|
|
user_input = gr.Textbox(label="Richiesta utente")
|
|
output = gr.Textbox(label="Risultato analisi", lines=12)
|
|
|
|
analyze_btn = gr.Button("🔎 Analizza")
|
|
analyze_btn.click(fn=pipeline.interact, inputs=[user_input], outputs=output)
|
|
|
|
server, port = ("0.0.0.0", 8000) # 0.0.0.0 per docker compatibility
|
|
server_log = "localhost" if server == "0.0.0.0" else server
|
|
log_info(f"Starting UPO AppAI on http://{server_log}:{port}")
|
|
demo.launch(server_name=server, server_port=port, quiet=True)
|