VoiceBooker

Prompt / Istruzioni

I prompt indicano generalmente al LLM cosa fare dopo. Ad esempio, chiedere all’utente informazioni specifiche come nome, numero di assicurazione, indirizzo/contatti, ecc.

I prompt possono essere statici o dinamici.

Prompt statici / testo semplice

Esempio:

Saluta il chiamante e chiedi il suo nome.

Nei prompt statici puoi accedere a tutte le variabili dello state usando {{variableName}}.

Esempio: Le seguenti informazioni sono memorizzate nello state:

{
    companyName: "claiverly GmbH"
}

Prompt che usa queste informazioni:

Saluta il chiamante con la seguente frase: "Benvenuto in {{companyName}}".

Prompt dinamici / programmatici

A volte è necessario includere nel prompt informazioni dinamiche provenienti da una fonte esterna o dallo state e non statiche.

Esempio: La tua applicazione ha bisogno della data e dell’ora correnti. Gli LLM sono addestrati fino a un certo momento nel tempo e sono basati sul testo, quindi non conoscono la data e l’ora attuali. Se l’applicazione dipende da informazioni temporali, ad es. per la pianificazione di appuntamenti, il LLM può essere informato della data e dell’ora correnti.

Esempio di come fornire la data e l’ora correnti al LLM:

function prompt(params) {
    return ({ "prompt": "Today is " + new Date().toLocaleString() });
}

Esempio di come includere la temperatura attuale a Berlin Alexanderplatz tramite una richiesta webhook nel prompt:

function prompt(params) {
    const temperature = webhook("https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m", {}, {method: "get"});
    return ({ "prompt": `The temperature in Berlin is right now: ${JSON.stringify(temperature)}`});
}

Come scrivere prompt efficaci

Un buon prompt descrive chiaramente obiettivo, limiti e comportamento atteso dell’assistente. Inizia dal risultato desiderato e aggiungi solo il contesto e le regole necessari. Il prompting è iterativo: prova una prima versione con conversazioni realistiche, controlla il risultato e modifica l’istruzione che ha causato il comportamento indesiderato.

Struttura il prompt

Dividi il prompt in sezioni brevi e con titoli chiari: Ruolo, Obiettivo, Contesto, Regole della conversazione, Strumenti, Limiti, Fallback ed Esempi. In un bot multi-stage, mantieni ogni stage concentrato su uno stato della conversazione e indica chiaramente quando passare allo stage successivo.

## Ruolo
Sei il receptionist cordiale di uno studio dentistico.

## Obiettivo
Aiuta i chiamanti a prenotare, modificare o annullare un appuntamento.

## Regole
- Saluta il chiamante e chiedi come puoi aiutare.
- Fai una sola domanda alla volta.
- Usa un linguaggio naturale adatto a una conversazione telefonica.
- Ripeti data e ora e chiedi conferma prima di prenotare.

## Limiti
- Non inventare mai disponibilità, prezzi o dati dei pazienti.
- Se manca un’informazione, dichiaralo e proponi un trasferimento.

Descrivi con precisione il comportamento

Evita istruzioni vaghe come “sii utile”. Descrivi cosa deve fare l’assistente, quando e con quale risultato. Definisci esplicitamente i casi di dati mancanti, nessun risultato, errore di uno strumento, disaccordo del chiamante o richiesta fuori ambito.

Quando il chiamante vuole annullare un appuntamento:
1. Chiedi la data e il nome del chiamante.
2. Cerca l’appuntamento corrispondente.
3. Ripeti i dettagli dell’appuntamento.
4. Chiedi: “Devo annullare questo appuntamento?”
5. Chiama `cancel_appointment` solo dopo la conferma.

Progetta per le conversazioni vocali

  • Mantieni le risposte brevi e fai una domanda alla volta.
  • Usa frasi brevi ed evita liste lunghe, URL e termini tecnici.
  • Conferma nomi, date, orari, indirizzi e importi importanti.
  • Specifica come leggere numeri, date e indirizzi email.
  • Definisci come gestire interruzioni e risposte incerte.
  • Indica lingua, tono, formalità e terminologia.
Parla in italiano formale. Usa l’orario a 24 ore. Dopo aver ricevuto un numero di telefono,
ripetilo cifra per cifra e chiedi conferma. Se non hai capito, fai una breve domanda invece di
indovinare.

Rendi prevedibili le chiamate agli strumenti

Descrivi lo scopo e il momento di ogni strumento, i prerequisiti, le conferme necessarie e il comportamento dopo un successo o un errore. Prompt e descrizione dello strumento non devono contraddirsi. Per bot single- o multi-stage, specifica quando chiamare strumenti, cambiare stage, inviare messaggi, prenotare o trasferire la chiamata. Consulta strumenti e funzioni.

Usa contesto ed esempi

Inserisci i fatti rilevanti nel prompt oppure fornisci tramite state, knowledge base o prompt dinamico. Indica quale fonte usare e cosa fare se l’informazione manca. Non inserire mai segreti o credenziali nei prompt. Gli esempi devono essere brevi, realistici, vari e coerenti con le regole di produzione.

Evita i problemi comuni

  • Rimuovi o correggi le istruzioni contraddittorie.
  • Dividi responsabilità non correlate tra più stage o assistenti.
  • Definisci fallback per dati mancanti, errori, silenzio e trasferimenti.
  • Elimina le regole che non influenzano il risultato.
  • Specifica lunghezza, formato, lingua e tono.
  • Indica all’assistente di chiedere chiarimenti invece di indovinare.

Testa e migliora in modo sistematico

Definisci prima i criteri di successo. Testa casi normali, interruzioni, risposte ambigue, dati mancanti, errori degli strumenti e trasferimenti. Esamina trascrizioni e chiamate di funzione e modifica una sola parte alla volta. La documentazione sul debugging spiega come controllare state, stack, funzioni e webhook.

In questa pagina