Vor dem Aufbau mit Claude

Entscheiden Sie, ob Sie Claude für Support-Chat einsetzen sollten

Hier sind einige wichtige Indikatoren dafür, dass Sie einen LLM wie Claude zur Automatisierung von Teilen Ihres Kundenservice-Prozesses einsetzen sollten:

Einige Überlegungen für die Wahl von Claude gegenüber anderen LLMs:

  • Sie priorisieren natürliche, nuancierte Konversation: Claudes ausgefeiltes Sprachverständnis ermöglicht natürlichere, kontextbewusste Gespräche, die sich menschlicher anfühlen als Chats mit anderen LLMs.
  • Sie erhalten häufig komplexe und offene Anfragen: Claude kann ein breites Spektrum an Themen und Anfragen bearbeiten, ohne standardisierte Antworten zu generieren oder eine umfangreiche Programmierung von Permutationen von Benutzeräußerungen zu erfordern.
  • Sie benötigen skalierbaren mehrsprachigen Support: Claudes mehrsprachige Fähigkeiten ermöglichen Gespräche in über 200 Sprachen ohne die Notwendigkeit separater Chatbots oder umfangreicher Übersetzungsprozesse für jede unterstützte Sprache.

Definieren Sie Ihre ideale Chat-Interaktion

Skizzieren Sie eine ideale Kundeninteraktion, um zu definieren, wie und wann der Kunde mit Claude interagieren soll. Diese Skizze wird helfen, die technischen Anforderungen Ihrer Lösung zu bestimmen.

Hier ist ein Beispiel einer Chat-Interaktion für den Kfz-Versicherungs-Support:

  • Kunde: Startet Support-Chat-Erlebnis
    • Claude: Begrüßt Kunden herzlich und leitet Gespräch ein
  • Kunde: Fragt nach Versicherung für ihr neues Elektroauto
    • Claude: Liefert relevante Informationen zur Elektrofahrzeug-Deckung
  • Kunde: Stellt Fragen zu speziellen Bedürfnissen bei Elektrofahrzeug-Versicherungen
    • Claude: Antwortet mit genauen und informativen Antworten und stellt Links zu den Quellen bereit
  • Kunde: Stellt themenfremde Fragen, die nicht mit Versicherung oder Autos zu tun haben
    • Claude: Stellt klar, dass nicht über nicht verwandte Themen gesprochen wird und lenkt den Benutzer zurück zum Thema Autoversicherung
  • Kunde: Zeigt Interesse an einem Versicherungsangebot
    • Claude: Stellt eine Reihe von Fragen, um das passende Angebot zu ermitteln, und passt sich an ihre Antworten an
    • Claude: Sendet eine Anfrage zur Nutzung des Angebotserstellungs-API-Tools zusammen mit den vom Benutzer gesammelten notwendigen Informationen
    • Claude: Erhält die Antwortinformationen von der API-Tool-Nutzung, synthetisiert die Informationen zu einer natürlichen Antwort und präsentiert dem Benutzer das erstellte Angebot
  • Kunde: Stellt Nachfragen
    • Claude: Beantwortet Nachfragen nach Bedarf
    • Claude: Führt den Kunden zu den nächsten Schritten im Versicherungsprozess und beendet das Gespräch
Im echten Beispiel, das Sie für Ihren eigenen Anwendungsfall schreiben, könnte es nützlich sein, die tatsächlichen Worte in dieser Interaktion aufzuschreiben, damit Sie auch ein Gefühl für den idealen Ton, die Antwortlänge und den Detailgrad bekommen, den Sie von Claude erwarten.

Unterteilen Sie die Interaktion in einzelne Aufgaben

Support-Chat ist eine Sammlung mehrerer verschiedener Aufgaben, vom Beantworten von Fragen über Informationsabruf bis hin zur Bearbeitung von Anfragen, die in einer einzigen Kundeninteraktion zusammengefasst sind. Bevor Sie mit dem Aufbau beginnen, unterteilen Sie Ihre ideale Kundeninteraktion in alle Aufgaben, die Claude ausführen soll. Dies stellt sicher, dass Sie Claude für jede Aufgabe promten und evaluieren können und gibt Ihnen einen guten Überblick über die Bandbreite an Interaktionen, die Sie beim Schreiben von Testfällen berücksichtigen müssen.

Kunden finden es manchmal hilfreich, dies als Interaktionsflussdiagramm möglicher Gesprächswendepunkte je nach Benutzeranfragen zu visualisieren.

Hier sind die wichtigsten Aufgaben im Zusammenhang mit der obigen Versicherungsinteraktion:

  1. Begrüßung und allgemeine Anleitung

    • Kunden herzlich begrüßen und Gespräch einleiten
    • Allgemeine Informationen über das Unternehmen und die Interaktion bereitstellen
  2. Produktinformationen

    • Informationen zur Elektrofahrzeug-Deckung bereitstellen
      Dies erfordert, dass Claude die notwendigen Informationen in seinem Kontext hat und könnte bedeuten, dass eine RAG-Integration notwendig ist.
    • Fragen zu speziellen Bedürfnissen bei Elektrofahrzeug-Versicherungen beantworten
    • Nachfragen zum Angebot oder zu Versicherungsdetails beantworten
    • Bei Bedarf Links zu Quellen anbieten
  3. Gesprächsmanagement

    • Beim Thema bleiben (Autoversicherung)
    • Themenfremde Fragen zurück zu relevanten Themen lenken
  4. Angebotserstellung

    • Passende Fragen stellen, um Angebotsberechtigung zu ermitteln
    • Fragen basierend auf Kundenantworten anpassen
    • Gesammelte Informationen an Angebotserstellungs-API übermitteln
    • Erstelltes Angebot dem Kunden präsentieren

Erfolgskriterien festlegen

Arbeiten Sie mit Ihrem Support-Team zusammen, um klare Erfolgskriterien zu definieren und detaillierte Evaluierungen mit messbaren Benchmarks und Zielen zu erstellen.

Hier sind Kriterien und Benchmarks, die zur Bewertung verwendet werden können, wie erfolgreich Claude die definierten Aufgaben ausführt:

Hier sind Kriterien und Benchmarks, die zur Bewertung der geschäftlichen Auswirkungen des Einsatzes von Claude für Support verwendet werden können:

Wie man Claude als Kundenservice-Mitarbeiter implementiert

Wählen Sie das richtige Claude-Modell

Die Modellwahl hängt von den Abwägungen zwischen Kosten, Genauigkeit und Antwortzeit ab.

Für Kundenservice-Chat ist claude-3-5-sonnet-20241022 gut geeignet, um Intelligenz, Latenz und Kosten auszubalancieren. Für Fälle, in denen Sie einen Gesprächsablauf mit mehreren Prompts einschließlich RAG, Tool-Nutzung und/oder Long-Context-Prompts haben, könnte claude-3-haiku-20240307 besser geeignet sein, um die Latenz zu optimieren.

Erstellen Sie einen starken Prompt

Die Verwendung von Claude für Kundenservice erfordert, dass Claude genügend Anleitung und Kontext hat, um angemessen zu antworten, während genügend Flexibilität bleibt, um eine breite Palette von Kundenanfragen zu bearbeiten.

Beginnen wir mit dem Schreiben der Elemente eines starken Prompts, beginnend mit einem System-Prompt:

IDENTITY = """Sie sind Eva, eine freundliche und sachkundige KI-Assistentin für die Acme Insurance 
Company. Ihre Rolle ist es, Kunden herzlich willk
ommen zu heißen und Informationen zu 
Acmes Versicherungsangeboten bereitzustellen, zu denen Autoversicherungen und 
Elektroauto-Versicherungen gehören. Sie können Kunden auch dabei helfen, Angebote für 
ihren Versicherungsbedarf zu erhalten."""
Während Sie versucht sein könnten, alle Ihre Informationen in einen System-Prompt zu packen, um Anweisungen von der Benutzerkonversation zu trennen, funktioniert Claude tatsächlich am besten, wenn der Großteil seines Prompt-Inhalts im ersten User-Turn geschrieben ist (mit der einzigen Ausnahme des Rollen-Promptings). Lesen Sie mehr unter Claude eine Rolle mit einem System-Prompt geben

Es ist am besten, komplexe Prompts in Unterabschnitte zu unterteilen und einen Teil nach dem anderen zu schreiben. Für jede Aufgabe könnten Sie größeren Erfolg haben, wenn Sie einem schrittweisen Prozess folgen, um die Teile des Prompts zu definieren, die Claude benötigt, um die Aufgabe gut zu erfüllen. Für dieses Autoversicherungs-Kundenservice-Beispiel werden wir stückweise alle Teile für einen Prompt schreiben, beginnend mit der Aufgabe “Begrüßung und allgemeine Anleitung”. Dies macht auch das Debugging Ihres Prompts einfacher, da Sie einzelne Teile des Gesamtprompts schneller anpassen können.

Wir werden all diese Teile in einer Datei namens config.py ablegen.

STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme Auto Insurance: Ihr vertrauenswürdiger Begleiter auf der Straße

Über uns:
Bei Acme Insurance verstehen wir, dass Ihr Fahrzeug mehr ist als nur ein Transportmittel - es ist Ihr Ticket zu Lebensabenteuern. 
Seit 1985 entwickeln wir Autoversicherungspolicen, die Fahrern das Vertrauen geben, mit Seelenruhe zu erkunden, pendeln und reisen.
Ob Sie durch Stadtstraßen navigieren oder sich auf Reisen quer durchs Land begeben, Acme ist da, um Sie und Ihr Fahrzeug zu schützen. 
Unsere innovativen Autoversicherungspolicen sind darauf ausgelegt, sich an Ihre einzigartigen Bedürfnisse anzupassen und decken alles von kleinen Blechschäden bis zu größeren Kollisionen ab.
Mit Acmes preisgekröntem Kundenservice und schneller Schadensregulierung können Sie sich auf die Freude am Fahren konzentrieren, während wir uns um den Rest kümmern. 
Wir sind nicht nur ein Versicherungsanbieter - wir sind Ihr Co-Pilot auf den Reisen des Lebens.
Wählen Sie Acme Auto Insurance und erleben Sie die Sicherheit, die mit überlegenem Schutz und echter Fürsorge einhergeht. Denn bei Acme versichern wir nicht nur Ihr Auto - wir befeuern Ihre Abenteuer auf der offenen Straße.

Hinweis: Wir bieten auch spezielle Deckung für Elektrofahrzeuge an, damit Fahrer aller Autotypen von unserem Schutz profitieren können.

Acme Insurance bietet folgende Produkte an:
- Autoversicherung
- Elektroauto-Versicherung
- Zweirad-Versicherung

Geschäftszeiten: Montag-Freitag, 9-17 Uhr EST
Kundenservice-Nummer: 1-800-123-4567
</static_context>
"""

Wir werden dann dasselbe für unsere Auto- und Elektroauto-Versicherungsinformationen tun.

STATIC_CAR_INSURANCE="""
<static_context>
Autoversicherungs-Deckung:
Acmes Autoversicherungspolicen decken typischerweise ab:
1. Haftpflichtversicherung: Zahlt für Personenschäden und Sachschäden, die Sie anderen zufügen.
2. Kollisionsdeckung: Zahlt für Schäden an Ihrem Auto bei einem Unfall.
3. Vollkaskoversicherung: Zahlt für Schäden an Ihrem Auto durch Nicht-Kollisions-Vorfälle.
4. Unfallversicherung: Zahlt für medizinische Ausgaben nach einem Unfall.
5. Versicherung gegen nicht/unterversicherte Autofahrer: Schützt Sie, wenn Sie von einem Fahrer mit unzureichender Versicherung angefahren werden.

Optionale Deckungen umfassen:
- Mietwagen-Erstattung
- Pannenhilfe
- Neuwagen-Ersatz
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Elektroauto-Versicherung:
Unsere spezialisierte Elektroauto-Versicherung geht über traditionelle Autodeckung hinaus 
und bietet maßgeschneiderten Schutz für Ihre High-Tech-Investition. Zusätzlich zu Standarddeckungen bieten wir:
- Absicherung teurer Batteriesysteme
- Deckung von Heimlade-Equipment
- Anpassung an die sich schnell entwickelnde Welt der Elektrofahrzeuge

Ob Sie einen Rivian, Nissan Leaf, Chevrolet Bolt 
oder ein anderes Elektrofahrzeug fahren, unsere sachkundigen Mitarbeiter sind bereit, eine Police 
zu erstellen, die Ihnen das Vertrauen gibt, jede elektronenbetriebene Meile zu genießen.
</static_context>
"""

Nachdem wir unseren statischen Inhalt haben, fügen wir mindestens 4-5 Beispiele für “gute” Interaktionen hinzu, um Claudes Antworten zu lenken. Diese Beispiele sollten repräsentativ für Ihre ideale Kundeninteraktion sein und können Leitplanken, Tool-Aufrufe usw. enthalten.

EXAMPLES="""
Hier sind einige Beispiele dafür, wie Sie mit Kunden interagieren können:

<example 1>
H: Hallo, bieten Sie Gewerbeversicherungen für kleine Unternehmen an?

A: Ah! Leider bieten wir derzeit keine Gewerbeversicherungen an. 
Allerdings bieten wir eine Reihe von Privatversicherungsprodukten einschließlich Auto- und Elektroauto-Versicherungen an. 
Möchten Sie mehr über diese Angebote erfahren?
</example 1>

<example 2>
H: Hallo, wie sind Ihre Geschäftszeiten?

A: Unsere Geschäftszeiten sind Montag bis Freitag von 9 bis 17 Uhr EST. 
Wenn Sie Fragen haben oder Hilfe benötigen, können Sie sich gerne während dieser Zeiten an uns wenden. 
Wie kann ich Ihnen heute sonst noch helfen?
</example 2>

<example 3>
H: Ich suche nach einer Autoversicherung. Was bietet Acme an?

A: Eine gute Wahl! Acmes Autoversicherungspolicen umfassen typischerweise:
- Haftpflichtversicherung: Schützt Sie, wenn Sie bei einem Unfall schuld sind
- Kollisionsdeckung: Zahlt für Schäden an Ihrem Auto bei einem Unfall
- Vollkaskoversicherung: Deckt Nicht-Kollisions-Vorfälle wie Diebstahl oder Vandalismus ab
- Unfallversicherung: Zahlt für medizinische Ausgaben nach einem Unfall
- Versicherung gegen nicht/unterversicherte Autofahrer: Schützt Sie vor Fahrern mit unzureichender Versicherung

Wir bieten auch optionale Deckungen wie Mietwagen-Erstattung, Pannenhilfe und Neuwagen-Ersatz an. 
Möchten Sie mehr Details zu einer dieser Deckungen oder haben Sie spezifische Fragen zur Versicherung Ihres Fahrzeugs?
</example 3>

<example 4>
H: Ich möchte gerne etwas über Ihre Elektroauto-Versicherung hören.

A: Gerne! Unsere Elektroauto-Versicherung ist speziell auf die einzigartigen Bedürfnisse von Elektrofahrzeug-Besitzern zugeschnitten. 
Zusätzlich zu allen Standarddeckungen, die wir für normale Autos anbieten, umfassen unsere Elektroauto-Policen:

- Batteriedeckung: Schutz gegen Beschädigung oder Verschleiß des teuren Batteriesystems Ihres Fahrzeugs
- Tech-Paket: Deckt Reparaturen oder Ersatz von fortschrittlicher Elektronik und Bordcomputersystemen
- Ladestation-Deckung: Schützt sowohl Heim- als auch portable Ladeausrüstung
- Cybersicherheits-Schutz: Deckung gegen Hacking oder digitale Bedrohungen
- Spezialisierte Pannenhilfe: Beinhaltet Flatbed-Abschleppen zum Schutz des Fahrzeug-Unterbodens

Wir decken eine breite Palette von Elektrofahrzeugen ab, einschließlich beliebter Modelle von Tesla, Rivian, Nissan, Chevrolet und mehr. 
Gibt es ein bestimmtes Elektrofahrzeug, das Sie versichern möchten, oder möchten Sie mehr Details zu einer dieser Deckungen?
</example 4>

<example 5>
H: Ich möchte gerne ein Angebot für meine Autoversicherung erhalten.

A: Gerne! Ich helfe Ihnen dabei, ein Angebot für Ihre Autoversicherung zu erhalten. 
Um Ihnen ein genaues Angebot erstellen zu können, muss ich einige Informationen über Ihr Fahrzeug und den Hauptfahrer sammeln. 
Lassen Sie uns mit den Grundlagen beginnen:

1. Welche Marke und welches Modell hat Ihr Fahrzeug?
2. In welchem Jahr wurde es hergestellt?
3. Wie viele Kilometer sind Sie ungefähr gefahren?
4. Wie alt ist der Hauptfahrer?

Sobald Sie diese Informationen bereitstellen, werde ich unser Angebots-Tool verwenden, um ein personalisiertes Versicherungsangebot für Sie zu erstellen.
</example 5>
"""

Sie werden auch wichtige Anweisungen aufnehmen wollen, die Do’s und Don’ts für die Art und Weise skizzieren, wie Claude mit dem Kunden interagieren soll. Dies kann sich aus Marken-Leitplanken oder Support-Richtlinien ergeben.

ADDITIONAL_GUARDRAILS = """Bitte halten Sie sich an folgende Leitplanken:
1. Stellen Sie nur Informationen über Versicherungstypen bereit, die in unseren Angeboten aufgeführt sind.
2. Wenn nach einem Versicherungstyp gefragt wird, den wir nicht anbieten, erklären Sie 
höflich, dass wir diesen Service nicht anbieten.
3. Spekulieren Sie nicht über zukünftige Produktangebote oder Unternehmenspläne.
4. Machen Sie keine Versprechen oder gehen Sie keine Vereinbarungen ein, zu denen Sie nicht autorisiert sind.
Sie stellen nur Informationen und Anleitungen bereit.
5. Erwähnen Sie keine Produkte oder Dienstleistungen von Wettbewerbern.
"""

Jetzt lassen Sie uns all diese Abschnitte in einem einzigen String kombinieren, den wir als unseren Prompt verwenden werden.

TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Fügen Sie dynamische und agentische Fähigkeiten mit Tool-Nutzung hinzu

Claude ist in der Lage, Aktionen auszuführen und Informationen dynamisch abzurufen, indem er clientseitige Tool-Use-Funktionalität nutzt. Beginnen Sie damit, alle externen Tools oder APIs aufzulisten, die der Prompt nutzen soll.

Für dieses Beispiel werden wir mit einem Tool für die Berechnung des Angebots beginnen.

Zur Erinnerung: Dieses Tool wird nicht die tatsächliche Berechnung durchführen, es wird der Anwendung nur signalisieren, dass ein Tool mit den angegebenen Argumenten verwendet werden soll.

Beispiel Versicherungsangebots-Rechner:

TOOLS = [{
  "name": "get_quote",
  "description": "Berechnet das Versicherungsangebot basierend auf Benutzereingaben. Rückgabewert ist Prämie pro Monat.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "Die Marke des Fahrzeugs."},
      "model": {"type": "string", "description": "Das Modell des Fahrzeugs."},
      "year": {"type": "integer", "description": "Das Baujahr des Fahrzeugs."},
      "mileage": {"type": "integer", "description": "Der Kilometerstand des Fahrzeugs."},
      "driver_age": {"type": "integer", "description": "Das Alter des Hauptfahrers."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Gibt die Prämie pro Monat in USD zurück"""
    # Sie können einen http-Endpunkt oder eine Datenbank aufrufen, um das Angebot zu erhalten.
    # Hier simulieren wir eine Verzögerung von 1 Sekunde und geben ein festes Angebot von 100 zurück.
    time.sleep(1)
    return 100

Deployen Sie Ihre Prompts

Es ist schwer zu wissen, wie gut Ihr Prompt funktioniert, ohne ihn in einer Test-Produktionsumgebung zu deployen und Evaluierungen durchzuführen. Lassen Sie uns also eine kleine Anwendung mit unserem Prompt, dem Anthropic SDK und Streamlit für eine Benutzeroberfläche erstellen.

Erstellen Sie in einer Datei namens chatbot.py zunächst die ChatBot-Klasse, die die Interaktionen mit dem Anthropic SDK kapselt.

Die Klasse sollte zwei Hauptmethoden haben: generate_message und 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"Ein Fehler ist aufgetreten: {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"Ein Fehler ist aufgetreten: {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("Ein Fehler ist aufgetreten: Unerwarteter Antworttyp")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Angebot erstellt: ${premium:.2f} pro Monat"
      
       raise Exception("Ein unerwartetes Tool wurde verwendet")

Bauen Sie Ihre Benutzeroberfläche

Testen Sie das Deployment dieses Codes mit Streamlit unter Verwendung einer main-Methode. Diese main()-Funktion richtet eine Streamlit-basierte Chat-Schnittstelle ein.

Wir werden dies in einer Datei namens app.py tun

import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("Chatten Sie mit Eva, der Assistentin der Acme Insurance Company🤖")

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

   chatbot = ChatBot(st.session_state)

   # Zeige Benutzer- und Assistenten-Nachrichten an, überspringe die ersten beiden
   for message in st.session_state.messages[2:]:
       # ignoriere Tool-Use-Blöcke
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Geben Sie hier Ihre Nachricht ein..."):
       st.chat_message("user").markdown(user_msg)

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

if __name__ == "__main__":
   main()

Führen Sie das Programm aus mit:

streamlit run app.py

Evaluieren Sie Ihre Prompts

Prompting erfordert oft Tests und Optimierung, um produktionsreif zu sein. Um die Bereitschaft Ihrer Lösung zu bestimmen, evaluieren Sie die Chatbot-Leistung mit einem systematischen Prozess, der quantitative und qualitative Methoden kombiniert. Die Erstellung einer starken empirischen Evaluation basierend auf Ihren definierten Erfolgskriterien wird es Ihnen ermöglichen, Ihre Prompts zu optimieren.

Die Anthropic Console bietet jetzt ein Evaluations-Tool, mit dem Sie Ihre Prompts unter verschiedenen Szenarien testen können.

Verbessern Sie die Leistung

In komplexen Szenarien kann es hilfreich sein, zusätzliche Strategien zur Leistungsverbesserung über Standard-Prompt-Engineering-Techniken & Leitplanken-Implementierungsstrategien hinaus zu berücksichtigen. Hier sind einige häufige Szenarien:

Reduzieren Sie die Latenz bei langem Kontext mit RAG

Wenn Sie mit großen Mengen statischen und dynamischen Kontexts arbeiten, kann das Einbeziehen aller Informationen im Prompt zu hohen Kosten, langsameren Antwortzeiten und dem Erreichen von Kontextfenster-Limits führen. In diesem Szenario kann die Implementierung von Retrieval Augmented Generation (RAG)-Techniken die Leistung und Effizienz deutlich verbessern.

Durch die Verwendung von Embedding-Modellen wie Voyage zur Umwandlung von Informationen in Vektor-Repräsentationen können Sie ein skalierbares und reaktionsschnelleres System erstellen. Dieser Ansatz ermöglicht den dynamischen Abruf relevanter Informationen basierend auf der aktuellen Anfrage, anstatt allen möglichen Kontext in jeden Prompt einzubeziehen.

Die Implementierung von RAG für Support-Anwendungsfälle RAG-Rezept hat sich als effektiv erwiesen, um die Genauigkeit zu erhöhen, Antwortzeiten zu reduzieren und API-Kosten in Systemen mit umfangreichen Kontextanforderungen zu senken.

Integrieren Sie Echtzeit-Daten mit Tool-Use

Bei der Bearbeitung von Anfragen, die Echtzeit-Informationen erfordern, wie Kontostände oder Policendetails, sind embedding-basierte RAG-Ansätze nicht ausreichend. Stattdessen können Sie Tool-Use nutzen, um die Fähigkeit Ihres Chatbots, genaue Echtzeit-Antworten zu liefern, deutlich zu verbessern. Zum Beispiel können Sie Tool-Use verwenden, um Kundeninformationen nachzuschlagen, Bestelldetails abzurufen und Bestellungen im Namen des Kunden zu stornieren.

Dieser Ansatz, beschrieben in unserem Tool-Use: Customer Service Agent Rezept, ermöglicht es Ihnen, Live-Daten nahtlos in Claudes Antworten zu integrieren und ein personalisierteres und effizienteres Kundenerlebnis zu bieten.

Stärken Sie Ein- und Ausgabe-Leitplanken

Beim Deployment eines Chatbots, besonders in Kundenservice-Szenarien, ist es entscheidend, Risiken im Zusammenhang mit Missbrauch, Anfragen außerhalb des Umfangs und unangemessenen Antworten zu verhindern. Während Claude von Natur aus widerstandsfähig gegen solche Szenarien ist, hier einige zusätzliche Schritte zur Stärkung Ihrer Chatbot-Leitplanken:

  • Reduzieren Sie Halluzinationen: Implementieren Sie Faktenprüfungs-Mechanismen und Zitationen, um Antworten in bereitgestellten Informationen zu verankern.
  • Überprüfen Sie Informationen: Verifizieren Sie, dass die Antworten des Agenten mit den Richtlinien und bekannten Fakten Ihres Unternehmens übereinstimmen.
  • Vermeiden Sie vertragliche Verpflichtungen: Stellen Sie sicher, dass der Agent keine Versprechen macht oder Vereinbarungen eingeht, zu denen er nicht autorisiert ist.
  • Mindern Sie Jailbreaks: Verwenden Sie Methoden wie Harmlosigkeits-Screens und Eingabevalidierung, um zu verhindern, dass Benutzer Modellschwachstellen ausnutzen, mit dem Ziel, unangemessene Inhalte zu generieren.
  • Vermeiden Sie die Erwähnung von Wettbewerbern: Implementieren Sie einen Wettbewerber-Erwähnungs-Filter, um den Markenfokus zu behalten und keine Produkte oder Dienstleistungen von Wettbewerbern zu erwähnen.
  • Halten Sie Claude im Charakter: Verhindern Sie, dass Claude seinen Stil oder Kontext ändert, auch während langer, komplexer Interaktionen.
  • Entfernen Sie personenbezogene Daten (PII): Sofern nicht ausdrücklich erforderlich und autorisiert, entfernen Sie alle PII aus den Antworten.

Reduzieren Sie die wahrgenommene Antwortzeit mit Streaming

Beim Umgang mit potenziell langen Antworten kann die Implementierung von Streaming die Benutzereinbindung und -zufriedenheit deutlich verbessern. In diesem Szenario erhalten Benutzer die Antwort progressiv, anstatt auf die gesamte Generierung zu warten.

Hier ist, wie Sie Streaming implementieren:

  1. Verwenden Sie die Anthropic Streaming API zur Unterstützung von Streaming-Antworten.
  2. Richten Sie Ihr Frontend ein, um eingehende Textblöcke zu verarbeiten.
  3. Zeigen Sie jeden Block an, wenn er eintrifft, um Echtzeit-Tippen zu simulieren.
  4. Implementieren Sie einen Mechanismus zum Speichern der vollständigen Antwort, damit Benutzer sie ansehen können, wenn sie wegnavigieren und zurückkehren.

In einigen Fällen ermöglicht Streaming die Verwendung fortgeschrittenerer Modelle mit höheren Basis-Latenzen, da die progressive Anzeige die Auswirkungen längerer Verarbeitungszeiten mildert.

Skalieren Sie Ihren Chatbot

Während die Komplexität Ihres Chatbots wächst, kann sich Ihre Anwendungsarchitektur entsprechend entwickeln. Bevor Sie weitere Schichten zu Ihrer Architektur hinzufügen, berücksichtigen Sie die folgenden weniger erschöpfenden Optionen:

  • Stellen Sie sicher, dass Sie das Meiste aus Ihren Prompts herausholen und durch Prompt-Engineering optimieren. Nutzen Sie unsere Prompt-Engineering-Guides, um die effektivsten Prompts zu schreiben.
  • Fügen Sie dem Prompt zusätzliche Tools hinzu (die Prompt-Ketten enthalten können) und sehen Sie, ob Sie die erforderliche Funktionalität erreichen können.

Wenn Ihr Chatbot unglaublich vielfältige Aufgaben bewältigt, möchten Sie vielleicht einen separaten Intent-Klassifizierer hinzufügen, um die initiale Kundenanfrage zu routen. Für die bestehende Anwendung würde dies die Erstellung eines Entscheidungsbaums beinhalten, der Kundenanfragen durch den Klassifizierer und dann zu spezialisierten Gesprächen (mit ihren eigenen Tools und System-Prompts) leitet. Beachten Sie, dass diese Methode einen zusätzlichen Aufruf an Claude erfordert, der die Latenz erhöhen kann.

Integrieren Sie Claude in Ihren Support-Workflow

Während sich unsere Beispiele auf Python-Funktionen konzentriert haben, die in einer Streamlit-Umgebung aufrufbar sind, erfordert das Deployment von Claude für Echtzeit-Support-Chatbot einen API-Service.

Hier ist, wie Sie dies angehen können:

  1. Erstellen Sie einen API-Wrapper: Entwickeln Sie einen einfachen API-Wrapper um Ihre Klassifizierungsfunktion. Zum Beispiel können Sie Flask API oder Fast API verwenden, um Ihren Code in einen HTTP-Service zu verpacken. Ihr HTTP-Service könnte die Benutzereingabe akzeptieren und die Assistenten-Antwort in ihrer Gesamtheit zurückgeben. Somit könnte Ihr Service folgende Eigenschaften haben:

    • Server-Sent Events (SSE): SSE ermöglicht das Echtzeit-Streaming von Antworten vom Server zum Client. Dies ist entscheidend für ein reib ungsloses, interaktives Erlebnis bei der Arbeit mit LLMs.
    • Caching: Die Implementierung von Caching kann Antwortzeiten deutlich verbessern und unnötige API-Aufrufe reduzieren.
    • Kontextbeibehaltung: Die Beibehaltung des Kontexts, wenn ein Benutzer wegnavigiert und zurückkehrt, ist wichtig für die Kontinuität in Gesprächen.
  2. Bauen Sie eine Web-Schnittstelle: Implementieren Sie eine benutzerfreundliche Web-UI für die Interaktion mit dem Claude-gesteuerten Agenten.