Aller au contenu principal
BOUCLES AUTONOMES • AUTOGPT & REACT

AutoGPT, LlamaIndex & Boucles ReAct

Coupe-circuit anti-boucles récursives infinies, confinement des commandes shell/système et gouvernance des agents autonomes.

AutoGPT, LlamaIndex & Boucles ReAct

AutoGPT, LlamaIndex & Boucles ReAct Personnalisées

Les agents autonomes fonctionnant en boucle ouverte (ReAct : Reasoning + Acting) présentent un risque critique d'emballement : un agent mal guidé peut exécuter des centaines d'appels d'outils redondants ou destructeurs en quelques minutes.

Le Sensor Boundry intègre un disjoncteur d'exécution (Circuit Breaker) spécialement conçu pour interrompre ces dérives.


1. Sécurisation d'une Boucle ReAct Personnalisée​

Si vous développez vos propres agents sans framework tiers, vous pouvez encadrer directement votre boucle d'exécution :

custom_react_loop.py
import os
import time
from boundry.sensor import BoundryClient, PolicyViolationException

client = BoundryClient(
api_key=os.getenv("BOUNDRY_API_KEY"),
agent_id="autonomous-crawler-01",
fail_secure=True
)

def autonomous_react_loop(task: str, max_iterations: int = 10):
iteration = 0
context = {"task": task}

while iteration < max_iterations:
iteration += 1
print(f"\n--- Étape {iteration}/{max_iterations} ---")

# 1. Le LLM décide d'une action à effectuer
action = plan_next_step(context)
tool_name = action["tool"]
tool_args = action["args"]

# 2. Validation par le pare-feu Boundry AVANT exécution
try:
decision = client.inspect_tool_call(
tool_name=tool_name,
arguments=tool_args,
context={"iteration": iteration, "task": task}
)

if not decision.allowed:
print(f" Action refusée par la politique : {decision.reason}")
context["last_error"] = f"Action {tool_name} refusée: {decision.reason}"
continue

# 3. Exécution effective si autorisée
observation = execute_tool_safely(tool_name, tool_args)
context["last_observation"] = observation

except PolicyViolationException as pve:
print(f" ALERTE SÉCURITÉ : {pve.reason} (Score: {pve.risk_score})")
break

print("Fin de la boucle d'exécution.")

2. Intégration LlamaIndex​

Pour les pipelines RAG et agents construits avec LlamaIndex :

llamaindex_boundry.py
import os
from llama_index.core.tools import FunctionTool
from boundry.sensor import BoundryClient, protect_tool

client = BoundryClient(api_key=os.getenv("BOUNDRY_API_KEY"))

# 1. Définir une fonction protégée par Boundry
@protect_tool(client=client, tool_name="query_knowledge_base")
def query_knowledge_base(query_str: str) -> str:
"""Interroge la base de connaissances documentaire de l'entreprise."""
# Logique d'interrogation du VectorStore
return f"Données trouvées pour la requête : {query_str}"

# 2. Envelopper la fonction dans un FunctionTool LlamaIndex
secure_tool = FunctionTool.from_defaults(fn=query_knowledge_base)

# 3. Passer l'outil sécurisé à l'agent LlamaIndex
# from llama_index.core.agent import ReActAgent
# agent = ReActAgent.from_tools([secure_tool], llm=llm, verbose=True)

3. Disjoncteur Automatique (Anti-Loop Circuit Breaker)​

Pour activer la détection des boucles infinies sur les agents autonomes :

  1. Rendez-vous dans Garde-fous > Règles de Pare-feu dans la console Boundry.
  2. Activez l'option Circuit Breaker sur l'agent ciblé.
  3. Paramétrez les seuils de déclenchement :
  • Répétition maximale du même outil : 5 appels consécutifs.
  • Taux de rejet d'actions : coupure si plus de 3 actions bloquées en moins de 60 secondes.
  • Action en cas de rupture : mise en pause immédiate de l'agent et émission d'un webhook d'alerte SecOps.