Skip links

Boostez votre agent autonome avec Agentforce et Apex

Le 22 mai 2025, nous avons eu le plaisir de participer au Agentforce World Tour 2025 à Paris, et d’animer une session intitulée « Booster votre agent autonome avec Agentforce et Apex ».

L’objectif principal de notre présentation était d’identifier les scénarios précis dans lesquels l’utilisation d’Apex devient essentielle pour enrichir les capacités d’un agent autonome sur la plateforme Agentforce.

L'Apex dans Agentforce

Nous allons tout d’abord nous concentrer sur les éléments d’architecture pouvant nécessiter l’usage de l’Apex dans Agentfore.
Dans Agentforce, un agent autonome est organisé autour de différents topics. Chaque topic se compose d’un ensemble d’actions et d’instructions, qui vont permettre de guider les prises de décisions et les actions de l’agent grâce au moteur de raisonnement Atlas.
Ces topics permettent donc de définir les capacités de l’agent. Vous pouvez utiliser les topics standard fournis par Salesforce, mais il est également possible de créer vos propres topics personnalisés.

Un topic comporte trois composants essentiels :

  1. Description : précise ce que le topic peut gérer. L’agent s’appuie sur cette description pour déterminer la pertinence du topic dans une conversation.
  2. Scope : permet de saisir un ensemble de descriptions supplémentaires dans le but de définir ce que l’agent est capable de faire.
  3. Instructions : orientent l’agent dans ses prises de décisions et sur l’exécution des actions associées.
Concernant les actions, Agentforce fournit une bibliothèque d’actions standard prêtes à l’emploi. Toutefois, selon les spécificités métier, il est aussi possible de créer des actions personnalisées. Quatre grandes familles d’actions personnalisées existent :
  • Flow : Pour automatiser des processus sans développement complexe.
  • Apex : Pour exécuter du code personnalisé sur la plateforme Salesforce, permettant ainsi une logique métier complexe.
  • Prompt template : Pour structurer clairement les demandes aux agents virtuels, améliorant ainsi la compréhension et la précision des réponses.
  • API : Pour étendre les interactions avec des systèmes externes.
Concentrons-nous dès à présent sur deux types d’actions : Apex et Prompt Template.
Il s’agit en effet des deux types d’actions pour lesquelles l’utilisation d’Apex peut être nécessaire. 
Agent Action Apex

Pour celles et ceux qui sont familiers avec l’utilisation d’Apex dans les flows Salesforce, le fonctionnement des actions Apex dans Agentforce est très similaire.

Ces actions reposent sur des classes Apex intégrant des méthodes annotées @InvocableMethod, une annotation spécifique qui permet à ces méthodes d’être appelées directement depuis un agent.
L’intérêt principal des actions Apex réside dans leur capacité à gérer des processus asynchrones complexes, à effectuer des appels API avancés ou encore à manipuler des types de données personnalisés. Ce niveau de flexibilité rend l’Apex particulièrement utile dans des cas où les actions standard ou les flows atteignent leurs limites.
Nous reviendrons plus en détail sur des cas d’usage concrets d’actions Apex un peu plus loin dans l’article.
Prompt Template - ressource Apex
Un autre cas d’usage de l’Apex existe : intégrer une méthode Apex en tant que ressource dans un prompt template. Cela permet d’enrichir dynamiquement les prompts avec des données ou du contexte métier généré par du code Apex.
Concrètement, cela signifie que les données transmises en entrée peuvent être prétraitées ou enrichies avant d’être injectées dans le prompt.  Les interactions avec l’agent sont ainsi plus précises, plus contextualisées et mieux alignées sur les attentes de l’utilisateur final.

Par exemple, prenons le cas où je souhaite stocker dans un champ d’un compte un résumé des cases résolus. Pour cela, je peux alimenter mon prompt avec les enregistrements de cases associés, préalablement récupérés et formatés via une méthode Apex. Le résultat du prompt peut ensuite être utilisé pour alimenter un champ texte sur l’objet compte.

Comment intégrer concrètement l'Apex dans vos agents ?

Deux sous parties : action et prompt

Une fois le besoin identifié, l’implémentation d’une action Apex dans un agent autonome suit un process clair :
  1. Définir la méthode Apex : commencez par créer une classe Apex contenant une méthode publique annotée @InvocableMethod. C’est cette annotation qui rend la méthode accessible depuis Agentforce.

  2. Structurer les entrées et sorties : créez des classes d’entrée et de sortie avec l’annotation @InvocableVariable pour décrire les paramètres input et output qui seront utilisés par l’agent.

  3. Créer l’action personnalisée : dans Agentforce, ajoutez une action custom de type Apex. Sélectionnez la classe précédemment développée.

  4. Configurer les instructions : rédigez les instructions pour expliquer à l’agent à quoi sert cette action, quand l’utiliser et quel objectif elle permet d’atteindre.

  5. Décrire les paramètres : fournissez une description claire de chaque paramètre d’entrée et de sortie pour aider l’agent à bien contextualiser leur usage.

Pour les prompt templates, l’intégration suit une logique très proche. Il suffit de :

  1. Sélectionner une méthode Apex comme ressource dans le template,
  2. Faire correspondre les inputs attendus par la méthode Apex avec ceux définis dans le prompt template,
  3. Veiller à ce que les données transmises soient cohérentes entre les deux éléments.

Cette cohérence garantit que les inputs envoyés à la méthode Apex sont traités comme prévu et que le prompt fonctionne de manière optimale.

Les bonnes pratiques Apex dans Agentforce

Pour garantir un fonctionnement optimal, fiable et sécurisé de vos actions Apex dans Agentforce, voici quelques bonnes pratiques que nous recommandons systématiquement :
  1. Adopter des conventions de nommage claires : Le nom de vos méthodes, variables et classes doit refléter explicitement leur objectif. Cela facilite non seulement la maintenance, mais aussi la compréhension par l’agent, car dans Agentforce, le langage naturel fait partie intégrante de la logique de traitement. Un nom bien choisi améliore la capacité de l’agent à interpréter correctement l’action associée.

  2. Gestion des erreurs : implémentez systématiquement des blocs try/catch pour capturer les erreurs et retourner des messages d’erreur explicites et compréhensibles. Cela permet à l’agent de mieux interpréter ce qui s’est mal passé et, si nécessaire, d’en informer l’utilisateur final de manière pertinente.

  3. Protéger les données avec des mécanismes de rollback : lorsque votre logique modifie des enregistrements Salesforce, pensez à prévoir des rollbacks pour éviter tout impact en cas d’erreur inattendue. Cela contribue à la fiabilité globale de vos process et à la qualité de vos données

  4. Tester, tester et tester : Rédigez des tests unitaires performants pour garantir le bon fonctionnement de vos classes Apex. Au-delà du code, utilisez l’Agentforce Testing Center pour simuler des charges réelles, tester la performance et vous assurer que l’agent reste réactif même à grande échelle.

  5. Définir la sécurité au niveau de vos classes : déclarez vos classes avec l’instruction with sharing afin que l’agent respecte les règles de sécurité et d’accès aux données de l’utilisateur en contexte. Cette approche permet de garantir que les actions de l’agent ne contournent pas les règles d’accès définies dans votre organisation Salesforce.

    Dans Agentforce, les agents peuvent fonctionner de deux manières :

    • En héritant des droits de l’utilisateur connecté,
    • En opérant avec leurs propres droits définis.

    L’usage de with sharing permet d’assurer que les données manipulées par l’agent respectent toujours les contraintes de visibilité attendues, que l’agent agisse au nom de l’utilisateur ou non.

Apex ou Flows ?

Les fonctionnalités offertes par les Flows se sont grandement enrichies ces dernières années, mais il existe des cas d’usage où l’Apex conserve une nette valeur ajoutée.
Il ne s’agit pas d’opposer les deux outils, mais bien de comprendre les avantages spécifiques qu’Apex peut offrir dans des situations complexes ou spécialisées.
Nous avions déjà dédié l’un de nos précédents articles sur le sujet Apex vs Flows, mais l’objectif ici est d’effectuer cette analyse dans un contexte Agentforce.
 
  1. Gestion de données complexes ou personnalisées : Apex est adapté lorsqu’il s’agit de manipuler des types de données qui ne correspondent pas aux objets standards Salesforce (ex. : structures JSON complexes, objets métier spécifiques, formats externes). Cela permet de répondre à des besoins métier exigeants, là où les Flows atteignent leurs limites.
  2. Traitement asynchrone avancé : L’un des grands avantages d’Apex est sa capacité à exécuter et enchaîner des traitements asynchrones, notamment grâce aux features Queueable. Cela permet de lancer des opérations longues sans bloquer l’interaction utilisateur. Une fonctionnalité impossible à mettre en place en utilisant des flows.

  3. Robustesse des traitements et gestion des erreurs : Apex permet d’implémenter des logiques d’exception avancées avec des blocs try/catch, des mécanismes de contrôle fin et des instructions de rollback. Cela garantit l’intégrité des données même en cas d’échec d’une opération intermédiaire. Il est par exemple possible d’insérer une liste d’enregistrement en mode allOrNone et donc de définir si l’opération permet une réussite partielle. Si l’insertion d’un enregistrement échoue, le reste de l’opération DML peut tout de même réussir.

  4. Traitement de fichiers binaires (blobs) : Que ce soit pour gérer des pièces jointes, des images, ou des contenus encodés, Apex offre une vraie flexibilité pour manipuler des données binaires, un domaine difficilement adressable par Flow.

  5. Gestion fine des droits d’accès : Apex vous permet de choisir d’exécuter le code en mode utilisateur ou système. Cela signifie que chaque requête et chaque opération peut être adaptée aux besoins de sécurité : soit en respectant strictement les droits de l’utilisateur connecté, soit en adoptant des privilèges système pour certains traitements critiques. Cette nuance n’est pour le moment pas possible dans un flow.

Démonstration