50 lines
2.7 KiB
Markdown
50 lines
2.7 KiB
Markdown
# Runtime, CLI, and Configuration
|
|
|
|
TradingAgents can run interactively through the CLI or programmatically via the Python API, both backed by the same orchestration code.
|
|
|
|
## Python API
|
|
Typical usage (`main.py`, `README.md`):
|
|
```python
|
|
from tradingagents.graph.trading_graph import TradingAgentsGraph
|
|
from tradingagents.default_config import DEFAULT_CONFIG
|
|
|
|
ta = TradingAgentsGraph(debug=True, config=DEFAULT_CONFIG.copy())
|
|
final_state, decision = ta.propagate("NVDA", "2024-05-10")
|
|
print(decision) # BUY / SELL / HOLD
|
|
```
|
|
|
|
- `debug=True` triggers graph streaming so intermediate messages are printed.
|
|
- `propagate()` returns both the final `AgentState` and the normalized decision from `SignalProcessor`.
|
|
- Execution directories (`dataflows/data_cache`, `results/`) are created automatically according to `config`.
|
|
|
|
## CLI Experience
|
|
`cli/main.py` implements a Typer command that launches a Rich-based dashboard. The CLI orchestrates:
|
|
- Parameter collection (tickers, dates, model selection) via interactive prompts.
|
|
- Live progress updates using `MessageBuffer` to track agent statuses, tool calls, and partial reports.
|
|
- Final report rendering, consolidating all analyst outputs and decisions into a Markdown summary.
|
|
|
|
To run locally:
|
|
```bash
|
|
python -m cli.main
|
|
```
|
|
Choose the desired options and monitor agent activity in real time.
|
|
|
|
## Configuration Surface
|
|
`DEFAULT_CONFIG` (`tradingagents/default_config.py`) exposes:
|
|
- Paths: `project_dir`, `results_dir`, `data_dir`, `data_cache_dir`.
|
|
- LLM provider settings: `llm_provider`, `deep_think_llm`, `quick_think_llm`, `backend_url`.
|
|
- Debate and recursion controls: `max_debate_rounds`, `max_risk_discuss_rounds`, `max_recur_limit`.
|
|
- Tooling: `online_tools` toggle.
|
|
|
|
Client code can copy the dict, mutate values, and pass it into `TradingAgentsGraph`. During initialization, `set_config()` propagates the values into the `dataflows` subsystem.
|
|
|
|
## Logging and Results
|
|
`TradingAgentsGraph` stores per-run snapshots in `log_states_dict`, keyed by trade date. Invoking `TradingAgentsGraph._log_state()` serializes analyst reports, debate histories, and final decisions into `results/` for post-run inspection.
|
|
|
|
The CLI also caches the final Markdown report in memory; future enhancements can persist these artifacts alongside the JSON logs.
|
|
|
|
## Deployment Notes
|
|
- The framework assumes OpenAI-compatible endpoints; alternate providers (Anthropic, Google) require the corresponding LangChain client to be configured in the config.
|
|
- For reproducible research, pin `requirements.txt` or `uv.lock` and disable online tools so all data comes from deterministic caches.
|
|
- Memory stores rely on an in-memory Chroma client. To share experiences across processes, instantiate `chromadb.PersistentClient` in `FinancialSituationMemory`.
|