Loading
Agentforce et IA générative Einstein
Ajout de champs de fusion Apex à un modèle d'invite de génération de champs

Ajout de champs de fusion Apex à un modèle d'invite de génération de champs

Créez un exemple de modèle d'invite de génération de champs qui utilise Apex.

Éditions requises

Disponible avec : Lightning Experience
Disponible avec : éditions Enterprise, Performance et Unlimited avec le complément Einstein pour Platform, ou Einstein ou Agentforce pour la vente ou Service, ou Agentforce Foundations
Autorisations utilisateur requises
Pour créer et gérer des modèles d'invite dans Générateur de répliques :

Ensemble d'autorisations Gestionnaire de modèle d'invite

  • Gestion des modèles d'invite
  • Exécution de modèles d'invite

OU

Ensemble d'autorisations Personnaliser l'application

Supposons que vous souhaitez fournir à l'équipe commerciale de votre entreprise des résumés actualisés des requêtes clients d'un client donné avant qu'elle passe des appels. Nous avons utilisé le même cas d'utilisation dans la section du flux.

Cette fois, vous souhaitez créer un modèle d'invite de génération de champ qui intègre une classe Apex qui obtient les données des requêtes pour qu'un LLM les résume.

Voici la classe Apex à laquelle nous accédons en tant que ressource dans un modèle d'invite.

public class OpenCasesPrompt {
    @InvocableMethod(label='Open Cases'
        description='Find Cases for an Account'
        CapabilityType='PromptTemplateType://einstein_gpt__fieldCompletion')
    public static List<Response> getCasesPrompt(List<Request> requests) {
        // Validate the expected number of requests as an input
        if (requests.size() != 1)
          throw new ListException('The requests list must contain one entry only');
        Account a = requests[0].RelatedEntity;
        ID searchAcctId = a.Id;
        List<Case> cases =
            [SELECT Id, Subject, Description
             FROM Case
             WHERE AccountId = :searchAcctId AND Status != 'Closed'
             WITH USER_MODE];
        string responseData = null;
        if(cases.isEmpty()) {
            responseData = 'There are no open cases.';
        } else {
            for(Case c : cases) {  
                responseData =
                   (responseData != null) ? responseData + '\n' : '';           
                responseData += String.format('Case details: {0}, {1}.',
                    new List<Object>{c.Subject, c.Description});
            }
        }
       
        List<Response> responses = new List<Response>();
        Response res = new Response();
        res.Prompt = responseData;
        responses.add(res);
        return responses;
    }
    
    public class Request {
        @InvocableVariable(required=true)
        public Account RelatedEntity;
    }
    
    public class Response {
        @InvocableVariable
        public String Prompt;
    }
}

Les exigences de la classe Apex sont expliquées dans Grounding with Apex Merge Fields (Champs de fusion Apex).

La couverture de test est importante, ajoutons une classe test. La classe test simule les données envoyées depuis le Générateur de répliques. Deux cas de test sont fournis : un pour quand des événements sont trouvés et un autre pour quand aucun événement n'existe.

@IsTest
public class OpenCasesPrompt_Test {

    @IsTest
    public static void findMatchingCasesForAccount() {        
        Account a = new Account(Name='Test Account');
        insert a;
        Case c1 = new Case(Subject='Test Case', Description='Important Case', 
            Status='New', AccountId=a.id);
        Case c2 = new Case(Subject='Test Case 2',
            Description='Case Description', Status='In-progress', 
            AccountId=a.id);
        Case c3 = new Case(Subject='Test Case Closed',
            Description='Closed Case', Status='Closed', AccountId=a.id);
        insert new List<Case>{c1, c2, c3};


        List<OpenCasesPrompt.Request> requestsInput
            = new List<OpenCasesPrompt.Request>();
        OpenCasesPrompt.Request request = new OpenCasesPrompt.Request();
        request.RelatedEntity = a;
        requestsInput.add(request);
        
        Test.startTest();
        List<OpenCasesPrompt.Response> responses = 
            OpenCasesPrompt.getCasesPrompt(requestsInput);
        Test.stopTest();
       
        Assert.areEqual(1, responses.size());
        OpenCasesPrompt.Response response = responses[0];

        Assert.areEqual('Case details: Test Case, Important Case.\n' +
                        'Case details: Test Case 2, Case Description.', 
                        response.Prompt);
    }

    @IsTest
    public static void noCasesForAccountResponse() {
        List<OpenCasesPrompt.Request> requestsInput
            = new List<OpenCasesPrompt.Request>();
        OpenCasesPrompt.Request request = new OpenCasesPrompt.Request();
        request.RelatedEntity = new Account();
        requestsInput.add(request);
        
        List<OpenCasesPrompt.Response> responses = 
            OpenCasesPrompt.getCasesPrompt(requestsInput);
        Assert.areEqual(1, responses.size());
       
        OpenCasesPrompt.Response response = responses[0];
        Assert.areEqual('There are no open cases.', response.Prompt);
    }
}

La classe Apex étant prête, appelons-la depuis le Générateur de répliques. Pour cela, nous devons créer un champ personnalisé appelé Résumé de la requête ouverte dans l'objet Compte. Le champ personnalisé doit avoir un type de données Zone de texte (long). Consultez Création de champs personnalisés. Déconnectez-vous et reconnectez-vous pour afficher le nouveau champ personnalisé dans Générateur de répliques.

Dans Générateur de répliques, créez un modèle d'invite.

  1. Pour Type de modèle d'invite, sélectionnez Génération de champ.
  2. Dans Nom du modèle d'invite, saisissez Apex : Résumer les requêtes ouvertes.
  3. Pour Objet, sélectionnez Compte.
  4. Pour le champ Objet, sélectionnez Ouvrir le résumé de la requête.
  5. Laissez le champ Description vide.
  6. Cliquez sur Créer et vous êtes redirigé vers l'espace de travail Modèle d'invite.
  7. Dans l'exemple de bibliothèque de modèles d'invite, recherchez le modèle d'invite de génération de champs : Résumer des requêtes ouvertes pour un compte. Copiez et collez ce modèle dans l'espace de travail Modèle d'invite.
  8. Pour pouvoir exécuter ce modèle dans le Générateur de répliques, cliquez sur Insérer une ressource dans la section Réplique. Le champ de recherche est affiché la première fois que vous cliquez sur cette option.
    1. Supprimez l'espace réservé <account.Id__Merge_Field>.
    2. Cliquez sur la barre de recherche Ressource, puis sélectionnez Compte | ID du compte .
    3. Supprimez l'espace réservé <Obtenir_Ouvrir_Requêtes_Pour_Compte__Prompt__Flux>.
    4. Cliquez sur la barre de recherche de ressources, puis sélectionnez Apex.
    5. Pour ajouter la classe Apex OpenCasesPrompt à votre modèle, sélectionnez Requêtes ouvertes. Open Cases est l'attribut label que vous définissez dans l'annotation @InvocableMethod dans la classe Apex OpenCasesPrompt.
 
Chargement
Salesforce Help | Article