This commit is contained in:
Marvin Gabler 2025-10-21 19:04:51 +02:00
parent 4f26352220
commit a0710f5558
7 changed files with 202 additions and 73 deletions

7
.gitignore vendored
View File

@ -9,3 +9,10 @@ eval_results/
eval_data/
*.egg-info/
.env
# API Database
api_database.db
api_database.db-*
*.db
*.db-shm
*.db-wal

View File

@ -274,13 +274,13 @@ Future improvements could include:
The FastAPI Trading Agents API is fully implemented and ready for use. It provides a robust, scalable foundation for frontend applications to interact with the TradingAgents multi-agent system.
### Getting Started
1. Read `API_QUICKSTART.md` for setup instructions
2. Check `api/README.md` for full documentation
3. Run `api/example_client.py` to see it in action
1. Read `START_API.md` or `API_QUICKSTART.md` for setup instructions
2. Check `README.md` for full documentation
3. Run `example_client.py` to see it in action
4. Start building your frontend!
### Support
- API Documentation: http://localhost:8000/docs
- Project README: `api/README.md`
- Quick Start: `API_QUICKSTART.md`
- API Documentation: http://localhost:8001/docs
- Project README: `README.md`
- Quick Start: `START_API.md` or `API_QUICKSTART.md`

40
api/QUICKSTART.md Normal file
View File

@ -0,0 +1,40 @@
# Trading Agents API - Quickest Start
## One-Command Setup
```bash
cd TradingAgents && pip install -r requirements.txt && python -m api.main
```
That's it! The API auto-initializes on first run.
## What Happens on First Run
1. ✅ Database is created automatically
2. ✅ Default API key is generated
3. ✅ API key is displayed in the console
4. ✅ Server starts at http://localhost:8001
**Save the API key from the console output!**
## Test It
```bash
# Replace YOUR_API_KEY with the key from console
curl -X POST "http://localhost:8001/api/v1/analyses" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ticker": "AAPL",
"analysis_date": "2025-10-21",
"selected_analysts": ["market"],
"research_depth": 1
}'
```
## Next Steps
- View interactive docs: http://localhost:8001/docs
- Read full guide: `START_API.md`
- Manage API keys: `python -m api.cli_admin list-keys`

View File

@ -1,83 +1,96 @@
# Quick Start - Trading Agents API
# Trading Agents API - Quick Start
## 1. Install Dependencies (if not already done)
Get your API running in **2 simple steps**!
## Prerequisites
- Python 3.10+
- Environment variables set (OPENAI_API_KEY, ALPHA_VANTAGE_API_KEY)
## Setup
### Step 1: Install Dependencies
```bash
cd TradingAgents
pip install -r requirements.txt
```
## 2. Initialize Database & Create API Key
```bash
# Initialize the database
python -m api.cli_admin init-database
# Create your first API key
python -m api.cli_admin create-key "My Development Key"
```
**IMPORTANT**: Save the API key that's displayed! You'll need it for all requests.
## 3. Start the API
### Step 2: Start the API
```bash
python -m api.main
```
Or use the startup script:
```bash
./run_api.sh
**That's it!** 🎉
### First Run Auto-Setup
On first run, the API automatically:
- ✅ Creates the database
- ✅ Generates a default API key
- ✅ Displays the key in console logs
**SAVE THE API KEY!** You'll see output like this:
```
======================================================================
FIRST RUN DETECTED - Setting up Trading Agents API
======================================================================
✓ Database initialized successfully!
✓ Default API key created!
======================================================================
YOUR API KEY (save this, it won't be shown again):
BgA2YyMlxYus2aIGJ5KGCPQO-q8k05WxTirayVZgPrM
======================================================================
Use this key in the X-API-Key header for all API requests.
Manage keys with: python -m api.cli_admin
======================================================================
```
The API will start at: **http://localhost:8001**
## Test Your API
## 4. Test It
Open your browser:
- **Interactive Docs**: http://localhost:8001/docs
- **Alternative Docs**: http://localhost:8001/redoc
Open your browser to see the interactive API documentation:
- **Swagger UI**: http://localhost:8001/docs
- **ReDoc**: http://localhost:8001/redoc
## 5. Create Your First Analysis
Using curl (replace `YOUR_API_KEY` with the key from step 2):
Or test with curl:
```bash
curl -X POST "http://localhost:8001/api/v1/analyses" \
-H "X-API-Key: YOUR_API_KEY" \
-H "X-API-Key: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"ticker": "AAPL",
"analysis_date": "2025-10-21",
"selected_analysts": ["market", "news"],
"selected_analysts": ["market"],
"research_depth": 1
}'
```
You'll get back an `analysis_id`. Use it to check status:
## Alternative Startup Methods
```bash
curl "http://localhost:8001/api/v1/analyses/YOUR_ANALYSIS_ID/status" \
-H "X-API-Key: YOUR_API_KEY"
```
## Configuration (Optional)
Set environment variables before starting:
```bash
# Maximum concurrent analyses (default: 4)
export MAX_CONCURRENT_ANALYSES=8
# Your LLM API keys (if not already set)
export OPENAI_API_KEY="your-key"
export ALPHA_VANTAGE_API_KEY="your-key"
# Then start the API
# Option 1: Direct Python (default port 8001)
python -m api.main
# Option 2: Startup script
./run_api.sh
# Option 3: Custom port
API_PORT=8002 python -m api.main
# Option 4: Using uvicorn directly
uvicorn api.main:app --host 0.0.0.0 --port 8001
```
## Common Commands
## Managing API Keys
After initial setup, manage keys with the admin CLI:
```bash
# List all API keys
@ -86,29 +99,57 @@ python -m api.cli_admin list-keys
# Create a new API key
python -m api.cli_admin create-key "Frontend App"
# Revoke an API key (use ID from list-keys)
# Revoke an API key
python -m api.cli_admin revoke-key 1
# Activate a revoked key
python -m api.cli_admin activate-key 1
```
## Full Documentation
## Configuration (Optional)
- Quick Start: `API_QUICKSTART.md`
- Full API Docs: `api/README.md`
- Implementation Details: `API_IMPLEMENTATION_SUMMARY.md`
Set these environment variables before starting:
```bash
# Maximum concurrent analyses (default: 4)
export MAX_CONCURRENT_ANALYSES=8
# Custom database location
export API_DATABASE_URL="sqlite:///./my_custom.db"
# Custom port
export API_PORT=8002
```
## Troubleshooting
**"Invalid or inactive API key"**
- Make sure you're using the exact key from step 2
- Check: `python -m api.cli_admin list-keys`
- Use the exact key from the first-run console output
- Check active keys: `python -m api.cli_admin list-keys`
**Port already in use**
- Change port: `API_PORT=8002 python -m api.main`
**Database already exists but no API key**
- Create one: `python -m api.cli_admin create-key "My Key"`
**Import errors**
- Make sure you're in the TradingAgents directory
- Ensure you're in the TradingAgents directory
- Use: `python -m api.main` (not `python api/main.py`)
**Port 8001 already in use**
- Change port: `API_PORT=8002 python -m api.main`
- Or: `python -m uvicorn api.main:app --port 8002`
## Full Documentation
That's it! Your API is ready to use. 🚀
- Quick Start: `QUICKSTART.md` (one-command setup)
- This Guide: `START_API.md` (you are here)
- Detailed Guide: `API_QUICKSTART.md`
- Full API Docs: `README.md`
- Implementation: `API_IMPLEMENTATION_SUMMARY.md`
## What's Next?
1. Check out the interactive docs at http://localhost:8001/docs
2. Try creating an analysis via the API
3. Build your frontend integration
4. Read the full documentation in `README.md`
Your Trading Agents API is ready! 🚀

View File

@ -30,11 +30,53 @@ logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Lifespan context manager for startup and shutdown events."""
import os
from pathlib import Path
# Startup
logger.info("Initializing Trading Agents API...")
# Check if this is first run (database doesn't exist)
db_path = Path(os.getenv("API_DATABASE_URL", "sqlite:///./api_database.db").replace("sqlite:///", ""))
is_first_run = not db_path.exists()
# Initialize database
init_db()
# If first run, create a default API key
if is_first_run:
from api.auth import create_api_key
from api.database import SessionLocal
logger.info("=" * 70)
logger.info("FIRST RUN DETECTED - Setting up Trading Agents API")
logger.info("=" * 70)
db = SessionLocal()
try:
plain_key, db_key = create_api_key(db, "Default API Key")
logger.info("")
logger.info("✓ Database initialized successfully!")
logger.info("✓ Default API key created!")
logger.info("")
logger.info("=" * 70)
logger.info("YOUR API KEY (save this, it won't be shown again):")
logger.info("")
logger.info(f" {plain_key}")
logger.info("")
logger.info("=" * 70)
logger.info("Use this key in the X-API-Key header for all API requests.")
logger.info("Manage keys with: python -m api.cli_admin")
logger.info("=" * 70)
logger.info("")
except Exception as e:
logger.error(f"Failed to create default API key: {e}")
finally:
db.close()
get_executor()
logger.info("Trading Agents API started successfully")
logger.info(f"API Documentation: http://localhost:{os.getenv('API_PORT', '8001')}/docs")
yield
@ -92,7 +134,7 @@ if __name__ == "__main__":
import uvicorn
import os
port = int(os.getenv("API_PORT", "8002")) # Default to 8001 instead of 8000
port = int(os.getenv("API_PORT", "8002"))
uvicorn.run(
"api.main:app",

Binary file not shown.

View File

@ -3,13 +3,12 @@
echo "Starting Trading Agents API..."
echo ""
echo "Make sure you have:"
echo "1. Installed dependencies: pip install -r requirements.txt"
echo "2. Initialized database: python -m api.cli_admin init-database"
echo "3. Created an API key: python -m api.cli_admin create-key 'My Key'"
echo "First time running? The API will automatically:"
echo " • Initialize the database"
echo " • Create a default API key (save it!)"
echo ""
echo "API will be available at: http://localhost:8001"
echo "API Documentation: http://localhost:8001/docs"
echo "API will be available at: http://localhost:8002"
echo "API Documentation: http://localhost:8002/docs"
echo ""
cd "$(dirname "$0")"