Faire communiquer une IA avec une autre IA
Objectif
Conception d’un protocole, d’une architecture et d’une boucle d’orchestration permettant des échanges fiables, sûrs et productifs entre plusieurs modèles d’IA.
Principes clés
- Rôles explicites et objectifs mesurables pour chaque agent (ex. Planificateur, Solveur, Critique, Vérificateur).
- Schéma de message structuré et stable (métadonnées, contenu, contraintes, statut).
- Tour de parole contrôlé (politique de prise de tour, limites de tours, critères d’arrêt).
- Mémoire partagée contrôlée (journal de conversation, cahier de notes/scratchpad, base de connaissances en lecture seule).
- Garde-fous de sécurité (filtres, contraintes, stop words, timeouts, budgets de tokens).
- Évaluation continue (scores de confiance, vérification externe, tests unitaires, critique croisée).
Schéma de message recommandé
{
"turn": 3,
"sender": "solver",
"role": "assistant",
"goal": "Résoudre le sous-problème X",
"content": "Proposition de solution...",
"context": {
"task_id": "T-202",
"shared_memory_ref": "mem:"
},
"constraints": {
"max_tokens": 400,
"style": "succinct",
"citations_required": false
},
"tools": [
{"name": "web_search", "allowed": true},
{"name": "calculator", "allowed": true}
],
"signals": {
"handoff": "critic",
"stop": false,
"needs_tool": false
},
"metadata": {
"confidence": 0.62,
"cost_estimate_tokens": 350
}
}Patrons de collaboration
- Planificateur → Solveur: décomposition en étapes, exécution étape par étape, rapport final.
- Proposeur ↔ Critique: génération de solutions, critique argumentée, révision.
- Débat contrôlé: positions opposées, synthèse par arbitre.
- Self-Ask: sous-questions générées, réponses agrégées, décision finale.
- Vérification formelle: production, tests, rectifications jusqu’à réussite.
Architecture minimale
- Orchestrateur central: gestion du journal, de la politique de tours, des critères d’arrêt et du routage.
- Agents LLM: instructions système spécifiques au rôle, contraintes et outils autorisés.
- Mémoire:
- Journal immuable des échanges.
- Scratchpad pour calculs/états intermédiaires.
- Cache/RAG en lecture seule pour documents de référence.
- Outils: recherche, calcul, exécution de code en sandbox, RAG, appels d’API métiers.
- Sécurité: filtres de contenu, normalisation d’entrées, détection d’injections, quotas.
- Observabilité: logs structurés, métriques de latence/coûts, traces par corrélation d’ID.
Boucle d’orchestration (pseudo)
init(state):
state.turn = 0
state.max_turns = 12
state.done = false
state.transcript = []
state.scratchpad = {}
state.policy = "round_robin_with_handoffs"
while state.turn < state.max_turns and not state.done:
active = select_agent(state.policy, state)
prompt = build_prompt(
system=system_instructions[active],
transcript=state.transcript,
scratchpad=state.scratchpad,
constraints=agent_constraints[active]
)
reply = call_model(active, prompt)
reply = apply_safety_and_normalization(reply)
log(reply)
state.transcript.append(reply)
if meets_stop_criteria(reply, state):
state.done = true
else:
update_scratchpad(state, reply)
route = determine_handoff(reply, default=next_in_round_robin(active))
enqueue_for_next_turn(route, state)
state.turn += 1
final = synthesize_output(state.transcript)
return finalExemples d’appels API (génériques)
Appel agent « planificateur »:
POST /v1/chat/completions
Content-Type: application/json
{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "Rôle: Planificateur. Objectif: décomposer la tâche. Sortie: plan numéroté concis."},
{"role": "user", "content": "Tâche: rédiger un rapport sur l'impact X."}
],
"temperature": 0.3,
"max_tokens": 300
}Appel agent « solveur » avec contexte et outil suggéré:
POST /v1/chat/completions
Content-Type: application/json
{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "Rôle: Solveur. Suivre le plan. Justifier brièvement. Respecter les sources."},
{"role": "user", "content": "Plan: 1) Collecte 2) Analyse 3) Conclusion. Contexte: ..."}
],
"temperature": 0.2,
"max_tokens": 600
}Orchestrateur imposant un handoff et un stop signal:
{
"signals": {"handoff": "critic", "stop": false},
"constraints": {"max_tokens": 200, "style": "factuel", "citations_required": true}
}Conception des prompts système
- Définition de mission: but, portée, livrables attendus, format de sortie, critères d’acceptation.
- Comportement: style, longueur, tolérance aux incertitudes, gestion des ambiguïtés.
- Contraintes: règles, interdictions, confidentialité, politiques internes.
- Protocoles: schéma de message, balises de handoff, tokens de fin (ex. DONE, NEED_TOOL, HANDOFF:critic).
Critères d’arrêt
- Token de fin dans le contenu (ex. DONE).
- Nombre de tours atteint.
- Score de confiance minimal non atteint après N itérations.
- Coût ou latence dépassant les budgets.
- Validation/Tests échoués K fois consécutives.
Garde-fous et robustesse
- Détection d’injection de prompt: listes de contrôle, masquage de consignes internes, validation par regex et règles.
- Filtrage de contenu et normalisation Unicode; suppression de balises dangereuses; encodage sûr.
- Isolation des outils: sandbox, timeouts stricts, limites mémoire/CPU.
- Limitation de partage de mémoire: séparation par confidentialité; redaction sélective.
- Prévention des boucles: watchdog de similarité entre tours, seuils de répétition, backoff.
Mémoire et contexte
- Journal court: derniers échanges essentiels.
- Cahier de notes: hypothèses, résultats intermédiaires, variables clés.
- RAG: index documentaire, embeddings, citations obligatoires pour affirmations factuelles.
- Résumé dynamique: condensation périodique pour rester sous budget de tokens.
Évaluation et qualité
- Agent critique indépendant: grille de critères, score, conseils de révision.
- Auto-consistance: plusieurs échantillons, vote majoritaire, fusion.
- Tests programmatiques: cas unitaires, assertions, golden outputs.
- Traçabilité: ID de tâche, métriques par agent, journal d’événements.
Stratégies de coût et performance
- Hiérarchie de modèles: modèle léger pour brouillons, modèle avancé pour validations.
- Routage adaptatif: sélection de modèle par complexité perçue.
- Early stopping: arrêt dès obtention d’un score de qualité cible.
- Parallélisation contrôlée: branches concurrentes, synchronisation par arbitre.
Exemple de scénario minimal
- Planificateur produit 3 étapes numérotées (limite 150 tokens, style télégraphique).
- Solveur exécute chaque étape et ajoute NEED_TOOL si une recherche externe est requise.
- Critique vérifie faits/raisonnement; renvoie HANDOFF:solveur en cas d’écart.
- Arbitre compile, applique format final, émet DONE si critères satisfaits.
Checklist de mise en œuvre
- Rôles, objectifs, livrables définis.
- Schéma de message adopté et validé.
- Prompts système rédigés et testés.
- Politique de tours et critères d’arrêt configurés.
- Garde-fous, quotas, journaux opérationnels activés.
- Tests de bout en bout et tableaux de bord en place.
- Se connecter ou s'inscrire pour publier un commentaire