Module 2 : Prompt Engineering & Structuration
Le "Prompt Engineering" n'est pas de la magie, c'est de la programmation en langage naturel.
Durée estimée : 15 minutes
1. Les Techniques de Prompting
Zero-Shot (Naïf)
On pose la question direct.
"Classe ce ticket support : 'Mon écran est bleu'."
Few-Shot (Exemples)
On donne des exemples pour guider le style.
"Tu es un classificateur de tickets. Exemple 1 : 'Le wifi est lent' -> RESEAU Exemple 2 : 'Mon clavier fume' -> MATERIEL Ticket : 'Mon écran est bleu' -> ?"
Chain of Thought (CoT)
On force l'IA à réfléchir étape par étape (réduit les hallucinations).
"Avant de répondre, analyse les causes possibles, puis conclus."
2. Structurer la sortie (JSON Mode)
Pour un Ops, du texte libre est inutile. On veut du JSON pour l'intégrer dans un script.
response = client.chat.completions.create(
model="gpt-3.5-turbo-0125",
response_format={"type": "json_object"}, # Force le JSON
messages=[
{"role": "system", "content": "Tu es un extracteur de logs. Réponds TOUJOURS en JSON valide."},
{"role": "user", "content": "Analyse ce log : 'Error 500 at /api/users caused by DB connection timeout'. Extrais le code, le path et la cause."}
]
)
Résultat attendu :
3. TP : Le Générateur de Commits
Objectif : Créer un script git-ai.py qui :
1. Fait un git diff.
2. Envoie le diff à l'IA.
3. Demande de générer un message de commit conventionnel (ex: fix(api): handle timeout).
Indice : Attention à la taille du diff ! S'il dépasse 4000 tokens, il faudra le tronquer.
Exercice Pratique
Exercice : Analyseur de Logs Structuré
Objectif : Créer un script qui analyse des logs serveur et extrait les informations importantes en JSON.
Étapes :
1. Créer un fichier log_analyzer.py qui lit un fichier de logs
2. Utiliser l'API OpenAI avec response_format={"type": "json_object"} pour extraire : code HTTP, timestamp, IP source, et message d'erreur
3. Tester avec différentes techniques : zero-shot, few-shot, et chain-of-thought
Solution
from openai import OpenAI
import json
client = OpenAI(api_key="votre_clé")
log_entry = """
2025-01-15 14:23:45 ERROR 192.168.1.100 - GET /api/users - 500 Internal Server Error: Database connection timeout
"""
response = client.chat.completions.create(
model="gpt-3.5-turbo-0125",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "Tu es un extracteur de logs. Réponds TOUJOURS en JSON valide avec les clés: timestamp, level, ip, method, path, code, error."},
{"role": "user", "content": f"Analyse ce log : {log_entry}"}
]
)
result = json.loads(response.choices[0].message.content)
print(json.dumps(result, indent=2))
Navigation
| ← Module 1 : Les Fondations Modernes | Module 3 : Local AI & Ops → |