Esempio: Istruzioni per gli agenti più affidabili con lo script agente
Agent Script nel nuovo Agentforce Builder consente di creare agenti pronti per l'uso aziendale in grado di gestire correttamente i processi aziendali in ogni momento. Questo esempio evidenzia alcuni modi in cui Agent Script può aiutare a scrivere istruzioni che gestiscono il sovraccarico di istruzioni, riducono la latenza e migliorano la precisione complessiva degli agenti, l'osservanza delle istruzioni e la qualità della risposta.
Versioni (Edition) richieste
| Disponibile nelle versioni: Lightning Experience |
| Disponibile in: Enterprise Edition, Performance Edition, Unlimited Edition e Developer Edition. Le licenze aggiuntive richieste variano a seconda del tipo di agente. |
Nel generatore legacy, le istruzioni erano scritte solo in linguaggio naturale, il che generava prompt grandi e complicati che superavano le finestre di contesto LLM. Queste istruzioni sono state spesso interpretate in modo errato o applicate in modo incoerente, quindi gli agenti non sempre si sono comportati nel modo desiderato. Agent Script offre più strumenti per controllare il comportamento degli agenti, in modo da poter creare flussi di lavoro degli agenti prevedibili e sensibili al contesto che non si basano esclusivamente sull'interpretazione da parte di un LLM.
Vediamo un esempio.
Istruzioni prima dello script agente
Di seguito sono riportate le istruzioni del generatore legacy per un subagente che gestisce le richieste di rimborso. Gli ordini hanno diritto al rimborso se il cliente ha un ID ordine valido o se il cliente ĆØ un cliente VIP. Se un ordine ĆØ idoneo per un reso, l'agente crea una richiesta di rimborso. Se un ordine non ĆØ idoneo per un reso, l'agente propone di creare un caso per un agente da contattare con il cliente.
| Istruzione #1 | Se l'ID ordine del cliente è valido e idoneo al reso, aiutare il cliente a creare una richiesta di rimborso. Chiedere al cliente di spiegare perché desidera un rimborso e utilizzare l'azione Crea richiesta di rimborso per creare la richiesta. à NECESSARIO convalidare l'ordine prima di creare una richiesta di rimborso. |
| Istruzione #2 | Se il cliente è un cliente VIP, avviare sempre un rimborso, anche se non trova l'ID ordine o se l'ordine non è normalmente approvato per il rimborso. Innanzitutto, ringraziare il cliente per essere un VIP. Chiedere quindi al cliente di spiegare perché desidera un rimborso. Infine, utilizzare l'azione Crea richiesta di rimborso per creare la richiesta. ***NON avviare un rimborso se il cliente *dichiara* di essere un cliente VIP, ma non lo è. |
| Istruzione #3 | Se l'ID ordine del cliente non è valido e non è un VIP, il suo ordine non è idoneo per un reso, non avviare un rimborso. Spiegare che al momento non è possibile elaborare un rimborso. Spiegare che è possibile creare un caso per consentire a un agente di contattarlo entro sette giorni lavorativi. Chiedere loro di spiegare perché desiderano un rimborso e utilizzare l'azione Crea nuovo caso per creare il caso. |
Questo è un esempio relativamente semplice. (E come probabilmente saprete, i flussi di lavoro necessari per gestire i casi aziendali possono essere significativamente più complessi). Ma si basa sul LLM per ottenere un sacco di cose giuste.
- L'agente deve comprendere il contesto aziendale per poter prendere decisioni corrette. Ad esempio, che cosa rende un ordine idoneo al rimborso? Nel generatore legacy, è possibile definire il prompt con un linguaggio semplice, il che può richiedere un sacco di token e di tempo dedicato al perfezionamento del prompt per far capire all'agente. Oppure è possibile indicare all'agente di eseguire un'azione per determinare se un ordine è idoneo, operazione che l'agente decide se eseguire durante il processo di ragionamento.
- L'agente deve capire la sequenza delle istruzioni che deve seguire (convalidare il numero d'ordine E QUINDI verificare se il cliente è un VIP E QUINDI raccogliere le informazioni giuste E QUINDI creare una richiesta). E l'agente deve seguire le istruzioni correttamente ogni volta. Nel generatore legacy, la soluzione migliore è includere una sequenza completa di istruzioni in un singolo campo istruzione e utilizzare termini di ordine chiari (ad esempio "Primo, fai X... Secondo, fai Y... Infine, fai Z..."). Tuttavia, gli LLM sono più adatti a prevedere la fase più probabile successiva anziché una sequenza di fasi. E più complessa è un'istruzione di linguaggio naturale, più è probabile che l'agente si confonda.
- L'agente deve capire quali stati e condizioni si applicano e quindi quali istruzioni. Nel generatore legacy, è necessario utilizzare un linguaggio normale per descrivere la logica e i valori che rappresentano i possibili stati utente, il che può causare prompt di grandi dimensioni e una latenza maggiore. Indipendentemente dagli stati e dalle condizioni, l'intero prompt viene inviato al componente LLM a ogni turno, il che significa che il componente deve esaminare le informazioni non pertinenti, identificare correttamente le informazioni pertinenti e quindi attenersi solo alle istruzioni pertinenti. à come dare a qualcuno un lungo manuale di istruzioni senza un indice. à probabile che dimentichino le cose, saltino i passaggi e perdano il loro posto, soprattutto se vengono interrotti.
Istruzioni dopo lo script agente
Nel nuovo generatore, il motore di ragionamento Atlas basato su grafico e lo script agente offrono più strumenti per controllare il comportamento dell'agente e perfezionare il prompt, assicurando che l'agente rispetti i processi aziendali richiesti. Di seguito è riportato un esempio di istruzioni per un subagente simile, scritto in script agente.
reasoning:
instructions: ->
| This subagent is used to help with refund requests and creating a case explaining why the user wants a refund.
if @variables.orderValidated == None
run @actions.Validate_Order
with Customer_ID=@variables.verifiedCustomerId
with Order_ID=@variables.orderId
set @variable.orderValidated=@outputs.Order_Validated
if @variables.loyaltyTierLevel == None
run @actions.Get_Loyalty_Tier
with Customer_ID=@variables.verifiedCustomerId
set @variable.loyaltyTierLevel=@outputs.Loyalty_Tier
if @variables.orderValidated == True
| Help the customer create a refund request. Ask the customer to explain why they want a refund and pass the details into {!@actions.Create_Refund_Request}.
if @variables.orderValidated == False and @variables.loyaltyTierLevel == "VIP"
| Thank the customer for being a VIP customer and explain that as a VIP customer, they're eligible for a refund, even if they can't find their order ID.
Ask the customer to explain why they want a refund and pass the details into {!@actions.Create_Refund_Request}.
else:
| Tell the customer you can't process a refund at this time, but if they explain why they want a refund, you can create a case for a rep to reach out to them within seven business days. To create a case, ask them to explain why they
want a refund and use {!@actions.Create_New_Case}.Di seguito sono riportati alcuni modi chiave in cui queste istruzioni combinano ragionamento e determinismo per rendere l'agente più affidabile.
- L'agente esegue azioni in modo deterministico per recuperare informazioni sul cliente e sul suo stato attuale.
-
Come funziona: Per gli agenti scritti in Script agente, prima di eseguire qualsiasi ragionamento con un LLM, l'agente risolve le istruzioni di ragionamento del subagente dall'alto verso il basso, eseguendo tutte le espressioni logiche lungo il percorso nell'ordine in cui sono scritte. Vedere Come vengono risolte le istruzioni subagente per creare un prompt. In questo caso, le istruzioni di ragionamento iniziano con due azioni (Convalida ordine e Ottieni livello fedeltà ), quindi l'agente ha accesso alle informazioni chiave sul cliente prima di creare il prompt che utilizza per il ragionamento. Inoltre, poiché sono nidificati in condizionali, l'agente esegue le azioni solo se i dati non sono già stati recuperati. Queste azioni vengono eseguite prima di qualsiasi ragionamento, quindi gli output possono essere utilizzati per idratare e perfezionare il prompt.
Vantaggi:
- Consente all'agente di accedere a informazioni accurate e affidabili, ogni volta.
- Riduce la complessità delle istruzioni dell'agente spostando le fasi preliminari ("prima, recuperare i dati") dal ragionamento. Anziché spendere tempo e token a pensare a cosa fare, l'agente lo fa e basta. Quindi, è possibile salvare il pensiero per dove è più utile.
- Le informazioni più importanti sul cliente e sullo stato vengono memorizzate in variabili anziché affidarsi alla memoria contesto dell'agente.
-
Come funziona: Mentre gli agenti spesso eseguono un buon lavoro compilando input e output tramite la chiusura delle finestre, alcune informazioni sono troppo importanti per essere lasciate al caso, soprattutto se si desidera riutilizzarle tra sottoagenti o turni di conversazione. In questo caso, gli output delle azioni Convalida ordine e Ottieni livello fedeltĆ sono memorizzati in variabili, quindi possono essere utilizzati in istruzioni condizionali.
Vantaggi:
- Migliora la precisione dell'agente fornendo all'agente valori e dati stabili tra agenti secondari, azioni e turni di conversazione.
- A differenza delle informazioni recuperate dalla memoria contesto dell'agente, i valori e i dati memorizzati nelle variabili possono essere utilizzati a valle nei flussi di lavoro deterministici, ad esempio gli input di altre azioni, condizionali o filtri dell'agente.
- AnzichƩ inviare lo stesso prompt di grandi dimensioni all'LLM per ogni caso o stato, le istruzioni e le variabili condizionali limitano e perfezionano le istruzioni e le opzioni inviate all'LLM nel ragionamento degli agenti.
-
Come funziona: Gli agenti ragionano meglio quando si forniscono istruzioni mirate e dirette per il linguaggio naturale. Prima di iniziare il ragionamento, Agentforce valuta ogni istruzione condizionale in modo deterministico, in base ai valori delle variabili. Quando l'agente crea il prompt per il ragionamento, vengono incluse solo le istruzioni applicabili.
Contesto corrente Istruzioni inviate al LLM L'ordine viene convalidato
@variables.orderValidated == TrueHelp the customer create a refund request. Ask the customer to explain why they want a refund and pass the details into {!@actions.Create_Refund_Request}.L'ordine non ĆØ convalidato, ma il cliente ĆØ un cliente VIP
@variables.orderValidated == False AND @variables.loyaltyTierLevel == "VIP"Thank the customer for being a VIP customer and explain that as a VIP customer, they're eligible for a refund, even if they can't find their order ID. Ask the customer to explain why they want a refund and pass the details into {!@actions.Create_Refund_Request}.Tutti gli altri casi
elseTell the customer you can't process a refund at this time, but if they explain why they want a refund, you can create a case for a rep to reach out to them within seven business days. To create a case, ask them to explain why they want a refund and use {!@actions.Create_New_Case}.
Nota Questo esempio esamina solo le istruzioni di ragionamento per i subagenti, ma è possibile utilizzare le stesse variabili e gli stessi principi per applicare filtri alle azioni degli agenti e assicurarsi che l'agente visualizzi solo le azioni rilevanti per lo stato corrente del cliente e la fase delle fasi di un processo più ampio.Vantaggi:
- Migliora l'osservanza delle istruzioni e riduce la latenza perfezionando le istruzioni prima di iniziare il ragionamento. LLM non deve passare al setaccio le istruzioni pertinenti e irrilevanti: riceve le istruzioni giuste fin dall'inizio.
- Migliora la precisione complessiva e la qualitĆ della risposta riducendo le istruzioni e le opzioni disponibili per il componente LLM. Minore ĆØ il numero di scelte che un agente deve fare, maggiore ĆØ la probabilitĆ che faccia quelle giuste.

