feat: add full AI provider config to .env.example and docker-compose

- All OpenAI, Gemini, Anthropic model/timeout/temperature settings
- Brief extraction processing config (models, cost limits, concurrency)
- File upload and WebSocket settings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Vadym Samoilenko 2026-03-23 14:30:16 +00:00
parent 16bc9d0c0d
commit 15bf9d3935
2 changed files with 73 additions and 8 deletions

View file

@ -15,16 +15,42 @@ AZURE_REDIRECT_URI=https://ai-sandbox.oliver.solutions/ac-helper/
# First login with this email automatically receives the admin role
ADMIN_EMAIL=
# ── AI providers ──────────────────────────────────────────────────────────────
# Required: Gemini is used for AI spreadsheet commands
GEMINI_API_KEY=
GEMINI_MODEL=gemini-2.0-flash-exp
# Optional: only needed if you use the brief-extraction feature with these providers
# ── OpenAI ────────────────────────────────────────────────────────────────────
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4.1
OPENAI_REASONING_EFFORT=medium
OPENAI_TIMEOUT=3600
OPENAI_MAX_RETRIES=2
# ── Google Gemini ─────────────────────────────────────────────────────────────
# Required: used for AI spreadsheet commands
GEMINI_API_KEY=
GOOGLE_MODEL=gemini-2.0-flash-exp
GOOGLE_TEMPERATURE=0.7
GOOGLE_MAX_OUTPUT_TOKENS=100000
GOOGLE_THINKING_BUDGET=12000
GOOGLE_TIMEOUT=3600
# ── Anthropic Claude ──────────────────────────────────────────────────────────
ANTHROPIC_API_KEY=
ANTHROPIC_MODEL_OPUS=claude-opus-4-5-20251101
ANTHROPIC_MODEL_SONNET=claude-sonnet-4-5-20250929
ANTHROPIC_TEMPERATURE=1
ANTHROPIC_MAX_TOKENS=32000
ANTHROPIC_THINKING_BUDGET=12000
ANTHROPIC_TIMEOUT=300
# ── LlamaCloud (PDF parsing) ──────────────────────────────────────────────────
LLAMA_CLOUD_API_KEY=
# ── Brief extraction processing ───────────────────────────────────────────────
DEFAULT_PRIMARY_MODELS=anthropic-sonnet45,google-gemini20
DEFAULT_CONSOLIDATION_MODEL=anthropic-sonnet45
MINIMUM_SUCCESS_THRESHOLD=1
ENABLE_COST_ESTIMATION=true
MAX_PROCESSING_COST_USD=10.00
MAX_CONCURRENT_JOBS=5
# ── Security ──────────────────────────────────────────────────────────────────
# Generate with: python3 -c "import secrets; print(secrets.token_hex(32))"
SESSION_SECRET=
@ -32,5 +58,10 @@ SESSION_SECRET=
# ── CORS ──────────────────────────────────────────────────────────────────────
ALLOWED_ORIGINS=https://ai-sandbox.oliver.solutions
# ── File upload ───────────────────────────────────────────────────────────────
MAX_UPLOAD_SIZE_MB=200
FILE_RETENTION_HOURS=24
WS_PING_INTERVAL_SECONDS=30
# ── Dev mode (must be false in production) ────────────────────────────────────
DEV_MODE=false

View file

@ -49,12 +49,46 @@ services:
# Admin bootstrap
ADMIN_EMAIL: ${ADMIN_EMAIL:-daveporter@oliver.agency}
# AI providers
GEMINI_API_KEY: ${GEMINI_API_KEY}
# OpenAI
OPENAI_API_KEY: ${OPENAI_API_KEY:-}
OPENAI_MODEL: ${OPENAI_MODEL:-gpt-4.1}
OPENAI_REASONING_EFFORT: ${OPENAI_REASONING_EFFORT:-medium}
OPENAI_TIMEOUT: ${OPENAI_TIMEOUT:-3600}
OPENAI_MAX_RETRIES: ${OPENAI_MAX_RETRIES:-2}
# Google Gemini
GEMINI_API_KEY: ${GEMINI_API_KEY:-}
GOOGLE_MODEL: ${GOOGLE_MODEL:-gemini-2.0-flash-exp}
GOOGLE_TEMPERATURE: ${GOOGLE_TEMPERATURE:-0.7}
GOOGLE_MAX_OUTPUT_TOKENS: ${GOOGLE_MAX_OUTPUT_TOKENS:-100000}
GOOGLE_THINKING_BUDGET: ${GOOGLE_THINKING_BUDGET:-12000}
GOOGLE_TIMEOUT: ${GOOGLE_TIMEOUT:-3600}
# Anthropic
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
ANTHROPIC_MODEL_OPUS: ${ANTHROPIC_MODEL_OPUS:-claude-opus-4-5-20251101}
ANTHROPIC_MODEL_SONNET: ${ANTHROPIC_MODEL_SONNET:-claude-sonnet-4-5-20250929}
ANTHROPIC_TEMPERATURE: ${ANTHROPIC_TEMPERATURE:-1}
ANTHROPIC_MAX_TOKENS: ${ANTHROPIC_MAX_TOKENS:-32000}
ANTHROPIC_THINKING_BUDGET: ${ANTHROPIC_THINKING_BUDGET:-12000}
ANTHROPIC_TIMEOUT: ${ANTHROPIC_TIMEOUT:-300}
# LlamaCloud
LLAMA_CLOUD_API_KEY: ${LLAMA_CLOUD_API_KEY:-}
# Brief extraction
DEFAULT_PRIMARY_MODELS: ${DEFAULT_PRIMARY_MODELS:-anthropic-sonnet45,google-gemini20}
DEFAULT_CONSOLIDATION_MODEL: ${DEFAULT_CONSOLIDATION_MODEL:-anthropic-sonnet45}
MINIMUM_SUCCESS_THRESHOLD: ${MINIMUM_SUCCESS_THRESHOLD:-1}
ENABLE_COST_ESTIMATION: ${ENABLE_COST_ESTIMATION:-true}
MAX_PROCESSING_COST_USD: ${MAX_PROCESSING_COST_USD:-10.00}
MAX_CONCURRENT_JOBS: ${MAX_CONCURRENT_JOBS:-5}
# File upload
MAX_UPLOAD_SIZE_MB: ${MAX_UPLOAD_SIZE_MB:-200}
FILE_RETENTION_HOURS: ${FILE_RETENTION_HOURS:-24}
WS_PING_INTERVAL_SECONDS: ${WS_PING_INTERVAL_SECONDS:-30}
# Paths
DATA_DIR: /app/data
UPLOADS_DIR: /app/data/uploads