LLM Providers #52

Merged
Nunzi99 merged 8 commits from 29-aggiungere-llm-providers into main 2025-10-27 21:07:30 +01:00
4 changed files with 33 additions and 2 deletions
Showing only changes of commit ccfd4e6f1e - Show all commits

View File

@@ -5,7 +5,10 @@
# https://makersuite.google.com/app/apikey # https://makersuite.google.com/app/apikey
GOOGLE_API_KEY= GOOGLE_API_KEY=
OPENAI_API_KEY=
MISTRAL_API_KEY=
DEEPSEEK_API_KEY=
XAI_API_KEY=
############################################################################### ###############################################################################
# Configurazioni per gli agenti di mercato # Configurazioni per gli agenti di mercato
############################################################################### ###############################################################################

View File

@@ -19,6 +19,18 @@ models:
label: Gemini label: Gemini
# - name: gemini-2.0-pro # TODO Non funziona, ha un nome diverso # - name: gemini-2.0-pro # TODO Non funziona, ha un nome diverso
# label: Gemini Pro # 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: ollama:
- name: gpt-oss:latest - name: gpt-oss:latest
label: Ollama GPT label: Ollama GPT

View File

@@ -24,6 +24,10 @@ dependencies = [
# Modelli supportati e installati (aggiungere qui sotto quelli che si vogliono usare) # Modelli supportati e installati (aggiungere qui sotto quelli che si vogliono usare)
"google-genai", "google-genai",
"ollama", "ollama",
"openai",
"mistralai",
"deepseek",
"xai",
# API di exchange di criptovalute # API di exchange di criptovalute
"coinbase-advanced-py", "coinbase-advanced-py",

View File

@@ -10,6 +10,10 @@ from agno.tools import Toolkit
from agno.models.base import Model from agno.models.base import Model
from agno.models.google import Gemini from agno.models.google import Gemini
from agno.models.ollama import Ollama 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__) log = logging.getLogger(__name__)
@@ -19,7 +23,6 @@ class AppModel(BaseModel):
name: str = "gemini-2.0-flash" name: str = "gemini-2.0-flash"
label: str = "Gemini" label: str = "Gemini"
model: type[Model] | None = None model: type[Model] | None = None
def get_model(self, instructions: str) -> Model: def get_model(self, instructions: str) -> Model:
""" """
Restituisce un'istanza del modello specificato. Restituisce un'istanza del modello specificato.
@@ -74,6 +77,10 @@ class Strategy(BaseModel):
class ModelsConfig(BaseModel): class ModelsConfig(BaseModel):
gemini: list[AppModel] = [AppModel()] 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] = [] ollama: list[AppModel] = []
@property @property
@@ -85,6 +92,11 @@ class ModelsConfig(BaseModel):
Validate the configured models for each provider. Validate the configured models for each provider.
""" """
self.__validate_online_models(self.gemini, clazz=Gemini, key="GOOGLE_API_KEY") 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() self.__validate_ollama_models()
def __validate_online_models(self, models: list[AppModel], clazz: type[Model], key: str | None = None) -> None: def __validate_online_models(self, models: list[AppModel], clazz: type[Model], key: str | None = None) -> None: