Configurazioni dell'app #27
@@ -108,7 +108,7 @@ src
|
|||||||
├── config.py <-- Configurazioni app
|
├── config.py <-- Configurazioni app
|
||||||
├── agents <-- Agenti, Team, prompts e simili
|
├── agents <-- Agenti, Team, prompts e simili
|
||||||
├── api <-- Tutte le API esterne
|
├── api <-- Tutte le API esterne
|
||||||
│ ├── base <-- Classi base per le API
|
│ ├── core <-- Classi core per le API
|
||||||
│ ├── markets <-- Market data provider (Es. Binance)
|
│ ├── markets <-- Market data provider (Es. Binance)
|
||||||
│ ├── news <-- News data provider (Es. NewsAPI)
|
│ ├── news <-- News data provider (Es. NewsAPI)
|
||||||
│ └── social <-- Social data provider (Es. Reddit)
|
│ └── social <-- Social data provider (Es. Reddit)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from agno.run.agent import RunOutput
|
|||||||
from app.agents.team import create_team_with
|
from app.agents.team import create_team_with
|
||||||
from app.agents.predictor import PredictorInput, PredictorOutput
|
from app.agents.predictor import PredictorInput, PredictorOutput
|
||||||
from app.agents.prompts import *
|
from app.agents.prompts import *
|
||||||
from app.api.base.markets import ProductInfo
|
from app.api.core.markets import ProductInfo
|
||||||
from app.configs import AppConfig
|
from app.configs import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from app.api.base.markets import ProductInfo
|
from app.api.core.markets import ProductInfo
|
||||||
|
|
||||||
class PredictorInput(BaseModel):
|
class PredictorInput(BaseModel):
|
||||||
data: list[ProductInfo] = Field(..., description="Market data as a list of ProductInfo")
|
data: list[ProductInfo] = Field(..., description="Market data as a list of ProductInfo")
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from agno.tools import Toolkit
|
from agno.tools import Toolkit
|
||||||
from app.api.wrapper_handler import WrapperHandler
|
from app.api.wrapper_handler import WrapperHandler
|
||||||
from app.api.base.markets import MarketWrapper, Price, ProductInfo
|
from app.api.core.markets import MarketWrapper, Price, ProductInfo
|
||||||
from app.api.markets.binance import BinanceWrapper
|
from app.api.markets.binance import BinanceWrapper
|
||||||
from app.api.markets.coinbase import CoinBaseWrapper
|
from app.api.markets.coinbase import CoinBaseWrapper
|
||||||
from app.api.markets.cryptocompare import CryptoCompareWrapper
|
from app.api.markets.cryptocompare import CryptoCompareWrapper
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from binance.client import Client # type: ignore
|
from binance.client import Client # type: ignore
|
||||||
from app.api.base.markets import ProductInfo, MarketWrapper, Price
|
from app.api.core.markets import ProductInfo, MarketWrapper, Price
|
||||||
|
|
||||||
|
|
||||||
def extract_product(currency: str, ticker_data: dict[str, Any]) -> ProductInfo:
|
def extract_product(currency: str, ticker_data: dict[str, Any]) -> ProductInfo:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from enum import Enum
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from coinbase.rest import RESTClient # type: ignore
|
from coinbase.rest import RESTClient # type: ignore
|
||||||
from coinbase.rest.types.product_types import Candle, GetProductResponse, Product # type: ignore
|
from coinbase.rest.types.product_types import Candle, GetProductResponse, Product # type: ignore
|
||||||
from app.api.base.markets import ProductInfo, MarketWrapper, Price
|
from app.api.core.markets import ProductInfo, MarketWrapper, Price
|
||||||
|
|
||||||
|
|
||||||
def extract_product(product_data: GetProductResponse | Product) -> ProductInfo:
|
def extract_product(product_data: GetProductResponse | Product) -> ProductInfo:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
import requests
|
import requests
|
||||||
from app.api.base.markets import ProductInfo, MarketWrapper, Price
|
from app.api.core.markets import ProductInfo, MarketWrapper, Price
|
||||||
|
|
||||||
|
|
||||||
def extract_product(asset_data: dict[str, Any]) -> ProductInfo:
|
def extract_product(asset_data: dict[str, Any]) -> ProductInfo:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
from agno.tools.yfinance import YFinanceTools
|
from agno.tools.yfinance import YFinanceTools
|
||||||
from app.api.base.markets import MarketWrapper, ProductInfo, Price
|
from app.api.core.markets import MarketWrapper, ProductInfo, Price
|
||||||
|
|
||||||
|
|
||||||
def extract_product(stock_data: dict[str, str]) -> ProductInfo:
|
def extract_product(stock_data: dict[str, str]) -> ProductInfo:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from agno.tools import Toolkit
|
from agno.tools import Toolkit
|
||||||
from app.api.wrapper_handler import WrapperHandler
|
from app.api.wrapper_handler import WrapperHandler
|
||||||
from app.api.base.news import NewsWrapper, Article
|
from app.api.core.news import NewsWrapper, Article
|
||||||
from app.api.news.newsapi import NewsApiWrapper
|
from app.api.news.newsapi import NewsApiWrapper
|
||||||
from app.api.news.googlenews import GoogleNewsWrapper
|
from app.api.news.googlenews import GoogleNewsWrapper
|
||||||
from app.api.news.cryptopanic_api import CryptoPanicWrapper
|
from app.api.news.cryptopanic_api import CryptoPanicWrapper
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import os
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
import requests
|
import requests
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from app.api.base.news import NewsWrapper, Article
|
from app.api.core.news import NewsWrapper, Article
|
||||||
|
|
||||||
|
|
||||||
class CryptoPanicFilter(Enum):
|
class CryptoPanicFilter(Enum):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from agno.tools.duckduckgo import DuckDuckGoTools
|
from agno.tools.duckduckgo import DuckDuckGoTools
|
||||||
from app.api.base.news import Article, NewsWrapper
|
from app.api.core.news import Article, NewsWrapper
|
||||||
|
|
||||||
|
|
||||||
def extract_article(result: dict[str, Any]) -> Article:
|
def extract_article(result: dict[str, Any]) -> Article:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
from gnews import GNews # type: ignore
|
from gnews import GNews # type: ignore
|
||||||
from app.api.base.news import Article, NewsWrapper
|
from app.api.core.news import Article, NewsWrapper
|
||||||
|
|
||||||
|
|
||||||
def extract_article(result: dict[str, Any]) -> Article:
|
def extract_article(result: dict[str, Any]) -> Article:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
import newsapi # type: ignore
|
import newsapi # type: ignore
|
||||||
from app.api.base.news import Article, NewsWrapper
|
from app.api.core.news import Article, NewsWrapper
|
||||||
|
|
||||||
|
|
||||||
def extract_article(result: dict[str, Any]) -> Article:
|
def extract_article(result: dict[str, Any]) -> Article:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
from agno.tools import Toolkit
|
from agno.tools import Toolkit
|
||||||
from app.api.wrapper_handler import WrapperHandler
|
from app.api.wrapper_handler import WrapperHandler
|
||||||
from app.api.base.social import SocialPost, SocialWrapper
|
from app.api.core.social import SocialPost, SocialWrapper
|
||||||
from app.api.social.reddit import RedditWrapper
|
from app.api.social.reddit import RedditWrapper
|
||||||
|
|
||||||
__all__ = ["SocialAPIsTool", "RedditWrapper", "SocialPost"]
|
__all__ = ["SocialAPIsTool", "RedditWrapper", "SocialPost"]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
from praw import Reddit # type: ignore
|
from praw import Reddit # type: ignore
|
||||||
from praw.models import Submission # type: ignore
|
from praw.models import Submission # type: ignore
|
||||||
from app.api.base.social import SocialWrapper, SocialPost, SocialComment
|
from app.api.core.social import SocialWrapper, SocialPost, SocialComment
|
||||||
|
|
||||||
|
|
||||||
MAX_COMMENTS = 5
|
MAX_COMMENTS = 5
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import pytest
|
|||||||
from app.agents import AppModels
|
from app.agents import AppModels
|
||||||
from app.agents.predictor import PredictorInput, PredictorOutput, PredictorStyle
|
from app.agents.predictor import PredictorInput, PredictorOutput, PredictorStyle
|
||||||
from app.agents.prompts import PREDICTOR_INSTRUCTIONS
|
from app.agents.prompts import PREDICTOR_INSTRUCTIONS
|
||||||
from app.api.base.markets import ProductInfo
|
from app.api.core.markets import ProductInfo
|
||||||
|
|
||||||
def unified_checks(model: AppModels, input: PredictorInput) -> None:
|
def unified_checks(model: AppModels, input: PredictorInput) -> None:
|
||||||
llm = model.get_agent(PREDICTOR_INSTRUCTIONS, output_schema=PredictorOutput) # type: ignore[arg-type]
|
llm = model.get_agent(PREDICTOR_INSTRUCTIONS, output_schema=PredictorOutput) # type: ignore[arg-type]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from app.api.base.markets import ProductInfo, Price
|
from app.api.core.markets import ProductInfo, Price
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.aggregator
|
@pytest.mark.aggregator
|
||||||
|
|||||||
Reference in New Issue
Block a user