Aller au contenu principal

enterprise_ai.loop

Source : sdks/python/src/enterprise_ai/loop/__init__.py. Retour à l'index de la référence du SDK Python.

remarque

Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.

Modèle LoopBudget​

Budgets locaux ; None signifie illimité.

Champs :

NomTypeRequisDescription
max_stepsintnonNombre maximal d'appels au modèle (étapes de planification). Par défaut 20.
max_tool_callsint | NonenonNombre maximal d'appels d'outils sur l'exécution ; None signifie illimité.
max_output_tokensint | NonenonNombre maximal de jetons de sortie sur l'exécution ; None signifie illimité.
max_costDecimal | NonenonCoût mesuré maximal de l'exécution, sous forme de Decimal ; None signifie illimité.
max_recoveriesintnonNombre maximal de reprises après un appel d'outil en échec ou une réponse rejetée avant l'échec de l'exécution. Par défaut 3.
max_durationfloat | NonenonDurée maximale de l'exécution, en secondes ; None signifie illimité.
max_secondsfloat | NonenonAlias de max_duration, conservé pour la compatibilité.

LoopBudget.from_manifest​

from_manifest(manifest: dict[str, Any]) -> LoopBudget

Budgets issus de spec.autonomy, spec.budgets et spec.runtime.limits.

NomTypeDéfautRequisDescription
manifestdict[str, Any]ouiManifeste d'agent sous forme de dictionnaire, lu sous sa clé spec.

Retour : LoopBudget. Un LoopBudget : budgets locaux ; None signifie illimité.

Modèle LoopState​

État sérialisable d'une exécution (enregistré dans les points de reprise).

Champs :

NomTypeRequisDescription
messageslist[dict[str, Any]]nonMessages de conversation de l'exécution, résultats d'outils compris.
stepintnonÉtape courante, texte libre (500 caractères au plus).
tool_callsintnonNombre d'appels d'outils exécutés jusqu'ici.
input_tokensintnonJetons d'entrée comptés sur l'exécution.
output_tokensintnonJetons de sortie comptés sur l'exécution.
coststrnonCoût mesuré jusqu'ici, sous forme de chaîne décimale. Par défaut "0".
pendinglist[dict[str, Any]]nonAppels d'outils demandés par le modèle et pas encore exécutés.
finalAnynonVrai si c'est la dernière étape du run. Faux par défaut.
statusstrnonStatut de l'exécution : running (par défaut), completed, failed, budget_exhausted ou stopped.
recoveriesintnonNombre de reprises jusqu'ici (appels d'outils en échec ou réponses rejetées).
last_errorstr | NonenonDernier échec ou nom du budget épuisé, ou None.
phasestrnonProchaine phase à exécuter : plan (par défaut), act, verify ou done.
started_atfloatnonValeur de l'horloge monotone au démarrage, utilisée pour max_duration ; non enregistrée dans les points de reprise.

LoopState.from_dict​

from_dict(data: dict[str, Any]) -> LoopState

Reconstruit un état à partir d'un dictionnaire de point de reprise ; les clés inconnues et started_at sont ignorées.

NomTypeDéfautRequisDescription
datadict[str, Any]ouiDictionnaire produit par to_dict, par exemple le state d'un point de reprise.

Retour : LoopState. Un LoopState : état sérialisable d'une exécution (enregistré dans les points de reprise).

LoopState.to_dict​

to_dict() -> dict[str, Any]

Forme sérialisable de l'état pour un point de reprise, sans started_at.

Cet élément ne prend aucun paramètre.

Retour : dict[str, Any]. Dictionnaire de tous les champs sauf started_at.

Modèle LoopResult​

Résultat de :meth:AgentLoop.run.

Champs :

NomTypeRequisDescription
statusstrouiStatut final de l'exécution : completed, failed, budget_exhausted ou stopped.
outputAnyouiSortie de l'opération (transcription, références d'images...).
stateLoopStateouiÉtat sérialisable d'une exécution (enregistré dans les points de reprise).
reasonstr | NonenonRaison de l'action. Inscrite dans le journal d'audit avec l'acteur et l'heure.

Attributs :

NomTypeRequisDescription
okboolouiTrue si status vaut completed.

Classe AgentLoop​

Agents. Registre des agents du tenant et exécution côté serveur de leurs runs : étapes, budgets, points de reprise, heartbeats, sous-agents, messages d'agent à agent (A2A), sessions de conversation, planifications cron, déclencheurs sur événement et exécutions en sandbox.

Attributs :

NomTypeRequisDescription
agent_idouiIdentifiant de l'agent surveillé par le coupe-circuit, ou None.
approval_forouiMotifs glob des outils qui exigent une approbation humaine.
approval_timeoutouiAttente maximale d'une décision d'approbation, en secondes.
budgetouiBudgets locaux (LoopBudget) appliqués par route.
busouiBus de messages lu par serve, ou None.
checkpoint_everyouiNombre d'étapes entre deux points de reprise ; 0 n'enregistre que le dernier.
clientouiClient Enterprise AI utilisé pour les points de reprise, les approbations, le coupe-circuit, les sessions et l'usage, ou None pour fonctionner hors ligne.
context_budgetouiContextBudget utilisé par prepare_context, ou None.
final_verifierouiFonction qui vérifie la réponse finale, ou None pour accepter toute réponse.
history_limitouiNombre de derniers messages de session chargés comme historique ; 0 les charge tous.
kill_poll_everyouiNombre d'étapes entre deux interrogations du statut de l'agent ; 0 désactive l'interrogation.
last_runnerAnyouiDernier AgentRunner construit par runner, ou None.
modelouiIdentifiant du modèle, ou None.
model_callouiFonction (messages, tools) -> completion appelée pendant la phase de planification.
on_eventouiFonction de rappel (kind, data) appelée à chaque événement de la boucle, ou None.
poll_intervalouiPause entre deux cycles de réception de serve, en secondes.
processed_runsset[str]ouiIdentifiants des exécutions en attente déjà prises en charge par serve, afin qu'aucune ne soit lancée deux fois.
record_stepsouiSi True, chaque phase est enregistrée comme étape d'exécution sur le serveur.
remote_toolouiFonction (name, arguments) qui exécute les outils non locaux, ou None.
remote_tool_specsouiEntrées tools OpenAI des outils distants.
run_idouiIdentifiant de l'exécution serveur, ou None.
runner_optionsouiArguments nommés supplémentaires passés à chaque AgentRunner.
session_cursorsdict[str, str | None]ouiSessions surveillées avec l'identifiant du dernier message traité (None avant le premier).
session_idouiSession par défaut de la boucle, ou None.
stop_eventouiÉvénement qui arrête la boucle lorsqu'il est activé (heartbeat ou agent tué).
toolsdict[str, LocalTool]ouiOutils locaux par nom (un dictionnaire de LocalTool).
verifierouiFonction qui vérifie chaque résultat d'outil, ou None pour accepter tout résultat.

Constructeur AgentLoop​

AgentLoop(model_call: ModelCall | None = None, model: str | None = None, session_id: str | None = None, bus: Any = None, context_budget: Any = None, history_limit: int = 50, poll_interval: float = 2.0, watch_sessions: list[str] | None = None, runner_options: dict[str, Any] | None = None, tools: dict[str, LocalTool] | list[LocalTool] | None = None, remote_tool: Callable[[str, dict[str, Any]], Any] | None = None, remote_tool_specs: list[dict[str, Any]] | None = None, budget: LoopBudget | None = None, verifier: Verifier | None = None, final_verifier: Callable[[Any], bool | str] | None = None, approval_for: list[str] | None = None, client: Any = None, agent_id: str | None = None, run_id: str | None = None, checkpoint_every: int = 1, kill_poll_every: int = 1, record_steps: bool = True, stop_event: threading.Event | None = None, on_event: Callable[[str, dict[str, Any]], None] | None = None, approval_timeout: float = 3600.0) -> None

Configure la boucle : modèle, outils locaux et distants, budgets, vérificateurs, approbations et client utilisé pour les points de reprise, le coupe-circuit et les étapes d'exécution.

NomTypeDéfautRequisDescription
model_callModelCall | NoneNonenonFonction (messages, tools) -> completion qui renvoie une complétion de style OpenAI ; une clé eai_cost facultative est ajoutée au coût.
modelstr | NoneNonenonIdentifiant du modèle utilisé par l'exécuteur et le constructeur de contexte.
session_idstr | NoneNonenonSession par défaut dont l'historique est chargé et à laquelle les réponses sont publiées.
busAnyNonenonBus de messages lu par serve : les messages entrants reçoivent une réponse publiée en sortie ; None le désactive.
context_budgetAnyNonenonContextBudget utilisé pour faire tenir le prompt système, l'historique et l'entrée dans prepare_context ; None conserve tous les messages.
history_limitint50nonNombre de derniers messages de session chargés comme historique ; 0 les charge tous. Par défaut 50.
poll_intervalfloat2.0nonPause entre deux cycles de réception de serve, en secondes. Par défaut 2.0.
watch_sessionslist[str] | NoneNonenonSessions dont les nouveaux messages sont traités par serve, depuis le début.
runner_optionsdict[str, Any] | NoneNonenonArguments nommés supplémentaires passés à chaque AgentRunner construit par runner.
toolsdict[str, LocalTool] | list[LocalTool] | NoneNonenonOutils locaux, sous forme de liste de LocalTool ou de dictionnaire par nom.
remote_toolCallable[[str, dict[str, Any]], Any] | NoneNonenonFonction (name, arguments) qui exécute un outil non local, par exemple via la Tool Gateway.
remote_tool_specslist[dict[str, Any]] | NoneNonenonEntrées tools OpenAI des outils distants, proposées au modèle à côté des outils locaux.
budgetLoopBudget | NoneNonenonBudgets locaux (LoopBudget) ; par défaut 20 étapes et 3 reprises, rien d'autre n'est limité.
verifierVerifier | NoneNonenonFonction (name, result) qui vérifie chaque résultat d'outil : True l'accepte, toute autre valeur est un motif d'échec et déclenche une reprise.
final_verifierCallable[[Any], bool | str] | NoneNonenonFonction qui vérifie la réponse finale : True l'accepte, toute autre valeur est le motif de rejet renvoyé au modèle.
approval_forlist[str] | NoneNonenonMotifs glob des outils qui exigent une approbation humaine, comparés à name et tool:<name> ; vide par défaut.
clientAnyNonenonClient parent.
agent_idstr | NoneNonenonIdentifiant de l'agent dont le statut est interrogé par le coupe-circuit et indiqué dans les événements d'usage.
run_idstr | NoneNonenonIdentifiant de l'exécution serveur utilisé pour les points de reprise, les étapes d'exécution et les événements d'usage.
checkpoint_everyint1nonEnregistre un point de reprise après la phase d'action toutes les N étapes ; 0 n'enregistre que le dernier. Par défaut 1.
kill_poll_everyint1nonInterroge le statut de l'agent pour le coupe-circuit toutes les N étapes ; 0 désactive l'interrogation. Par défaut 1.
record_stepsboolTruenonSi True (par défaut) et qu'un identifiant d'exécution est défini, chaque phase est enregistrée comme étape d'exécution sur le serveur.
stop_eventthreading.Event | NoneNonenonÉvénement qui arrête la boucle lorsqu'il est activé (heartbeat) ; un nouveau threading.Event par défaut.
on_eventCallable[[str, dict[str, Any]], None] | NoneNonenonFonction de rappel (kind, data) appelée à chaque événement de la boucle (plan, tool, approval_requested, done).
approval_timeoutfloat3600.0nonAttente maximale d'une décision d'approbation, en secondes. Par défaut 3600.0.

AgentLoop.act​

act(state: LoopState) -> LoopState

Exécute les appels d'outils en attente ; les échecs et les refus deviennent des messages d'outil.

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant, dont les appels d'outils pending sont exécutés ; il est mis à jour sur place.

Retour : LoopState. Un LoopState : état sérialisable d'une exécution (enregistré dans les points de reprise).

AgentLoop.check_budget​

check_budget(state: LoopState) -> str | None

Nom du budget épuisé, ou None.

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant, comparé aux limites de budget.

Retour : str \| None. max_steps, max_tool_calls, max_output_tokens, max_cost ou max_duration, ou None si aucun budget n'est épuisé.

AgentLoop.check_kill_switch​

check_kill_switch(state: LoopState) -> None

Lève :class:AgentStopped lorsque le heartbeat ou le statut de l'agent demande l'arrêt.

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant ; son numéro d'étape détermine si le statut de l'agent est interrogé cette fois.

Retour : None.

Erreurs levées : AgentStopped.

AgentLoop.checkpoint​

checkpoint(state: LoopState) -> Any

Envoie l'état à l'API des points de reprise du serveur (lorsqu'un identifiant d'exécution est connu).

NomTypeDéfautRequisDescription
stateLoopStateouiÉtat à enregistrer, envoyé avec le libellé step-<n>.

Retour : Any. Réponse de l'API des points de reprise, ou None sans client ni identifiant d'exécution.

AgentLoop.history​

history(session_id: str) -> list[dict[str, Any]]

Lister les messages d'une session. Messages dans l'ordre, paginés avec cursor. after (identifiant de message ou horodatage) permet à un runtime de ne récupérer que les nouveaux messages ; un identifiant inconnu ou un horodatage mal formé répond 400 invalid_request.

Route : /v1/sessions/{session_id}/messages (GET).

NomTypeDéfautRequisDescription
session_idstrouiIdentifiant (UUID) de la session.

Retour : list[dict[str, Any]]. Réponse JSON décodée de l'opération « Lister les messages d'une session ».

Erreurs levées : les erreurs typées du transport (Erreurs).

AgentLoop.needs_approval​

needs_approval(name: str) -> bool

Indique si un appel d'outil exige une approbation humaine : l'outil local l'exige ou son nom correspond à approval_for.

NomTypeDéfautRequisDescription
namestrouiNom de l'outil, comparé sous les formes name et tool:<name>.

Retour : bool. True si l'appel doit d'abord être approuvé.

AgentLoop.plan​

plan(state: LoopState) -> LoopState

Appelle le modèle ; enregistre les appels d'outils dans pending ou la réponse dans final.

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant ; ses messages sont envoyés au modèle et il est mis à jour sur place.

Retour : LoopState. Un LoopState : état sérialisable d'une exécution (enregistré dans les points de reprise).

AgentLoop.poll_once​

poll_once() -> list[TurnResult]

Lister les runs. Runs du tenant, du plus récent au plus ancien, paginés avec cursor. Filtres : agent_id (identifiant ou nom ; agent en est un alias), state, session_id, parent_run_id. Un état inconnu ou un UUID mal formé répond 400 invalid_request.

Route : /v1/runs (GET).

Cet élément ne prend aucun paramètre.

Retour : list[TurnResult]. Réponse JSON décodée de l'opération « Lister les runs ».

Erreurs levées : les erreurs typées du transport (Erreurs).

AgentLoop.prepare_context​

prepare_context(input: Any, session_id: str | None = None, system: str | None = None) -> list[dict[str, Any]]

Prompt système, historique de session et nouvelle entrée, ajustés à context_budget s'il est défini.

NomTypeDéfautRequisDescription
inputAnyouiNouvelle entrée de l'utilisateur ; une valeur non textuelle est sérialisée en JSON, None n'ajoute aucun message utilisateur.
session_idstr | NoneNonenonSession dont l'historique est chargé ; None n'utilise aucun historique.
systemstr | NoneNonenonPrompt système placé en premier, ou None.

Retour : list[dict[str, Any]]. Liste de messages de conversation (role, content) prête pour le modèle.

AgentLoop.request_approval​

request_approval(name: str, arguments: dict[str, Any]) -> bool

Crée une approbation et attend la décision. True si elle est approuvée.

NomTypeDéfautRequisDescription
namestrouiNom de l'outil, envoyé comme ressource de l'approbation (action tools:invoke).
argumentsdict[str, Any]ouiArguments de l'appel d'outil, envoyés comme motif de l'approbation (JSON, 500 caractères au plus).

Retour : bool. True si la décision est approved ; lève ApprovalRequired sans client.

Erreurs levées : ApprovalRequired.

AgentLoop.resume​

resume(run_id: str) -> TurnResult

Lister les points de reprise d'un run. Points de reprise du run dans l'ordre de séquence. Une seule page. 404 run_not_found.

Route : /v1/runs/{run_id}/checkpoints (GET).

NomTypeDéfautRequisDescription
run_idstrouiIdentifiant (UUID) du run.

Retour : TurnResult. Réponse JSON décodée de l'opération « Lister les points de reprise d'un run ».

Erreurs levées : ValueError, les erreurs typées du transport (Erreurs).

AgentLoop.route​

route(state: LoopState) -> str

Phase suivante : plan, act, verify ou done (applique les budgets et les limites de reprise).

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant ; ses champs status et last_error sont renseignés lorsque la boucle se termine.

Retour : str. Nom de la phase suivante : plan, act, verify ou done.

AgentLoop.run_legacy​

run_legacy(task: Any = None, system: str | None = None, messages: list[dict[str, Any]] | None = None, state: LoopState | None = None, raise_on_budget: bool = False) -> LoopResult

Mène la boucle jusqu'à son terme. Reprend depuis state s'il est fourni (restauration d'un point de reprise).

NomTypeDéfautRequisDescription
taskAnyNonenonTâche confiée à l'agent sous forme de message utilisateur ; une valeur non textuelle est sérialisée en JSON.
systemstr | NoneNonenonPrompt système, ajouté en premier si les messages n'en contiennent pas.
messageslist[dict[str, Any]] | NoneNonenonMessages de conversation précédents à partir desquels démarrer.
stateLoopState | NoneNonenonÉtat restauré depuis un point de reprise ; s'il est fourni, task, system et messages sont ignorés.
raise_on_budgetboolFalsenonSi True, un budget épuisé lève BudgetExhausted au lieu de renvoyer un résultat. Par défaut False.

Retour : LoopResult. Un LoopResult : résultat de :meth:AgentLoop.run.

Erreurs levées : BudgetExhausted.

AgentLoop.run_once​

run_once(input: Any = None, session_id: str | None = None, run_id: str | None = None, system: str | None = None, state: dict[str, Any] | None = None) -> TurnResult

Exécute un tour Navin (:class:AgentRunner) et publie la réponse dans la session.

NomTypeDéfautRequisDescription
inputAnyNonenonNouvelle entrée utilisateur du tour ; ignorée si state est fourni.
session_idstr | NoneNonenonSession du tour, utilisée pour l'historique et la publication de la réponse ; par défaut le session_id de la boucle.
run_idstr | NoneNonenonExécution serveur du tour ; par défaut le run_id de la boucle.
systemstr | NoneNonenonPrompt système du tour, ou None.
statedict[str, Any] | NoneNonenonÉtat de l'exécuteur restauré depuis un point de reprise pour reprendre le tour.

Retour : TurnResult. Un TurnResult : résultat de :meth:AgentRunner.run_turn.

AgentLoop.runner​

runner(run_id: str | None = None, session_id: str | None = None) -> AgentRunner

Un :class:AgentRunner qui partage le modèle, les outils, le budget et l'événement d'arrêt de cette boucle.

NomTypeDéfautRequisDescription
run_idstr | NoneNonenonExécution serveur de l'exécuteur ; par défaut le run_id de la boucle.
session_idstr | NoneNonenonSession de l'exécuteur ; par défaut le session_id de la boucle.

Retour : AgentRunner. Un AgentRunner : exécute des tours d'agent via la passerelle de la plateforme avec outils, règles et gouvernance.

AgentLoop.serve​

async serve(max_cycles: int | None = None) -> None

Sert jusqu'à :meth:shutdown : messages entrants du bus, exécutions en attente et nouveaux messages de session.

NomTypeDéfautRequisDescription
max_cyclesint | NoneNonenonS'arrête après ce nombre de cycles de réception ; None sert jusqu'à shutdown.

Retour : None.

AgentLoop.shutdown​

shutdown() -> None

Demande à :meth:serve de s'arrêter après le tour en cours.

Cet élément ne prend aucun paramètre.

Retour : None.

AgentLoop.start_state​

start_state(task: Any, system: str | None = None, messages: list[dict[str, Any]] | None = None) -> LoopState

Construit le LoopState initial : messages précédents, prompt système s'il n'y en a pas, puis la tâche comme message utilisateur.

NomTypeDéfautRequisDescription
taskAnyouiTâche ajoutée comme message utilisateur ; une valeur non textuelle est sérialisée en JSON, None n'ajoute rien.
systemstr | NoneNonenonPrompt système, inséré en premier si les messages n'en contiennent pas.
messageslist[dict[str, Any]] | NoneNonenonMessages de conversation précédents, copiés.

Retour : LoopState. Un LoopState : état sérialisable d'une exécution (enregistré dans les points de reprise).

AgentLoop.tool_specs​

tool_specs() -> list[dict[str, Any]]

Liste tools OpenAI : outils locaux plus outils distants de la Tool Gateway.

Cet élément ne prend aucun paramètre.

Retour : list[dict[str, Any]]. Liste d'entrées tools OpenAI, outils locaux en premier.

AgentLoop.verify​

verify(state: LoopState) -> LoopState

Vérifie la réponse finale ; une réponse rejetée est renvoyée au modèle (reprise).

NomTypeDéfautRequisDescription
stateLoopStateouiLoopState courant, dont la réponse final est vérifiée ; il est mis à jour sur place.

Retour : LoopState. Un LoopState : état sérialisable d'une exécution (enregistré dans les points de reprise).

AgentLoop.watch​

watch(session_id: str, after: str | None = None) -> None

Traite les nouveaux messages de session_id dans :meth:serve.

NomTypeDéfautRequisDescription
session_idstrouiSession à surveiller.
afterstr | NoneNonenonIdentifiant du dernier message déjà vu ; None traite la session depuis le début.

Retour : None.