Generative Datenintelligenz

Verbessern Sie die Konversations-KI mit erweiterten Routing-Techniken mit Amazon Bedrock | Amazon Web Services

Datum:

Konversationsassistenten mit künstlicher Intelligenz (KI) sind so konzipiert, dass sie präzise Antworten in Echtzeit liefern, indem sie Anfragen intelligent an die am besten geeigneten KI-Funktionen weiterleiten. Mit AWS generative KI-Dienste wie Amazonas Grundgesteinkönnen Entwickler Systeme erstellen, die Benutzeranfragen kompetent verwalten und darauf reagieren. Amazon Bedrock ist ein vollständig verwalteter Dienst, der eine Auswahl leistungsstarker Foundation-Modelle (FMs) von führenden KI-Unternehmen wie AI21 Labs, Anthropic, Cohere, Meta, Stability AI und Amazon über eine einzige API sowie eine breite Palette von bietet Funktionen, die Sie zum Erstellen generativer KI-Anwendungen mit Sicherheit, Datenschutz und verantwortungsvoller KI benötigen.

In diesem Beitrag werden zwei Hauptansätze für die Entwicklung von KI-Assistenten bewertet: die Verwendung verwalteter Dienste wie z Agenten für Amazon Bedrockund den Einsatz von Open-Source-Technologien wie LangChain. Wir erkunden die Vorteile und Herausforderungen jedes einzelnen, damit Sie den für Ihre Bedürfnisse am besten geeigneten Weg wählen können.

Was ist ein KI-Assistent?

Ein KI-Assistent ist ein intelligentes System, das Anfragen in natürlicher Sprache versteht und mit verschiedenen Tools, Datenquellen und APIs interagiert, um Aufgaben auszuführen oder Informationen im Namen des Benutzers abzurufen. Effektive KI-Assistenten verfügen über die folgenden Schlüsselfähigkeiten:

  • Verarbeitung natürlicher Sprache (NLP) und Gesprächsfluss
  • Integration von Wissensdatenbanken und semantische Suche, um relevante Informationen basierend auf den Nuancen des Konversationskontexts zu verstehen und abzurufen
  • Ausführen von Aufgaben wie Datenbankabfragen und benutzerdefinierten AWS Lambda Funktionen
  • Bearbeitung von Fachgesprächen und Benutzeranfragen

Den Nutzen von KI-Assistenten demonstrieren wir am Beispiel der Geräteverwaltung im Internet of Things (IoT). In diesem Anwendungsfall kann KI Technikern dabei helfen, Maschinen mithilfe von Befehlen, die Daten abrufen oder Aufgaben automatisieren, effizient zu verwalten und so die Abläufe in der Fertigung zu rationalisieren.

Agents for Amazon Bedrock-Ansatz

Agenten für Amazon Bedrock ermöglicht Ihnen die Erstellung generativer KI-Anwendungen, die mehrstufige Aufgaben in den Systemen und Datenquellen eines Unternehmens ausführen können. Es bietet die folgenden Hauptfunktionen:

  • Automatische Erstellung von Eingabeaufforderungen aus Anweisungen, API-Details und Datenquelleninformationen, wodurch wochenlanger Aufwand für die schnelle Entwicklung eingespart wird
  • Retrieval Augmented Generation (RAG), um Agenten sicher mit den Datenquellen eines Unternehmens zu verbinden und relevante Antworten bereitzustellen
  • Orchestrierung und Ausführung mehrstufiger Aufgaben durch Aufteilen von Anforderungen in logische Sequenzen und Aufrufen erforderlicher APIs
  • Einblick in die Argumentation des Agenten durch einen Chain-of-Think (CoT)-Trace, der die Fehlerbehebung und Steuerung des Modellverhaltens ermöglicht
  • Prompt-Engineering-Fähigkeiten zur Änderung der automatisch generierten Prompt-Vorlage für eine bessere Kontrolle über Agenten

Sie können Agenten für Amazon Bedrock und verwenden Wissensdatenbanken für Amazon Bedrock um KI-Assistenten für komplexe Routing-Anwendungsfälle zu erstellen und bereitzustellen. Sie bieten Entwicklern und Organisationen einen strategischen Vorteil, indem sie das Infrastrukturmanagement vereinfachen, die Skalierbarkeit verbessern, die Sicherheit verbessern und undifferenzierten Arbeitsaufwand reduzieren. Sie ermöglichen außerdem einen einfacheren Code auf der Anwendungsebene, da die Routing-Logik, die Vektorisierung und der Speicher vollständig verwaltet werden.

Lösungsüberblick

Diese Lösung führt einen dialogorientierten KI-Assistenten ein, der auf die Verwaltung und den Betrieb von IoT-Geräten zugeschnitten ist, wenn Claude v2.1 von Anthropic auf Amazon Bedrock verwendet wird. Die Kernfunktionalität des KI-Assistenten wird durch einen umfassenden Befehlssatz geregelt, der als a bezeichnet wird Systemaufforderung, das seine Fähigkeiten und Fachgebiete beschreibt. Diese Anleitung stellt sicher, dass der KI-Assistent ein breites Aufgabenspektrum bewältigen kann, von der Verwaltung von Geräteinformationen bis hin zur Ausführung von Betriebsbefehlen.

"""The following is the system prompt that outlines the full scope of the AI assistant's capabilities:
You are an IoT Ops agent that handles the following activities:
- Looking up IoT device information
- Checking IoT operating metrics (historical data)
- Performing actions on a device-by-device ID
- Answering general questions
You can check device information (Device ID, Features, Technical Specifications, Installation Guide, Maintenance and Troubleshooting, Safety Guidelines, Warranty, and Support) from the "IotDeviceSpecs" knowledge base.
Additionally, you can access device historical data or device metrics. The device metrics are stored in an Athena DB named "iot_ops_glue_db" in a table named "iot_device_metrics". 
The table schema includes fields for oil level, temperature, pressure, received_at timestamp, and device_id.
The available actions you can perform on the devices include start, shutdown, and reboot."""

Ausgestattet mit diesen Funktionen, wie in der Systemaufforderung beschrieben, folgt der KI-Assistent einem strukturierten Arbeitsablauf, um Benutzerfragen zu beantworten. Die folgende Abbildung bietet eine visuelle Darstellung dieses Workflows und veranschaulicht jeden Schritt von der ersten Benutzerinteraktion bis zur endgültigen Antwort.

eine visuelle Darstellung dieses Arbeitsablaufs, die jeden Schritt von der ersten Benutzerinteraktion bis zur endgültigen Antwort veranschaulicht.

Der Workflow besteht aus folgenden Schritten:

  1. Der Prozess beginnt, wenn ein Benutzer den Assistenten auffordert, eine Aufgabe auszuführen. Fragen Sie beispielsweise nach den maximalen Datenpunkten für ein bestimmtes IoT-Gerät device_xxx. Diese Texteingabe wird erfasst und an den KI-Assistenten gesendet.
  2. Der KI-Assistent interpretiert die Texteingabe des Benutzers. Es nutzt den bereitgestellten Gesprächsverlauf, Aktionsgruppen und Wissensdatenbanken, um den Kontext zu verstehen und die notwendigen Aufgaben zu bestimmen.
  3. Nachdem die Absicht des Benutzers analysiert und verstanden wurde, definiert der KI-Assistent Aufgaben. Dies basiert auf den Anweisungen, die der Assistent entsprechend der Systemaufforderung und den Benutzereingaben interpretiert.
  4. Die Aufgaben werden dann über eine Reihe von API-Aufrufen ausgeführt. Dies geschieht mit Reagieren Eingabeaufforderung, die die Aufgabe in eine Reihe von Schritten unterteilt, die nacheinander verarbeitet werden:
    1. Für die Überprüfung der Gerätemetriken verwenden wir die check-device-metrics Aktionsgruppe, die einen API-Aufruf an Lambda-Funktionen beinhaltet, die dann eine Abfrage durchführen Amazonas Athena für die angeforderten Daten.
    2. Für direkte Geräteaktionen wie Starten, Stoppen oder Neustarten verwenden wir die action-on-device Aktionsgruppe, die eine Lambda-Funktion aufruft. Diese Funktion initiiert einen Prozess, der Befehle an das IoT-Gerät sendet. Für diesen Beitrag sendet die Lambda-Funktion Benachrichtigungen mit Einfacher Amazon-E-Mail-Dienst (Amazon-SES).
    3. Wir verwenden Wissensdatenbanken für Amazon Bedrock, um historische Daten abzurufen, die als Einbettungen in gespeichert sind Amazon OpenSearch-Dienst Vektordatenbank.
  5. Nachdem die Aufgaben abgeschlossen sind, wird die endgültige Antwort von Amazon Bedrock FM generiert und an den Benutzer zurückgesendet.
  6. Agenten für Amazon Bedrock speichern Informationen automatisch mithilfe einer zustandsbehafteten Sitzung, um die gleiche Konversation aufrechtzuerhalten. Der Status wird nach Ablauf eines konfigurierbaren Leerlauf-Timeouts gelöscht.

Technische Übersicht

Das folgende Diagramm veranschaulicht die Architektur zur Bereitstellung eines KI-Assistenten mit Agents for Amazon Bedrock.

Architekturdiagramm zur Bereitstellung eines KI-Assistenten mit Agents für Amazon Bedrock.

Es besteht aus folgenden Schlüsselkomponenten:

  • Konversationsschnittstelle – Die Konversationsschnittstelle nutzt Streamlit, eine Open-Source-Python-Bibliothek, die die Erstellung benutzerdefinierter, optisch ansprechender Web-Apps für maschinelles Lernen (ML) und Datenwissenschaft vereinfacht. Es wird gehostet auf Amazon Elastic Container-Service (Amazon ECS) mit AWS Fargate, und der Zugriff erfolgt über einen Application Load Balancer. Sie können Fargate mit Amazon ECS ausführen Behälter ohne Server, Cluster oder virtuelle Maschinen verwalten zu müssen.
  • Agenten für Amazon Bedrock – Agents for Amazon Bedrock vervollständigt die Benutzeranfragen durch eine Reihe von Argumentationsschritten und entsprechenden darauf basierenden Aktionen ReAct-Aufforderung:
    • Wissensdatenbanken für Amazon Bedrock – Wissensdatenbanken für Amazon Bedrock bieten eine vollständige Verwaltung RAG um dem KI-Assistenten Zugriff auf Ihre Daten zu gewähren. In unserem Anwendungsfall haben wir Gerätespezifikationen in eine hochgeladen Amazon Simple Storage-Service (Amazon S3) Eimer. Es dient als Datenquelle für die Wissensdatenbank.
    • Aktionsgruppen – Hierbei handelt es sich um definierte API-Schemas, die bestimmte Lambda-Funktionen aufrufen, um mit IoT-Geräten und anderen AWS-Diensten zu interagieren.
    • Anthropic Claude v2.1 auf Amazon Bedrock – Dieses Modell interpretiert Benutzeranfragen und orchestriert den Aufgabenfluss.
    • Amazon Titan-Einbettungen – Dieses Modell dient als Texteinbettungsmodell und wandelt Text in natürlicher Sprache – von einzelnen Wörtern bis hin zu komplexen Dokumenten – in numerische Vektoren um. Dies ermöglicht Vektorsuchfunktionen, die es dem System ermöglichen, Benutzeranfragen semantisch mit den relevantesten Wissensdatenbankeinträgen abzugleichen, um eine effektive Suche zu ermöglichen.

Die Lösung ist in AWS-Dienste wie Lambda zum Ausführen von Code als Reaktion auf API-Aufrufe, Athena zum Abfragen von Datensätzen, OpenSearch Service zum Durchsuchen von Wissensdatenbanken und Amazon S3 für die Speicherung integriert. Diese Dienste arbeiten zusammen, um ein nahtloses Erlebnis für die Betriebsverwaltung von IoT-Geräten durch Befehle in natürlicher Sprache zu bieten.

Benefits

Diese Lösung bietet folgende Vorteile:

  • Komplexität der Implementierung:
    • Es sind weniger Codezeilen erforderlich, da Agents for Amazon Bedrock einen Großteil der zugrunde liegenden Komplexität abstrahiert und so den Entwicklungsaufwand reduziert
    • Die Verwaltung von Vektordatenbanken wie OpenSearch Service wird vereinfacht, da Knowledge Bases für Amazon Bedrock die Vektorisierung und Speicherung übernimmt
    • Die Integration mit verschiedenen AWS-Diensten wird durch vordefinierte Aktionsgruppen optimiert
  • Entwicklererfahrung:
    • Die Amazon Bedrock-Konsole bietet eine benutzerfreundliche Oberfläche für schnelle Entwicklung, Tests und Ursachenanalyse (RCA) und verbessert so das gesamte Entwicklererlebnis
  • Agilität und Flexibilität:
    • Agents für Amazon Bedrock ermöglichen nahtlose Upgrades auf neuere FMs (z. B. Claude 3.0), sobald diese verfügbar sind, sodass Ihre Lösung mit den neuesten Entwicklungen auf dem neuesten Stand bleibt
    • Servicekontingente und -beschränkungen werden von AWS verwaltet, wodurch der Aufwand für die Überwachung und Skalierung der Infrastruktur reduziert wird
  • Sicherheit:
    • Amazon Bedrock ist ein vollständig verwalteter Dienst, der die strengen Sicherheits- und Compliance-Standards von AWS einhält und möglicherweise die Sicherheitsüberprüfungen von Organisationen vereinfacht

Obwohl Agents for Amazon Bedrock eine optimierte und verwaltete Lösung für die Erstellung von Konversations-KI-Anwendungen bietet, bevorzugen einige Organisationen möglicherweise einen Open-Source-Ansatz. In solchen Fällen können Sie Frameworks wie LangChain verwenden, die wir im nächsten Abschnitt besprechen.

LangChain-Ansatz für dynamisches Routing

LangChain ist ein Open-Source-Framework, das den Aufbau von Konversations-KI vereinfacht, indem es die Integration großer Sprachmodelle (LLMs) und dynamische Routing-Funktionen ermöglicht. Mit der LangChain Expression Language (LCEL) können Entwickler die definieren Routing, wodurch Sie nichtdeterministische Ketten erstellen können, bei denen die Ausgabe eines vorherigen Schritts den nächsten Schritt definiert. Routing trägt dazu bei, Struktur und Konsistenz bei Interaktionen mit LLMs zu gewährleisten.

Für diesen Beitrag verwenden wir dasselbe Beispiel wie den KI-Assistenten für die IoT-Geräteverwaltung. Der Hauptunterschied besteht jedoch darin, dass wir die Systemaufforderungen separat behandeln und jede Kette als separate Einheit behandeln müssen. Die Routing-Kette entscheidet über die Zielkette basierend auf den Eingaben des Benutzers. Die Entscheidung wird mit Unterstützung eines LLM getroffen, indem die Systemaufforderung, der Chatverlauf und die Frage des Benutzers übergeben werden.

Lösungsüberblick

Das folgende Diagramm veranschaulicht den Workflow der dynamischen Routing-Lösung.

Dynamischer Routing-Lösungsworkflow mit LangChain

Der Arbeitsablauf besteht aus den folgenden Schritten:

  1. Der Benutzer stellt dem KI-Assistenten eine Frage. Beispiel: „Was sind die maximalen Messwerte für Gerät 1009?“
  2. Ein LLM wertet jede Frage zusammen mit dem Chat-Verlauf derselben Sitzung aus, um ihre Art und den Themenbereich zu bestimmen (z. B. SQL, Aktion, Suche oder SME). Das LLM klassifiziert die Eingabe und die LCEL-Routingkette übernimmt diese Eingabe.
  3. Die Router-Kette wählt die Zielkette basierend auf der Eingabe aus und der LLM erhält die folgende Systemaufforderung:
"""Given the user question below, classify it as one of the candidate prompts. You may want to modify the input considering the chat history and the context of the question. 
Sometimes the user may just assume that you have the context of the conversation and may not provide a clear input. Hence, you are being provided with the chat history for more context. 
Respond with only a Markdown code snippet containing a JSON object formatted EXACTLY as specified below. 
Do not provide an explanation to your classification beside the Markdown, I just need to know your decision on which destination and next_inputs
<candidate prompt>
physics: Good for answering questions about physics
sql: sql: Good for querying sql from AWS Athena. User input may look like: get me max or min for device x?
lambdachain: Good to execute actions with Amazon Lambda like shutting down a device or turning off an engine User input can be like, shutdown device x, or terminate process y, etc.
rag: Good to search knowledgebase and retrieve information about devices and other related information. User question can be like: what do you know about device x?
default: if the input is not well suited for any of the candidate prompts above. this could be used to carry on the conversation and respond to queries like provide a summary of the conversation
</candidate prompt>"""

Das LLM wertet die Frage des Benutzers zusammen mit dem Chatverlauf aus, um die Art der Anfrage und den Themenbereich zu bestimmen, zu dem sie gehört. Anschließend klassifiziert das LLM die Eingabe und gibt eine JSON-Antwort im folgenden Format aus:

<Markdown>
```json
{{
"destination": string  name of the prompt to use
"next_inputs": string  a potentially modified version of the original input
}}
```

Die Routerkette verwendet diese JSON-Antwort, um die entsprechende Zielkette aufzurufen. Es gibt vier fachspezifische Zielketten mit jeweils eigener Systemaufforderung:

  1. SQL-bezogene Abfragen werden für Datenbankinteraktionen an die SQL-Zielkette gesendet. Sie können LCEL verwenden, um das zu erstellen SQL-Kette.
  2. Aktionsorientierte Fragen rufen die benutzerdefinierte Lambda-Zielkette für die Ausführung von Vorgängen auf. Mit LCEL können Sie Ihre eigenen definieren benutzerdefinierte Funktion; In unserem Fall handelt es sich um eine Funktion zum Ausführen einer vordefinierten Lambda-Funktion, um eine E-Mail mit einer analysierten Geräte-ID zu senden. Eine Beispiel-Benutzereingabe könnte „Gerät 1009 herunterfahren“ lauten.
  3. Suchorientierte Anfragen werden an die weitergegeben RAG Zielkette für den Informationsabruf.
  4. Bei Fragen zu KMU wenden Sie sich an die Zielkette KMU/Experte, um spezielle Einblicke zu erhalten.
  5. Jede Zielkette nimmt die Eingabe entgegen und führt die erforderlichen Modelle oder Funktionen aus:
    1. Die SQL-Kette verwendet Athena zum Ausführen von Abfragen.
    2. Die RAG-Kette nutzt OpenSearch Service für die semantische Suche.
    3. Die benutzerdefinierte Lambda-Kette führt Lambda-Funktionen für Aktionen aus.
    4. Die KMU-/Expertenkette liefert Erkenntnisse mithilfe des Amazon Bedrock-Modells.
  6. Antworten aus jeder Zielkette werden vom LLM in kohärente Erkenntnisse formuliert. Diese Erkenntnisse werden dann dem Benutzer übermittelt und schließen den Abfragezyklus ab.
  7. Benutzereingaben und Antworten werden in gespeichert Amazon DynamoDB um dem LLM Kontext für die aktuelle Sitzung und vergangene Interaktionen bereitzustellen. Die Dauer der persistenten Informationen in DynamoDB wird von der Anwendung gesteuert.

Technische Übersicht

Das folgende Diagramm veranschaulicht die Architektur der dynamischen Routing-Lösung von LangChain.

Architekturdiagramm der dynamischen Routing-Lösung LangChain

Die Webanwendung basiert auf Streamlit, das auf Amazon ECS mit Fargate gehostet wird, und der Zugriff erfolgt über einen Application Load Balancer. Wir verwenden Claude v2.1 von Anthropic auf Amazon Bedrock als unser LLM. Die Webanwendung interagiert mit dem Modell über LangChain-Bibliotheken. Es interagiert auch mit einer Vielzahl anderer AWS-Dienste wie OpenSearch Service, Athena und DynamoDB, um die Anforderungen der Endbenutzer zu erfüllen.

Benefits

Diese Lösung bietet folgende Vorteile:

  • Komplexität der Implementierung:
    • Obwohl mehr Code und benutzerdefinierte Entwicklung erforderlich sind, bietet LangChain eine größere Flexibilität und Kontrolle über die Routing-Logik und die Integration mit verschiedenen Komponenten.
    • Die Verwaltung von Vektordatenbanken wie OpenSearch Service erfordert zusätzlichen Einrichtungs- und Konfigurationsaufwand. Der Vektorisierungsprozess ist im Code implementiert.
    • Die Integration mit AWS-Diensten erfordert möglicherweise mehr benutzerdefinierten Code und mehr Konfiguration.
  • Entwicklererfahrung:
    • Der Python-basierte Ansatz und die umfangreiche Dokumentation von LangChain können für Entwickler attraktiv sein, die bereits mit Python und Open-Source-Tools vertraut sind.
    • Eine zeitnahe Entwicklung und Fehlerbehebung erfordern im Vergleich zur Verwendung der Amazon Bedrock-Konsole möglicherweise mehr manuellen Aufwand.
  • Agilität und Flexibilität:
    • LangChain unterstützt eine breite Palette von LLMs, sodass Sie zwischen verschiedenen Modellen oder Anbietern wechseln und so die Flexibilität fördern können.
    • Der Open-Source-Charakter von LangChain ermöglicht von der Community vorangetriebene Verbesserungen und Anpassungen.
  • Sicherheit:
    • Als Open-Source-Framework erfordert LangChain möglicherweise strengere Sicherheitsüberprüfungen und -überprüfungen innerhalb von Organisationen, was möglicherweise zu zusätzlichem Aufwand führt.

Zusammenfassung

Konversations-KI-Assistenten sind transformative Werkzeuge zur Rationalisierung von Abläufen und zur Verbesserung der Benutzererfahrung. In diesem Beitrag wurden zwei leistungsstarke Ansätze unter Verwendung von AWS-Diensten untersucht: die verwalteten Agenten für Amazon Bedrock und das flexible, dynamische Open-Source-Routing von LangChain. Die Wahl zwischen diesen Ansätzen hängt von den Anforderungen Ihres Unternehmens, den Entwicklungspräferenzen und dem gewünschten Maß an Anpassung ab. Unabhängig vom eingeschlagenen Weg ermöglicht Ihnen AWS die Entwicklung intelligenter KI-Assistenten, die Geschäfts- und Kundeninteraktionen revolutionieren

Den Lösungscode und die Bereitstellungsressourcen finden Sie in unserem GitHub-Repository, wo Sie die detaillierten Schritte für jeden Konversations-KI-Ansatz befolgen können.


Über die Autoren

Ameer Hakme ist ein AWS-Lösungsarchitekt mit Sitz in Pennsylvania. Er arbeitet mit unabhängigen Softwareanbietern (ISVs) in der Nordostregion zusammen und unterstützt sie beim Entwurf und Aufbau skalierbarer und moderner Plattformen in der AWS Cloud. Als Experte für KI/ML und generative KI unterstützt Ameer Kunden dabei, das Potenzial dieser Spitzentechnologien auszuschöpfen. In seiner Freizeit fährt er gerne Motorrad und verbringt viel Zeit mit seiner Familie.

Sharon Lic ist ein KI/ML-Lösungsarchitekt bei Amazon Web Services mit Sitz in Boston, mit einer Leidenschaft für das Entwerfen und Erstellen generativer KI-Anwendungen auf AWS. Sie arbeitet mit Kunden zusammen, um AWS AI/ML-Services für innovative Lösungen zu nutzen.

Kawsar Kamal ist leitender Lösungsarchitekt bei Amazon Web Services mit über 15 Jahren Erfahrung im Bereich Infrastrukturautomatisierung und Sicherheit. Er unterstützt Kunden beim Entwurf und Aufbau skalierbarer DevSecOps- und AI/ML-Lösungen in der Cloud.

spot_img

Neueste Intelligenz

spot_img

Chat mit uns

Hallo! Wie kann ich dir helfen?