#!/usr/bin/env bash set -euo pipefail # Utilitaire générique pour appeler l'API OpenAI Chat Completions. # Prérequis: variable d'environnement OPENAI_API_KEY et curl. for bin in curl jq; do if ! command -v "$bin" >/dev/null 2>&1; then echo "$bin manquant. Installez $bin." >&2 exit 2 fi done MODEL_DEFAULT="gpt-4o-mini" MODEL="${OPENAI_MODEL:-$MODEL_DEFAULT}" API_BASE="${OPENAI_API_BASE:-https://api.openai.com/v1}" TEMPERATURE="${OPENAI_TEMPERATURE:-0.2}" read -r -d '' SYSTEM_PROMPT <<'SYS' Tu es un agent de conformité pour le template 4NK. Réponds en français, sans exemples d'application. Produit des listes d'actions, des risques et des recommandations courtes. Respecte la typographie française. SYS PROMPT="${1:-}" if [[ -z "${PROMPT}" ]]; then echo "Usage: $0 'message utilisateur'" >&2 exit 2 fi if [[ -z "${OPENAI_API_KEY:-}" ]]; then echo "OPENAI_API_KEY non défini; exécution sans IA (noop)." >&2 # No-op mode: renvoyer le prompt pour traçabilité echo "[NO-AI] ${PROMPT}" exit 0 fi payload=$(jq -n \ --arg model "$MODEL" \ --arg system "$SYSTEM_PROMPT" \ --arg user "$PROMPT" \ --arg temperature "$TEMPERATURE" \ '{model: $model, temperature: ($temperature|tonumber? // 0.2), messages: [ {role:"system", content:$system}, {role:"user", content:$user} ] }') curl -sS -X POST "${API_BASE}/chat/completions" \ -H "Authorization: Bearer ${OPENAI_API_KEY}" \ -H "Content-Type: application/json" \ -d "$payload" | jq -r '.choices[0].message.content // ""'