Fai girare le pipeline agent di FinGPT su un endpoint OpenAI-compatible personalizzato.

Updated 2026-07-30

La pipeline di analisi multi-agente di FinGPT configura il suo LLM tramite un dict AG2 LLMConfig che prende api_type "openai" e un base_url. Imposta base_url su https://api.apisrouter.com/v1, passa una chiave, e gli agenti researcher, sentiment, e advisor possono girare su qualsiasi id di modello nel catalogo.

Risposta rapida: base_url nel dict AG2 LLMConfig.

La pipeline di analisi finanziaria multi-agente di FinGPT (fingpt/ag2_financial_analysis_pipeline.ipynb nel repo a monte) costruisce la sua configurazione LLM come un dict AG2 LLMConfig con quattro chiavi: model, api_key, api_type, e base_url. Il notebook a monte stesso punta base_url verso un endpoint router compatibile OpenAI piuttosto che verso api.openai.com, quindi instradare tramite un gateway è qui il pattern documentato, non un espediente. Per far girare la pipeline attraverso APIsRouter, imposta api_type su "openai", imposta base_url su https://api.apisrouter.com/v1, metti la tua chiave gateway in api_key, e imposta model su qualsiasi id del catalogo. Ogni AssistantAgent nel notebook riceve lo stesso oggetto llm_config, quindi un dict sposta l'intero team di agenti.

from autogen import LLMConfig  # ag2[openai]>=0.11.4

llm_config = LLMConfig({
    "model": "claude-sonnet-4-6",
    "api_key": os.environ["APISROUTER_API_KEY"],
    "api_type": "openai",
    "base_url": "https://api.apisrouter.com/v1",
})

Dove FinGPT chiama davvero un'API LLM.

FinGPT (AI4Finance-Foundation su GitHub, circa 21K stelle) è due cose sotto un unico nome, e sapere quale metà stai eseguendo decide se un endpoint personalizzato conta affatto. La prima metà sono pesi open fine-tuned: i notebook di training LoRA per Llama e ChatGLM che hanno reso noto il progetto. Questi girano localmente o su GPU noleggiate tramite Hugging Face transformers, non fanno chiamate chat-completions, e nessun URL base si applica a loro. La seconda metà sono le pipeline applicative, ed è qui che vive la superficie compatibile OpenAI. La pipeline di analisi multi-agente AG2 collega tre AssistantAgent (un ricercatore di notizie, un analista di sentiment, e un consulente di investimento) a un unico LLMConfig, li potenzia con chiamate tool yfinance e un classificatore di sentiment FinBERT locale, e li lascia passare un'analisi azionaria tra i ruoli. La pipeline di analisi report finanziari (fingpt/FinGPT_FinancialReportAnalysis) guida ChatOpenAI di LangChain contro filing SEC recuperati tramite sec-api e Financial Modeling Prep. Entrambe le pipeline inviano richieste /v1/chat/completions standard, entrambe espongono l'endpoint come parametro, ed entrambe inoltrano il campo model come stringa semplice, il che è ciò che permette a un id Claude o DeepSeek di viaggiare su un api_type "openai" una volta che l'endpoint dietro base_url lo serve.

Configurazione completa: la pipeline AG2 e la pipeline di analisi report.

La pipeline AG2 è l'integrazione più pulita. Sostituisci i valori LLMConfig del notebook con l'endpoint gateway e il tuo id di modello preferito, e i tre agenti più il loro loop di tool-calling girano invariati. Il lato dei dati finanziari (quotazioni yfinance, punteggio sentiment FinBERT) è locale e privo di chiavi API, quindi l'endpoint LLM è l'unica dipendenza esterna che stai spostando. La pipeline di analisi report usa ChatOpenAI di LangChain, che accetta api_key e base_url come argomenti del costruttore; il notebook a monte dimostra esattamente questa coppia quando mostra come scambiare un server compatibile OpenAI locale. Punta gli stessi due argomenti verso il gateway invece. Nota che questo notebook vuole anche credenziali SEC e Financial Modeling Prep per i suoi pull di dati; quelle sono chiavi di dati di mercato, non correlate all'endpoint LLM, e restano come sono.

import os
from autogen import AssistantAgent, LLMConfig

llm_config = LLMConfig({
    "model": "claude-sonnet-4-6",         # any catalog id
    "api_key": os.environ["APISROUTER_API_KEY"],
    "api_type": "openai",
    "base_url": "https://api.apisrouter.com/v1",
})

researcher = AssistantAgent(name="News_Researcher", llm_config=llm_config)
analyst = AssistantAgent(name="Sentiment_Analyst", llm_config=llm_config)
advisor = AssistantAgent(name="Investment_Advisor", llm_config=llm_config)

Scegliere i modelli per gli agenti di analisi finanziaria.

Poiché ogni candidato è una stringa di modello contro lo stesso endpoint, il ciclo pratico è fissare i tuoi ticker e le date, eseguire la pipeline una volta per id candidato, e confrontare l'output dell'advisor. Il log di utilizzo per chiave prezza ogni esecuzione candidata per te, il che risolve l'argomento qualità-per-token con numeri invece che con istinto.

  • Il ruolo advisor è il collo di bottiglia del ragionamento. Sintetizza i risultati del ricercatore, i punteggi di sentiment, e il quadro di rischio in una prospettiva, e un modello di ragionamento di frontiera (claude-opus-4-7, gpt-5.5) è dove quella sintesi smette di essere generica.
  • I ruoli researcher e analyst sono ruoli di volume: leggere titoli, strutturare output di tool, valutare bozze. claude-sonnet-4-6 o deepseek-v4-pro li mantiene acuti senza il prezzo di frontiera su ogni turno intermedio.
  • L'analisi report è un carico di lavoro a contesto lungo. Una sezione di 10-K più il contesto del target di prezzo è un prompt ampio, quindi testa gemini-3.1-pro-preview o claude-sonnet-4-6 sul lato filing prima di dare per scontato il default.
  • Le radici di FinGPT sono bilingui. Se la tua pipeline legge filing o notizie in lingua cinese, glm-5.2 e deepseek-v4-pro sono nativamente forti lì e indirizzabili tramite lo stesso endpoint per id.
  • Eseguire un unico LLMConfig per tutti gli agenti è il default del notebook, ma nulla ti impedisce di costruire due dict contro lo stesso base_url, uno di frontiera per l'advisor e uno veloce per i lettori, e assegnarli per agente.

Pagamento a consumo · sotto i prezzi ufficiali

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelloPrezzo ufficialeIl nostro prezzo
Claude Opus 4.7$5.00 / $25.00 per M$4.00 / $20.00 per M
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
DeepSeek V4 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
GLM-5.2$1.14 / $4.00 per M$1.10 / $4.00 per M

Avvertenze: non ogni base_url in FinGPT è il LLM.

FinGPT è un monorepo di ricerca, e alcune cose sembrano impostazioni dell'endpoint LLM senza esserlo. Il market_sentiment.py del Forecaster ha parametri api_key e base_url, ma configurano un servizio di sentiment sui dati di mercato (letto da ADANOS_API_KEY), non un endpoint chat-completions. Cambiare quel base_url non instrada alcun traffico LLM. I modelli FinGPT-Forecaster stessi sono pesi Llama fine-tuned serviti tramite Hugging Face, quindi la demo del forecaster non è affatto un consumatore compatibile OpenAI. La più recente piattaforma Finogrid dentro il repo seleziona il suo LLM tramite una variabile d'ambiente FINGPT_LLM_PROVIDER (openai, minimax, o fingpt) e legge OPENAI_API_KEY per il provider openai. A luglio 2026 il suo file di ambiente di esempio documenta lo switch del provider e la chiave, ma nessuna variabile di override dell'URL base, quindi tratta Finogrid come fuori ambito per un gateway finché il progetto a monte non ne documenta uno. Infine, il notebook AG2 fissa ag2[openai] alla versione 0.11.4 o successiva. Le installazioni più vecchie dell'era pyautogen 0.2 configurano le stesse quattro chiavi tramite voci config_list invece della classe LLMConfig; le chiavi sono identiche, quindi il routing funziona, ma abbina il tuo stile di import alla generazione di AutoGen che hai effettivamente installata.

Chi instrada FinGPT tramite un gateway.

  • Ricercatori quant che eseguono l'analisi multi-agente su un elenco di ticker. Decine di turni di agente per azione rendono la visibilità di utilizzo per chiave più utile di una dashboard fornitore per provider.
  • Team che confrontano la qualità dell'analisi tra famiglie di modelli. Ogni candidato è una stringa di modello in LLMConfig, non una nuova integrazione di provider e account.
  • Analisti che processano filing in massa tramite la pipeline report, dove le differenze di prezzo a contesto lungo tra id dominano il conto.
  • Team finanziari bilingui che abbinano id forti in cinese come glm-5.2 o deepseek-v4-pro al ragionamento di Claude o GPT, tutti dietro un endpoint.
  • Sviluppatori senza accesso alla fatturazione di un dato fornitore. L'accesso basato su ricarica senza obbligo di carta rimuove la dipendenza dalla registrazione per provider.

Verifica l'endpoint e fai debug della prima esecuzione.

Prima di lanciare il notebook, elenca i modelli che la tua chiave può indirizzare; la stringa di modello in LLMConfig deve corrispondere esattamente a un id servito. I fallimenti alla prima esecuzione seguono un elenco breve. Un 401 significa che l'api_key nel dict non è una chiave valida per l'endpoint in base_url; poiché entrambi vivono nello stesso dict, stampa il dict (meno la chiave) e controlla di aver modificato la copia che gli agenti hanno effettivamente ricevuto. Un errore modello-non-trovato è un errore di battitura nell'id, e l'output di /v1/models è la grafia autorevole. Un errore di connessione di solito significa che base_url ha perso il suffisso /v1, poiché il client aggiunge /chat/completions a qualunque base tu dia. E se il passo di sentiment fallisce mentre la chat degli agenti funziona, quello è il classificatore FinBERT locale o un'installazione transformers mancante, non il gateway. Una volta che le richieste fluiscono, la console di APIsRouter mostra il modello per richiesta, i conteggi dei token e la spesa. Le pipeline multi-agente moltiplicano rapidamente le chiamate, e la vista di utilizzo è come vedi quale ruolo agente sta consumando i token prima di scalare l'esecuzione a un'intera watchlist.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Domande frequenti

FinGPT supporta di serie un endpoint OpenAI-compatible personalizzato?

Sì, nelle sue pipeline guidate da API. Il notebook di analisi multi-agente AG2 configura LLMConfig con api_type "openai" più un base_url, e il notebook di analisi report passa base_url a ChatOpenAI di LangChain. Entrambi sono pattern a monte; i modelli locali fine-tuned sono una metà separata e offline del progetto.

Gli agenti FinGPT possono girare su modelli Claude o DeepSeek in questo modo?

Sì. L'api_type resta "openai" e il campo model viene inoltrato come stringa semplice su /v1/chat/completions. Funziona qualsiasi id servito dall'endpoint dietro base_url, inclusi id Claude, DeepSeek, GLM, e Gemini.

Ho ancora bisogno di un account OpenAI per la pipeline AG2?

No. Con base_url puntato sul gateway e api_key che contiene una chiave gateway, nessuna richiesta tocca host OpenAI. Il notebook a monte stesso lo dimostra instradando tramite un endpoint compatibile non-OpenAI.

Un base_url personalizzato influisce sui dati di mercato di FinGPT o sul punteggio di sentiment FinBERT?

No. Le quotazioni yfinance e il classificatore FinBERT girano localmente senza chiavi API, e le credenziali SEC e Financial Modeling Prep della pipeline report sono chiavi dati separate. L'endpoint LLM è l'unica cosa che base_url sposta.

Cosa dire del parametro base_url nel market_sentiment.py del Forecaster?

Quello configura un servizio di sentiment sui dati di mercato autenticato da ADANOS_API_KEY, non un endpoint LLM. I modelli del Forecaster stesso sono pesi fine-tuned serviti tramite Hugging Face, quindi nessun routing compatibile OpenAI si applica lì.

La piattaforma Finogrid dentro FinGPT supporta anche un endpoint personalizzato?

Non documentato a luglio 2026. Finogrid seleziona un provider tramite FINGPT_LLM_PROVIDER e legge OPENAI_API_KEY, ma il suo file di ambiente di esempio non mostra alcun override dell'URL base, quindi assumi routing diretto al fornitore lì finché il progetto a monte non ne aggiunge uno.