LLM API Configuration Guide
April 6, 2026 ยท View on GitHub
The deep analysis system supports both Anthropic Claude and OpenAI APIs. Choose based on your availability, cost, and preference.
๐ฏ Quick Setup
Option 1: Anthropic Claude (Default)
# Set your Anthropic API key
export ANTHROPIC_API_KEY="sk-ant-..."
Default Model: claude-sonnet-4-20250514
Optional: Specify a different model
export ANTHROPIC_MODEL="claude-opus-4-20250514"
Option 2: OpenAI
# Set provider to OpenAI
export LLM_API="openai"
# Set your OpenAI API key
export OPENAI_API_KEY="sk-..."
Default Model: gpt-4o
Optional: Specify a different model
export OPENAI_MODEL="gpt-4o-mini"
๐ Supported Models
Anthropic Claude
claude-sonnet-4-20250514(default, good balance)claude-opus-4-20250514(highest quality)claude-haiku-4-20250514(fastest, lowest cost)
OpenAI
gpt-4o(default, good balance)gpt-4o-mini(faster, lower cost)gpt-4-turbo(legacy, still good)gpt-3.5-turbo(fastest, lowest quality)
๐ Switching Between APIs
Method 1: Environment Variable (Recommended)
# Use Anthropic
export LLM_API="anthropic" # or just don't set (it's the default)
export ANTHROPIC_API_KEY="sk-ant-..."
# Use OpenAI
export LLM_API="openai"
export OPENAI_API_KEY="sk-..."
Method 2: Per-Command
# Run with Anthropic
LLM_API=anthropic ANTHROPIC_API_KEY="sk-ant-..." node tools/deep-analyzer.mjs "Geoffrey Hinton"
# Run with OpenAI
LLM_API=openai OPENAI_API_KEY="sk-..." node tools/deep-analyzer.mjs "Geoffrey Hinton"
๐ง Advanced Configuration
Custom Base URL (for OpenAI-compatible APIs)
# Using Azure OpenAI
export LLM_API="openai"
export OPENAI_BASE_URL="https://your-resource.openai.azure.com/"
export OPENAI_API_KEY="your-key"
export OPENAI_MODEL="gpt-4"
# Using other OpenAI-compatible APIs
export LLM_API="openai"
export OPENAI_BASE_URL="https://api.deepseek.com/v1"
export OPENAI_API_KEY="your-key"
export OPENAI_MODEL="deepseek-chat"
๐ฐ Cost Comparison
Per Mentor Analysis (3 papers + 3 public sources)
| Provider | Model | Input Tokens | Output Tokens | Est. Cost |
|---|---|---|---|---|
| Anthropic | claude-sonnet-4 | ~9,000 | ~3,000 | ~$0.06 |
| Anthropic | claude-haiku-4 | ~9,000 | ~3,000 | ~$0.006 |
| OpenAI | gpt-4o | ~9,000 | ~3,000 | ~$0.05 |
| OpenAI | gpt-4o-mini | ~9,000 | ~3,000 | ~$0.003 |
| OpenAI | gpt-3.5-turbo | ~9,000 | ~3,000 | ~$0.002 |
Estimates as of 2026-04-01. Actual costs may vary.
๐ Example Usage
Analyzing a Mentor with Different APIs
# Using Anthropic Claude
export ANTHROPIC_API_KEY="sk-ant-..."
node tools/deep-analyzer.mjs "Geoffrey Hinton" --affiliation "University of Toronto"
# Switch to OpenAI
export LLM_API="openai"
export OPENAI_API_KEY="sk-..."
node tools/deep-analyzer.mjs "Geoffrey Hinton" --affiliation "University of Toronto"
Generating Skills with Different APIs
# Using Anthropic (default)
export ANTHROPIC_API_KEY="sk-ant-..."
node tools/skill-generator.mjs "Geoffrey Hinton" --affiliation "University of Toronto" --deep-analyze
# Using OpenAI
export LLM_API="openai"
export OPENAI_API_KEY="sk-..."
node tools/skill-generator.mjs "Geoffrey Hinton" --affiliation "University of Toronto" --deep-analyze
โ๏ธ Permanent Configuration
For Bash/Zsh Users
Add to ~/.bashrc or ~/.zshrc:
# Anthropic Claude (default)
export ANTHROPIC_API_KEY="sk-ant-..."
export ANTHROPIC_MODEL="claude-sonnet-4-20250514"
# OR OpenAI
export LLM_API="openai"
export OPENAI_API_KEY="sk-..."
export OPENAI_MODEL="gpt-4o"
Then reload:
source ~/.bashrc # or source ~/.zshrc
For Project-Specific Configuration
Create .env file in project root:
# .env
LLM_API=openai
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o
Then load before running:
source .env
node tools/deep-analyzer.mjs "Geoffrey Hinton"
๐งช Testing Configuration
Test which API is being used:
# Should print: anthropic or openai
node -e "import('./tools/content-analyzer.mjs').then(m => console.log(m.getAPIConfig().provider))"
Test a simple analysis:
# Create test file
echo "Test paper content" > /tmp/test_paper.txt
# Run with Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
node tools/content-analyzer.mjs /tmp/test_paper.txt "Test Paper" "Test Mentor"
# Run with OpenAI
export LLM_API=openai OPENAI_API_KEY="sk-..."
node tools/content-analyzer.mjs /tmp/test_paper.txt "Test Paper" "Test Mentor"
๐จ Troubleshooting
Error: ANTHROPIC_API_KEY not set
Solution: Set the API key
export ANTHROPIC_API_KEY="sk-ant-..."
Error: OPENAI_API_KEY not set
Solution: Set the API key and provider
export LLM_API="openai"
export OPENAI_API_KEY="sk-..."
Error: API error 401
Cause: Invalid API key Solution: Verify your API key is correct and active
Error: API error 429
Cause: Rate limit exceeded Solution: Wait a few minutes and try again, or switch to a different API provider
Error: Could not parse as JSON
Cause: Model didn't return valid JSON Solution: Try a different model (e.g., gpt-4o instead of gpt-3.5-turbo)
๐ Recommendation
For Best Results: Anthropic Claude
- Better at following complex instructions
- More structured output
- Better at analysis tasks
- Use:
claude-sonnet-4-20250514orclaude-opus-4-20250514
For Cost Efficiency: OpenAI
- Lower cost per token
- Faster response times
- Good for simple tasks
- Use:
gpt-4oorgpt-4o-mini
๐ Additional Resources
- Anthropic API Documentation
- OpenAI API Documentation
- Model Comparison
- Pricing: Anthropic
- Pricing: OpenAI
๐ Security Best Practices
-
Never commit API keys to git
# Add to .gitignore echo ".env" >> .gitignore echo "*.key" >> .gitignore -
Use environment variables, not hardcoded keys
-
Rotate keys regularly (monthly recommended)
-
Set spending limits in your API console
-
Monitor usage to detect unusual activity
Last updated: 2026-04-01