TL;DR / Réponse Rapide
Le moyen le plus rapide et pratique d'utiliser TradingAgents est de l'exécuter comme un package Python, de l'encapsuler dans un petit service FastAPI, puis de tester ce service dans Apidog. Cela vous donne un flux de travail reproductible pour déclencher l'analyse, interroger les résultats, documenter le contrat de requête et partager la configuration avec votre équipe.
Essayez Apidog dès aujourd'hui
Introduction
TradingAgents est facile à admirer de l'extérieur. Le dépôt GitHub présente un workflow de trading multi-agents, une interface en ligne de commande (CLI) soignée, un support pour plusieurs fournisseurs de modèles et un document de recherche qui explique la conception du framework. La partie la plus difficile commence lorsque vous essayez de l'utiliser dans un flux de travail d'ingénierie réel.
La plupart des équipes ne veulent pas d'un dépôt que seul un développeur peut exécuter localement. Elles veulent un moyen reproductible de déclencher une analyse, de passer un ticker et une date, de renvoyer un ID de tâche, d'inspecter le résultat plus tard, et de transmettre ce flux de travail aux coéquipiers du frontend, de l'assurance qualité (QA) ou de la plateforme sans transformer chaque question en une session de débogage Python. Et parce que tout système de recherche en trading sera finalement utilisé pour éclairer des décisions financières réelles, il est encore plus important d'encapsuler TradingAgents dans une API contrôlée et documentée au lieu de le laisser comme un script unique sur l'ordinateur de quelqu'un.
💡 Apidog s'intègre naturellement dans ce flux de travail. Vous pouvez importer le schéma OpenAPI de FastAPI, enregistrer des environnements pour les déploiements locaux et distants, extraire des variables des réponses, chaîner les requêtes d'interrogation dans un scénario, et publier des documents pour le reste de votre équipe. Essayez Apidog gratuitement pour suivre.
Ce que TradingAgents est et n'est pas
Avant de commencer à coder, définissez précisément l'outil.
TradingAgents est un framework de trading multi-agents open-source. Il structure un ensemble de rôles spécialisés (analystes fondamentaux, sentiment, actualités, signaux techniques ; chercheurs haussiers/baissiers ; agent trader ; gestion des risques ; gestionnaire de portefeuille).
Le framework s'appuie sur LangGraph et supporte plusieurs fournisseurs de modèles : OpenAI, Google, Anthropic, xAI, OpenRouter, Ollama. Par défaut :
llm_provider = "openai"deep_think_llm = "gpt-5.2"quick_think_llm = "gpt-5-mini"backend_url = "https://api.openai.com/v1"max_debate_rounds = 1
C'est un framework Python configurable, pas une API SaaS prête à l'emploi. Le dépôt insiste aussi sur la portée : c'est un cadre de recherche, pas un conseil financier. Gardez cette posture dans vos docs et votre UX.
Étape 1 : Installer TradingAgents
Clonez le dépôt et installez les dépendances :
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
conda create -n tradingagents python=3.13
conda activate tradingagents
pip install .
Pour le wrapper API de ce tutoriel, ajoutez FastAPI et Uvicorn :
pip install fastapi uvicorn
Configurez vos clés dans .env :
OPENAI_API_KEY=
GOOGLE_API_KEY=
ANTHROPIC_API_KEY=
XAI_API_KEY=
OPENROUTER_API_KEY=
Bonnes pratiques :
- Mettez vos identifiants dans des variables d'environnement ou un gestionnaire de secrets.
- Ne passez jamais de secrets fournisseur dans le corps d'une requête API publique.
Cela sécurise vos environnements et simplifie leur gestion dans Apidog.
Étape 2 : Exécuter TradingAgents en Python d'abord
Avant l'API, validez le workflow Python localement :
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
ta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())
_, decision = ta.propagate("NVDA", "2026-01-15")
print(decision)
Testez aussi la surcharge de configuration :
from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = "openai"
config["deep_think_llm"] = "gpt-5.2"
config["quick_think_llm"] = "gpt-5-mini"
config["max_debate_rounds"] = 2
ta = TradingAgentsGraph(debug=True, config=config)
_, decision = ta.propagate("NVDA", "2026-01-15")
print(decision)
C'est ici que vous identifiez quels paramètres exposer plus tard via l'API : ticker, analysis_date, llm_provider, deep_think_llm, quick_think_llm, profondeur de recherche.
Étape 3 : Décidez comment vous voulez utiliser TradingAgents
Trois usages courants :
Option 1 : CLI uniquement
La CLI intégrée permet d'explorer rapidement le projet.
À privilégier pour :
- découverte et expérimentation solo
- pas de besoin d'intégration ou de contrat stable
Option 2 : Python uniquement
Utilisez TradingAgentsGraph en script ou notebook pour de l'automatisation locale ou de l'orchestration personnalisée.
Utile si :
- un seul dev pilote le workflow de bout en bout
- notebooks ou scripts locaux suffisent
Option 3 : Wrapper API + Apidog
Exposez TradingAgents via une API FastAPI, testez et documentez avec Apidog.
À privilégier pour :
- intégration UI/frontend
- QA automatisé
- partage d'environnements, assertions et documentation
- workflows longs nécessitant du polling asynchrone
C'est la voie la plus robuste pour les équipes.
Étape 4 : Encapsuler TradingAgents dans un service FastAPI
Adoptez une API basée sur les tâches :
POST /analyses -> renvoie analysis_id
GET /analyses/{id} -> statut (queued/running/completed/failed) et résultat
Créer le contrat API
| Endpoint | Objectif |
|---|---|
GET /health |
vérification de santé |
POST /analyses |
déclencher une exécution TradingAgents |
GET /analyses/{analysis_id} |
récupérer le statut et le résultat final |
Exemple de wrapper FastAPI
from concurrent.futures import ThreadPoolExecutor
from datetime import date, datetime
from uuid import uuid4
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from tradingagents.default_config import DEFAULT_CONFIG
from tradingagents.graph.trading_graph import TradingAgentsGraph
app = FastAPI(title="TradingAgents API", version="0.1.0")
executor = ThreadPoolExecutor(max_workers=2)
jobs: dict[str, dict] = {}
class AnalysisRequest(BaseModel):
ticker: str = Field(..., min_length=1, examples=["NVDA"])
analysis_date: date
llm_provider: str = Field(default="openai")
deep_think_llm: str = Field(default="gpt-5.2")
quick_think_llm: str = Field(default="gpt-5-mini")
research_depth: int = Field(default=1, ge=1, le=5)
def run_analysis(job_id: str, payload: AnalysisRequest) -> None:
jobs[job_id]["status"] = "running"
jobs[job_id]["started_at"] = datetime.utcnow().isoformat()
config = DEFAULT_CONFIG.copy()
config["llm_provider"] = payload.llm_provider
config["deep_think_llm"] = payload.deep_think_llm
config["quick_think_llm"] = payload.quick_think_llm
config["max_debate_rounds"] = payload.research_depth
config["max_risk_discuss_rounds"] = payload.research_depth
try:
graph = TradingAgentsGraph(debug=False, config=config)
_, decision = graph.propagate(
payload.ticker,
payload.analysis_date.isoformat(),
)
jobs[job_id].update(
{
"status": "completed",
"finished_at": datetime.utcnow().isoformat(),
"result": decision,
}
)
except Exception as exc:
jobs[job_id].update(
{
"status": "failed",
"finished_at": datetime.utcnow().isoformat(),
"error": str(exc),
}
)
@app.get("/health")
def health() -> dict:
return {"status": "ok"}
@app.post("/analyses", status_code=202)
def create_analysis(payload: AnalysisRequest) -> dict:
analysis_id = str(uuid4())
jobs[analysis_id] = {
"status": "queued",
"ticker": payload.ticker,
"analysis_date": payload.analysis_date.isoformat(),
"created_at": datetime.utcnow().isoformat(),
}
executor.submit(run_analysis, analysis_id, payload)
return {"analysis_id": analysis_id, "status": "queued"}
@app.get("/analyses/{analysis_id}")
def get_analysis(analysis_id: str) -> dict:
job = jobs.get(analysis_id)
if not job:
raise HTTPException(status_code=404, detail="Analysis not found")
return job
Démarrez le service :
uvicorn app:app --reload
Les endpoints OpenAPI sont alors disponibles à :
http://localhost:8000/docshttp://localhost:8000/openapi.json
Importez ce dernier dans Apidog pour générer la documentation et les requêtes.
Étape 5 : Utiliser TradingAgents via l'API
Déclencher une analyse
Envoyez :
POST /analyses
{
"ticker": "NVDA",
"analysis_date": "2026-03-26",
"llm_provider": "openai",
"deep_think_llm": "gpt-5.2",
"quick_think_llm": "gpt-5-mini",
"research_depth": 2
}
Réponse attendue :
{
"analysis_id": "88f9f0f5-7315-4c73-8ed5-d0a71f613d31",
"status": "queued"
}
Interroger le résultat
GET /analyses/{analysis_id}
{
"status": "running",
"ticker": "NVDA",
"analysis_date": "2026-03-26",
"created_at": "2026-03-26T06:00:00.000000",
"started_at": "2026-03-26T06:00:01.000000"
}
Lorsque terminé :
{
"status": "completed",
"ticker": "NVDA",
"analysis_date": "2026-03-26",
"result": {
"decision": "hold"
}
}
En cas d'erreur, retournez "status": "failed" et un message d'erreur explicite.
Étape 6 : Importer l'API dans Apidog
Dans Apidog, importez :
http://localhost:8000/openapi.json
Vous obtenez immédiatement :
- documentation synchronisée avec le code
- paramètres de chemin générés
- corps de requête alignés
- partage facilité avec les coéquipiers
Le workflow passe d'un test cURL manuel à une gestion structurée du contrat API.
Étape 7 : Créer un environnement Apidog
Définissez un environnement pour votre service local :
base_url = http://localhost:8000
analysis_id =
Ajoutez des variables d'auth si besoin :
internal_api_key = your-local-dev-key
Avantages :
- changement rapide entre local, pré-prod, prod
- requêtes réutilisables
- configuration partagée pour l'équipe
Étape 8 : Tester le flux de travail complet dans Apidog
Requête 1 : Créer l'analyse
- Méthode :
POST - URL :
{{base_url}}/analyses - Corps :
{
"ticker": "NVDA",
"analysis_date": "2026-03-26",
"llm_provider": "openai",
"deep_think_llm": "gpt-5.2",
"quick_think_llm": "gpt-5-mini",
"research_depth": 2
}
Script de test :
pm.test("Status is 202", function () {
pm.response.to.have.status(202);
});
const data = pm.response.json();
pm.expect(data.analysis_id).to.exist;
pm.environment.set("analysis_id", data.analysis_id);
Requête 2 : Interroger l'analyse
- Méthode :
GET - URL :
{{base_url}}/analyses/{{analysis_id}}
Assertion :
pm.test("Analysis has a valid status", function () {
const data = pm.response.json();
pm.expect(["queued", "running", "completed", "failed"]).to.include(data.status);
});
Vérification si terminé :
pm.test("Completed jobs include a result", function () {
const data = pm.response.json();
if (data.status === "completed") {
pm.expect(data.result).to.exist;
}
});
Chaîner les deux requêtes dans un scénario
Construisez un scénario qui :
- POST /analyses
- stocke l'
analysis_id - attend quelques secondes
- GET /analyses/{{analysis_id}}
Vos équipes QA et dev peuvent ainsi valider le cycle de vie complet.
Étape 9 : Publier une documentation interne pour votre équipe
Publiez dans Apidog :
- fournisseurs autorisés
- signification de
research_depth - statuts attendus
- durée moyenne d'exécution
- erreurs re-tentables
- clause de non-responsabilité de recherche
Cela évite que le contrat ne vive que dans la tête d'un seul développeur.
Erreurs courantes lors de l'utilisation de TradingAgents
Traiter le framework comme une API hébergée
TradingAgents n'est pas un service public prêt à l'emploi. C'est à vous de construire le contrat adapté à votre équipe.
Passer des secrets via les corps de requête
Gardez les clés dans l'environnement, jamais dans les payloads ou le frontend.
Renvoyer une longue réponse synchrone unique
Privilégiez une API basée sur les tâches plutôt qu'une requête bloquante.
Exposer trop d'options de configuration
Commencez avec un contrat simple et stable. N'exposez pas tous les paramètres internes dès le début.
Conserver les résultats uniquement en mémoire
Le tuto utilise un dict en mémoire (simplicité). En production, stockez les tâches dans Redis, Postgres ou autre backend persistant.
Masquer la clause de non-responsabilité de recherche
Communiquez clairement : TradingAgents est destiné à la recherche et à l'expérimentation, pas aux conseils financiers.
Conclusion
Utilisez TradingAgents selon vos besoins : CLI et package Python pour l'exploration individuelle ; encapsulez dans une API testée/documentée avec Apidog pour un flux de travail d'équipe robuste.
Pour passer rapidement d'un dépôt GitHub à un workflow d'équipe :
- Installez TradingAgents
- Testez
TradingAgentsGraphlocalement - Ajoutez
POST /analysesetGET /analyses/{id} - Importez le schéma dans Apidog
- Construisez un scénario de bout en bout
C'est bien plus maintenable qu'une suite de commandes shell ou des connaissances orales.
FAQ
Comment utiliser TradingAgents pour la première fois ?
Installez le dépôt, configurez les variables d'environnement du fournisseur de modèle, puis exécutez l'exemple Python avec TradingAgentsGraph. Ensuite, choisissez entre la CLI ou l'API selon vos besoins.
TradingAgents est-il livré avec une API REST officielle ?
Non, selon la doc publique (26 mars 2026), il s'agit d'une CLI et d'un package Python. Beaucoup d'équipes ajoutent donc une fine couche FastAPI.
Quelle est la manière la plus simple d'utiliser TradingAgents dans une application frontend ?
N'appelez pas le framework Python directement depuis le frontend. Passez par une API backend qui renvoie un analysis_id à interroger.
Pourquoi utiliser Apidog avec TradingAgents ?
Apidog permet d'importer le schéma OpenAPI, de gérer les environnements, stocker des exemples de requêtes, ajouter des assertions et partager le workflow avec des coéquipiers non Python.
Quels paramètres de TradingAgents méritent d'être exposés dans une API ?
Commencez par le ticker, la date d'analyse, le fournisseur, les modèles et la profondeur de recherche. Étendez au besoin.
Puis-je conserver l'état de la tâche exemple en mémoire ?
Uniquement pour l'apprentissage ou le prototypage. En production, utilisez un backend persistant pour ne pas perdre l'état au redémarrage.
TradingAgents est-il adapté aux décisions financières en temps réel ?
Non. Le projet se décrit comme un cadre de recherche, pas un outil de décision financière. Ajoutez vos propres contrôles et gouvernance si besoin professionnel.


Top comments (0)