Chiamare un'estensione personalizzata
Un'estensione è un'integrazione con un servizio esterno. Chiamando un'estensione da un'azione, l'assistente AI può inviare richieste al servizio esterno e ricevere dati di risposta da utilizzare nella conversazione.
Ad esempio, si può usare un'estensione per interagire con un sistema di ticketing o di gestione delle relazioni con i clienti (CRM), oppure per recuperare dati in tempo reale come i tassi ipotecari o le condizioni meteorologiche. I dati di risposta dell'estensione sono quindi disponibili come variabili di azione, che l'assistente AI può utilizzare nella conversazione.
Per informazioni su come creare un'estensione personalizzata, vedere Creazione di un'estensione personalizzata.
Chiamare l'estensione da un passo
Per chiamare un'estensione personalizzata da un'azione:
Nell'editor delle azioni, creare o aprire il passo da cui si vuole chiamare l'estensione.
Facoltativo: nel campo " Assistant says", digitare un messaggio da mostrare al cliente prima che venga chiamato l'interno (ad esempio, "
Please wait while I retrieve your account balance...).L'output di questo passaggio viene inviato al canale con la variabile di contesto globale '
skip_user_inputimpostata su 'true. Questa variabile indica al canale di visualizzare il messaggio, ma non di richiedere una risposta al cliente. Invece, il canale invia un messaggio vuoto, consentendo all'assistente AI di procedere con la chiamata all'interno.Tutte le integrazioni di canale integrate (come la chat web) rispettano la variabile di contesto '
skip_user_input. Se si utilizza l'API per sviluppare un client personalizzato, è responsabilità dell'utente includere il controllo logico di questa variabile. Per ulteriori informazioni, vedere Elaborazione dell'input dell'utente.Nell'editor dei passi, fare clic su E poi.
Fare clic su Usa un'estensione.
Nella finestra di impostazione dell'estensione, specificare le seguenti informazioni:
Nel campo Estensione, selezionare l'interno da chiamare.
Nel campo Operazione, selezionare l'operazione che si desidera eseguire. (Un'operazione è un metodo o una funzione supportata dall'estensione)
Specificare i valori per ciascuno dei parametri di ingresso richiesti. Un parametro è un valore di input inviato a un'operazione, come l'ID di un record cliente che si desidera recuperare o la località da utilizzare per le previsioni del tempo.
Per assegnare un valore a un parametro, fare clic sul campo di immissione del valore. È quindi possibile selezionare dall'elenco delle variabili disponibili o scrivere un'espressione per specificare il valore.

Ogni parametro ha un tipo di dati (come numero o stringa). La variabile selezionata deve essere compatibile con il tipo di dati del parametro; per ulteriori informazioni, vedere Variabili compatibili per i parametri.
È necessario specificare i valori di tutti i parametri richiesti prima di poter procedere.
Se si desidera specificare un valore per i parametri opzionali, fare clic su Parametri opzionali. È possibile ripetere questa procedura per ogni parametro opzionale che si desidera utilizzare.
Fare clic su Applica. (Se il pulsante Applica non è disponibile, verificare che siano stati specificati i valori di tutti i parametri richiesti)
La sezione E poi dell'editor dei passi mostra ora una panoramica della chiamata all'interno:

Se è necessario apportare modifiche, fare clic su " Modifica dell'estensione per riaprire la finestra " Configurazione dell'estensione.
Variabili compatibili per i parametri
Per passare un valore di parametro di ingresso per un'operazione, è necessario selezionare una variabile di azione o di sessione compatibile.
Una variabile di azione contiene un valore basato sulla risposta del cliente in una fase precedente. Una variabile di sessione può avere un valore basato sulla risposta del cliente o un valore definito da un'espressione. (Per ulteriori informazioni sulle variabili di azione e sulle variabili di sessione, vedere Uso delle variabili per gestire le informazioni di conversazione)
Quando si assegna un valore a un parametro, la variabile scelta deve essere compatibile con il tipo di dati del parametro. (Ad esempio, a un parametro numero deve essere assegnato un valore numerico e non un testo)
La tabella seguente mostra i possibili tipi di risposta del cliente e il tipo di dati del parametro compatibile con ciascuno di essi.
| Tipo di risposta del cliente | Tipi di dati compatibili | Note |
|---|---|---|
| opzioni | string |
Un'opzione selezionata viene sempre trattata come una stringa, anche se si tratta di un valore numerico. |
| numero | numberinteger |
Un numero in virgola mobile passato come valore del parametro 'integer potrebbe causare un errore, a seconda del comportamento dell'API REST. |
| data | string |
Le date sono rese come 'YYYY-MM-DD. |
| ora | string |
Gli orari sono resi come " HH:MM:SS in formato 24 ore, convertito nel fuso orario dell'utente. |
| Valuta | numberinteger |
|
| Percentuale | numberinteger |
Un valore percentuale viene passato come un numero intero (quindi " 75% diventa " 75). |
| Testo libero | string |
|
| Regex | string |
Array
Oltre ai tipi di risposta del cliente supportati, una variabile può contenere anche un valore di array. Se si desidera passare un parametro di tipo array a un'operazione, è necessario creare una variabile di sessione array:
Creare una nuova variabile di sessione, utilizzando Imposta valori variabili nell'editor dei passi o dalla pagina Variabili > Create dall'utente. (Per ulteriori informazioni su come creare una variabile di sessione, vedere Creazione di una variabile di sessione)
Nel campo Tipo, selezionare Qualsiasi.
Nel campo Valore iniziale, fare clic sulla levetta Usa espressione per attivarla. Immettere un'espressione che definisce un valore di matrice (ad esempio '
["New York", "London", "Tokyo"], '[123, 456, 789]o '[]).
Poiché questa variabile contiene un valore di array, le azioni possono utilizzare espressioni con metodi di array per accedere o modificare i valori dell'array. Ad esempio, si potrebbe voler creare una variabile che inizialmente contenga un array vuoto ([]) e poi utilizzare il metodo " add() per costruire un elenco un elemento alla volta. Per ulteriori informazioni sui metodi di matrice che si possono usare nelle espressioni, vedere Metodi di matrice.
È ora possibile selezionare questa variabile come valore per un parametro che richiede una matrice.
Accesso ai dati di risposta dell'estensione
Dopo aver chiamato un'estensione, i valori dei dati di risposta vengono memorizzati in speciali variabili di azione a cui è possibile accedere nei passaggi successivi.
Si può accedere a queste variabili nello stesso modo in cui si accede alle altre variabili di azione. Si può fare riferimento al testo dell'Assistente, valutarlo come parte di una condizione di passo o assegnarlo a una variabile di sessione, in modo che altre azioni possano accedervi. Le variabili di risposta sono visualizzate nell'elenco delle variabili disponibili, classificate in base al nome dell'estensione e al passo da cui è stata richiamata:

Ogni chiamata a un interno crea una serie separata di variabili di risposta. Se l'azione richiama lo stesso interno più volte da passi diversi, assicurarsi di selezionare le variabili dal passo corretto.
Ogni variabile rappresenta un valore del corpo della risposta. Per facilitare l'accesso a questi valori, i dati vengono estratti da oggetti complessi e annidati e mappati su singole variabili di risposta. Il nome di ciascuna variabile riflette la sua posizione all'interno del corpo della risposta (ad esempio, " body.name o " body.customer.address.zipcode).
Ad esempio, questa fase d'azione utilizza un'espressione per controllare la proprietà 'availability in una risposta dell'estensione:

Se una variabile di risposta contiene un array, è possibile scrivere un'espressione che utilizza i metodi dell'array per accedere agli elementi dell'array. Ad esempio, si può usare il metodo 'contains() in una condizione di passo per verificare se l'array contiene un particolare valore, oppure il metodo 'join() per formattare i dati dell'array come una stringa da includere nella risposta dell'assistente AI. Per ulteriori informazioni sui metodi di matrice, vedere Metodi di matrice.
Verifica del successo o del fallimento
Si potrebbe desiderare che l'assistente AI sia in grado di gestire gli errori che si verificano quando si chiama un'estensione personalizzata. È possibile farlo controllando la variabile di risposta 'Ran successfully che viene restituita insieme alla risposta della chiamata all'interno. Questa variabile è un valore booleano (true o " false).
Se si definiscono condizioni di passaggio che controllano la variabile " Ran successfully, è possibile creare passaggi che consentono all'assistente AI di rispondere in modo diverso a seconda che la chiamata all'interno sia andata a buon fine. (Per ulteriori informazioni sulle condizioni di passaggio, vedere Condizioni di passaggio)
L'esempio seguente mostra una condizione di passo che controlla se un'estensione è fallita nel passo 3. Utilizzando questa condizione, è possibile creare un passaggio che informi il cliente che si è verificato un errore e che magari offra la possibilità di collegarsi a un agente per ottenere maggiore assistenza.

Condizionamento in base allo stato dell HTTP
Oltre alla variabile " Ran successfully ", potresti anche voler creare una condizione di passaggio basata sullo stato " HTTP " della risposta. In questo modo, è possibile creare passaggi che gestiscono la situazione in modo diverso a seconda della causa del guasto. Ad esempio, se la chiamata non è andata a buon fine a causa di un errore di timeout ( HTTP, stato 408), potrebbe essere opportuno riprovare.
Esistono molti possibili codici di stato dell' HTTP, e metodi diversi utilizzano codici di stato diversi per indicare vari tipi di successo o fallimento. Per condizionare lo stato dell' HTTP, è necessario sapere quali codici di stato dell' HTTP e restituisce il servizio esterno e in quali circostanze. Questi codici di stato sono tipicamente specificati nel documento " OpenAPI " che descrive l'API esterna.
Per creare una condizione di passaggio basata sul codice di stato dell' HTTP, procedere come segue:
Per il valore da testare, fare clic su Espressione.
Nel campo dell'espressione, digitare un segno di dollaro (
$) per visualizzare l'elenco delle variabili disponibili.Selezionare qualsiasi variabile che sia un valore di risposta dell'estensione. (Non importa quale variabile si seleziona, purché sia una variabile di risposta dell'estensione).
L'espressione viene aggiornata automaticamente per mostrare un riferimento alla variabile selezionata, nel formato '
${step_xxx_result_y.body.variablename}. Ad esempio, se si è selezionata una variabile di risposta chiamata 'body.id, il riferimento potrebbe essere '${step_596_result_1.body.id}.All'interno delle parentesi graffe, (
{}), modificare questo riferimento per rimuovere '.body.variablename. Dovrebbe rimanere qualcosa come '${step_596_result_1}.Dopo la parentesi graffa di chiusura (
}), aggiungere ".status. Il riferimento risultante identifica il codice di stato restituito dalla chiamata all'interno (ad esempio, "${step_596_result_1}.status).Per ulteriori informazioni sulla scrittura di espressioni, vedere Scrittura di espressioni.
Completate l'espressione aggiungendo un operatore e un valore di confronto, in modo che l'espressione sia valutata come un valore booleano (vero/falso). Ad esempio, l'espressione seguente verifica lo stato 408 dell' HTTP, che indica un errore di timeout:
${step_549_result_1}.status==408
Errori di debug per l'estensione personalizzata
Se le chiamate a un'estensione non vanno a buon fine, è possibile eseguire il debug del problema visualizzando informazioni dettagliate su ciò che viene inviato e restituito dall'API del sistema. Per farlo, si può utilizzare l'Inspector nel riquadro Anteprima:
Passare alla pagina Azioni o all'editor delle azioni e fare clic su Anteprima per aprire il riquadro Anteprima.
Non è possibile accedere all'Inspector dall'anteprima dell'assistente AI nella pagina Anteprima, che mostra solo ciò che vedrebbe un cliente. Utilizzate invece la funzione di anteprima che fa parte della pagina Azioni, che consente di accedere a informazioni aggiuntive.
Interagite con il vostro assistente AI come farebbe un cliente.
Ogni volta che si chiama un'estensione, il riquadro di anteprima mostra un messaggio che consente di accedere a informazioni dettagliate:
Fare clic su Ispeziona per visualizzare i dettagli della chiamata all'interno.
È inoltre possibile fare clic sull'icona "
" per mostrare o nascondere l'Ispettore. Tuttavia, è necessario fare clic su Ispeziona nel riquadro di anteprima per visualizzare le informazioni su una particolare chiamata a un interno.La scheda Panoramica dell'Inspector mostra le seguenti informazioni su una chiamata a un interno:
Opzione di debug Descrizione Estensione Il nome dell'estensione, come specificato nelle impostazioni dell'estensione. Operazione L'operazione che è stata chiamata. Stato Il codice di stato " HTTP " dalla risposta. Questo codice può aiutare a determinare se il servizio esterno restituisce un errore. Parametri di Richiesta I parametri di input inviati all'API del sistema come parte della richiesta. Proprietà risposta I valori di tutte le proprietà incluse nella risposta dell'API di sistema. Questi sono i valori che vengono mappati nelle variabili di azione al termine della chiamata all'interno. Nelle tabelle dei parametri della richiesta e delle proprietà della risposta, i nomi lunghi delle proprietà potrebbero essere troncati per mostrare solo l'ultima parte del percorso JSON. Per visualizzare il percorso completo e il nome della proprietà, passare il puntatore del mouse sul nome della proprietà nella tabella.
Fare clic sulla scheda Avanzate nell'ispettore dell'estensione se si desidera visualizzare i dati grezzi di richiesta e risposta:
- La richiesta viene mostrata come un comando cURL, che può essere eseguito dal prompt dei comandi o importato in uno strumento come Postman. (Per motivi di sicurezza, il contenuto dell'intestazione "
Authorizationnon viene incluso) - La risposta viene mostrata come i dati JSON completi restituiti dall'API del sistema.
- La richiesta viene mostrata come un comando cURL, che può essere eseguito dal prompt dei comandi o importato in uno strumento come Postman. (Per motivi di sicurezza, il contenuto dell'intestazione "
Debug dei fallimenti per la ricerca conversazionale o le azioni basate sulle abilità
Se le chiamate alla ricerca conversazionale o alle azioni basate sulle abilità non vanno a buon fine, è possibile eseguire il debug del problema consultando le informazioni dettagliate su ciò che viene inviato e restituito dall'API del sistema.
L'ispettore di ricerca conversazionale viene visualizzato solo quando la ricerca conversazionale è abilitata nell'integrazione di ricerca. Se si utilizza l'integrazione di ricerca del servizio personalizzato, è necessario utilizzare solo la ricerca lato server quando si configura l'integrazione di ricerca. La ricerca lato client non è supportata nell'ispettore di ricerca conversazionale.
Per visualizzare le informazioni dettagliate per analizzare il problema, utilizzare l'Inspector nel riquadro Anteprima:
Andare alla pagina Azioni o, nell'editor delle azioni, fare clic su Anteprima per aprire il riquadro Anteprima.
Non è possibile accedere all'Inspector dall'anteprima dell'assistente AI nella pagina Anteprima. Utilizzate invece la funzione di anteprima che fa parte della pagina Azioni, che consente di accedere a informazioni aggiuntive.
Interagite con il vostro assistente AI come farebbe un cliente.
Ogni volta che viene richiamata un'estensione, il riquadro di anteprima mostra un messaggio per accedere alle informazioni dettagliate: è anche possibile fare clic sull'icona "
" per mostrare o nascondere l'ispettore delle estensioni. Fare clic su Ispeziona nel riquadro di anteprima per visualizzare le informazioni su una particolare chiamata all'integrazione di ricerca.Utilizzare la scheda Panoramica per individuare i motivi del fallimento delle chiamate alla ricerca conversazionale.
Prima di conoscere i campi visualizzati nella scheda Panoramica, è necessario comprendere le due fasi dell'estensione di ricerca.
- Fase di recupero
- Rappresenta la fase di ricerca iniziale in cui viene chiamato un motore di ricerca di documenti esterno per recuperare l'insieme iniziale di risultati.
- Fase di generazione delle risposte
- Rappresenta la fase in cui i dati vengono recuperati durante la fase di recupero e vengono inviati a un LLM per generare una risposta leggibile per l'utente.
La scheda Panoramica dell'Inspector mostra le seguenti informazioni sulla chiamata all'integrazione di ricerca.
Opzione di debug Descrizione Estensione Il nome dell'estensione, come specificato nelle impostazioni dell'estensione. Indice Il nome dell'indice Elasticsearch usato dalla ricerca, visibile solo quando l'estensione della ricerca è configurata per usare Elasticsearch. Id progetto L'ID del progetto utilizzato da IBM Watson® Discovery durante la fase di ricerca. Questo campo è visibile solo quando si configura l'estensione di ricerca per utilizzare IBM Watson® Discovery. Interroga La query utilizzata dal sistema per avviare la ricerca sul motore dei documentiElasticsearch, IBM Watson® Discovery o servizio personalizzato lato server). Il valore di questo campo riflette la query riscritta dal sistema. Query originale La query attraverso la quale l'utente ha avviato la ricerca. Questo campo è visibile solo quando il sistema riscrive la query quando è abilitata la ricerca conversazionale multigiro. Filtro risultati personalizzato Mostra il filtro dei risultati personalizzato, se fornito dal trigger di ricerca, che ha attivato la ricerca conversazionale. Questo campo potrebbe non comparire sempre nelle risposte. Tipo di LLM L'LLM che è stato chiamato durante la fase di generazione delle risposte. Questo valore è watsonx.ai. Per saperne di più sulla configurazione di LLM nel tuo assistente AI, vedi Base LLM. Modello Il modello utilizzato dal LLM di base durante la fase di generazione delle risposte della ricerca. Motivo della chiusura del flusso Fornisce il motivo per cui il flusso è terminato o è stato chiuso, con un valore corrispondente nell'interfaccia utente. Questo campo è visibile solo quando si attiva lo streaming nella Web Chat. Conteggio dei token di ingresso LLM Indica il numero di token nella richiesta che è stata inviata al LLM nella fase di generazione della risposta della ricerca. Conteggio dei token generati da LLM Indica il numero di token nella risposta con cui il LLM risponde, nella fase di generazione della risposta della ricerca. Risposta IDK Questo campo è visibile solo quando la risposta alla ricerca si risolve in una risposta IDK (I don't know). Motivo IDK Il motivo per cui una risposta di ricerca è stata risolta dal sistema con una risposta IDK (I don't know) viene mostrato con il valore corrispondente. Frase di apertura del grilletto IDK Il campo mostra la frase di apertura standard rilevata che ha innescato una risposta IDK (non so), visibile solo quando il motivo IDK è dovuto a questa frase. Frase di innesco IDK Il campo visualizza la frase di attivazione rilevata che ha causato una risposta IDK (non so), visibile solo quando il motivo IDK è dovuto a questa frase. Tempo totale di ritorno Il tempo totale impiegato dal sistema per completare l'esecuzione della ricerca conversazionale. Tempo di ricerca Il tempo impiegato dal sistema per chiamare il motore di ricerca e recuperare i risultati nella fase di recupero della ricerca. Tempo di generazione delle risposte Il tempo impiegato dal sistema per completare la fase di generazione delle risposte della ricerca. Soglia di confidenza Un valore numerico che rappresenta la soglia di confidenza della ricerca, nota anche come Tendenza a dire "Non lo so" nella configurazione dell'assistente AI. Estrattività Il punteggio riflette la quantità di risposte citate direttamente dalle fonti. Un punteggio più alto indica una citazione più diretta, mentre un punteggio più basso indica una riformulazione della fonte o la mancanza di supporto alla fonte. Fiducia nel recupero Il valore di confidenza indica quanto il sistema è sicuro dei risultati della ricerca. Se è al di sotto della soglia, il sistema risponde con IDK e il motivo Recupero affidabilità troppo basso. Fiducia nella risposta Il valore di confidenza indica la certezza del sistema rispetto alla risposta generata. Se è inferiore alla soglia, il sistema risponde con IDK e il motivo " Response confidence too low.La scheda Avanzate mostra le seguenti informazioni sulla chiamata all'integrazione di ricerca.
Opzione di debug Descrizione Richiesta cURL Il comando cURL utilizzato per replicare la richiesta al motore di ricerca nella fase di recupero della ricerca. Il comando cURL non include alcuna intestazione di autenticazione o dettagli correlati. È possibile includere le informazioni nel comando. Risposta JSON La risposta JSON grezza che il sistema riceve dal motore di ricerca nella fase di recupero della ricerca. Risultati della ricerca I risultati della ricerca che vengono inviati all'LLM per la generazione delle risposte.
Riconfigurazione di un'estensione mancante
Un'estensione potrebbe diventare non disponibile se qualcuno la rimuove dall'assistente AI nella pagina delle integrazioni, oppure se l'azione viene esportata e poi importata in un assistente AI diverso in cui l'estensione richiesta non è configurata. In questo caso, qualsiasi azione che richiama l'estensione non è più valida.
Per risolvere il problema, procedere come segue:
Se necessario, ricreare l'estensione utilizzando la stessa specifica OpenAPI usata in precedenza. (Per ulteriori informazioni, vedere Creazione di un'estensione personalizzata)
Assicurarsi che l'estensione sia stata aggiunta all'assistente AI. (Per ulteriori informazioni, vedere Aggiunta di un'estensione all'assistente)
Nell'editor delle azioni, modificare la fase dell'azione che chiama l'interno e verificare se la chiamata all'interno è configurata correttamente. Se l'assistente AI riconosce l'estensione richiesta, la configurazione dell'estensione viene ripristinata automaticamente.
Se viene visualizzato il messaggio '
Extension not fully configured, significa che AI assistant builder non ha trovato l'estensione richiesta. Fare clic su Modifica estensione.Nella finestra 'Configurazione dell'estensione, selezionare l'interno che si desidera chiamare.
Se il costruttore dell'assistente AI riconosce un'estensione disponibile che è stata costruita utilizzando lo stesso documento OpenAPI, appare un messaggio che suggerisce di selezionare questa estensione. Tuttavia, è possibile selezionare qualsiasi estensione disponibile.
Verificare che i valori corretti siano specificati nei campi Operazione e Parametri.
Fare clic su Applica.
Se si è selezionata un'estensione non identica a quella usata per costruire l'azione, potrebbe essere necessario modificare i passaggi successivi che accedono alle proprietà di risposta dell'estensione. Controllare tutti i passaggi successivi che fanno riferimento alle proprietà della risposta e verificare che i riferimenti siano ancora validi e corretti.