pre merge con phil

This commit is contained in:
Simone Garau
2025-09-30 12:11:10 +02:00
parent dfca44c9d5
commit fb38aef790
7 changed files with 45 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
import gradio as gr import gradio as gr
from dotenv import load_dotenv from dotenv import load_dotenv
from app.tool import ToolAgent from app.pipeline import Pipeline
from agno.utils.log import log_info from agno.utils.log import log_info
######################################## ########################################
@@ -16,31 +16,31 @@ if __name__ == "__main__":
load_dotenv() load_dotenv()
###################################### ######################################
tool_agent = ToolAgent() pipeline = Pipeline()
with gr.Blocks() as demo: with gr.Blocks() as demo:
gr.Markdown("# 🤖 Agente di Analisi e Consulenza Crypto") gr.Markdown("# 🤖 Agente di Analisi e Consulenza Crypto")
with gr.Row(): with gr.Row():
provider = gr.Dropdown( provider = gr.Dropdown(
choices=tool_agent.list_providers(), choices=pipeline.list_providers(),
type="index", type="index",
label="Modello da usare" label="Modello da usare"
) )
provider.change(fn=tool_agent.choose_provider, inputs=provider, outputs=None) provider.change(fn=pipeline.choose_provider, inputs=provider, outputs=None)
style = gr.Dropdown( style = gr.Dropdown(
choices=tool_agent.list_styles(), choices=pipeline.list_styles(),
type="index", type="index",
label="Stile di investimento" label="Stile di investimento"
) )
style.change(fn=tool_agent.choose_style, inputs=style, outputs=None) style.change(fn=pipeline.choose_style, inputs=style, outputs=None)
user_input = gr.Textbox(label="Richiesta utente") user_input = gr.Textbox(label="Richiesta utente")
output = gr.Textbox(label="Risultato analisi", lines=12) output = gr.Textbox(label="Risultato analisi", lines=12)
analyze_btn = gr.Button("🔎 Analizza") analyze_btn = gr.Button("🔎 Analizza")
analyze_btn.click(fn=tool_agent.interact, inputs=[user_input], outputs=output) analyze_btn.click(fn=pipeline.interact, inputs=[user_input], outputs=output)
server, port = ("0.0.0.0", 8000) server, port = ("0.0.0.0", 8000)
log_info(f"Starting UPO AppAI on http://{server}:{port}") log_info(f"Starting UPO AppAI on http://{server}:{port}")

View File

@@ -0,0 +1,35 @@
from agno.agent import Agent
from src.app.toolkits.market_toolkit import MarketToolkit
class MarketAgent(Agent):
"""
Wrapper che trasforma MarketToolkit in un Agent compatibile con Team.
Espone un metodo run(query) che restituisce dati di mercato.
"""
def __init__(self, currency: str = "USD"):
self.toolkit = MarketToolkit()
self.currency = currency
self.name = "MarketAgent"
def run(self, query: str) -> str:
# Heuristica semplice: se la query cita simboli specifici, recupera quelli
symbols = []
for token in query.upper().split():
if token in ("BTC", "ETH", "XRP", "LTC", "BCH"): # TODO: estendere dinamicamente
symbols.append(token)
if not symbols:
symbols = ["BTC", "ETH"] # default
results = []
for sym in symbols:
try:
price = self.toolkit.get_current_price(sym)
results.append(f"{sym}: {price}")
except Exception as e:
results.append(f"{sym}: errore ({e})")
return "📊 Dati di mercato:\n" + "\n".join(results)

View File

@@ -1,11 +1,11 @@
from app.agents.news_agent import NewsAgent from app.agents.news_agent import NewsAgent
from app.agents.social_agent import SocialAgent from app.agents.social_agent import SocialAgent
from app.agents.predictor import PredictorStyle, PredictorInput, PredictorOutput, PREDICTOR_INSTRUCTIONS from app.predictor import PredictorStyle, PredictorInput, PredictorOutput, PREDICTOR_INSTRUCTIONS
from app.markets import MarketAPIs from app.markets import MarketAPIs
from app.models import AppModels from app.models import AppModels
from agno.utils.log import log_info from agno.utils.log import log_info
class ToolAgent: class Pipeline:
""" """
Classe principale che coordina gli agenti per rispondere alle richieste dell'utente. Classe principale che coordina gli agenti per rispondere alle richieste dell'utente.
""" """

View File

View File

@@ -1,5 +1,5 @@
import pytest import pytest
from app.agents.predictor import PREDICTOR_INSTRUCTIONS, PredictorInput, PredictorOutput, PredictorStyle from app.predictor import PREDICTOR_INSTRUCTIONS, PredictorInput, PredictorOutput, PredictorStyle
from app.markets.base import ProductInfo from app.markets.base import ProductInfo
from app.models import AppModels from app.models import AppModels