4NK_template/scripts/agents/ai_prompt.sh

46 lines
1.4 KiB
Bash

#!/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="${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 // ""'