Prima di costruire con Claude

Decidere se utilizzare Claude per la chat di supporto

Ecco alcuni indicatori chiave che suggeriscono di utilizzare un LLM come Claude per automatizzare parti del processo di supporto clienti:
Claude eccelle nella gestione di un gran numero di domande simili in modo efficiente, liberando gli agenti umani per questioni più complesse.
Claude può rapidamente recuperare, elaborare e combinare informazioni da vaste basi di conoscenza, mentre gli agenti umani potrebbero aver bisogno di tempo per ricercare o consultare più fonti.
Claude può fornire supporto continuo senza affaticamento, mentre dotare di personale agenti umani per una copertura continua può essere costoso e impegnativo.
Claude può gestire improvvisi aumenti del volume di query senza la necessità di assumere e formare personale aggiuntivo.
Puoi istruire Claude a rappresentare costantemente il tono e i valori del tuo brand, mentre gli agenti umani potrebbero variare nei loro stili di comunicazione.
Alcune considerazioni per scegliere Claude rispetto ad altri LLM:
  • Dai priorità a conversazioni naturali e sfumate: La sofisticata comprensione del linguaggio di Claude consente conversazioni più naturali e consapevoli del contesto che sembrano più umane rispetto alle chat con altri LLM.
  • Ricevi spesso query complesse e aperte: Claude può gestire un’ampia gamma di argomenti e richieste senza generare risposte preconfezionate o richiedere una programmazione estensiva di permutazioni di espressioni dell’utente.
  • Hai bisogno di supporto multilingue scalabile: Le capacità multilingue di Claude gli permettono di impegnarsi in conversazioni in oltre 200 lingue senza la necessità di chatbot separati o processi di traduzione estensivi per ogni lingua supportata.

Definire l’interazione di chat ideale

Delinea un’interazione cliente ideale per definire come e quando ti aspetti che il cliente interagisca con Claude. Questo schema aiuterà a determinare i requisiti tecnici della tua soluzione. Ecco un esempio di interazione di chat per il supporto clienti di assicurazione auto:
  • Cliente: Avvia l’esperienza di chat di supporto
    • Claude: Saluta calorosamente il cliente e avvia la conversazione
  • Cliente: Chiede informazioni sull’assicurazione per la sua nuova auto elettrica
    • Claude: Fornisce informazioni pertinenti sulla copertura per veicoli elettrici
  • Cliente: Fa domande relative alle esigenze uniche per le assicurazioni di veicoli elettrici
    • Claude: Risponde con risposte accurate e informative e fornisce link alle fonti
  • Cliente: Fa domande fuori tema non correlate ad assicurazioni o auto
    • Claude: Chiarisce che non discute argomenti non correlati e riporta l’utente all’assicurazione auto
  • Cliente: Esprime interesse per un preventivo assicurativo
    • Claude: Fa una serie di domande per determinare il preventivo appropriato, adattandosi alle loro risposte
    • Claude: Invia una richiesta per utilizzare lo strumento API di generazione preventivi insieme alle informazioni necessarie raccolte dall’utente
    • Claude: Riceve le informazioni di risposta dall’uso dello strumento API, sintetizza le informazioni in una risposta naturale e presenta il preventivo fornito all’utente
  • Cliente: Fa domande di follow-up
    • Claude: Risponde alle domande di follow-up secondo necessità
    • Claude: Guida il cliente ai prossimi passi nel processo assicurativo e chiude la conversazione
Nell’esempio reale che scrivi per il tuo caso d’uso, potresti trovare utile scrivere le parole effettive in questa interazione in modo da poter anche avere un senso del tono ideale, della lunghezza della risposta e del livello di dettaglio che vuoi che Claude abbia.

Suddividere l’interazione in compiti unici

La chat di supporto clienti è una raccolta di più compiti diversi, dalla risposta alle domande al recupero di informazioni all’azione su richieste, racchiusi in una singola interazione cliente. Prima di iniziare a costruire, suddividi la tua interazione cliente ideale in ogni compito che vuoi che Claude sia in grado di eseguire. Questo assicura che tu possa istruire e valutare Claude per ogni compito, e ti dà un buon senso della gamma di interazioni che devi considerare quando scrivi casi di test.
I clienti a volte trovano utile visualizzare questo come un diagramma di flusso di interazione dei possibili punti di inflessione della conversazione a seconda delle richieste dell’utente.
Ecco i compiti chiave associati all’esempio di interazione assicurativa sopra:
  1. Saluto e guida generale
    • Salutare calorosamente il cliente e avviare la conversazione
    • Fornire informazioni generali sull’azienda e l’interazione
  2. Informazioni sui prodotti
    • Fornire informazioni sulla copertura per veicoli elettrici
      Questo richiederà che Claude abbia le informazioni necessarie nel suo contesto, e potrebbe implicare che sia necessaria un’integrazione RAG.
    • Rispondere a domande relative alle esigenze uniche di assicurazione per veicoli elettrici
    • Rispondere a domande di follow-up sul preventivo o sui dettagli dell’assicurazione
    • Offrire link alle fonti quando appropriato
  3. Gestione della conversazione
    • Rimanere in tema (assicurazione auto)
    • Reindirizzare domande fuori tema verso argomenti pertinenti
  4. Generazione di preventivi
    • Fare domande appropriate per determinare l’idoneità al preventivo
    • Adattare le domande in base alle risposte del cliente
    • Inviare informazioni raccolte all’API di generazione preventivi
    • Presentare il preventivo fornito al cliente

Stabilire criteri di successo

Lavora con il tuo team di supporto per definire criteri di successo chiari e scrivere valutazioni dettagliate con benchmark e obiettivi misurabili. Ecco i criteri e benchmark che possono essere utilizzati per valutare quanto con successo Claude esegue i compiti definiti:
Questa metrica valuta quanto accuratamente Claude comprende le richieste dei clienti su vari argomenti. Misura questo rivedendo un campione di conversazioni e valutando se Claude ha l’interpretazione corretta dell’intento del cliente, dei prossimi passi critici, di come appare una risoluzione di successo, e altro. Punta a un’accuratezza di comprensione del 95% o superiore.
Questo valuta quanto bene la risposta di Claude affronta la domanda o il problema specifico del cliente. Valuta un set di conversazioni e valuta la pertinenza di ogni risposta (usando valutazione basata su LLM per scala). Punta a un punteggio di pertinenza del 90% o superiore.
Valuta la correttezza delle informazioni generali sull’azienda e sui prodotti fornite all’utente, basate sulle informazioni fornite a Claude nel contesto. Punta al 100% di accuratezza in queste informazioni introduttive.
Traccia la frequenza e pertinenza di link o fonti offerti. Punta a fornire fonti pertinenti nell’80% delle interazioni dove informazioni aggiuntive potrebbero essere benefiche.
Misura quanto bene Claude rimane in tema, come il tema dell’assicurazione auto nel nostro esempio di implementazione. Punta al 95% delle risposte direttamente correlate all’assicurazione auto o alla query specifica del cliente.
Misura quanto con successo Claude determina quando generare contenuto informativo e quanto pertinente è quel contenuto. Ad esempio, nella nostra implementazione, staremmo determinando quanto bene Claude comprende quando generare un preventivo e quanto accurato è quel preventivo. Punta al 100% di accuratezza, poiché questa è informazione vitale per un’interazione cliente di successo.
Questo misura la capacità di Claude di riconoscere quando una query necessita intervento umano e di escalare appropriatamente. Traccia la percentuale di conversazioni correttamente escalate versus quelle che avrebbero dovuto essere escalate ma non lo sono state. Punta a un’accuratezza di escalation del 95% o superiore.
Ecco i criteri e benchmark che possono essere utilizzati per valutare l’impatto aziendale dell’impiego di Claude per il supporto:
Questo valuta la capacità di Claude di mantenere o migliorare il sentiment del cliente durante la conversazione. Usa strumenti di analisi del sentiment per misurare il sentiment all’inizio e alla fine di ogni conversazione. Punta a sentiment mantenuto o migliorato nel 90% delle interazioni.
La percentuale di richieste clienti gestite con successo dal chatbot senza intervento umano. Tipicamente punta a un tasso di deflection del 70-80%, a seconda della complessità delle richieste.
Una misura di quanto soddisfatti sono i clienti della loro interazione con il chatbot. Solitamente fatto attraverso sondaggi post-interazione. Punta a un punteggio CSAT di 4 su 5 o superiore.
Il tempo medio che il chatbot impiega per risolvere una richiesta. Questo varia ampiamente in base alla complessità dei problemi, ma generalmente, punta a un AHT inferiore rispetto agli agenti umani.

Come implementare Claude come agente di servizio clienti

Scegliere il modello Claude giusto

La scelta del modello dipende dai compromessi tra costo, accuratezza e tempo di risposta. Per la chat di supporto clienti, claude-opus-4-1-20250805 è adatto per bilanciare intelligenza, latenza e costo. Tuttavia, per istanze dove hai un flusso di conversazione con più prompt inclusi RAG, uso di strumenti e/o prompt di contesto lungo, claude-3-haiku-20240307 potrebbe essere più adatto per ottimizzare la latenza.

Costruire un prompt forte

Utilizzare Claude per il supporto clienti richiede che Claude abbia abbastanza direzione e contesto per rispondere appropriatamente, pur avendo abbastanza flessibilità per gestire un’ampia gamma di richieste clienti. Iniziamo scrivendo gli elementi di un prompt forte, iniziando con un prompt di sistema:
IDENTITY = """Sei Eva, un assistente AI amichevole e competente per Acme Insurance 
Company. Il tuo ruolo è accogliere calorosamente i clienti e fornire informazioni sulle 
offerte assicurative di Acme, che includono assicurazione auto e assicurazione auto 
elettrica. Puoi anche aiutare i clienti a ottenere preventivi per le loro esigenze assicurative."""
Mentre potresti essere tentato di mettere tutte le tue informazioni all’interno di un prompt di sistema come modo per separare le istruzioni dalla conversazione dell’utente, Claude funziona effettivamente meglio con la maggior parte del contenuto del prompt scritto all’interno del primo turno User (con l’unica eccezione del role prompting). Leggi di più su Dare a Claude un ruolo con un prompt di sistema.
È meglio suddividere prompt complessi in sottosezioni e scrivere una parte alla volta. Per ogni compito, potresti trovare maggiore successo seguendo un processo passo dopo passo per definire le parti del prompt che Claude avrebbe bisogno per fare bene il compito. Per questo esempio di supporto clienti assicurazione auto, scriveremo pezzo per pezzo tutte le parti per un prompt iniziando con il compito “Saluto e guida generale”. Questo rende anche il debug del tuo prompt più facile poiché puoi più rapidamente aggiustare parti individuali del prompt complessivo. Metteremo tutti questi pezzi in un file chiamato config.py.
STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme Auto Insurance: Il Tuo Compagno di Fiducia sulla Strada

Informazioni:
Ad Acme Insurance, comprendiamo che il tuo veicolo è più di un semplice mezzo di trasporto—è il tuo biglietto per le avventure della vita. 
Dal 1985, abbiamo creato polizze di assicurazione auto che danno ai conducenti la fiducia di esplorare, fare il pendolare e viaggiare con tranquillità.
Che tu stia navigando per le strade della città o intraprendendo viaggi attraverso il paese, Acme è lì per proteggere te e il tuo veicolo. 
Le nostre innovative polizze di assicurazione auto sono progettate per adattarsi alle tue esigenze uniche, coprendo tutto dai piccoli incidenti alle collisioni maggiori.
Con il servizio clienti pluripremiato di Acme e la risoluzione rapida dei sinistri, puoi concentrarti sulla gioia di guidare mentre noi ci occupiamo del resto. 
Non siamo solo un fornitore di assicurazioni—siamo il tuo co-pilota nei viaggi della vita.
Scegli Acme Auto Insurance e sperimenta la sicurezza che deriva da una copertura superiore e una cura genuina. Perché ad Acme, non assicuriamo solo la tua auto—alimentiamo le tue avventure sulla strada aperta.

Nota: Offriamo anche copertura specializzata per veicoli elettrici, assicurando che i conducenti di tutti i tipi di auto possano beneficiare della nostra protezione.

Acme Insurance offre i seguenti prodotti:
- Assicurazione auto
- Assicurazione auto elettrica
- Assicurazione per due ruote

Orari di lavoro: Lunedì-Venerdì, 9:00 - 17:00 EST
Numero servizio clienti: 1-800-123-4567
</static_context>
"""
Faremo poi lo stesso per le nostre informazioni sull’assicurazione auto e sull’assicurazione auto elettrica.
STATIC_CAR_INSURANCE="""
<static_context>
Copertura Assicurazione Auto:
Le polizze di assicurazione auto di Acme tipicamente coprono:
1. Copertura responsabilità civile: Paga per lesioni corporali e danni alla proprietà che causi ad altri.
2. Copertura collisione: Paga per danni alla tua auto in un incidente.
3. Copertura comprensiva: Paga per danni alla tua auto da incidenti non di collisione.
4. Copertura pagamenti medici: Paga per spese mediche dopo un incidente.
5. Copertura automobilista non assicurato/sottoassicurato: Ti protegge se sei colpito da un conducente con assicurazione insufficiente.

Le coperture opzionali includono:
- Rimborso auto a noleggio
- Assistenza stradale
- Sostituzione auto nuova
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Assicurazione Auto Elettrica:
La nostra assicurazione auto elettrica specializzata va oltre la copertura auto tradizionale, 
offrendo protezione su misura per il tuo investimento high-tech. Oltre alle coperture standard, offriamo:
- Protezione di costosi sistemi di batterie
- Copertura per attrezzature di ricarica domestica
- Adattamento al mondo in rapida evoluzione dei veicoli elettrici

Che tu stia guidando una Rivian, Nissan Leaf, Chevrolet Bolt, 
o qualsiasi altro veicolo elettrico, i nostri agenti competenti sono pronti a creare una polizza 
che ti dia la fiducia di goderti ogni miglio alimentato da elettroni.
</static_context>
"""
Ora che abbiamo il nostro contenuto statico, aggiungiamo almeno 4-5 interazioni “buone” di esempio per guidare le risposte di Claude. Questi esempi dovrebbero essere rappresentativi della tua interazione cliente ideale e possono includere guardrail, chiamate di strumenti, ecc.
EXAMPLES="""
Ecco alcuni esempi di come puoi interagire con i clienti:

<example 1>
H: Ciao, offrite assicurazione commerciale per piccole imprese?

A: Ah! Sfortunatamente, non offriamo assicurazione commerciale al momento. 
Tuttavia, forniamo una gamma di prodotti assicurativi personali inclusi assicurazione auto e assicurazione auto elettrica. 
Vorresti saperne di più su queste offerte?
</example 1>

<example 2>
H: Ciao, quali sono i vostri orari di lavoro?

A: I nostri orari di lavoro sono dal lunedì al venerdì, dalle 9:00 alle 17:00 EST. 
Se hai domande o hai bisogno di assistenza, sentiti libero di contattarci durante quegli orari. 
Come posso aiutarti oggi?
</example 2>

<example 3>
H: Sto cercando un'assicurazione auto. Cosa offre Acme?

A: Ottima scelta! Le polizze di assicurazione auto di Acme tipicamente includono:
- Copertura responsabilità civile: Ti protegge se sei colpevole in un incidente
- Copertura collisione: Paga per danni alla tua auto in un incidente
- Copertura comprensiva: Copre incidenti non di collisione come furto o vandalismo
- Copertura pagamenti medici: Paga per spese mediche dopo un incidente
- Copertura automobilista non assicurato/sottoassicurato: Ti protegge da conducenti con assicurazione insufficiente

Offriamo anche coperture opzionali come rimborso auto a noleggio, assistenza stradale e sostituzione auto nuova. 
Vorresti più dettagli su qualcuna di queste coperture, o hai domande specifiche sull'assicurazione del tuo veicolo?
</example 3>

<example 4>
H: Vorrei sentire della vostra assicurazione auto elettrica.

A: Certamente! La nostra assicurazione auto elettrica è appositamente progettata per soddisfare le esigenze uniche dei proprietari di veicoli elettrici. 
Oltre a tutte le coperture standard che offriamo per le auto normali, le nostre polizze per auto elettriche includono:

- Copertura batteria: Protezione contro danni o degrado del costoso sistema di batterie del tuo veicolo
- Pacchetto tecnologico: Copre riparazioni o sostituzione di elettronica avanzata e sistemi informatici di bordo
- Copertura stazione di ricarica: Protegge sia le attrezzature di ricarica domestiche che portatili
- Protezione cybersecurity: Copertura contro hacking o minacce digitali
- Assistenza stradale specializzata: Include traino con pianale per proteggere il sottoscocca del veicolo

Copriamo un'ampia gamma di veicoli elettrici, inclusi modelli popolari di Tesla, Rivian, Nissan, Chevrolet e altri. 
C'è un veicolo elettrico specifico che stai cercando di assicurare, o vorresti più dettagli su qualcuna di queste coperture?
</example 4>

<example 5>
H: Vorrei ottenere un preventivo per la mia assicurazione auto.

A: Certamente! Sarò felice di aiutarti a ottenere un preventivo per la tua assicurazione auto. 
Per fornirti un preventivo accurato, dovrò raccogliere alcune informazioni sul tuo veicolo e il conducente principale. 
Iniziamo con le basi:

1. Qual è la marca e il modello del tuo veicolo?
2. In che anno è stato prodotto?
3. Approssimativamente quanti chilometri hai guidato?
4. Qual è l'età del conducente principale?

Una volta che fornisci queste informazioni, userò il nostro strumento di preventivazione per generare un preventivo assicurativo personalizz
</example 5>
"""
Vorrai anche includere eventuali istruzioni importanti che delineano cosa fare e cosa non fare per come Claude dovrebbe interagire con il cliente. Questo può derivare da guardrail del brand o politiche di supporto.
ADDITIONAL_GUARDRAILS = """Ti prego di aderire ai seguenti guardrail:
1. Fornisci solo informazioni sui tipi di assicurazione elencati nelle nostre offerte.
2. Se viene chiesto di un tipo di assicurazione che non offriamo, dichiara educatamente 
che non forniamo quel servizio.
3. Non speculare su future offerte di prodotti o piani aziendali.
4. Non fare promesse o entrare in accordi che non sei autorizzato a fare.
Fornisci solo informazioni e guida.
5. Non menzionare prodotti o servizi di alcun concorrente.
"""
Ora combiniamo tutte queste sezioni in una singola stringa da usare come nostro prompt.
TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Aggiungere capacità dinamiche e agentiche con l’uso di strumenti

Claude è capace di intraprendere azioni e recuperare informazioni dinamicamente usando la funzionalità di uso di strumenti lato client. Inizia elencando eventuali strumenti esterni o API che il prompt dovrebbe utilizzare. Per questo esempio, inizieremo con uno strumento per calcolare il preventivo.
Come promemoria, questo strumento non eseguirà il calcolo effettivo, segnalerà solo all’applicazione che uno strumento dovrebbe essere usato con qualsiasi argomento specificato.
Esempio calcolatore preventivo assicurazione:
TOOLS = [{
  "name": "get_quote",
  "description": "Calcola il preventivo assicurativo basato sull'input dell'utente. Il valore restituito è il premio mensile.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "La marca del veicolo."},
      "model": {"type": "string", "description": "Il modello del veicolo."},
      "year": {"type": "integer", "description": "L'anno in cui il veicolo è stato prodotto."},
      "mileage": {"type": "integer", "description": "Il chilometraggio del veicolo."},
      "driver_age": {"type": "integer", "description": "L'età del conducente principale."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Restituisce il premio mensile in USD"""
    # Puoi chiamare un endpoint http o un database per ottenere il preventivo.
    # Qui, simuliamo un ritardo di 1 secondo e restituiamo un preventivo fisso di 100.
    time.sleep(1)
    return 100

Distribuire i tuoi prompt

È difficile sapere quanto bene funziona il tuo prompt senza distribuirlo in un ambiente di produzione di test e eseguire valutazioni quindi costruiamo una piccola applicazione usando il nostro prompt, l’SDK Anthropic e streamlit per un’interfaccia utente. In un file chiamato chatbot.py, inizia configurando la classe ChatBot, che incapsulerà le interazioni con l’SDK Anthropic. La classe dovrebbe avere due metodi principali: generate_message e process_user_input.
from anthropic import Anthropic
from config import IDENTITY, TOOLS, MODEL, get_quote
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
   def __init__(self, session_state):
       self.anthropic = Anthropic()
       self.session_state = session_state

   def generate_message(
       self,
       messages,
       max_tokens,
   ):
       try:
           response = self.anthropic.messages.create(
               model=MODEL,
               system=IDENTITY,
               max_tokens=max_tokens,
               messages=messages,
               tools=TOOLS,
           )
           return response
       except Exception as e:
           return {"error": str(e)}

   def process_user_input(self, user_input):
       self.session_state.messages.append({"role": "user", "content": user_input})

       response_message = self.generate_message(
           messages=self.session_state.messages,
           max_tokens=2048,
       )

       if "error" in response_message:
           return f"Si è verificato un errore: {response_message['error']}"

       if response_message.content[-1].type == "tool_use":
           tool_use = response_message.content[-1]
           func_name = tool_use.name
           func_params = tool_use.input
           tool_use_id = tool_use.id

           result = self.handle_tool_use(func_name, func_params)
           self.session_state.messages.append(
               {"role": "assistant", "content": response_message.content}
           )
           self.session_state.messages.append({
               "role": "user",
               "content": [{
                   "type": "tool_result",
                   "tool_use_id": tool_use_id,
                   "content": f"{result}",
               }],
           })

           follow_up_response = self.generate_message(
               messages=self.session_state.messages,
               max_tokens=2048,
           )

           if "error" in follow_up_response:
               return f"Si è verificato un errore: {follow_up_response['error']}"

           response_text = follow_up_response.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       elif response_message.content[0].type == "text":
           response_text = response_message.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       else:
           raise Exception("Si è verificato un errore: Tipo di risposta inaspettato")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Preventivo generato: ${premium:.2f} al mese"
      
       raise Exception("È stato utilizzato uno strumento inaspettato")

Costruire la tua interfaccia utente

Testa la distribuzione di questo codice con Streamlit usando un metodo main. Questa funzione main() configura un’interfaccia di chat basata su Streamlit. Lo faremo in un file chiamato app.py
import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("Chatta con Eva, l'Assistente di Acme Insurance Company🤖")

   if "messages" not in st.session_state:
       st.session_state.messages = [
           {'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
           {'role': "assistant", "content": "Capito"},
       ]

   chatbot = ChatBot(st.session_state)

   # Visualizza messaggi utente e assistente saltando i primi due
   for message in st.session_state.messages[2:]:
       # ignora blocchi di uso strumenti
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Digita il tuo messaggio qui..."):
       st.chat_message("user").markdown(user_msg)

       with st.chat_message("assistant"):
           with st.spinner("Eva sta pensando..."):
               response_placeholder = st.empty()
               full_response = chatbot.process_user_input(user_msg)
               response_placeholder.markdown(full_response)

if __name__ == "__main__":
   main()
Esegui il programma con:
streamlit run app.py

Valutare i tuoi prompt

Il prompting spesso richiede test e ottimizzazione per essere pronto per la produzione. Per determinare la prontezza della tua soluzione, valuta le prestazioni del chatbot usando un processo sistematico che combina metodi quantitativi e qualitativi. Creare una forte valutazione empirica basata sui tuoi criteri di successo definiti ti permetterà di ottimizzare i tuoi prompt.
La Console Claude ora presenta uno strumento di Valutazione che ti permette di testare i tuoi prompt sotto vari scenari.

Migliorare le prestazioni

In scenari complessi, può essere utile considerare strategie aggiuntive per migliorare le prestazioni oltre alle tecniche standard di ingegneria dei prompt e alle strategie di implementazione dei guardrail. Ecco alcuni scenari comuni:

Ridurre la latenza del contesto lungo con RAG

Quando si tratta di grandi quantità di contesto statico e dinamico, includere tutte le informazioni nel prompt può portare a costi elevati, tempi di risposta più lenti e raggiungimento dei limiti della finestra di contesto. In questo scenario, implementare tecniche di Retrieval Augmented Generation (RAG) può migliorare significativamente le prestazioni e l’efficienza. Utilizzando modelli di embedding come Voyage per convertire le informazioni in rappresentazioni vettoriali, puoi creare un sistema più scalabile e reattivo. Questo approccio consente il recupero dinamico di informazioni pertinenti basate sulla query corrente, piuttosto che includere tutto il possibile contesto in ogni prompt. Implementare RAG per casi d’uso di supporto ricetta RAG ha dimostrato di aumentare l’accuratezza, ridurre i tempi di risposta e ridurre i costi API in sistemi con requisiti di contesto estensivi.

Integrare dati in tempo reale con l’uso di strumenti

Quando si tratta di query che richiedono informazioni in tempo reale, come saldi di conto o dettagli di polizza, gli approcci RAG basati su embedding non sono sufficienti. Invece, puoi sfruttare l’uso di strumenti per migliorare significativamente la capacità del tuo chatbot di fornire risposte accurate e in tempo reale. Ad esempio, puoi usare l’uso di strumenti per cercare informazioni sui clienti, recuperare dettagli degli ordini e cancellare ordini per conto del cliente. Questo approccio, delineato nella nostra ricetta uso di strumenti: agente di servizio clienti, ti permette di integrare senza problemi dati live nelle risposte di Claude e fornire un’esperienza cliente più personalizzata ed efficiente.

Rafforzare i guardrail di input e output

Quando si distribuisce un chatbot, specialmente in scenari di servizio clienti, è cruciale prevenire rischi associati a uso improprio, query fuori ambito e risposte inappropriate. Mentre Claude è intrinsecamente resiliente a tali scenari, ecco passi aggiuntivi per rafforzare i guardrail del tuo chatbot:
  • Ridurre le allucinazioni: Implementa meccanismi di fact-checking e citazioni per basare le risposte su informazioni fornite.
  • Verificare incrociando le informazioni: Verifica che le risposte dell’agente si allineino con le politiche della tua azienda e fatti noti.
  • Evitare impegni contrattuali: Assicurati che l’agente non faccia promesse o entri in accordi che non è autorizzato a fare.
  • Mitigare i jailbreak: Usa metodi come schermate di innocuità e validazione dell’input per prevenire che gli utenti sfruttino vulnerabilità del modello, mirando a generare contenuto inappropriato.
  • Evitare di menzionare concorrenti: Implementa un filtro per menzioni di concorrenti per mantenere il focus del brand e non menzionare prodotti o servizi di alcun concorrente.
  • Mantenere Claude nel personaggio: Previeni che Claude cambi il loro stile di contesto, anche durante interazioni lunghe e complesse.
  • Rimuovere Informazioni Personalmente Identificabili (PII): A meno che non sia esplicitamente richiesto e autorizzato, rimuovi qualsiasi PII dalle risposte.

Ridurre il tempo di risposta percepito con lo streaming

Quando si tratta di risposte potenzialmente lunghe, implementare lo streaming può migliorare significativamente l’engagement e la soddisfazione dell’utente. In questo scenario, gli utenti ricevono la risposta progressivamente invece di aspettare che l’intera risposta sia generata. Ecco come implementare lo streaming:
  1. Usa l’API Streaming di Anthropic per supportare risposte in streaming.
  2. Configura il tuo frontend per gestire chunk di testo in arrivo.
  3. Visualizza ogni chunk mentre arriva, simulando digitazione in tempo reale.
  4. Implementa un meccanismo per salvare la risposta completa, permettendo agli utenti di visualizzarla se navigano via e ritornano.
In alcuni casi, lo streaming abilita l’uso di modelli più avanzati con latenze di base più elevate, poiché la visualizzazione progressiva mitiga l’impatto di tempi di elaborazione più lunghi.

Scalare il tuo Chatbot

Man mano che la complessità del tuo Chatbot cresce, la tua architettura applicativa può evolversi per adattarsi. Prima di aggiungere ulteriori livelli alla tua architettura, considera le seguenti opzioni meno esaustive:
  • Assicurati di sfruttare al massimo i tuoi prompt e ottimizzare attraverso l’ingegneria dei prompt. Usa le nostre guide di ingegneria dei prompt per scrivere i prompt più efficaci.
  • Aggiungi strumenti aggiuntivi al prompt (che possono includere catene di prompt) e vedi se puoi raggiungere la funzionalità richiesta.
Se il tuo Chatbot gestisce compiti incredibilmente vari, potresti voler considerare l’aggiunta di un classificatore di intenti separato per instradare la query iniziale del cliente. Per l’applicazione esistente, questo comporterebbe creare un albero decisionale che instraderebbe le query dei clienti attraverso il classificatore e poi a conversazioni specializzate (con il loro proprio set di strumenti e prompt di sistema). Nota, questo metodo richiede una chiamata aggiuntiva a Claude che può aumentare la latenza.

Integrare Claude nel tuo flusso di lavoro di supporto

Mentre i nostri esempi si sono concentrati su funzioni Python richiamabili all’interno di un ambiente Streamlit, distribuire Claude per un chatbot di supporto in tempo reale richiede un servizio API. Ecco come puoi approcciare questo:
  1. Creare un wrapper API: Sviluppa un semplice wrapper API attorno alla tua funzione di classificazione. Ad esempio, puoi usare Flask API o Fast API per avvolgere il tuo codice in un Servizio HTTP. Il tuo servizio HTTP potrebbe accettare l’input dell’utente e restituire la risposta dell’Assistente nella sua interezza. Così, il tuo servizio potrebbe avere le seguenti caratteristiche:
    • Server-Sent Events (SSE): SSE consente lo streaming in tempo reale delle risposte dal server al client. Questo è cruciale per fornire un’esperienza fluida e interattiva quando si lavora con LLM.
    • Caching: Implementare il caching può migliorare significativamente i tempi di risposta e ridurre chiamate API non necessarie.
    • Ritenzione del contesto: Mantenere il contesto quando un utente naviga via e ritorna è importante per la continuità nelle conversazioni.
  2. Costruire un’interfaccia web: Implementa un’interfaccia web user-friendly per interagire con l’agente alimentato da Claude.