mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 12:41:54 +00:00
Demande du référent : la génération opt-in devient réellement configurable. AI_GENERATION=off|api, AI_API_KEY (exigée en mode api — le boot refuse sinon, jamais loguée, /healthz n'expose que le mode), AI_MODEL (défaut claude-opus-4-8). generation.py : interface Generateur — GenerateurExtractif (contrat de base sans LLM) et GenerateurAPI (SDK officiel anthropic, dépendance optionnelle --extra generation, absente des tests/CI). Consigne : citations [n] obligatoires depuis les extraits anonymisés, jamais d'invention, rappel de validation humaine. Tout échec (refus du modèle, quota, réseau) retombe silencieusement sur l'extractif. 5 tests ajoutés (19 pytest) + .env.example. Vérifié en réel : boot refusé api-sans-clé, générateur construit, healthz sans secret. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
21 lines
738 B
Plaintext
21 lines
738 B
Plaintext
# Copier en .env pour le dev local (défauts alignés sur infra/docker-compose.yml).
|
|
DATABASE_URL=postgresql://siop:siop@localhost:5432/siop
|
|
MINIO_ENDPOINT=localhost
|
|
MINIO_PORT=9000
|
|
MINIO_ACCESS_KEY=siop
|
|
MINIO_SECRET_KEY=siop-minio
|
|
MINIO_BUCKET=siop2
|
|
|
|
# Seule l'API NestJS connaît ce secret (ADR-004 §4 — service jamais public).
|
|
AI_SERVICE_TOKEN=dev-only-ai-token
|
|
|
|
# Embeddings : locale (fastembed ONNX, CPU) | deterministe (tests/CI)
|
|
AI_EMBEDDINGS=locale
|
|
|
|
# Génération (ADR-004 §3) : off = mode extractif (défaut — la recette passe
|
|
# sans clé) | api = rédaction par le LLM sur textes déjà anonymisés (D4).
|
|
# AI_GENERATION=api exige AI_API_KEY (le boot refuse sinon).
|
|
AI_GENERATION=off
|
|
AI_API_KEY=
|
|
AI_MODEL=claude-opus-4-8
|