| # 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) |
|
|