Crea il tuo assistente basato sull'AI generativa ti consente di creare un generatore di testo e integrarlo con Agent Assist. Il generatore di testo utilizza modelli linguistici di grandi dimensioni (LLM) avanzati, come Text Bison e Gemini, per generare suggerimenti. Puoi utilizzare questi suggerimenti per aiutare i partecipanti a una conversazione di assistenza clienti, ad esempio gli agenti umani e gli utenti umani. Il generatore può utilizzare chiamate LLM integrate di Agent Assist che possono essere configurate per la maggior parte delle attività LLM. Per saperne di più sui generatori in Agent Assist, consulta la documentazione di Vertex AI.
Input del generatore
Il generatore di testo richiede i seguenti input:
Istruzione: un testo per descrivere l'attività che vuoi che il generatore di testo esegua. In Vertex AI, l'istruzione è chiamata prompt.
Opzioni modello: la scelta del modello e le impostazioni necessarie per un rendimento ottimale, come temperatura, limite di token di output, TopK e TopP. Gli output del generatore sono limitati da queste impostazioni. Puoi scegliere un modello e impostare le opzioni del modello quando crei un generatore facendo clic su Opzioni modello oppure puoi utilizzare le impostazioni predefinite. In Vertex AI, le opzioni del modello sono chiamate valori dei parametri.
Evento di attivazione: uno dei seguenti eventi che indica quando avviare il generatore:
END_OF_UTTERANCE
: attiva il generatore dopo l'inserimento di ogni espressione.MANUAL_CALL
: attiva il generatore solo quando effettui chiamate API esplicite per richiamarlo.CUSTOMER_MESSAGE
: attiva il generatore solo dopo ogni messaggio del cliente.AGENT_MESSAGE
: attiva il generatore solo dopo ogni messaggio dell'agente.
Output del generatore
Dopo aver fornito gli input al generatore di testo, il generatore di assistente GenAI personalizzato fornisce suggerimenti come link ad articoli, risposte appropriate o informazioni di backend sulle offerte promozionali. Questi suggerimenti vengono forniti in formato di testo e sono pertinenti nel contesto della conversazione di assistenza clienti al momento della generazione.
Casi d'uso
Questa sezione presenta tre casi d'uso come esempi di come possono essere implementati i generatori di assistente AI generativa personalizzati. Il modello potrebbe generare risposte di output diverse dagli esempi riportati di seguito.
Riscrittura professionale
Puoi chiedere al generatore di riformulare le frasi dell'agente umano in modo professionale, educato ed empatico prima di rispondere ai clienti, come segue.
- Nome del generatore: Riscrivi in modo professionale
- Evento di trigger: messaggio dell'agente
Istruzione:
# TASK DESCRIPTION: Output the agent's response under ## LAST UTTERANCE rewritten in a professional, polite and empathetic way in EXAMPLE 4. - DO NOT miss any information mentioned by the original text. - Only output rewritten response. - You're provided with EXAMPLE 1-3. Follow the format. # EXAMPLE 1 ## CONVERSATION: AGENT: Yo what's up it's Akshay. This is Amazon customer service. What do you want? ## LAST UTTERANCE: Yo what's up it's Akshay. This is Amazon customer service. What do you want? ## OUTPUT: Hi I'm Akshay. Thank you for choosing Amazon customer service. How can I assist you today? # EXAMPLE 2 ## CONVERSATION: CUSTOMER: Hi, I'm having some trouble with my Apple Music subscription. AGENT: Hey, I'm [name]. I can help, I guess. What's your name and account number? CUSTOMER: Sure, my name is [name] and my account number is [number]. AGENT: Alright. Checked that out. You are on Apple Music Individual plan, right? ## LAST UTTERANCE: Alright. Checked that out. You are on Apple Music Individual plan, right? ## OUTPUT: Thank you. I see that you're currently subscribed to the Apple Music Individual plan. Is that correct? # EXAMPLE 3 ## CONVERSATION: AGENT: What is your order number? CUSTOMER: 12345 AGENT: Hang on a sec. Looking. CUSTOMER: I'll wait. AGENT: Alright, it appears your order is not registered. Did you even submit the order? CUSTOMER: Let me double check. Shoot, someone canceled it. Must be the kids. AGENT: Yeah, watch your kids will you? CUSTOMER: I'm so sorry. AGENT: All good. Have a good one. ## LAST UTTERANCE: All good. Have a good one. ## OUTPUT: No problem. I'm glad I can help. Please have a good day! # EXAMPLE 4 ## CONVERSATION: ${parameter:transcript} ## LAST UTTERANCE: ${parameter:transcript_last_utterance} ## OUTPUT:
Customer retention
Puoi anche chiedere al generatore di suggerire risposte dell'agente per la fidelizzazione dei clienti, ad esempio fornire sconti sui prodotti, eseguire l'upselling o il cross-selling dei prodotti e risolvere i problemi, come nell'esempio seguente. Il generatore accede alle informazioni che fornisci su sconti e offerte come riferimenti contestuali con l'API IngestContextReferences
.
- Nome del generatore: Customer churn and retention
- Evento di attivazione: messaggio del cliente
- Riferimenti contestuali: offerte
- Uno: sconto dell'11%
- Nest: sconto del 5%
- Sconto per i nuovi clienti: 10%
Istruzione:
# TASK DESCRIPTION: You are an Agent who is helping a customer resolve an issue with complete understanding of the same. - Make sure you wait to understand the concern or query before making any suggestions. - If the customer informs about the issue, you need to ask the exact reason. If the reason is valid, you can give appropriate credit from the OFFERS section. - If the customer is about to cancel an order or subscription, make sure you offer something from the OFFERS section and try to retain the customer. - If a customer is inquiring about a new product, offer some combo for upselling another product. Below are two examples for detecting churn and generating suggestions for mitigation. The output should be a single message suggested to the agent according to the context of the conversation. # EXAMPLE 1 Customer: Hello Agent: Welcome to Google. How may I help you? Customer: I want to cancel order. Agent: Sure Let me have an order ID. Customer: Its 123321 Agent: I could see that you placed an order for Google Nest. May I know the reason for cancellation? Customer: It's available at cheaper rate now. Agent: Ohh.! I see. Let me check the current price and adjust the order price. Is it okay ? Customer: Sure..! I can purchase the product as long as I can get it at the discounted price. I'd definitely go with it Agent: Google Nest costs $200 at present. I can see that you paid $230. Customer: Yeah. Can you request to refund $30. I can buy it at $200. Agent : Sure. I have updated. You will get $30 refund once your order is delivered. Customer: Thanks. Agent : Welcome # EXAMPLE 2 Customer: Hello Agent: Welcome to Google. How may I help you? Customer: I am having Google One Subscription. I think I may need some more space in future. Agent: Okay. May I have your customer Id: Customer: Its 123321 Agent: I could see that you have 100GB Plan at present. How much are you expecting to need in future? Customer: I think I may need 100GB or more. Agent: I could check that you are a loyal customer who had subscriptions since last 6 months. I can provide you 10% discount. Customer: Sure..! That would be great. Agent: 200GB Subscription costs $180 per annum which I can offer you at $162. Customer: That's cool. Thank you. Agent: Is there anything else I can help you with? Customer: No thanks. ## CONTEXT ${parameter:transcript} ## OFFERS ${parameter:offers}
Crea un generatore
Gli esempi riportati di seguito mostrano come creare un generatore di testo di assistenza per l'AI generativa personalizzato.
Console
Per creare un generatore utilizzando la console di Agent Assist:
Nella console, vai alla pagina Build-your-own-assist.
Fai clic su Crea.
Inserisci il nome del generatore.
Seleziona l'evento di trigger dall'elenco.
Inserisci l'istruzione per definire l'attività.
Fai clic su Opzioni modello e seleziona un modello dall'elenco.
Imposta i parametri o utilizza le impostazioni predefinite.
Fai clic su Salva e poi di nuovo su Salva per salvare il generatore.
REST
Per creare un generatore utilizzando l'API:
- Chiama il metodo
CreateGenerator
dalla risorsa Generator. - Inserisci il nome del generatore nel campo
description
. - Inserisci l'evento attivatore.
- Inserisci l'istruzione per definire l'attività in FreeFormContext.text.
- Inserisci un nome del modello nel campo
published_model
o lascialo vuoto per utilizzare il modello predefinito. - Specifica i parametri del modello nel campo
inference_parameter
o lasciali vuoti per utilizzare i valori predefiniti.
Parametri
Puoi rendere un'istruzione contestuale contrassegnando le parole come parametri utilizzando il formato ${parameter:<parameter_name>}
. Puoi anche utilizzare l'API Data Ingestion per importare il valore effettivo di un parametro chiamando il metodo IngestContextReferences in una conversazione. Con questo metodo, i parametri nell'istruzione verranno sostituiti dal loro valore durante l'esecuzione.
Di seguito è riportato un esempio JSON di come importare il valore dei parametri chiamando IngestContextReferences:
{ "contextReferences": { "glossary": { "contextContents": [ { "content": "east one", "contentFormat": "PLAIN_TEXT" } ] } } }
Esistono anche alcuni parametri del generatore che non devono essere importati. Questi parametri integrati sono i seguenti:
${parameter:transcript}
: la conversazione tra l'agente e l'utente, inclusa l'ultima espressione dell'utente.${parameter:transcript_last_utterance}
: l'ultima frase della conversazione.
In ogni istruzione deve essere utilizzato almeno un parametro integrato.
Integrati o importati, i parametri del generatore sono diversi dalle opzioni del modello, che vengono impostate al momento della creazione del generatore. I valori di questi parametri del generatore provengono da una trascrizione della conversazione o da dati importati. D'altra parte, imposti i valori delle opzioni del modello per il generatore nel suo complesso.
Testare un generatore
Nella console Crea il tuo assistente GenAI, puoi testare il generatore nella sezione Testa generatore.
Per testare un generatore nella console Crea il tuo assistente GenAI, segui questi passaggi:
Console
- Aggiungi una trascrizione della conversazione. Puoi inserire manualmente le espressioni o caricare una trascrizione in formato JSON facendo clic su Carica.
- Per aggiungere altri dati da importare, fai clic su more_vert e note_add Aggiungi dati inseriti.
La console Crea il tuo assistente AI generativa mostra le risposte generate annotate con il nome del generatore.
REST
Per testare un generatore utilizzando l'API:
- Inserisci il nome del generatore nel campo
generatorName
. - Fornisci le conversazioni nel campo
conversationContext
. - Fornisci i valori dei parametri, se presenti, nel campo
contextReferences
. - Inserisci il trigger per la generazione di suggerimenti nel campo
triggerEvents
. I suggerimenti generati sono disponibili nel campogeneratorSuggestion
.
Profilo di conversazione
Un profilo di conversazione definisce un insieme di parametri che controllano i suggerimenti forniti durante una conversazione. I passaggi che seguono creano una risorsa conversationProfile
con un oggetto HumanAgentAssistantConfig
.
Console
- Nella console Agent Assist, vai alla pagina Profili di conversazione.
- Fai clic su + Crea.
- Inserisci il nome visualizzato.
- Seleziona il tipo di suggerimento check_box Build-your-own-assist.
- Inserisci il nome del generatore o scegli il nome del generatore dall'elenco.
REST
- Chiama il metodo
create
dalla risorsa del profilo di conversazione. - Specifica un nome per il nuovo profilo di conversazione.
- Inserisci il codice della lingua.
- Inserisci il nome del generatore in human_agent_suggestion_config.
Di seguito è riportato un esempio JSON di un profilo di conversazione.
{ "displayName": "build-your-own-assist-test", "humanAgentAssistantConfig": { "humanAgentSuggestionConfig": { "generators": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID" } } }
Verifica con il simulatore
Puoi verificare il profilo di conversazione nel simulatore di Agent Assist. Il simulatore mostra le risposte generate annotate con il nome del generatore.
Testare un prompt
All'interno della console Crea il tuo assistente GenAI, puoi testare un prompt con il simulatore nello stesso modo in cui verifichi un profilo conversazione.
L'output generato mostrato nell'immagine seguente illustra l'efficacia con cui il generatore di freeform-tool-test1
ha seguito il prompt di esempio.
Conversazioni al runtime
Una conversazione è definita come un'interazione tra un agente, inclusi agenti umani e agenti virtuali, e un cliente dell'assistenza o un utente finale. In fase di runtime, quando inizia un dialogo tra un utente finale e un agente umano, crei una conversazione. Per visualizzare i suggerimenti, devi creare un partecipante utente finale e un partecipante operatore umano e aggiungerli alla conversazione.
Creare una conversazione
Per creare una conversazione:
- Chiama il metodo
create
daconversation resource
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_PROFILE_ID: l'ID del tuo profilo conversazionale
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations
Corpo JSON della richiesta:
{ "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", }
All'interno della risposta JSON, il segmento di percorso dopo conversations
contiene il nuovo ID conversazione. La risposta JSON dovrebbe essere simile alla seguente:
{ "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID", "lifecycleState": "IN_PROGRESS", "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID", "startTime": "2023-11-05T21:05:45.622Z" }
Crea un partecipante utente finale
Per creare un partecipante utente finale:
- Chiama il metodo
create
dalla risorsaparticipants
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_ID: il tuo ID conversazione
Fornisci l'ID conversazione e "END_USER" per il campo del ruolo come segue.
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants
Corpo JSON della richiesta:
{ "role": "END_USER", }
All'interno della risposta JSON, il segmento di percorso dopo participants
contiene il nuovo ID partecipante utente finale. La risposta JSON dovrebbe essere simile alla seguente:
{ "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/USER_PARTICIPANT_ID", "role": "END_USER" }
Crea un partecipante agente umano
Per creare un partecipante agente umano:
- Chiama il metodo
create
dalla risorsaparticipants
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_ID: il tuo ID conversazione
Fornisci l'ID conversazione e il ruolo HUMAN_AGENT
per il campo nel seguente modo.
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants
Corpo JSON della richiesta:
{ "role": "HUMAN_AGENT", }
All'interno della risposta JSON, il segmento di percorso dopo participants
contiene il nuovo ID partecipante operatore umano. La risposta dovrebbe essere simile alla seguente:
{ "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/AGENT_PARTICIPANT_ID", "role": "HUMAN_AGENT" }
Analizza messaggio
Un generatore può anche analizzare un messaggio all'interno di una conversazione. Durante una conversazione, puoi aggiungere un messaggio e il generatore può analizzare sia i messaggi dell'agente umano sia quelli dell'utente finale con il metodo analyzeContent
della risorsa participants
.
Per aggiungere e analizzare un messaggio di un operatore umano, segui questi passaggi.
- Chiama il metodo
analyzeContent
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_ID: il tuo ID conversazione
- PARTICIPANT_ID: il tuo ID partecipante operatore umano
Fornisci l'ID conversazione e l'ID partecipante agente umano. La richiesta deve includere qualcosa di simile a quanto segue:
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
Corpo JSON della richiesta:
{ "textInput": { "text": "Bonjour, ici le service client d'ABC fishing, comment puis-je vous aider aujourd'hui ?", "languageCode": "en-US" } }
Dovresti ricevere una risposta JSON simile alla seguente:
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "Bonjour, ici le service client d'ABC fishing, comment puis-je vous aider aujourd'hui ?", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "HUMAN_AGENT", "createTime": "2023-02-13T00:01:30.683Z" }, "humanAgentSuggestionResults": [{ "generateSuggestionsResponse": { "generatorSuggestionAnswers": [{ "generatorSuggestion": { "freeFormSuggestion": { "response": "Hello, this is ABC fishing customer service, how can I help you today?" } }, "sourceGenerator": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID", "answerRecord": "projects/PROJECT_ID/locations/global/answerRecords/ANSWER_RECORD_ID" }], "latestMessage": "projects/PROJECT_ID/locations/global/conversations/CONVERSATION_ID/messages/MESSAGE_ID" } }] }
Per aggiungere e analizzare un messaggio per l'utente finale
- Chiama il metodo
analyzeContent
. Non effettuare chiamate duplicate al metodo se è stato chiamato per altre funzionalità di Agent Assist. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_ID: il tuo ID conversazione
- PARTICIPANT_ID: il tuo ID partecipante operatore umano
Fornisci l'ID conversazione e l'ID partecipante agente umano. La richiesta deve includere qualcosa di simile a quanto segue:
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
Corpo JSON della richiesta:
{ "textInput": { "text": "Hi", "languageCode": "en-US" } }
Dovresti ricevere una risposta JSON simile alla seguente:
{ "message": { "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID", "content": "Hi", "languageCode": "en-US", "participant": "PARTICIPANT_ID", "participantRole": "END_USER", "createTime": "2020-02-13T00:07:35.925Z" }, "humanAgentSuggestionResults": [{ "generateSuggestionsResponse": { "generatorSuggestionAnswers": [{ "generatorSuggestion": { "freeFormSuggestion": { "response": "Salut" } }, "sourceGenerator": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID", "answerRecord": "projects/PROJECT_ID/locations/global/answerRecords/ANSWER_RECORD_ID" }], "latestMessage": "projects/PROJECT_ID/locations/global/conversations/CONVERSATION_ID/messages/MESSAGE_ID" } }] }
Quando una conversazione è completata e non è stato utilizzato analyzeContent
, puoi utilizzare il metodo batchCreate
della risorsa messaggi per importare e analizzare i messaggi storici della conversazione.
Visualizzare i suggerimenti
Il generatore fornisce anche suggerimenti in risposta a un messaggio in qualsiasi momento di una conversazione. Per impostazione predefinita, i suggerimenti riguardano l'ultimo messaggio di uno dei partecipanti. Puoi anche specificare il messaggio per il quale vuoi ricevere i suggerimenti. Ricevi suggerimenti per impostazione predefinita o utilizzando una delle seguenti risorse.
Utilizzare i suggerimenti inclusi
La risposta di analyzeContent
include dei suggerimenti. Il generatore attivato produce questi suggerimenti. La richiesta JSON deve includere un elemento simile al seguente:
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent
Corpo JSON della richiesta:
{ "textInput": { "text": "I want to reserve a room.", "languageCode": "en-US" } }
Utilizzare la risorsa suggestions
Un altro approccio per ricevere suggerimenti è seguire questi passaggi.
- Chiama il metodo
generate
dalla risorsasuggestions
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- CONVERSATION_ID: il tuo ID conversazione
- PARTICIPANT_ID: il tuo ID partecipante operatore umano
Fornisci l'ID conversazione, l'ID messaggio più recente di uno dei partecipanti e gli eventi trigger. Se il campo ID messaggio non è impostato, i suggerimenti si basano per impostazione predefinita sull'ultimo messaggio di uno dei partecipanti. Verrà quindi avviato il generatore associato all'evento trigger. La richiesta JSON deve includere un elemento simile al seguente:
Metodo HTTP e URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_IDsuggestions:generate
Corpo JSON della richiesta:
{ "latestMessage": "projects/PROJECT_ID/conversations/CONVERSATION_IDmessages/Message_ID", "triggerEvents": [ "END_OF_UTTERANCE" ] }
Utilizzare la risorsa statelessSuggestion
Un ultimo approccio per ricevere suggerimenti è seguire questi passaggi.
- Chiama il metodo
generate
dalla risorsastatelessSuggestion
. - Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto
- LOCATION_ID: il tuo ID località
Fornisci il generatore, i messaggi della conversazione e i riferimenti contestuali contenenti i dati inseriti. I dati importati sostituiscono i parametri nell'istruzione del generatore. La richiesta JSON dovrebbe essere simile alla seguente:
Metodo HTTP e URL:
https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/statelessSuggestion:generate
Corpo JSON della richiesta:
{ "generator": { "description": "Translation", "triggerEvent": "END_OF_UTTERANCE", "freeFormContext": { "text": "Read the conversation between agent and customer, and the last utterance. Output the last utterance from customer by following these instructions: - If the last utterance from AGENT, output the utterance by translating it to English. - If the last utterance from CUSTOMER, output the utterance by translating it to French. - Specific brand names and technical terms specified under 'GLOSSARY' section, such as 'Google Home,' should remain unchanged as per the glossary guidelines. # GLOSSARY ${parameter:glossary} # CONVERSATION: ${parameter:transcript} # LAST UTTERANCE: ${parameter:transcript_last_utterance} # OUTPUT: " } }, "contextReferences": { "glossary": { "contextContents": { "content": "east one", "contentFormat": "PLAIN_TEXT" } } }, "conversationContext": { "messageEntries": [ { "text": "hi", "languageCode": "en-US", "role": "END_USER", "createTime": { "seconds": "1400000000", "nanos": "10000000" } }, { "text": "Bonjour, comment puis-je vous aider aujourd\\'hui ?", "languageCode": "en-US", "role": "HUMAN_AGENT", "createTime": { "seconds": "1400000010", "nanos": "10000000" } } ] }, "triggerEvents": [ "END_OF_UTTERANCE" ] }
Limiti di quota
Puoi visualizzare le quote e i limiti per Agent Assist nella pagina delle quote di Dialogflow. La creazione del tuo assistente AI generativa include i seguenti limiti di quota:
Nome | Descrizione | Limite |
---|---|---|
Operazioni di Generator Manager al minuto (per regione) | Limite al numero di operazioni di gestione dei generatori che possono essere eseguite ogni minuto, ad esempio la creazione, l'elenco o l'eliminazione dei generatori. | 300 |
Generatori (per regione) | Limite al numero massimo di generatori che puoi creare in un singolo progetto. | 200 |
Operazioni di suggerimento del generatore al minuto per tipo di modello (per regione) | Limite al numero di richieste di operazioni di suggerimento del generatore che puoi ricevere ogni minuto per ogni tipo di modello. | 10 |