TradingAgents/api/models/run.py

45 lines
1.1 KiB
Python

from enum import Enum
from typing import Literal, Optional
from pydantic import BaseModel, Field
class RunStatus(str, Enum):
QUEUED = "queued"
RUNNING = "running"
COMPLETE = "complete"
ERROR = "error"
class RunConfig(BaseModel):
ticker: str
date: str # "YYYY-MM-DD"
llm_provider: str = "openai"
deep_think_llm: str = "gpt-5.2"
quick_think_llm: str = "gpt-5-mini"
max_debate_rounds: int = Field(default=1, ge=1, le=5)
max_risk_discuss_rounds: int = Field(default=1, ge=1, le=5)
enabled_analysts: list[str] = Field(
default=["market", "news", "fundamentals", "social"]
)
class RunSummary(BaseModel):
id: str
ticker: str
date: str
status: RunStatus
decision: Optional[Literal["BUY", "SELL", "HOLD"]] = None
created_at: str
class TokenUsage(BaseModel):
tokens_in: int = 0
tokens_out: int = 0
class RunResult(RunSummary):
config: Optional[RunConfig] = None
reports: dict[str, str] = Field(default_factory=dict)
error: Optional[str] = None
token_usage: dict[str, TokenUsage] = Field(default_factory=dict)