Faites tourner les pipelines d'agents de FinGPT sur un endpoint compatible OpenAI personnalisé.
Updated 2026-07-30
Le pipeline d'analyse multi-agents de FinGPT configure son LLM via un dict AG2 LLMConfig qui prend api_type "openai" et un base_url. Réglez base_url sur https://api.apisrouter.com/v1, passez une seule clé, et les agents researcher, sentiment et advisor peuvent tourner sur n'importe quel id de modèle du catalogue.
Réponse rapide : base_url dans le dict AG2 LLMConfig.
Le pipeline d'analyse financière multi-agents de FinGPT (fingpt/ag2_financial_analysis_pipeline.ipynb dans le dépôt amont) construit sa configuration LLM comme un dict AG2 LLMConfig à quatre clés : model, api_key, api_type et base_url. Le notebook amont lui-même pointe base_url vers un endpoint routeur compatible OpenAI plutôt que vers api.openai.com, donc router via une passerelle est ici le motif documenté, pas un contournement. Pour faire tourner le pipeline via APIsRouter, réglez api_type sur "openai", réglez base_url sur https://api.apisrouter.com/v1, mettez votre clé de passerelle dans api_key, et réglez model sur n'importe quel id du catalogue. Chaque AssistantAgent du notebook reçoit le même objet llm_config, donc un seul dict déplace toute l'équipe d'agents.
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",
})Où FinGPT appelle réellement une API LLM.
FinGPT (AI4Finance-Foundation sur GitHub, environ 21 000 étoiles) est deux choses sous un seul nom, et savoir quelle moitié vous faites tourner décide si un endpoint personnalisé compte ne serait-ce qu'un peu. La première moitié, ce sont des poids ouverts finement ajustés : les notebooks d'entraînement LoRA pour Llama et ChatGLM qui ont fait connaître le projet. Ceux-ci tournent localement ou sur des GPU loués via Hugging Face transformers, ne font aucun appel chat-completions, et aucune URL de base ne s'y applique. La seconde moitié, ce sont les pipelines applicatifs, et c'est là que vit la surface compatible OpenAI. Le pipeline d'analyse multi-agents AG2 câble trois AssistantAgents (un researcher d'actualités, un analyste de sentiment, et un conseiller en investissement) à un seul LLMConfig, les augmente avec des appels d'outils yfinance et un classificateur de sentiment FinBERT local, et les laisse se passer une analyse boursière entre rôles. Le pipeline d'analyse de rapports financiers (fingpt/FinGPT_FinancialReportAnalysis) pilote le ChatOpenAI de LangChain contre des dépôts SEC récupérés via sec-api et Financial Modeling Prep. Les deux pipelines envoient des requêtes /v1/chat/completions standard, tous deux exposent l'endpoint comme paramètre, et tous deux transmettent le champ model comme une simple chaîne, ce qui permet à un id Claude ou DeepSeek de circuler sur un api_type "openai" dès que l'endpoint derrière base_url le sert.
Configuration complète : le pipeline AG2 et le pipeline d'analyse de rapports.
Le pipeline AG2 est l'intégration la plus propre. Remplacez les valeurs LLMConfig du notebook par l'endpoint de la passerelle et votre id de modèle préféré, et les trois agents plus leur boucle d'appel d'outils tournent sans changement. Le côté données financières (cotations yfinance, scoring de sentiment FinBERT) est local et sans clé API, donc l'endpoint LLM est la seule dépendance externe que vous déplacez. Le pipeline d'analyse de rapports utilise le ChatOpenAI de LangChain, qui accepte api_key et base_url comme arguments de constructeur ; le notebook amont démontre exactement cette paire quand il montre comment substituer un serveur compatible OpenAI local. Pointez plutôt les deux mêmes arguments vers la passerelle. Notez que ce notebook veut aussi des identifiants SEC et Financial Modeling Prep pour ses récupérations de données ; ce sont des clés de données de marché, sans rapport avec l'endpoint LLM, et elles restent telles quelles.
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)Choisir des modèles pour les agents d'analyse financière.
Comme chaque candidat n'est qu'une chaîne de modèle contre le même endpoint, la boucle pratique consiste à fixer vos valeurs et dates, faire tourner le pipeline une fois par id candidat, et comparer la sortie de l'advisor. Le journal d'usage par clé chiffre chaque exécution candidate pour vous, ce qui tranche l'argument qualité-par-token avec des chiffres plutôt que de l'instinct.
- Le rôle advisor est le goulot d'étranglement du raisonnement. Il synthétise les découvertes du researcher, les scores de sentiment et le tableau du risque en une perspective, et un modèle de raisonnement de pointe (claude-opus-4-7, gpt-5.5) est là où cette synthèse cesse d'être générique.
- Les rôles researcher et analyst sont des rôles de volume : lire les titres, structurer la sortie des outils, noter des brouillons. claude-sonnet-4-6 ou deepseek-v4-pro les garde affûtés sans tarif de pointe à chaque tour intermédiaire.
- L'analyse de rapports est une charge à long contexte. Une section de 10-K plus le contexte d'objectif de cours est un prompt volumineux, donc testez gemini-3.1-pro-preview ou claude-sonnet-4-6 côté dépôt avant de supposer le défaut.
- Les racines de FinGPT sont bilingues. Si votre pipeline lit des dépôts ou des actualités en chinois, glm-5.2 et deepseek-v4-pro y sont nativement forts et adressables via le même endpoint par id.
- Faire tourner un seul LLMConfig pour tous les agents est le défaut du notebook, mais rien ne vous empêche de construire deux dicts contre le même base_url, un de pointe pour l'advisor et un rapide pour les lecteurs, et de les assigner par agent.
Paiement à l'usage · en dessous du tarif officiel
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modèle | Prix officiel | Notre prix |
|---|---|---|
| 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 |
Mises en garde : tous les base_url dans FinGPT ne sont pas le LLM.
FinGPT est un monorepo de recherche, et quelques éléments ressemblent à des réglages d'endpoint LLM sans en être. Le market_sentiment.py du Forecaster a des paramètres api_key et base_url, mais ils configurent un service de sentiment de données de marché (lu depuis ADANOS_API_KEY), pas un endpoint chat-completions. Changer ce base_url ne route aucun trafic LLM. Les modèles FinGPT-Forecaster eux-mêmes sont des poids Llama finement ajustés servis via Hugging Face, donc la démo forecaster n'est pas du tout un consommateur compatible OpenAI. La plateforme Finogrid plus récente à l'intérieur du dépôt sélectionne son LLM via une variable d'environnement FINGPT_LLM_PROVIDER (openai, minimax, ou fingpt) et lit OPENAI_API_KEY pour le provider openai. En date de juillet 2026, son fichier d'environnement exemple documente le bascule de provider et la clé, mais aucune variable de surcharge d'URL de base, donc considérez Finogrid comme hors périmètre pour une passerelle jusqu'à ce que l'amont en documente une. Enfin, le notebook AG2 fige ag2[openai] à 0.11.4 ou plus récent. Les installations plus anciennes de l'ère pyautogen 0.2 configurent les mêmes quatre clés via des entrées config_list au lieu de la classe LLMConfig ; les clés sont identiques, donc le routage fonctionne, mais faites correspondre votre style d'import à la génération d'AutoGen que vous avez réellement installée.
Qui route FinGPT via une passerelle.
- Les chercheurs quant qui font tourner l'analyse multi-agents sur une liste de valeurs. Des dizaines de tours d'agent par action rendent la visibilité d'usage par clé plus utile qu'un tableau de bord fournisseur par provider.
- Les équipes qui comparent la qualité d'analyse entre familles de modèles. Chaque candidat n'est qu'une chaîne de modèle dans LLMConfig, pas une nouvelle intégration de provider et un nouveau compte.
- Les analystes qui traitent des dépôts en masse via le pipeline de rapports, où les différences de tarif à long contexte entre ids dominent la facture.
- Les équipes finance bilingues qui associent des ids forts en chinois comme glm-5.2 ou deepseek-v4-pro au raisonnement de Claude ou GPT, tous derrière un seul endpoint.
- Les développeurs sans accès à la facturation d'un fournisseur donné. Un accès basé sur la recharge, sans exigence de carte, supprime la dépendance à une inscription par fournisseur.
Vérifiez l'endpoint et déboguez la première exécution.
Avant de lancer le notebook, listez les modèles que votre clé peut adresser ; la chaîne de modèle dans LLMConfig doit correspondre exactement à un id servi. Les échecs au premier lancement suivent une courte liste. Un 401 signifie que l'api_key dans le dict n'est pas une clé valide pour l'endpoint dans base_url ; comme les deux vivent dans le même dict, affichez le dict (sans la clé) et vérifiez que vous avez édité la copie que les agents ont réellement reçue. Une erreur model-not-found est une faute de frappe dans l'id, et la sortie de /v1/models fait autorité sur l'orthographe. Une erreur de connexion signifie généralement que base_url a perdu son suffixe /v1, puisque le client ajoute /chat/completions à quelle que soit la base que vous donnez. Et si l'étape de sentiment échoue pendant que le chat des agents fonctionne, c'est le classificateur FinBERT local ou une installation transformers manquante, pas la passerelle. Une fois que les requêtes circulent, la console APIsRouter affiche le modèle par requête, le nombre de tokens et la dépense. Les pipelines multi-agents multiplient vite les appels, et la vue d'usage est la façon de voir quel rôle d'agent consomme les tokens avant de faire passer l'exécution à l'échelle d'une watchlist complète.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Questions fréquentes
FinGPT prend-il en charge un endpoint compatible OpenAI personnalisé prêt à l'emploi ?
Oui, dans ses pipelines pilotés par API. Le notebook d'analyse multi-agents AG2 configure LLMConfig avec api_type "openai" plus un base_url, et le notebook d'analyse de rapports passe base_url au ChatOpenAI de LangChain. Les deux sont des motifs amont ; les modèles locaux finement ajustés sont une moitié séparée et hors ligne du projet.
Les agents FinGPT peuvent-ils tourner sur des modèles Claude ou DeepSeek de cette façon ?
Oui. api_type reste "openai" et le champ model est transmis comme une simple chaîne sur /v1/chat/completions. Tout id servi par l'endpoint derrière base_url fonctionne, y compris les ids Claude, DeepSeek, GLM et Gemini.
Ai-je encore besoin d'un compte OpenAI pour le pipeline AG2 ?
Non. Avec base_url pointant vers la passerelle et api_key contenant une clé de passerelle, aucune requête ne touche les hôtes OpenAI. Le notebook amont lui-même démontre cela en routant via un endpoint compatible non-OpenAI.
Un base_url personnalisé affecte-t-il les données de marché de FinGPT ou le scoring de sentiment FinBERT ?
Non. Les cotations yfinance et le classificateur FinBERT tournent localement sans clé API, et les identifiants SEC et Financial Modeling Prep du pipeline de rapports sont des clés de données séparées. L'endpoint LLM est la seule chose que base_url déplace.
Qu'en est-il du paramètre base_url dans le market_sentiment.py du Forecaster ?
Celui-là configure un service de sentiment de données de marché authentifié par ADANOS_API_KEY, pas un endpoint LLM. Les propres modèles du Forecaster sont des poids finement ajustés servis via Hugging Face, donc aucun routage compatible OpenAI ne s'y applique.
La plateforme Finogrid à l'intérieur de FinGPT prend-elle aussi en charge un endpoint personnalisé ?
Non documenté en date de juillet 2026. Finogrid sélectionne un provider via FINGPT_LLM_PROVIDER et lit OPENAI_API_KEY, mais son fichier d'environnement exemple ne montre aucune surcharge d'URL de base, donc supposez un routage direct vers le fournisseur là jusqu'à ce que l'amont en ajoute une.