Intervention humaine pour Hermes
L’intervention humaine pour les agents Hermes, sur téléphone.
Ajoutez un appel dans votre outil Hermes sensible : il attendra l’approbation de votre utilisateur sur son téléphone.
Ce que propose Hermes
Approbation des commandes dangereuses et pre_tool_call
Hermes détecte déjà les commandes dangereuses et demande avant de les exécuter : autoriser une fois, pour la session, toujours, ou refuser. Par défaut, cette question attend dans le terminal. Les plugins peuvent aussi enregistrer un hook pre_tool_call exécuté avant tout outil.
Le point de blocage
- L’approbation intégrée interroge la personne qui exécute Hermes, pas l’utilisateur concerné par l’action.
- Hermes abandonne un hook pre_tool_call après 30 secondes par défaut et bloque l’appel.
- Le mode gateway fait passer de nombreux utilisateurs par un seul agent ; un identifiant de session désigne une conversation, pas une personne.
La solution
Pushary recueille la réponse de votre utilisateur.
Un gestionnaire d’outil Hermes est une fonction Python ordinaire. Un appel decisions.ask() à l’intérieur envoie la question sur le téléphone de votre utilisateur, attend une approbation ou un refus et enregistre la réponse.
Le plugin enregistre un outil ask_human dont le gestionnaire appelle decisions.ask(). La question arrive sur le téléphone de votre utilisateur et le gestionnaire attend la réponse, 55 secondes par défaut. Tout résultat autre qu’un oui explicite revient comme non approuvé.
pip install pusharyimport os
from pushary import PusharyServer
px = PusharyServer(api_key=os.environ["PUSHARY_API_KEY"])
def ask_human(params, **kwargs):
d = px.decisions.ask(
question=params["question"],
external_id=current_user_id(), # your own user id, never the model's
type="confirm",
)
return "approved" if d["approved"] else f"not approved ({d['status']})"
def register(ctx):
ctx.register_tool(
name="ask_human",
toolset="approvals",
schema={"type": "object", "properties": {
"question": {"type": "string"},
}, "required": ["question"]},
handler=ask_human,
description="Ask a real person to approve before acting.",
)Ou installez le plugin Pushary depuis le catalogue Hermes
Le plugin Pushary figure dans le catalogue de plugins Hermes Agent : Hermes installe donc la version examinée par Nous. Il transmet les approbations de commandes dangereuses d’Hermes à votre téléphone, ajoute pushary_ask et pushary_notify et, avec l’offre Partner, pushary_ask_end_user interroge un de vos utilisateurs. Définissez votre clé API une fois et ne lancez pas un second installateur sur la copie du catalogue.
hermes plugins install pushary
export PUSHARY_API_KEY="pk_xxx.xxx"
# ~/.hermes/config.yaml
security:
approval:
transport: pusharyFonctionnement
De l’installation à la première réponse
Connectez votre utilisateur une seule fois. Exigez son approbation à l’étape sensible. Pushary envoie la question, attend la réponse et l’enregistre.
- 01
Installez le SDK Python
Hermes v0.21.6 et les versions ultérieures gèrent leur propre Python et n’y acceptent pas d’installation pip. Utilisez alors le plugin Pushary (npx pushary@latest setup --agents hermes) : pushary_enroll et pushary_ask_end_user interrogent vos propres utilisateurs. Sur une version plus ancienne, exécutez pip install pushary avec le Python de son virtualenv. Définissez PUSHARY_API_KEY.
- 02
Connectez votre utilisateur une seule fois
Un appel SDK par utilisateur renvoie un lien de connexion. Votre utilisateur l’ouvre sur son téléphone avec l’application Pushary gratuite. Sans compte ni paiement.
- 03
Enregistrez un outil ask_human
Dans register(ctx) de votre plugin, appelez ctx.register_tool avec un gestionnaire qui appelle px.decisions.ask(). Prenez l’identifiant utilisateur depuis votre propre modèle utilisateur, jamais depuis les arguments du modèle.
- 04
Agissez selon la réponse
Renvoyez un résultat non approuvé pour tout résultat autre qu’un oui explicite. Un non, une demande expirée ou l’absence de réponse signifie que l’agent n’agit pas.
Une question peut demander un oui ou un non, un choix dans une liste ou une réponse écrite. Chaque réponse est enregistrée.
Avant la mise en production
Les pièges à éviter avec Hermes
- Une session n’est pas une personne
- Le mode gateway fait passer de nombreux utilisateurs par un seul agent. Un identifiant de session désigne une conversation et cesse de correspondre à la personne dès qu’elle ouvre un second onglet ou revient le lendemain. Associez chaque approbation à votre propre identifiant utilisateur pour qu’elle reste liée à la personne responsable de l’action.
- Les contrôles par hook ont 30 secondes
- Si vous posez la question depuis un hook pre_tool_call plutôt qu’un outil, Hermes abandonne le hook après plugins.hook_callback_timeout, 30 secondes par défaut, et bloque l’appel. Gardez l’attente dans ce délai ou augmentez le réglage.
- Un outil que le modèle peut ignorer ne bloque rien
- ask_human est un outil que le modèle choisit d’appeler : il reste facultatif. Une consigne « demander d’abord » ne bloque pas un remboursement. Appelez decisions.ask() dans le gestionnaire de l’outil de remboursement et exécutez le remboursement uniquement si approved vaut true.
L’offre Partner
Votre agent interroge vos utilisateurs, pas seulement vous
Proposez votre agent à vos utilisateurs. Chacun approuve ses actions sensibles depuis son téléphone, sous votre marque.
Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.
Vos utilisateurs répondent sur leur propre téléphone
Connectez chaque utilisateur une seule fois avec un lien. Il installe l’application Pushary gratuite et répond depuis l’écran verrouillé, sans créer de compte.
Sans réponse, c’est non
Exécutez l’action uniquement après une approbation explicite. Une demande en attente, expirée ou annulée ne vaut jamais un oui. Pushary conserve chaque demande : votre code peut la reprendre après un redémarrage.
Joignez-les sur leur téléphone
L’application passe en premier, car elle seule affiche Approuver et Refuser sur l’écran verrouillé. Les notifications du navigateur viennent ensuite. Vous n’avez aucun système d’envoi à construire.
Chaque réponse est enregistrée
Chaque réponse est enregistrée avec son auteur et sa date. Vous pouvez effectuer des recherches et exporter les réponses. Avec une URL de rappel, chaque réponse est aussi envoyée à votre serveur par webhook signé.
FAQ
Les réponses à vos questions
Existe-t-il un package Pushary spécifique à Hermes ?
Comment l’agent attend-il la réponse ?
Chaque utilisateur final peut-il recevoir les approbations sur son téléphone ?
Que voit l’agent en cas de refus ou de délai dépassé ?
Un seul déploiement Hermes peut-il gérer les approbations de nombreux clients ?
Laissez votre agent Hermes demander avant d’agir.
Connectez un utilisateur une seule fois, posez une question en un appel et exécutez l’action uniquement après un oui. Chaque réponse est enregistrée.
Start freeOffre Partner, $99 par mois. Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.