Files
upo-app-agents/docs/Current_Architecture.md
Simo 4ba44abb19 Better Prompt (#45)
* Enhance report generation and team leader prompts with conditional output rules for empty sections.

* Update .gitignore and configuration for model adjustments; refine query classification prompt

* Enforce max response length in prompts

* Documentazione tool essenziale per il loro utilizzo da parte degli LLM.

* istruzioni chiare sui tool disponibili nei promt degli agenti

* corretto incongruenze nel report generation prompt

* convertito i promt in file markdown
2025-10-29 15:45:05 +01:00

5.0 KiB
Raw Blame History

Stato Attuale: Architettura e Flussi (upo-appAI)

Sintesi dellarchitettura attuale e del flusso runtime dellapp, con diagrammi compatti e riferimenti ai componenti principali.

Panorama Componenti

  • src/app/__main__.py: Entrypoint. Avvia interfaccia Gradio (ChatManager) e bot Telegram (TelegramApp).
  • interface/chat.py: UI Gradio. Gestisce storico chat, chiama Pipeline.interact().
  • interface/telegram_app.py: Bot Telegram. Gestisce conversazione, configura modelli/strategia, esegue Pipeline.interact_async() e genera PDF.
  • agents/core.py: Definisce PipelineInputs, agenti (Team, Query Check, Report Generator) e strumenti (Market/News/Social).
  • agents/pipeline.py: Orchestrazione via agno.workflow. Steps: Query Check → Gate → Info Recovery (Team) → Report Generation.
  • agents/prompts/…: Istruzioni per Team Leader, Market/News/Social agents, Query Check e Report Generation.
  • api/tools/*.py: Toolkits aggregati (MarketAPIsTool, NewsAPIsTool, SocialAPIsTool) basati su WrapperHandler.
  • api/*: Wrappers per provider esterni (Binance, Coinbase, CryptoCompare, YFinance, NewsAPI, GoogleNews, CryptoPanic, Reddit, X, 4chan).
  • api/wrapper_handler.py: Fallback con retry e try_all sui wrappers.
  • configs.py: Config app, modelli, strategie, API e caricamento da configs.yaml/env.

Architettura (Overview)

flowchart TD
  U[User] --> I{Interfacce}
  I -->|Gradio| CM[ChatManager]
  I -->|Telegram| TG[TelegramApp]
  CM --> PL[Pipeline]
  TG --> PL
  PL --> WF[Workflow\nQuery Check → Gate → Info Recovery → Report Generation]
  WF --> TM[Team Leader + Members]
  TM --> T[Tools\nMarket or News or Social]
  T --> W[Wrappers]
  W --> EX[External APIs]
  WF --> OUT[Report]
  TG --> PDF[MarkdownPdf\ninvio documento]
  CM --> OUT

Sequenza (Telegram)

sequenceDiagram
  participant U as User
  participant TG as TelegramBot
  participant PL as Pipeline
  participant WF as Workflow
  participant TL as TeamLeader
  participant MK as MarketTool
  participant NW as NewsTool
  participant SC as SocialTool
  participant API as External APIs

  U->>TG: /start + messaggio
  TG->>PL: PipelineInputs(query, modelli, strategia)
  PL->>WF: build_workflow()
  WF->>WF: Step: Query Check
  alt is_crypto == true
      WF->>TL: Step: Info Recovery
      TL->>MK: get_products / get_historical_prices
      MK->>API: Binance/Coinbase/CryptoCompare/YFinance
      TL->>NW: get_latest_news / get_top_headlines
      NW->>API: NewsAPI/GoogleNews/CryptoPanic/DuckDuckGo
      TL->>SC: get_top_crypto_posts
      SC->>API: Reddit/X/4chan
      WF->>TL: Step: Report Generation
  else
      WF-->>PL: Stop workflow (non-crypto)
  end
  PL-->>TG: Report (Markdown)
  TG->>TG: Genera PDF e invia

Workflow & Agenti

  • Step 1: Query Check (Agent) — valida la natura crypto della richiesta, output schema QueryOutputs (response, is_crypto).
  • Step 2: Gate — interrompe se is_crypto == false.
  • Step 3: Info Recovery (Team) — TeamLeader orchestration con PlanMemoryTool e Reasoning, dispatch agli agenti Market/News/Social.
  • Step 4: Report Generation (Agent) — sintetizza i risultati nel report finale (stringa Markdown).

Tools & Wrappers

  • MarketAPIsTool → BinanceWrapper, YFinanceWrapper, CoinBaseWrapper, CryptoCompareWrapper.
  • NewsAPIsTool → GoogleNewsWrapper, DuckDuckGoWrapper, NewsApiWrapper, CryptoPanicWrapper.
  • SocialAPIsTool → RedditWrapper, XWrapper, ChanWrapper.
  • WrapperHandler:
    • try_call con retry per wrapper corrente, fallback sequenziale.
    • try_call_all per aggregare risultati multipli.
    • Configurabile via set_retries(attempts, delay_seconds).

Configurazione & Modelli

  • Modelli (default): gemini-2.0-flash per Team, Team Leader, Query Analyzer, Report Generator.
  • Strategie: es. Conservative (descrizione testuale). Selezionabili da UI.
  • configs.yaml e variabili env determinano modelli, porta server (AppConfig.port) e opzioni sharing Gradio.

Variabili dAmbiente (usate dai wrappers)

  • TELEGRAM_BOT_TOKEN — Bot Telegram.
  • COINBASE_API_KEY, COINBASE_API_SECRET — Coinbase Advanced Trade.
  • CRYPTOCOMPARE_API_KEY — CryptoCompare.
  • NEWS_API_KEY — NewsAPI.
  • CRYPTOPANIC_API_KEY (+ opzionale CRYPTOPANIC_API_PLAN) — CryptoPanic.
  • REDDIT_API_CLIENT_ID, REDDIT_API_CLIENT_SECRET — Reddit (PRAW).
  • X_API_KEY — rettiwt API key (CLI richiesto).

Note di Implementazione

  • I wrappers sono prevalentemente sincroni; la Pipeline usa esecuzione asincrona per il workflow (interact_async), con stream di eventi dai agno.workflow steps.
  • Il Team Leader segue prompt comportamentale: ciclo di pianificazione/esecuzione/aggiornamento task con PlanMemoryTool.
  • Loutput Telegram allega un PDF generato da markdown_pdf. La UI Gradio restituisce testo formattato.

Test & Copertura (repo)

  • Test unitari/integrati in tests/ per wrappers (Market/News/Social), tools e handler.
  • Esecuzione consigliata: pytest -q con variabili dambiente correttamente impostate (alcuni test richiedono API keys).