47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""
|
|
Configuration and constants for consultant Python implementation
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# Session storage location
|
|
DEFAULT_SESSIONS_DIR = Path.home() / ".consultant" / "sessions"
|
|
|
|
# Environment variable names
|
|
ENV_LITELLM_API_KEY = "LITELLM_API_KEY"
|
|
ENV_OPENAI_API_KEY = "OPENAI_API_KEY"
|
|
ENV_ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY"
|
|
ENV_OPENAI_BASE_URL = "OPENAI_BASE_URL"
|
|
|
|
# Token budget: Reserve this percentage for response
|
|
CONTEXT_RESERVE_RATIO = 0.2 # 20% reserved for response
|
|
|
|
# Retry configuration
|
|
MAX_RETRIES = 3
|
|
INITIAL_RETRY_DELAY = 2 # seconds
|
|
MAX_RETRY_DELAY = 60 # seconds
|
|
|
|
# Background job polling configuration
|
|
POLL_INTERVAL = 20 # seconds between polls (configurable)
|
|
POLL_TIMEOUT = 3600 # 1 hour max wait for background jobs
|
|
|
|
# Session polling
|
|
POLLING_INTERVAL_SECONDS = 2
|
|
|
|
|
|
def get_api_key() -> str | None:
|
|
"""Get API key from environment in priority order"""
|
|
return (
|
|
os.environ.get(ENV_LITELLM_API_KEY)
|
|
or os.environ.get(ENV_OPENAI_API_KEY)
|
|
or os.environ.get(ENV_ANTHROPIC_API_KEY)
|
|
)
|
|
|
|
|
|
def get_base_url() -> str | None:
|
|
"""Get base URL from OPENAI_BASE_URL environment variable if set"""
|
|
base_url = os.environ.get(ENV_OPENAI_BASE_URL)
|
|
# Only return if non-empty
|
|
return base_url if base_url and base_url.strip() else None
|