fix(M9): corrections d'audit FIXME_M9 — secrets, messages, validation, tests
Cinq corrections de l'audit FIXME_M9 : - redact_secrets() étendue avec extra_secrets pour masquer les clés brutes ; providers stockent SecretStr jusqu'à l'appel SDK. - _build_prompt() inclut le contenu des messages (tronqué à 500 car.) ; prompt système renforcé contre l'injection. - _validate_output() supprime les emojis et rejette titre/liste/HTML → None. - Tests litellm utilisent importorskip + LITELLM_LOCAL_MODEL_COST_MAP=true. - .env.example désactive l'IA par défaut (AI_ENABLED=false). - Documentation §9.2-§9.5 alignée avec l'implémentation (SDK openai, SecretStr, factory réelle, validation sortie, politique hors réseau). Co-authored-by: opencode/coder <coder@agents.invalid> Co-authored-by: opencode/test-engineer <test-engineer@agents.invalid> Co-authored-by: opencode/tech-writer <tech-writer@agents.invalid>
This commit is contained in:
@@ -30,7 +30,6 @@ def get_synthesis_provider(settings: AISettings) -> SynthesisProvider | None:
|
||||
if not settings.api_key:
|
||||
return None
|
||||
|
||||
api_key = settings.api_key.get_secret_value()
|
||||
base_url = settings.base_url
|
||||
model = settings.model or "gpt-4o-mini"
|
||||
|
||||
@@ -40,6 +39,6 @@ def get_synthesis_provider(settings: AISettings) -> SynthesisProvider | None:
|
||||
except ImportError:
|
||||
logger.warning("Extra 'ai-litellm' requis pour le provider litellm")
|
||||
return None
|
||||
return LiteLLMSynthesisProvider(api_key=api_key, base_url=base_url, model=model)
|
||||
return LiteLLMSynthesisProvider(api_key=settings.api_key, base_url=base_url, model=model)
|
||||
|
||||
return OpenAISynthesisProvider(api_key=api_key, base_url=base_url, model=model)
|
||||
return OpenAISynthesisProvider(api_key=settings.api_key, base_url=base_url, model=model)
|
||||
|
||||
Reference in New Issue
Block a user