numpy>=1.24
fastapi<0.141,>=0.140
uvicorn[standard]>=0.27
pydantic>=2
pypdf>=4

[bench]
chromadb>=1.0
qdrant-client>=1.9
zep-cloud>=3.23
pyarrow>=15

[dev]
pytest>=8
httpx>=0.27
httpx2>=2
langchain-classic>=1.0
mcp<2,>=1.28
ruff==0.15.22

[dev:python_version < "3.11"]
tomli>=2.0.1

[indexes]
annoy>=1.17
faiss-cpu>=1.8
qdrant-client>=1.9

[langchain]
langchain-classic>=1.0

[mcp]
mcp<2,>=1.28

[ml]
sentence-transformers>=3

[multimodal]
sentence-transformers[image]<6,>=5.1
transformers<6,>=4.57
huggingface-hub<2,>=0.34
torch>=2.1
Pillow>=10
opencv-python-headless>=4.10
soundfile>=0.13
trimesh>=4.8

[otel]
opentelemetry-api>=1.25
opentelemetry-sdk>=1.25
opentelemetry-exporter-otlp>=1.25
opentelemetry-instrumentation-fastapi>=0.46b0

[postgres]
psycopg[binary]>=3.1

[production]
annoy>=1.17
faiss-cpu>=1.8
qdrant-client>=1.9
psycopg[binary]>=3.1
redis>=5.0
boto3>=1.34
opentelemetry-api>=1.25
opentelemetry-sdk>=1.25
opentelemetry-exporter-otlp>=1.25
opentelemetry-instrumentation-fastapi>=0.46b0

[providers]
anthropic<1,>=0.120
langgraph<2,>=1.2
openai-agents<1,>=0.19

[redis]
redis>=5.0

[s3]
boto3>=1.34

[sentence]
sentence-transformers>=3
