- openai_provider.py: singleton self._client=AsyncOpenAI(...) in __init__ (D-07),
_truncate() 60/40 smart truncation (D-13), removed MAX_AI_CHARS constant,
changed __init__ signature to include context_chars, removed _client() method
- generic_openai_provider.py: new class, subclasses OpenAIProvider, conditional
response_format={"type":"json_object"} on supports_json_mode flag (D-01/D-02),
imports parse_classification + parse_suggestions from ai.utils (D-02 contract)
- ollama_provider.py: added context_chars kwarg with default 8000, passes through
- lmstudio_provider.py: added context_chars kwarg with default 8000, passes through
- classifier.py: removed MAX_AI_CHARS constant and text[:MAX_AI_CHARS] slices;
truncation now handled inside each provider via _truncate()
- requirements.txt: bumped anthropic floor to >=0.95.0 (D-03 output_config support)
38 lines
685 B
Plaintext
38 lines
685 B
Plaintext
fastapi>=0.111
|
|
uvicorn[standard]>=0.29
|
|
python-multipart>=0.0.27
|
|
pydantic-settings>=2.2
|
|
pydantic[email]>=2.0
|
|
anthropic>=0.95.0
|
|
openai>=1.30
|
|
PyMuPDF>=1.26.7
|
|
python-docx>=1.1
|
|
pytesseract>=0.3
|
|
Pillow>=10.3
|
|
aiofiles>=23.2
|
|
httpx>=0.27
|
|
pytest>=8.2
|
|
pytest-asyncio>=1.3.0
|
|
sqlalchemy[asyncio]>=2.0.49
|
|
psycopg[binary]>=3.3.4
|
|
alembic>=1.18.4
|
|
minio>=7.2.20
|
|
celery[redis]>=5.5.0
|
|
redis>=4.6.0
|
|
aiosqlite>=0.20.0
|
|
PyJWT>=2.8.0
|
|
pwdlib[argon2]>=0.2.1
|
|
pyotp>=2.9.0
|
|
slowapi>=0.1.9
|
|
|
|
# Cloud Storage Backends (Phase 5)
|
|
cryptography>=41.0.0
|
|
google-auth-oauthlib>=1.3.1
|
|
google-api-python-client>=2.196.0
|
|
msal>=1.36.0
|
|
webdavclient3>=3.14.7
|
|
cachetools>=5.3.0
|
|
|
|
# Observability (Phase 6 — D-01)
|
|
structlog>=25.5.0
|