IA & Ingénierie
Agents IA & Ingénierie
Ces agents agissent comme un multiplicateur de force pour les équipes engineering — automatisant les parties répétitives du SDLC et libérant les développeurs pour la résolution créative de problèmes.
🛠 Cas d’Usage Actifs
👨💻 Agent de Revue de Code Automatisée
Un agent intégré dans le pipeline CI/CD qui review les pull requests pour les problèmes de qualité de code, les vulnérabilités de sécurité, les anti-patterns de performance et le respect des conventions d’équipe. Il fournit des retours précis au niveau de la ligne et suggère des réécritures concrètes — réduisant la charge de revue des ingénieurs seniors.
import subprocess
from anthropic import Anthropic
client = Anthropic()
def obtenir_diff_pr(branche_base: str = "main") -> str:
result = subprocess.run(
["git", "diff", f"{branche_base}...HEAD"],
capture_output=True, text=True
)
return result.stdout[:8000]
def reviser_code(diff: str, conventions: str) -> str:
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=3000,
system=f"""Tu es un ingénieur logiciel senior effectuant une revue de code.
Conventions de l'équipe : {conventions}
Review pour : vulnérabilités de sécurité, problèmes de performance, code smells, violations de conventions.
Pour chaque problème : cite la ligne exacte, explique le problème, fournis une version corrigée.""",
messages=[{
"role": "user",
"content": f"Review ce diff de PR :\n\n```diff\n{diff}\n```"
}]
)
return response.content[0].text
conventions = "PEP8, type hints obligatoires, pas de bare except, longueur max de fonction 50 lignes"
diff = obtenir_diff_pr()
revue = reviser_code(diff, conventions)
print(revue)Stack : GitHub Actions + Claude API (HTTP) + API Commentaires PR GitHub
- Déclencheur : Une GitHub Action se déclenche sur chaque événement
pull_requestciblantmain. - Diff : L’action récupère le diff de la PR avec
git diff. - Revue : Le diff est envoyé à Claude API avec les standards de code de l’équipe dans le system prompt.
- Commentaire : La revue est postée comme commentaire structuré sur la PR via l’API REST GitHub.
📖 Générateur de Documentation API
Un agent qui inspecte une base de code (fonctions Python, routes FastAPI, interfaces TypeScript), comprend l’intention de chaque endpoint depuis son code et ses commentaires, et génère une documentation complète en Markdown ou OpenAPI 3.0. Il maintient la documentation synchronisée avec le code automatiquement.
import ast
from anthropic import Anthropic
client = Anthropic()
def extraire_fonctions(source_code: str) -> list:
tree = ast.parse(source_code)
fonctions = []
for node in ast.walk(tree):
if isinstance(node, ast.FunctionDef):
fonctions.append({
"nom": node.name,
"args": [arg.arg for arg in node.args.args],
"docstring": ast.get_docstring(node) or "",
"source": ast.get_source_segment(source_code, node)
})
return fonctions
def generer_documentation(fonctions: list, nom_module: str) -> str:
texte_fonctions = "\n\n".join([
f"Fonction : {f['nom']}\nArgs : {f['args']}\nDocstring : {f['docstring']}\nSource :\n{f['source']}"
for f in fonctions
])
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
system="Tu es un rédacteur technique. Génère une documentation API claire et complète en Markdown. Inclus paramètres, types de retour, exemples et cas limites.",
messages=[{
"role": "user",
"content": f"Génère la documentation pour le module '{nom_module}' :\n\n{texte_fonctions}"
}]
)
return response.content[0].text
with open("api/routes.py") as f:
source = f.read()
fonctions = extraire_fonctions(source)
docs = generer_documentation(fonctions, "routes")
with open("docs/reference-api.md", "w") as f:
f.write(docs)Stack : GitHub Actions + Claude API + GitHub Pages
- Déclencheur : GitHub Action se déclenche à chaque merge sur
main. - Extraction : L’action liste tous les fichiers
.pyou.tsmodifiés et lit leur contenu. - Génération : Les contenus de fichiers sont envoyés à Claude API pour générer la documentation Markdown.
- Publication : Les fichiers Markdown générés sont commités dans
docs/et déployés sur GitHub Pages automatiquement.
🧪 Agent de Génération de Suite de Tests
Un agent qui lit le code source d’une fonction ou d’un module, infère le comportement attendu, les cas limites et les modes d’échec potentiels, et génère une suite de tests pytest complète couvrant les chemins nominaux, les conditions aux bornes et les scénarios d’erreur.
from anthropic import Anthropic
client = Anthropic()
def generer_tests(source_code: str, chemin_module: str) -> str:
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=3000,
system="""Tu es un ingénieur Python senior spécialisé dans les tests.
Génère des suites de tests pytest complètes.
Inclus toujours : tests du chemin nominal, cas limites (entrées vides, nulls, bornes), cas d'erreur, et tests paramétrés.
Utilise les fixtures pytest et unittest.mock si nécessaire.""",
messages=[{
"role": "user",
"content": f"""Génère un fichier de test pytest complet pour ce module ({chemin_module}) :
```python
{source_code}Couvre toutes les fonctions avec au moins 3 cas de test chacune.”“” }] ) return response.content[0].text
with open(“src/processeur_paiement.py”) as f: source = f.read()
tests = generer_tests(source, “src/processeur_paiement.py”)
with open(“tests/test_processeur_paiement.py”, “w”) as f: f.write(tests) ```
Stack : GitHub Actions + Claude API + pytest (runner CI)
- Déclencheur : Le workflow se déclenche quand une PR ajoute de nouveaux fichiers Python sans fichier de test correspondant.
- Génération : Le nouveau fichier source est envoyé à Claude API pour générer un fichier
test_*.py. - Commit : Le fichier de test généré est auto-commité sur la branche de la PR.
- Validation : La CI exécute
pytestsur les tests générés. Les échecs sont reportés comme commentaire sur la PR.