<!--
title: Optional dependency management
domain: ai-agents
topic: Configurations
language: Toml
source: stanfordnlp/dspy
updated: 2025-04-14
url: https://awesomereviewers.com/reviewers/dspy-optional-dependency-management/
-->

Avoid including optional or provider-specific dependencies in the main dependency list. Dependencies should only be required if they are essential for core functionality that all users need.

Make dependencies optional when they are:
- Provider-specific (e.g., groq, mistralai, anthropic clients)
- Feature-specific (e.g., mcp for specific Python versions)
- Test-only requirements that not all developers need

Use the `optional = true` flag and organize them into appropriate extras groups:

```toml
[tool.poetry.dependencies]
# Core dependencies only
python = ">=3.9,<3.12"
pydantic = "^2.0"

# Optional dependencies
groq = { version = "^0.4.2", optional = true }
mistralai = { version = "^0.1.3", optional = true }

[tool.poetry.extras]
groq = ["groq"]
mistral = ["mistralai"]
```

This approach prevents forcing unnecessary installations on users who don't need specific providers or features, while still making them available for those who do.
