Présentation de l'agent Knock

L'agent Knock est un agent IA conçu pour gérer les ressources de messagerie client dans l'application Knock. Il peut créer et mettre à jour des flux de travail, des modèles et des audiences, ainsi que répondre à des questions sur les performances de la messagerie client.

Architecture de l'agent

L'agent Knock a été conçu en utilisant un système de fichiers virtuel et bash. Cette approche permet à l'agent d'explorer le système de fichiers pour recueillir des informations contextuelles et d'utiliser bash pour écrire des scripts efficaces.

Le système de fichiers virtuel est bootstrappé avec les métadonnées des objets du compte, ce qui permet à l'agent d'avoir un catalogue complet des ressources dont il a besoin. Les ressources plus importantes sont chargées de manière paresseuse avant que l'agent n'en ait besoin.

Fonctionnement de l'agent

L'agent Knock fonctionne en utilisant une boucle d'agent typique sur l'API Anthropic, avec différents modèles pour les tâches à accomplir. La boucle d'agent est soutenue par un flux de travail durable qui peut réessayer les étapes en toute sécurité, en utilisant la bibliothèque Oban en Elixir qui sauvegarde son état avec Postgres.

Lorsqu'un agent demande à explorer des flux de travail ou des modèles spécifiques, il peut demander qu'ils soient chargés dans le système de fichiers en bloc en appelant l'outil load_resources.

load_resources

Les outils suivants sont exposés pour que l'agent puisse les utiliser : bash, read_file, edit_file, write_file et upsert_resource.

Avantages et limites

L'utilisation d'un système de fichiers virtuel et de bash pour l'agent Knock présente plusieurs avantages, notamment la flexibilité et l'efficacité. Cependant, cette approche peut également présenter des limites, telles que la complexité du système de fichiers et les problèmes de synchronisation des contenus et des modifications apportées en dehors de l'application.

Le choix de ne pas utiliser un bac à sable pour l'agent Knock a été motivé par le coût de performance et les problèmes de synchronisation plus importants qu'il aurait introduits. Cependant, si la complexité de l'agent devait augmenter, l'utilisation d'un bac à sable pourrait devenir nécessaire.