68 lines
2.2 KiB
Markdown
68 lines
2.2 KiB
Markdown
# TradingAgents Chainlit Web UI — Design
|
|
|
|
## Summary
|
|
|
|
Add a Chainlit web UI to TradingAgents so it can be deployed on Railway as a web service. Users interact via chat messages (e.g., "Analyze NVDA") and see live agent progress streamed into the browser.
|
|
|
|
## Architecture
|
|
|
|
Thin Chainlit wrapper around the existing `TradingAgentsGraph` programmatic API. ~150 lines of new code in a single `app.py`.
|
|
|
|
## Components
|
|
|
|
### `app.py` (Chainlit entry point)
|
|
|
|
- `@cl.on_chat_start` — Welcome message explaining usage (e.g., "Type a ticker like `NVDA` or `Analyze AAPL 2024-12-01`")
|
|
- `@cl.on_message` — Parse ticker + optional date from user message, create `TradingAgentsGraph` with Anthropic config, run `propagate()` in debug mode, stream Chainlit `Step` messages for each agent phase, send final decision as formatted message
|
|
|
|
### `Dockerfile`
|
|
|
|
- Python 3.13-slim base
|
|
- Install requirements.txt
|
|
- Expose `$PORT`
|
|
- `CMD: chainlit run app.py --host 0.0.0.0 --port $PORT`
|
|
|
|
### `railway.toml`
|
|
|
|
- Build from Dockerfile
|
|
- Health check on `/`
|
|
|
|
### Railway Environment Variables
|
|
|
|
- `ANTHROPIC_API_KEY` — required, for Claude models
|
|
- `PORT` — auto-set by Railway
|
|
|
|
## LLM Configuration
|
|
|
|
- Provider: `anthropic`
|
|
- Quick-think model: `claude-haiku-4-5-20251001`
|
|
- Deep-think model: `claude-sonnet-4-5-20241022`
|
|
- Data vendor: `yfinance` (no extra API keys needed)
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
User message: "Analyze NVDA"
|
|
-> Parse: ticker=NVDA, date=today
|
|
-> TradingAgentsGraph(config={anthropic, haiku/sonnet})
|
|
-> graph.propagate("NVDA", "2026-02-20")
|
|
-> Debug stream chunks
|
|
-> Each chunk -> Chainlit Step (Analyst, Research, Trading, Risk, Portfolio)
|
|
-> Final decision -> formatted Chainlit message with markdown
|
|
```
|
|
|
|
## Message Parsing
|
|
|
|
Simple regex/string parsing:
|
|
- `"NVDA"` -> ticker=NVDA, date=today
|
|
- `"Analyze AAPL 2024-12-01"` -> ticker=AAPL, date=2024-12-01
|
|
- `"What's the outlook for TSLA?"` -> ticker=TSLA, date=today
|
|
- Extract uppercase 1-5 letter words as potential tickers
|
|
|
|
## Deployment
|
|
|
|
1. Push changes to `github.com/dtarkent2-sys/TradingAgents` main branch
|
|
2. Create Railway service from GitHub repo
|
|
3. Set `ANTHROPIC_API_KEY` env var
|
|
4. Railway auto-deploys, Chainlit serves on assigned PORT
|