Vor dem Aufbau mit Claude

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

Hier sind einige wichtige Indikatoren dafür, dass Sie ein LLM wie Claude einsetzen sollten, um Teile Ihres Kundensupport-Prozesses zu automatisieren:

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, kontextbewusstere Gespräche, die menschlicher wirken als Chats mit anderen LLMs.
  • Sie erhalten oft komplexe und offene Anfragen: Claude kann ein breites Spektrum an Themen und Anfragen bearbeiten, ohne vorgefertigte Antworten zu generieren oder eine umfangreiche Programmierung von Permutationen von Benutzeräußerungen zu erfordern.
  • Sie benötigen skalierbare mehrsprachige Unterstützung: Claudes mehrsprachige Fähigkeiten ermöglichen Gespräche in über 200 Sprachen, ohne dass separate Chatbots oder umfangreiche Übersetzungsprozesse für jede unterstützte Sprache erforderlich sind.

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 für eine Chat-Interaktion im Kfz-Versicherungs-Kundensupport:

  • Kunde: Startet die Support-Chat-Erfahrung
    • Claude: Begrüßt den Kunden herzlich und leitet das Gespräch ein
  • Kunde: Fragt nach Versicherung für sein neues Elektroauto
    • Claude: Liefert relevante Informationen zur Elektrofahrzeug-Versicherung
  • 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 zusammenhängen
    • Claude: Stellt klar, dass es keine nicht verwandten Themen diskutiert 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 die Antworten an
    • Claude: Sendet eine Anfrage zur Nutzung des Angebotsgenerator-API-Tools zusammen mit den notwendigen Informationen, die vom Benutzer gesammelt wurden
    • Claude: Erhält die Antwortinformationen aus der API-Tool-Nutzung, synthetisiert die Informationen zu einer natürlichen Antwort und präsentiert dem Benutzer das bereitgestellte Angebot
  • Kunde: Stellt Folgefragen
    • Claude: Beantwortet Folgefragen nach Bedarf
    • Claude: Führt den Kunden zu den nächsten Schritten im Versicherungsprozess und beendet das Gespräch
In dem realen 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 Detaillierungsgrad bekommen, den Claude haben soll.

Unterteilen Sie die Interaktion in einzelne Aufgaben

Der Kundensupport-Chat ist eine Sammlung mehrerer verschiedener Aufgaben, vom Beantworten von Fragen über das Abrufen von Informationen bis hin zum Ausführen von Aktionen auf Anfragen, die in einer einzigen Kundeninteraktion zusammengefasst sind. Bevor Sie mit dem Aufbau beginnen, unterteilen Sie Ihre ideale Kundeninteraktion in jede Aufgabe, die Claude ausführen soll. Dies stellt sicher, dass Sie Claude für jede Aufgabe anweisen und bewerten können und gibt Ihnen einen guten Überblick über die Bandbreite der 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 dem obigen Versicherungsinteraktionsbeispiel:

  1. Begrüßung und allgemeine Anleitung

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

    • Informationen über Elektrofahrzeug-Versicherung 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
    • Folgefragen 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

    • Geeignete Fragen stellen, um die Angebotsberechtigung zu ermitteln
    • Fragen basierend auf Kundenantworten anpassen
    • Gesammelte Informationen an die Angebotsgenerator-API übermitteln
    • Das bereitgestellte Angebot dem Kunden präsentieren

Erfolgskriterien festlegen

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

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

Hier sind Kriterien und Benchmarks, die verwendet werden können, um die geschäftlichen Auswirkungen des Einsatzes von Claude für den Support zu bewerten:

Wie man Claude als Kundendienstmitarbeiter implementiert

Wählen Sie das richtige Claude-Modell

Die Wahl des Modells hängt von den Kompromissen zwischen Kosten, Genauigkeit und Antwortzeit ab.

Für Kundensupport-Chats ist claude-opus-4-20250514 gut geeignet, um Intelligenz, Latenz und Kosten auszubalancieren. Für Fälle, in denen Sie einen Gesprächsablauf mit mehreren Prompts haben, einschließlich RAG, Tool-Nutzung und/oder Prompts mit langem Kontext, kann claude-3-haiku-20240307 besser geeignet sein, um die Latenz zu optimieren.

Erstellen Sie einen starken Prompt

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

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

IDENTITY = """Du bist Eva, eine freundliche und sachkundige KI-Assistentin für die Acme 
Versicherungsgesellschaft. Deine Rolle ist es, Kunden herzlich willkommen zu heißen und 
Informationen zu Acmes Versicherungsangeboten bereitzustellen, zu denen Autoversicherungen 
und Elektroautoversicherungen gehören. Du kannst Kunden auch dabei helfen, Angebote für 
ihre Versicherungsbedürfnisse 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 des Prompt-Inhalts im ersten User-Turn geschrieben wird (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ötigen würde, um die Aufgabe gut zu erledigen. Für dieses Beispiel zum Kfz-Versicherungs-Kundensupport 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 Autoversicherung: Ihr vertrauenswürdiger Begleiter auf der Straße

Über uns:
Bei Acme Versicherung verstehen wir, dass Ihr Fahrzeug mehr als nur ein Transportmittel ist – es ist Ihr Ticket zu Lebensabenteuern. 
Seit 1985 entwickeln wir Autoversicherungspolicen, die Fahrern das Vertrauen geben, mit Seelenruhe zu erkunden, zu pendeln und zu reisen.
Ob Sie durch Stadtstraßen navigieren oder auf Reisen quer durch das Land aufbrechen, 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 alles von kleinen Blechschäden bis hin zu größeren Kollisionen abzudecken.
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 Copilot auf den Reisen des Lebens.
Wählen Sie Acme Autoversicherung 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 spezialisierten Schutz für Elektrofahrzeuge an, um sicherzustellen, dass Fahrer aller Autotypen von unserem Schutz profitieren können.

Acme Versicherung bietet folgende Produkte an:
- Autoversicherung
- Elektroautoversicherung
- Zweiradversicherung

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

Wir werden dann dasselbe für unsere Autoversicherungs- und Elektroautoversicherungsinformationen tun.

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

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

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Elektroautoversicherung:
Unsere spezialisierte Elektroautoversicherung geht über den traditionellen Autoversicherungsschutz hinaus 
und bietet maßgeschneiderten Schutz für Ihre Hightech-Investition. Zusätzlich zu den Standarddeckungen bieten wir:
- Absicherung teurer Batteriesysteme
- Abdeckung von Heimladeausrüstung
- Anpassung an die sich schnell entwickelnde Welt der Elektrofahrzeuge

Ob Sie einen Rivian, Nissan Leaf, Chevrolet Bolt 
oder ein anderes Elektrofahrzeug fahren, unsere sachkundigen Agenten 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 du mit Kunden interagieren kannst:

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

A: Ah! Leider bieten w ir derzeit keine Gewerbeversicherungen an. 
Wir bieten jedoch eine Reihe von persönlichen Versicherungsprodukten an, darunter Autoversicherungen und Elektroautoversicherungen. 
Möchten Sie mehr über diese Angebote erfahren?
</example 1>

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

A: Unsere Geschäftszeiten sind Montag bis Freitag, 9 Uhr bis 17 Uhr MEZ. 
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 an einem Unfall schuld sind
- Kollisionsversicherung: Zahlt für Schäden an Ihrem Auto bei einem Unfall
- Vollkaskoversicherung: Deckt Nicht-Kollisionsereignisse wie Diebstahl oder Vandalismus ab
- Medizinische Zahlungsdeckung: Zahlt für medizinische Ausgaben nach einem Unfall
- Versicherung gegen nicht versicherte/unterversicherte Autofahrer: Schützt Sie vor Fahrern mit unzureichender Versicherung

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

<example 4>
H: Ich würde gerne etwas über Ihre Elektroautoversicherung hören.

A: Natürlich! Unsere Elektroautoversicherung ist speziell auf die einzigartigen Bedürfnisse von Elektrofahrzeugbesitzern zugeschnitten. 
Zusätzlich zu allen Standarddeckungen, die wir für normale Autos anbieten, umfassen unsere Elektroautopolicen:

- Batterieabdeckung: Schutz gegen Beschädigung oder Verschleiß des teuren Batteriesystems Ihres Fahrzeugs
- Technikpaket: Deckt Reparaturen oder Ersatz fortschrittlicher Elektronik und Bordcomputersysteme ab
- Ladestation-Abdeckung: Schützt sowohl Heim- als auch tragbare Ladeausrüstung
- Cybersicherheitsschutz: Abdeckung gegen Hacking oder digitale Bedrohungen
- Spezialisierte Pannenhilfe: Beinhaltet Abschleppdienst mit Flachbettfahrzeug zum Schutz des Fahrzeugunterbaus

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 weitere Details zu einer dieser Deckungen?
</example 4>

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

A: Natürlich! Ich helfe Ihnen gerne dabei, ein Angebot für Ihre Autoversicherung zu erhalten. 
Um Ihnen ein genaues Angebot zu geben, muss ich einige Informationen über Ihr Fahrzeug und den Hauptfahrer sammeln. 
Beginnen wir mit den Grundlagen:

1. Welche Marke und welches Modell hat Ihr Fahrzeug?
2. In welchem Jahr wurde es hergestellt?
3. Ungefähr wie viele Kilometer sind Sie 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 sollten auch wichtige Anweisungen einbeziehen, die Do’s und Don’ts für die Art und Weise beschreiben, wie Claude mit dem Kunden interagieren sollte. Dies kann aus Marken-Leitplanken oder Support-Richtlinien abgeleitet werden.

ADDITIONAL_GUARDRAILS = """Bitte halte dich an die folgenden Leitplanken:
1. Gib nur Informationen zu Versicherungsarten, die in unseren Angeboten aufgeführt sind.
2. Wenn nach einer Versicherungsart gefragt wird, die wir nicht anbieten, teile höflich mit, 
dass wir diesen Service nicht anbieten.
3. Spekuliere nicht über zukünftige Produktangebote oder Unternehmenspläne.
4. Mache keine Versprechungen oder gehe keine Vereinbarungen ein, zu denen du nicht autorisiert bist.
Du gibst nur Informationen und Anleitungen.
5. Erwähne keine Produkte oder Dienstleistungen von Wettbewerbern.
"""

Jetzt kombinieren wir alle diese Abschnitte zu einem einzigen String, den wir als unseren Prompt verwenden.

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 die clientseitige Tool-Nutzungsfunktionalität verwendet. Beginnen Sie mit der Auflistung aller externen Tools oder APIs, die der Prompt nutzen sollte.

Für dieses Beispiel beginnen wir mit einem Tool zur Berechnung des Angebots.

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

Beispiel für einen Versicherungsangebotsrechner:

TOOLS = [{
  "name": "get_quote",
  "description": "Berechne das Versicherungsangebot basierend auf Benutzereingaben. Rückgabewert ist die monatliche Prämie.",
  "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 monatliche Prämie 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

Stellen Sie Ihre Prompts bereit

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

In einer Datei namens chatbot.py beginnen wir mit der Einrichtung der 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 die Bereitstellung dieses Codes mit Streamlit unter Verwendung einer Hauptmethode. 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("Chatte mit Eva, der Assistentin der Acme Versicherungsgesellschaft🤖")

   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 Assistentennachrichten an, überspringe die ersten beiden
   for message in st.session_state.messages[2:]:
       # ignoriere Tool-Nutzungsblöcke
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Gib deine Nachricht hier 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 mit folgendem Befehl aus:

streamlit run app.py

Bewerten Sie Ihre Prompts

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

Die Anthropic Console verfügt jetzt über ein Bewertungstool, 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 und Leitplanken-Implementierungsstrategien hinaus zu berücksichtigen. Hier sind einige häufige Szenarien:

Reduzieren Sie die Latenz bei langem Kontext mit RAG

Bei der Verarbeitung großer Mengen statischer und dynamischer Kontexte kann das Einbeziehen aller Informationen im Prompt zu hohen Kosten, langsameren Antwortzeiten und dem Erreichen von Kontextfensterlimits führen. In diesem Szenario kann die Implementierung von Retrieval Augmented Generation (RAG)-Techniken die Leistung und Effizienz erheblich verbessern.

Durch die Verwendung von Embedding-Modellen wie Voyage, um Informationen in Vektordarstellungen umzuwandeln, können Sie ein skalierbares und reaktionsschnelleres System erstellen. Dieser Ansatz ermöglicht den dynamischen Abruf relevanter Informationen basierend auf der aktuellen Anfrage, anstatt alle möglichen Kontexte in jeden Prompt einzubeziehen.

Die Implementierung von RAG für Support-Anwendungsfälle RAG-Rezept hat nachweislich die Genauigkeit erhöht, die Antwortzeiten verkürzt und die API-Kosten in Systemen mit umfangreichen Kontextanforderungen reduziert.

Integrieren Sie Echtzeitdaten mit Tool-Nutzung

Bei der Bearbeitung von Anfragen, die Echtzeitinformationen erfordern, wie Kontostand oder Policendetails, sind embedding-basierte RAG-Ansätze nicht ausreichend. Stattdessen können Sie die Tool-Nutzung nutzen, um die Fähigkeit Ihres Chatbots, genaue Echtzeitantworten zu geben, erheblich zu verbessern. Sie können beispielsweise die Tool-Nutzung verwenden, um Kundeninformationen nachzuschlagen, Bestelldetails abzurufen und Bestellungen im Namen des Kunden zu stornieren.

Dieser Ansatz, beschrieben in unserem Tool-Nutzungs-Rezept für Kundendienstmitarbeiter, ermöglicht es Ihnen, Live-Daten nahtlos in die Antworten Ihres Claude zu integrieren und ein personalisierteres und effizienteres Kundenerlebnis zu bieten.

Stärken Sie Eingabe- und Ausgabe-Leitplanken

Bei der Bereitstellung eines Chatbots, insbesondere in Kundendienstszenarien, ist es entscheidend, Risiken im Zusammenhang mit Missbrauch, Anfragen außerhalb des Geltungsbereichs und unangemessenen Antworten zu verhindern. Während Claude von Natur aus widerstandsfähig gegen solche Szenarien ist, hier sind zusätzliche Schritte zur Stärkung Ihrer Chatbot-Leitplanken:

  • Reduzieren Sie Halluzinationen: Implementieren Sie Faktenprüfungsmechanismen und Zitationen, um Antworten auf bereitgestellte Informationen zu stützen.
  • Überprüfen Sie Informationen: Stellen Sie sicher, dass die Antworten des Agenten mit den Richtlinien Ihres Unternehmens und bekannten Fakten übereinstimmen.
  • Vermeiden Sie vertragliche Verpflichtungen: Stellen Sie sicher, dass der Agent keine Versprechungen macht oder Vereinbarungen eingeht, zu denen er nicht autorisiert ist.
  • Mildern Sie Jailbreaks: Verwenden Sie Methoden wie Harmlosigkeitsfilter 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 Wettbewerbererwähnungsfilter, um den Markenfokus zu erhalten und keine Produkte oder Dienstleistungen von Wettbewerbern zu erwähnen.
  • Halten Sie Claude in seiner Rolle: 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

Bei potenziell langen Antworten kann die Implementierung von Streaming das Benutzerengagement und die Zufriedenheit erheblich verbessern. In diesem Szenario erhalten Benutzer die Antwort schrittweise, anstatt auf die Generierung der gesamten Antwort zu warten.

So implementieren Sie Streaming:

  1. Verwenden Sie die Anthropic Streaming API, um Streaming-Antworten zu unterstützen.
  2. Richten Sie Ihr Frontend ein, um eingehende Textblöcke zu verarbeiten.
  3. Zeigen Sie jeden Block an, sobald er eintrifft, und simulieren Sie so Echtzeit-Tippen.
  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 fortschrittlicherer Modelle mit höheren Basislatenzzeiten, da die progressive Anzeige die Auswirkungen längerer Verarbeitungszeiten mildert.

Skalieren Sie Ihren Chatbot

Mit zunehmender Komplexität Ihres Chatbots kann sich Ihre Anwendungsarchitektur entsprechend weiterentwickeln. Bevor Sie weitere Schichten zu Ihrer Architektur hinzufügen, erwägen Sie die folgenden weniger umfassenden Optionen:

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

Wenn Ihr Chatbot un glaublich vielfältige Aufgaben bewältigt, sollten Sie in Betracht ziehen, einen separaten Intent-Klassifikator hinzuzufügen, um die erste Kundenanfrage zu leiten. Für die bestehende Anwendung würde dies die Erstellung eines Entscheidungsbaums beinhalten, der Kundenanfragen durch den Klassifikator und dann zu spezialisierten Gesprächen (mit eigenen Tools und System-Prompts) leiten würde. 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 aufgerufen werden können, erfordert die Bereitstellung von Claude für Echtzeit-Support-Chatbots einen API-Dienst.

So können Sie vorgehen:

  1. Erstellen Sie einen API-Wrapper: Entwickeln Sie einen einfachen API-Wrapper um Ihre Klassifizierungsfunktion. Sie können beispielsweise Flask API oder Fast API verwenden, um Ihren Code in einen HTTP-Dienst zu verpacken. Ihr HTTP-Dienst könnte die Benutzereingabe akzeptieren und die Assistentenantwort vollständig zurückgeben. Ihr Dienst könnte also die folgenden Eigenschaften haben:

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