#!/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. # Chargement env utilisateur (~/.4nk_template/.env) pour exécutions locales/CI docke "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true if [[ -f "${HOME}/.4nk_template/.env" ]]; then set -a . "${HOME}/.4nk_template/.env" set +a fi 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="${OPENAI_MODEL}" 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 // ""'