요약 / 빠른 답변
TradingAgents를 가장 빠르고 실용적으로 활용하려면 Python 패키지로 실행한 후, 작은 FastAPI 서비스로 래핑하고, Apidog에서 해당 서비스를 테스트하세요. 이를 통해 분석 트리거, 결과 폴링, 요청 계약 문서화, 팀과의 설정 공유가 가능한 반복 가능한 워크플로를 만들 수 있습니다.
서론
TradingAgents는 외관상 매우 인상적입니다. GitHub 리포지토리에는 다중 에이전트 거래 워크플로, 세련된 CLI, 다양한 모델 제공업체 지원, 연구 논문 등이 포함되어 있습니다. 하지만 실제 엔지니어링 워크플로에 적용하려고 하면 어려움이 시작됩니다.
대부분의 팀은 단일 개발자만 로컬에서 실행할 수 있는 도구가 아닌, 분석 트리거, 티커/날짜 전달, 작업 ID 반환, 결과 폴링 등 반복 가능한 워크플로를 프론트엔드, QA, 플랫폼 팀에 공유할 수 있기를 원합니다. TradingAgents를 노트북의 일회성 스크립트로 두지 말고, 통제되고 문서화된 API로 래핑하는 것이 중요합니다.
💡 Apidog는 이 워크플로에 자연스럽게 들어맞습니다. FastAPI에서 OpenAPI 스키마를 가져오고, 환경을 저장하고, 응답 변수 추출, 폴링 시나리오 연결, 팀 문서화까지 지원합니다. Apidog를 무료로 다운로드해 따라해 보세요.
TradingAgents는 무엇이고 무엇이 아닌가
구현 전 도구의 정확한 정의가 필요합니다.
TradingAgents는 오픈 소스 다중 에이전트 거래 프레임워크입니다. 거래 회사의 구조를 반영하는 다양한 역할이 포함되어 있습니다.
- 기본 분석, 심리, 뉴스, 기술 신호 분석가
- 토론을 위한 낙관론/비관론 연구자
- 트레이더 에이전트
- 위험 관리 역할
- 최종 결정을 위한 포트폴리오 매니저
이 프레임워크는 LangGraph 기반이며, OpenAI, Google, Anthropic, xAI, OpenRouter, Ollama 등 다양한 모델 제공업체를 지원합니다. 기본 설정 예시는 다음과 같습니다.
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
즉, TradingAgents는 드롭인 SaaS API가 아닌, 구성 가능한 Python 프레임워크입니다.
또한 TradingAgents는 연구 프레임워크이지 금융 조언 도구가 아닙니다. 내부 사용/소프트웨어 구축 시 문서와 UI에 이를 명확히 표시하세요.
1단계: TradingAgents 설치
리포지토리에서 직접 설치하세요.
git clone https://github.com/TauricResearch/TradingAgents.git
cd TradingAgents
conda create -n tradingagents python=3.13
conda activate tradingagents
pip install .
API 래퍼 구축 시 FastAPI와 Uvicorn도 설치하세요.
pip install fastapi uvicorn
.env.example 파일에는 다음과 같은 제공업체 변수가 포함되어 있습니다.
OPENAI_API_KEY=
GOOGLE_API_KEY=
ANTHROPIC_API_KEY=
XAI_API_KEY=
OPENROUTER_API_KEY=
데이터 소스에 따라 Alpha Vantage 등 추가 자격 증명이 필요할 수 있습니다.
실무 규칙:
- 자격 증명은 환경 변수/비밀 관리자에 보관하세요.
- 절대 API 요청 본문으로 비밀을 전달하지 마세요.
환경 분리와 보안 강화를 위해 필수적입니다.
2단계: Python에서 TradingAgents 실행
API 래핑 전, 프레임워크가 정상 작동하는지 먼저 확인하세요.
리포지토리 제공 예시:
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)
이 단계에서 머신, 모델, 종속성이 올바르게 작동하는지 즉시 확인할 수 있습니다.
구성 재정의도 가능합니다.
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)
이 과정에서 API로 노출할 가치가 있는 매개변수(티커, 날짜, 제공업체, 모델명, 연구 깊이 등)를 파악할 수 있습니다.
3단계: TradingAgents 사용 방식 결정
옵션 1: CLI만 사용
리포지토리에는 대화형 CLI가 포함되어 있습니다. 빠른 탐색/학습/실험에 적합합니다.
- 간단히 도구를 익히거나
- 단독 실험에만 사용할 때
팀 내 공유, QA, 프론트엔드 연동이 필요하다면 다음 단계로 넘어가세요.
옵션 2: Python만 사용
맞춤 스크립트, 노트북, 자동화 필요 시 Python에서 직접 호출하세요.
- 로컬 자동화
- 프로그래밍 제어
- 한 명의 개발자가 전체 워크플로를 소유
여러 팀/앱에서 활용하려면 API가 필요합니다.
옵션 3: API 래퍼 + Apidog
가장 실용적인 팀 환경입니다. TradingAgents를 FastAPI로 노출하고, Apidog에서 테스트 및 문서화하세요.
- 프론트엔드가 분석 트리거 필요
- QA에 반복적인 요청 흐름 필요
- 환경/어설션/문서 통합
- 장기 실행 워크플로에 폴링 패턴 적용
이 방식이 실제 서비스 수준의 구현입니다.
4단계: FastAPI 서비스로 TradingAgents 래핑
가장 깔끔한 패턴은 작업 기반(job-based) API입니다.
패턴 예시:
POST /analyses -> analysis_id 반환
GET /analyses/{id} -> 상태 및 결과 반환 (queued/running/completed/failed)
이 구조는 브라우저/QA/문서화에 모두 유리합니다.
API 계약 예시
| 엔드포인트 | 목적 |
|---|---|
GET /health |
기본 상태 확인 |
POST /analyses |
TradingAgents 실행 트리거 |
GET /analyses/{analysis_id} |
작업 상태/결과 조회 |
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
서비스 시작:
uvicorn app:app --reload
FastAPI는 다음 경로를 제공합니다.
두 번째 URL은 Apidog에서 바로 가져올 수 있습니다.
5단계: API로 TradingAgents 사용
이제 반복 가능하고 신뢰할 수 있는 방법으로 TradingAgents를 활용할 수 있습니다.
분석 트리거
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
}
응답 예시:
{
"analysis_id": "88f9f0f5-7315-4c73-8ed5-d0a71f613d31",
"status": "queued"
}
결과 폴링
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"
}
완료시:
{
"status": "completed",
"ticker": "NVDA",
"analysis_date": "2026-03-26",
"result": {
"decision": "hold"
}
}
오류 발생 시에는 failed 상태와 에러 메시지를 명확히 반환하세요.
6단계: Apidog로 API 가져오기
이제 워크플로 유지 관리가 매우 쉬워집니다.
Apidog에서 OpenAPI 스키마를 가져오세요:
http://localhost:8000/openapi.json
가져오기 후 요청/응답 구조가 자동으로 설정됩니다.
즉각적 장점:
- 문서와 구현이 동기화됨
- 경로/파라미터 자동 생성
- 본문 구조 일치
- 팀원이 컬렉션을 수동 복사 필요 없음
API 전용 도구에서 Apidog로 전환하면, 디자인/테스트/환경/문서 통합의 이점을 누릴 수 있습니다.
7단계: Apidog 환경 생성
API를 가져왔다면, 로컬 서비스용 환경을 추가하세요.
예시 변수:
base_url = http://localhost:8000
analysis_id =
API에 인증이 있다면:
internal_api_key = your-local-dev-key
이점:
- 로컬/스테이징/프로덕션 전환이 쉬움
- 요청 재사용 가능
- 팀이 URL/헤더 반복 입력 불필요
TradingAgents는 분석 로직, Apidog는 공유 워크플로를 담당합니다.
8단계: Apidog에서 전체 워크플로 테스트
실제 클라이언트처럼 Apidog에서 TradingAgents를 테스트하세요.
요청 1: 분석 생성
- 메서드:
POST - URL:
{{base_url}}/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
}
상태 및 ID 저장 테스트 스크립트:
pm.test("상태는 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);
요청 2: 분석 폴링
- 메서드:
GET - URL:
{{base_url}}/analyses/{{analysis_id}}
상태 어설션:
pm.test("분석에 유효한 상태가 있습니다", function () {
const data = pm.response.json();
pm.expect(["queued", "running", "completed", "failed"]).to.include(data.status);
});
완료 결과 확인:
pm.test("완료된 작업에는 결과가 포함됩니다", function () {
const data = pm.response.json();
if (data.status === "completed") {
pm.expect(data.result).to.exist;
}
});
두 요청을 시나리오로 연결
-
POST /analyses실행 -
analysis_id저장 - 대기
-
GET /analyses/{{analysis_id}}실행
이렇게 하면 단일 엔드포인트 200 OK 확인이 아니라, 전체 수명주기 검증이 가능합니다.
9단계: 팀을 위한 내부 문서 게시
테스트만으로 끝내지 말고, Apidog에서 내부 문서를 작성하세요.
- 허용 제공업체 목록
-
research_depth의 의미 - 상태값 정의
- 실행 소요 시간
- 재시도 가능한 오류 안내
- 연구 전용 면책 조항 명시
프레임워크 자체보다 문서화된 API 계약이 팀 생산성에 더 중요할 수 있습니다.
Apidog로 TradingAgents를 환경/어설션/재사용 가능한 시나리오와 함께 팀이 활용할 수 있는 API 워크플로로 전환하세요.
이러한 방식으로 TradingAgents를 사용할 때 흔히 저지르는 실수
프레임워크를 호스팅된 API처럼 취급하기
TradingAgents는 미리 만들어진 공용 서비스가 아닙니다. Python 프레임워크로서, 직접 API 계약을 구축해야 합니다.
요청 본문으로 비밀 전달하기
API 키 등 비밀은 환경변수/비밀관리자에만 저장하세요.
긴 동기 응답 반환
다단계 에이전트 워크플로는 작업 기반 API(비동기 패턴)가 더 적합합니다.
너무 많은 구성 옵션 노출
처음부터 모든 내부 설정을 노출하기보단, 작은 안정적 계약으로 시작하세요.
결과를 메모리에만 저장
튜토리얼은 인메모리 딕셔너리를 사용하지만, 프로덕션에서는 영구 백엔드에 결과/상태를 저장하세요.
연구 면책 조항 누락
서비스에 TradingAgents를 래핑할 때, 금융 조언 아님을 반드시 명시하세요.
결론
TradingAgents를 어떻게 사용할지는 목적에 따라 다릅니다. 혼자 탐색 시 CLI/Python만으로 충분하지만, 팀에서 반복적으로 사용하려면 FastAPI로 래핑 후 Apidog에서 테스트 및 문서화하세요.
실행 요약:
- TradingAgents 설치
-
TradingAgentsGraph가 로컬에서 동작하는지 확인 -
POST /analyses,GET /analyses/{id}추가 - OpenAPI 스키마를 Apidog로 가져와 엔드투엔드 시나리오 구축
이 방식은 터미널 명령이나 구전 지식보다 훨씬 유지관리가 쉽고, 팀에 공유 가능합니다.
자주 묻는 질문
TradingAgents를 처음 사용하는 방법은?
리포지토리 설치, 모델 제공업체 환경변수 설정, Python 예제 실행부터 시작하세요. 이후 CLI만 사용할지, API로 래핑할지 결정하세요.
TradingAgents는 공식 REST API와 함께 제공되나요?
2026년 3월 26일 기준 공식 REST API는 없습니다. CLI와 Python 패키지만 제공되며, 필요한 경우 FastAPI 등으로 직접 래핑해야 합니다.
프론트엔드 앱에서 TradingAgents를 쉽게 사용하는 방법은?
프론트엔드에서 Python 프레임워크 직접 호출 금지. analysis_id를 반환하는 백엔드 API로 노출하고, 결과는 폴링하세요.
TradingAgents와 함께 Apidog를 사용하는 이유는?
Apidog는 OpenAPI 스키마 가져오기, 환경/예시 요청/어설션 관리, 팀원과 워크플로 공유를 쉽게 해줍니다.
API에서 노출할 가치가 있는 TradingAgents 설정은?
티커, 분석 날짜, 제공업체, 모델 선택, 연구 깊이 정도가 안전한 시작점입니다.
예제 작업 상태를 메모리에만 저장해도 되나요?
학습/프로토타이핑 용도로만 메모리 사용. 프로덕션에서는 영구 백엔드에 작업 상태/결과 저장 필수.
TradingAgents는 실시간 금융 결정에 적합한가요?
공개 프로젝트 기준 연구용 프레임워크이며, 금융/투자 조언 도구가 아닙니다. 자체 검증/통제/거버넌스 없이 실시간 의사결정에 사용하지 마세요.


Top comments (0)