From ccfd4e6f1eea4825ab0175147373b8d3a15cf2ad Mon Sep 17 00:00:00 2001 From: Nunzi99 Date: Sun, 26 Oct 2025 12:33:38 +0100 Subject: [PATCH] Aggiunti Providers --- .env.example | 5 ++++- configs.yaml | 12 ++++++++++++ pyproject.toml | 4 ++++ src/app/configs.py | 14 +++++++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 3127b74..f565beb 100644 --- a/.env.example +++ b/.env.example @@ -5,7 +5,10 @@ # https://makersuite.google.com/app/apikey GOOGLE_API_KEY= - +OPENAI_API_KEY= +MISTRAL_API_KEY= +DEEPSEEK_API_KEY= +XAI_API_KEY= ############################################################################### # Configurazioni per gli agenti di mercato ############################################################################### diff --git a/configs.yaml b/configs.yaml index 252c9d1..dfbbe5b 100644 --- a/configs.yaml +++ b/configs.yaml @@ -19,6 +19,18 @@ models: label: Gemini # - name: gemini-2.0-pro # TODO Non funziona, ha un nome diverso # label: Gemini Pro + gpt: + - name: gpt-4o + label: OpenAIChat + deepseek: + - name: deepseek-chat + label: DeepSeek + xai: + - name: grok-3 + label: xAI + mistral: + - name: mistral-large-latest + label: Mistral ollama: - name: gpt-oss:latest label: Ollama GPT diff --git a/pyproject.toml b/pyproject.toml index e7b2209..5e3bdb7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,10 @@ dependencies = [ # Modelli supportati e installati (aggiungere qui sotto quelli che si vogliono usare) "google-genai", "ollama", + "openai", + "mistralai", + "deepseek", + "xai", # API di exchange di criptovalute "coinbase-advanced-py", diff --git a/src/app/configs.py b/src/app/configs.py index b7d2df8..3a3b560 100644 --- a/src/app/configs.py +++ b/src/app/configs.py @@ -10,6 +10,10 @@ from agno.tools import Toolkit from agno.models.base import Model from agno.models.google import Gemini from agno.models.ollama import Ollama +from agno.models.openai import OpenAIChat +from agno.models.mistral import MistralChat +from agno.models.deepseek import DeepSeek +from agno.models.xai import xAI log = logging.getLogger(__name__) @@ -19,7 +23,6 @@ class AppModel(BaseModel): name: str = "gemini-2.0-flash" label: str = "Gemini" model: type[Model] | None = None - def get_model(self, instructions: str) -> Model: """ Restituisce un'istanza del modello specificato. @@ -74,6 +77,10 @@ class Strategy(BaseModel): class ModelsConfig(BaseModel): gemini: list[AppModel] = [AppModel()] + gpt: list[AppModel] = [AppModel(name="gpt-4o", label="OpenAIChat")] + mistral: list[AppModel] = [AppModel(name="mistral-large-latest", label="Mistral")] + deepseek: list[AppModel] = [AppModel(name="deepseek-chat", label="DeepSeek")] + xai: list[AppModel] = [AppModel(name="grok-3", label="xAI")] ollama: list[AppModel] = [] @property @@ -85,6 +92,11 @@ class ModelsConfig(BaseModel): Validate the configured models for each provider. """ self.__validate_online_models(self.gemini, clazz=Gemini, key="GOOGLE_API_KEY") + self.__validate_online_models(self.gpt, clazz=OpenAIChat, key="OPENAI_API_KEY") + self.__validate_online_models(self.mistral, clazz=MistralChat, key="MISTRAL_API_KEY") + self.__validate_online_models(self.deepseek, clazz=DeepSeek, key="DEEPSEEK_API_KEY") + self.__validate_online_models(self.xai, clazz=xAI, key="XAI_API_KEY") + self.__validate_ollama_models() def __validate_online_models(self, models: list[AppModel], clazz: type[Model], key: str | None = None) -> None: