| # Configuration Reference | |
| > **Last Updated**: 2025-12-06 | |
| Complete reference for all configuration options in DeepBoner. | |
| ## Configuration System | |
| DeepBoner uses [Pydantic Settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) for configuration management. | |
| ### Loading Order | |
| 1. Default values in code (`src/utils/config.py`) | |
| 2. `.env` file in project root | |
| 3. Environment variables (highest priority) | |
| ### Location | |
| ``` | |
| /home/user/DeepBoner/ | |
| βββ .env # Your configuration (not in git) | |
| βββ .env.example # Template (in git) | |
| βββ src/utils/config.py # Settings class | |
| ``` | |
| ## Settings Class | |
| ```python | |
| from src.utils.config import settings | |
| # Access settings | |
| print(settings.max_iterations) | |
| print(settings.has_openai_key) | |
| ``` | |
| ## Configuration Categories | |
| ### LLM Configuration | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `llm_provider` | Literal["openai", "huggingface"] | `"openai"` | `LLM_PROVIDER` | LLM backend to use | | |
| | `openai_api_key` | str \| None | None | `OPENAI_API_KEY` | OpenAI API key | | |
| | `openai_model` | str | `"gpt-5"` | `OPENAI_MODEL` | OpenAI model name | | |
| | `huggingface_model` | str \| None | `"Qwen/Qwen2.5-7B-Instruct"` | `HUGGINGFACE_MODEL` | HuggingFace model | | |
| | `hf_token` | str \| None | None | `HF_TOKEN` | HuggingFace API token | | |
| ### Embedding Configuration | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `openai_embedding_model` | str | `"text-embedding-3-small"` | `OPENAI_EMBEDDING_MODEL` | OpenAI embeddings model | | |
| | `local_embedding_model` | str | `"all-MiniLM-L6-v2"` | `LOCAL_EMBEDDING_MODEL` | Local sentence-transformers model | | |
| ### External Services | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `ncbi_api_key` | str \| None | None | `NCBI_API_KEY` | NCBI API key for PubMed | | |
| | `chroma_db_path` | str | `"./chroma_db"` | `CHROMA_DB_PATH` | ChromaDB storage path | | |
| ### Agent Configuration | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `max_iterations` | int | 10 | `MAX_ITERATIONS` | Max search-judge iterations (1-50) | | |
| | `advanced_max_rounds` | int | 5 | `ADVANCED_MAX_ROUNDS` | Max multi-agent rounds (1-20) | | |
| | `advanced_timeout` | float | 600.0 | `ADVANCED_TIMEOUT` | Advanced mode timeout seconds (60-900) | | |
| | `search_timeout` | int | 30 | `SEARCH_TIMEOUT` | Per-search timeout seconds | | |
| ### Domain Configuration | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `research_domain` | ResearchDomain | `SEXUAL_HEALTH` | `RESEARCH_DOMAIN` | Research domain focus | | |
| ### Logging | |
| | Setting | Type | Default | Env Variable | Description | | |
| |---------|------|---------|--------------|-------------| | |
| | `log_level` | Literal["DEBUG", "INFO", "WARNING", "ERROR"] | `"INFO"` | `LOG_LEVEL` | Logging verbosity | | |
| ## Helper Properties | |
| The Settings class provides convenience properties: | |
| ```python | |
| settings.has_openai_key # bool - Is OpenAI key set? | |
| settings.has_huggingface_key # bool - Is HF token set? | |
| settings.has_any_llm_key # bool - Any LLM key available? | |
| ``` | |
| ## Helper Methods | |
| ```python | |
| # Get API key for configured provider | |
| api_key = settings.get_api_key() | |
| # Get OpenAI key (raises ConfigurationError if not set) | |
| openai_key = settings.get_openai_api_key() | |
| ``` | |
| ## Backend Selection Logic | |
| ```python | |
| # Automatic backend selection | |
| if settings.has_openai_key: | |
| # Use OpenAI GPT-5 | |
| client = OpenAIChatClient(api_key=settings.openai_api_key) | |
| else: | |
| # Use HuggingFace free tier | |
| client = HuggingFaceChatClient(model=settings.huggingface_model) | |
| ``` | |
| ## Validation | |
| Settings are validated on load: | |
| ```python | |
| # These will raise ValidationError | |
| Settings(max_iterations=100) # Must be 1-50 | |
| Settings(log_level="TRACE") # Invalid level | |
| Settings(advanced_timeout=10) # Minimum is 60 | |
| ``` | |
| ## Example Configurations | |
| ### Minimal (Free Tier) | |
| ```bash | |
| # .env | |
| LOG_LEVEL=INFO | |
| MAX_ITERATIONS=5 | |
| ``` | |
| ### Development | |
| ```bash | |
| # .env | |
| LOG_LEVEL=DEBUG | |
| MAX_ITERATIONS=3 | |
| SEARCH_TIMEOUT=15 | |
| ``` | |
| ### Production (Premium) | |
| ```bash | |
| # .env | |
| OPENAI_API_KEY=sk-... | |
| NCBI_API_KEY=... | |
| LOG_LEVEL=WARNING | |
| MAX_ITERATIONS=10 | |
| ADVANCED_TIMEOUT=300 | |
| CHROMA_DB_PATH=/data/chroma | |
| ``` | |
| ### HuggingFace Spaces | |
| Set as Secrets (not Variables) in Space Settings: | |
| ``` | |
| HF_TOKEN=hf_... | |
| NCBI_API_KEY=... | |
| ``` | |
| ## Programmatic Configuration | |
| Override settings in code (useful for testing): | |
| ```python | |
| from src.utils.config import Settings | |
| # Create with overrides | |
| test_settings = Settings( | |
| max_iterations=3, | |
| log_level="DEBUG", | |
| _env_file=None # Ignore .env | |
| ) | |
| ``` | |
| ## Related Documentation | |
| - [Environment Variables](environment-variables.md) | |
| - [Getting Started - Configuration](../getting-started/configuration.md) | |
| - [Troubleshooting](../getting-started/troubleshooting.md) | |