Wenn ihr AI auf AWS entwickeln möchtet, solltet ihr Bedrock in Betracht ziehen. Es bietet zahlreiche intelligente Funktionen, die reibungslos mit dem restlichen AWS-Ökosystem zusammenarbeiten und euch Zeit, Risiko und Aufwand sparen.
Juri Ahokas
Head of Partner Business Lead
Juri hat über 20 Jahre Erfahrung in den Bereichen SysOps, DevOps und Produktentwicklung. Er ist ein AWS-zertifizierter Lösungsarchitekt, der davon überzeugt ist, dass die besten Lösungen aus dem Verständnis der Bedürfnisse des Kunden entstehen.
In diesem Blogbeitrag zeige ich euch die Grundlagen für den Einstieg, darunter:
Was es kann.
Wie es mit anderen AWS-Tools zusammenspielt.
Die wichtigsten Konzepte und Funktionen, auf denen es basiert und die es nutzt.
Wie ihr die API verwendet.
Wie die Preisgestaltung funktioniert.
Ein kurzer Rückblick auf den vorherigen Blogbeitrag dieser Reihe
In meinem ersten Blogbeitrag dieser Reihe über die Entwicklung von AI mit AWS-Services habe ich kritische Fehler vorgestellt, die ihr bei der Entwicklung von AI-Lösungen auf AWS vermeiden solltet. Meine wichtigsten Empfehlungen für die erfolgreiche Bereitstellung von AI-Lösungen waren:
Eine klare AI-Strategie definieren.
Einen umfassenden Plan für das Datenmanagement umsetzen.
Kosten effektiv optimieren.
Auf Kennzahlen fokussieren, die den Nutzen von AI abbilden.
Ich habe außerdem kurz drei verschiedene Ebenen der wichtigsten AI-Services von AWS vorgestellt: Amazon Q, AWS Bedrock und AWS Sagemaker. Obwohl wir uns in diesem Blogbeitrag auf AWS Bedrock konzentrieren, lohnt es sich möglicherweise, den vorherigen Beitrag noch einmal zu lesen und euer Wissen zu den beiden anderen Tools aufzufrischen, die zusammenwirken.
Was AWS Bedrock kann
AWS Bedrock bietet euch die Bausteine, um beeindruckende AI-Tools zu entwickeln. Ihr erhaltet automatisch Zugriff auf eine große Auswahl an AI-Modellen – einige für Sprache, andere für Bilder und Grafiken. Das ist besonders praktisch, denn ihr seid nicht auf ein einzelnes Modell festgelegt und könnt das Modell wählen, das am besten zu euren Anforderungen und eurem Budget passt.
Bedrock wird hauptsächlich über APIs genutzt, bietet aber auch eine praktische Sandbox-GUI für den Einstieg. Später schauen wir uns die Konzepte und Funktionen, die das ermöglichen, genauer an. Dazu gehört auch Bedrock Studio, mit dem Entwickler und Datenanalysten AI-Anwendungen einfacher visualisieren, testen und anpassen können, ohne sich direkt mit Code oder APIs befassen zu müssen.
Wie AWS Bedrock sich in der AWS-AI-Landschaft abhebt
Bei den AI-Services von AWS basiert die Idee hinter Bedrock teilweise darauf, dass es kein Modell gibt, das für alles geeignet ist.
Als Entwickler erhaltet ihr mit dem API-first-Ansatz von Bedrock Zugriff auf eine breite Palette von Foundation Models statt auf ein einzelnes Modell. Das gibt euch die Flexibilität, unterschiedlichste Anforderungen zu erfüllen.
Da Bedrock serverlos ist, findet ihr für euren Anwendungsfall die perfekte und effizienteste Lösung, ohne euch um die Serverwartung kümmern zu müssen. Darüber hinaus hat AWS gerade eine Vorschau auf eine neue Bedrock-Funktion veröffentlicht, mit der ihr Modelle in Bedrock importieren könnt.
Die wichtigsten Konzepte für die Arbeit mit Bedrock
Foundation Models (FMs)
Bedrock bietet eine große Auswahl vortrainierter Foundation Models (FMs) für verschiedene Aufgaben in der Verarbeitung natürlicher Sprache (NLP) und im Machine Learning (ML). Zu diesen Modellen gehören Large Language Models (LLMs) und multimodale Modelle – alle für unterschiedliche Anwendungen entwickelt.
Diese FMs können eine Vielzahl von Aufgaben übernehmen, zum Beispiel:
Blogbeiträge schreiben.
Dokumente zusammenfassen.
Probleme lösen, die logisches Denken erfordern.
Chatten.
Fragen beantworten.
Und sogar Musik und Gedichte verfassen.
Einige LLM-Modelle, wie Llama 3 von Meta und Titan Text G1 von AWS, sind auf textbasierte Aufgaben spezialisiert. Sie können menschenähnliche Texte verstehen und generieren und eignen sich daher für Übersetzungen, Textzusammenfassungen und die Erstellung von Inhalten. Die FM-„Familien“ haben häufig verschiedene Versionen, die für bestimmte Aufgaben wie Zusammenfassungen, Chats oder schnelle Antworten optimiert sind.
Multimodale Modelle wie Claude 3.5 von Anthropic verarbeiten mehrere Eingabetypen, etwa Text, Bilder und Audio. Das bedeutet, dass sie Aufgaben bewältigen können, die mehrere Datentypen gleichzeitig umfassen.
Da sich die FMs in Bedrock stark unterscheiden, könnt ihr als Entwickler das passendste Modell für euren konkreten Anwendungsfall auswählen – unabhängig davon, ob dieser rein textbasiert ist oder multimodale Fähigkeiten erfordert.
Ihr könnt FMs für ein breites Spektrum an Anwendungen einsetzen – von Chatbots und virtuellen Assistenten bis hin zur Content-Erstellung und Datenanalyse. Dabei müsst ihr weder komplexe Modelle von Grund auf trainieren noch euch auf eine einzige Modellfamilie beschränken. Ihr könnt euch auf die eigentliche Aufgabe konzentrieren und einfach das dafür beste Modell auswählen.
Retrieval Augmented Generation (RAG)
Stellt euch vor, ihr habt das beste Modell für euer Vorhaben ausgewählt. Nun benötigt ihr jedoch ein Modell, das sehr spezifische Fragen zu eurem Geschäftsfeld oder eurem Unternehmen beantworten kann.
Hier kommt RAG ins Spiel. So funktioniert es:
Das Modell selbst verfügt über allgemeines Wissen und Fähigkeiten, um menschenähnliche Gespräche mit zusammenhängenden Sätzen zu führen.
RAG ergänzt dieses Wissen um spezifische Informationen, die auf zusätzlichen Daten basieren, die ihr bereitstellt.
Für einen tieferen Einblick in RAG empfehle ich den hervorragenden Blogbeitrag meines Kollegen: Überlegungen zu RAG-Systemen in der Produkt- und Serviceentwicklung.
In Bedrock befinden sich die RAG-Funktionen in Knowledge Bases. Das „RAGging“ reichert die Antworten des Modells an, indem es relevante Informationen aus diesen Knowledge Bases abruft.
Eine Knowledge Base kann nicht nur zur Beantwortung von Nutzeranfragen und zur Analyse von Dokumenten verwendet werden, sondern auch dazu, Prompts für Foundation Models durch zusätzlichen Kontext zu ergänzen. Die Antworten enthalten Quellenangaben, damit Nutzer die Informationen und ihre Genauigkeit überprüfen können.
Um die Knowledge Base zu nutzen, müsst ihr eure Daten vorverarbeiten, damit sie mit Abfragen verwendet werden können. Dazu werden eure Daten in Chunks aufgeteilt, die anschließend verarbeitet, indexiert und bei Abfragen abgerufen werden. Danach erstellt ihr mit dem ausgewählten Modell Embeddings.
Ihr solltet eure Chunking-Strategie testen, um die beste Performance aus euren Knowledge Bases herauszuholen. Chunking ist entscheidend: Es schafft nicht nur präzisere semantische Zusammenhänge und bessere Antworten, sondern wirkt sich auch positiv auf die allgemeine Performance und die Kosten aus.
Embedding
Beim Embedding werden eure Daten – Wörter, Bilder oder andere Eingaben – zunächst anhand ihrer semantischen Beziehungen in numerische Vektoren umgewandelt und anschließend in einer Vektordatenbank gespeichert.
Die Datenbank hilft dem KI-Modell, Beziehungen zwischen Wörtern zu verstehen und von Nutzern gestellte Aufgaben zu verbessern, zum Beispiel:
Textklassifizierung.
Zusammenfassung.
Übersetzung.
Sentimentanalyse.
Embeddings wandeln komplexe Daten im Wesentlichen in ein Format um, das fundiertere Entscheidungen ermöglicht.
Metadaten der Wissensdatenbank
Möchtet ihr Daten während einer Abfrage der Wissensdatenbank filtern? Dann verwendet eine separate Metadatendatei mit Attributen zur bereitgestellten Datendatei der Wissensdatenbank. Die Datei muss sich im selben S3-Bucket wie die Datendatei befinden und denselben Namen wie die zugehörige Datei tragen, jedoch mit der Erweiterung .metadata.json.
Sicherheit und Guardrails
Wie bei AWS üblich, verwendet Bedrock ein Modell der geteilten Verantwortung. AWS deckt dabei die Grundlagen rund um Hardware sowie die Verschlüsselung ruhender und übertragener Daten ab.
Kundendaten werden nicht an Modellanbieter weitergegeben und nicht zur Verbesserung der Basismodelle verwendet.
Wie erwartet erfüllt Bedrock auch alle gängigen Compliance-Standards wie ISO, HIPAA und DSGVO.
Um Governance und Audits zu unterstützen, bietet Bedrock außerdem umfassende Funktionen für Monitoring und Logging.
Nutzt Amazon CloudWatch, um Nutzungsmetriken zu verfolgen und benutzerdefinierte Dashboards für Audit-Zwecke zu erstellen.
AWS CloudTrail verfolgt sämtliche API-Aktivitäten und hilft bei Bedarf bei der Fehlerbehebung.
Auch das Speichern von Metadaten, Anfragen und Antworten im S3-Bucket und in Amazon CloudWatch Logs ist möglich und empfehlenswert.
Guardrails
Neben den Compliance-Funktionen und der standardmäßig sicheren Konfiguration von Bedrock gibt es die Funktion Guardrails. Damit könnt ihr bestimmte Grenzen festlegen, damit die AI nur sichere und verantwortungsvolle Antworten gibt. Das gilt sowohl für Eingaben als auch für Ausgaben. Aktuell gibt es vier verschiedene Kategorien von Guardrails, die ihr kombinieren könnt:
Inhaltsfilter
Passt die Filterstufen an, um Eingabe-Prompts oder Modellantworten mit schädlichen Inhalten zu verhindern.
Nicht zulässige Themen
Legt eine Liste von Themen fest, die für eure Anwendung nicht akzeptabel sind. Diese Themen werden blockiert, wenn sie in Benutzeranfragen oder Modellantworten vorkommen. Pro Guardrail könnt ihr bis zu 30 Themen auswählen.
Wortfilter
Richtet Filter ein, um unerwünschte Wörter, Ausdrücke und Schimpfwörter zu blockieren, einschließlich beleidigender Begriffe und Namen von Wettbewerbern. Am einfachsten nutzt ihr diesen Filter, indem ihr diese Wörter oder Ausdrücke in einer Datei zusammenstellt und sie anschließend in den Guardrail hochladet.
Filter für sensible Informationen
Blockiert oder verschleiert sensible Informationen, etwa personenbezogene Daten (PII), oder andere Muster, die ihr aus Benutzereingaben und Modellantworten ausschließen möchtet. Diese Anweisungen werden als Regex-Muster angegeben.
Ihr könnt Guardrails auch so einrichten, dass Nutzer eine Nachricht erhalten, wenn eine Eingabe oder Modellantwort gegen eure definierten Guardrail-Richtlinien verstößt.
Ihr könnt mehrere Versionen eures Guardrails erstellen. Zu Beginn wird automatisch ein Arbeitsentwurf bereitgestellt, den ihr schrittweise anpassen könnt. Ihr könnt verschiedene Konfigurationen testen und im integrierten Testfenster prüfen, ob sie zu eurem Anwendungsfall passen.
Sobald ihr mit einer festgelegten Konfiguration zufrieden seid, könnt ihr eine Version des Guardrails finalisieren und sie mit unterstützten Foundation Models bereitstellen.
Ihr könnt Guardrails direkt während des Aufrufs der Inference API auf FMs anwenden, indem ihr die Guardrail-ID und -Version angebt. Wenn ein Guardrail verwendet wird, bewertet es die Eingabe-Prompts und die FM-Vervollständigungen anhand der festgelegten Richtlinien.
Ein wichtiger Hinweis:
Bevor ihr eure Bedrock-Implementierung in Produktion nehmt, müsst ihr diese Guardrails gründlich testen. Beispielsweise unterstützen Guardrails derzeit nur Englisch. Möglicherweise müsst ihr die Guardrail-Konfigurationen testen und optimieren oder andere Möglichkeiten zur Validierung von Antworten prüfen, bevor sie auf dem Bildschirm des Endnutzers erscheinen.
So verwendet ihr die Bedrock API
Es gibt zwei Möglichkeiten, die Bedrock API zu verwenden:
Mit dem AWS Command Line Interface (AWS CLI).
Mit AWS SDKs.
Sehen wir uns beide kurz an.
Verwendung der AWS CLI
Zuerst müsst ihr die Zugangsdaten konfigurieren. So geht's.
Sobald eure Zugangsdaten eingerichtet sind, könnt ihr über die Kommandozeile auf die Bedrock-Operationen zugreifen.
Um alle verfügbaren Befehle anzuzeigen, verwendet: „aws bedrock help“
Um alle verfügbaren Modelle aufzulisten, verwendet: „aws bedrock list-foundation-models --profile YOUR-PROFILE-NAME“
Ein Beispiel für die Verwendung der AWS CLI
Zum Zeitpunkt der Erstellung dieses Artikels hat Anthropic gerade die neueste Version des Claude-3.5-Modells veröffentlicht – verwenden wir sie also für unser Beispiel. Da gerade die UEFA-Fußball-Europameisterschaft 2024 stattfindet, fragen wir Claude 3.5 zum Spaß, welche Nation seiner Meinung nach die besten Chancen auf den Turniersieg hat.
aws bedrock-runtime converse \--model-id anthropic.claude-3-5-sonnet-20240620-v1:0 \--messages '{"role": "user", "content": [{"text": "Based on historical data and success in big tournaments what countries are the top-3 favorites to win Euro2024 Football championship?"}]}' \--region us-east-1 \--query output.message.content \--profile YOUR-PROFILE-NAME
Antwort:
[
{
"text": "Basierend auf historischen Daten, jüngsten Leistungen und Erfolgen bei großen Turnieren sind die drei wahrscheinlichsten Favoriten auf den Gewinn der Euro 2024:nn1. Frankreich: Als aktueller Vizeweltmeister (2022) und Achtelfinalist der Euro 2020 (ausgetragen 2021) gehört Frankreich im internationalen Fußball konstant zu den stärksten Teams. Das Team gewann die Weltmeisterschaft 2018 und verfügt über einen breiten Pool an Talenten.nn2. England: Als Finalist der Euro 2020 und Halbfinalist der Weltmeisterschaft 2018 hat England in den vergangenen Jahren deutliche Fortschritte gemacht. Das Team verfügt über einen jungen, talentierten Kader und hat bei großen Turnieren gute Leistungen gezeigt.nn3. Deutschland: Obwohl es bei den jüngsten Turnieren einige enttäuschende Ergebnisse gab, ist Deutschland immer ein ernstzunehmender Kandidat – besonders als Gastgeber. Die Euro 2024 findet in Deutschland statt, was dem Team einen Vorteil verschaffen könnte. Deutschland kann auf eine erfolgreiche Geschichte bei großen Turnieren zurückblicken und ist dafür bekannt, in wichtigen Wettbewerben gute Leistungen zu bringen.nnErwähnenswert ist, dass auch Spanien, Italien, Belgien und Portugal zu den starken Kandidaten zählen könnten. Die tatsächlichen Favoriten können sich jedoch je nach Teamleistung, Verletzungen und anderen Faktoren bis zum Turnier noch ändern."
}
]
Also … Glückwunsch, Deutschland!
Verwendung des AWS SDK
Als Nächstes verwenden wir ein kurzes Codebeispiel, das mit dem AWS SDK für Python (Boto3) erstellt wurde. (Ich empfehle, venv zu verwenden, damit euer System übersichtlich bleibt.)
Ein Beispiel für die Verwendung des AWS SDK
In diesem Beispiel möchte ich die folgende Grafik zum Gesamtenergieverbrauch und zu den Kohlendioxidemissionen in Finnland von 1990 bis 2020 analysieren.
Code:
import boto3from botocore.exceptions import ClientErrorMODEL_ID = "anthropic.claude-3-5-sonnet-20240620-v1:0" #Note: exact model ID and available regions do change over timeIMAGE_NAME = "energy_FI.png"profile_name = "YOUR-PROFILE-NAME" # Add this line to define the profile_name variableif profile_name: session = boto3.Session(profile_name=profile_name) bedrock_runtime = session.client('bedrock-runtime', region_name="us-east-1")else: bedrock_runtime = boto3.client('bedrock-runtime', region_name="us-east-1")with open(IMAGE_NAME, "rb") as f: image = f.read()user_message = "Analyze this picture and explain what is happening, when and why? Think step by step and explain trends and events which explain changes in the graph. Output in JSON."
messages = [ { "role": "user", "content": [ {"image": {"format": "png", "source": {"bytes": image}}}, {"text": user_message}, ], }]response = bedrock_runtime.converse( modelId=MODEL_ID, messages=messages,)response_text = response["output"]["message"]["content"][0]["text"]print(response_text)
Antwort:
{ "analysis": { "type_of_graph": "Gestapeltes Balkendiagramm mit überlagertem Liniendiagramm", "time_period": "1990 bis 2020", "main_metrics": [ "Energiequellen (TJ)", "Kohlendioxidemissionen (Mio. t CO2)" ], "energy_sources": [ "Fossiliset (Fossile Brennstoffe)", "Turve (Torf)", "Uusiutuvat (Erneuerbare Energien)", "Ydinenergia (Kernenergie)", "Muut (Sonstige)" ], "trends": [ { "trend": "Rückläufiger Einsatz fossiler Brennstoffe", "description": "Der blaue Balken für fossile Brennstoffe zeigt einen allgemeinen Rückgang, der ab 2010 besonders deutlich ausfällt.", "possible_reason": "Verstärkter Fokus auf die Senkung von CO2-Emissionen und den Übergang zu saubereren Energiequellen." }, { "trend": "Zunehmende Nutzung erneuerbarer Energien", "description": "Der hellblaue Balken für erneuerbare Energien zeigt über den gesamten Zeitraum ein stetiges Wachstum.", "possible_reason": "Staatliche Maßnahmen zur Förderung erneuerbarer Energien, technologische Fortschritte und ein wachsendes Umweltbewusstsein." }, { "trend": "Schwankende Nutzung der Kernenergie", "description": "Der rosafarbene Balken für Kernenergie zeigt einige Schwankungen, bleibt aber ein wichtiger Bestandteil des Energiemixes.", "possible_reason": "Änderungen in der Kernenergiepolitik, im Anlagenbetrieb oder in der öffentlichen Einstellung zur Kernenergie." }, { "trend": "Rückläufige CO2-Emissionen", "description": "Die schwarze Linie für CO2-Emissionen zeigt um 2003–2004 einen Höhepunkt und anschließend einen stetigen Rückgang.", "possible_reason": "Umstieg auf sauberere Energiequellen, höhere Energieeffizienz und die Umsetzung klimapolitischer Maßnahmen." } ], "notable_events": [ { "period": "Anfang der 2000er-Jahre", "event": "Höchststand beim Gesamtenergieverbrauch und bei den CO2-Emissionen", "possible_explanation": "Wirtschaftswachstum führte zu einem höheren Energiebedarf, bevor Effizienzmaßnahmen und sauberere Technologien breit eingeführt wurden." }, { "period": "Ab 2010", "event": "Beschleunigter Rückgang bei der Nutzung fossiler Brennstoffe und den CO2-Emissionen", "possible_explanation": "Strengere Umweltvorschriften, das Pariser Abkommen (2015) und die schnellere Einführung erneuerbarer Technologien." } ], "overall_conclusion": "Das Diagramm zeigt von 1990 bis 2020 einen klaren Wandel im finnischen Energiemix: weg von fossilen Brennstoffen und hin zu erneuerbaren Energiequellen. Dies führte insbesondere in der zweiten Hälfte des Zeitraums zu einer deutlichen Senkung der CO2-Emissionen." }}
So funktioniert das Preismodell von Bedrock
Die Kosten für die Nutzung von Bedrock basieren auf Modellinferenz und Anpassung. Kurz gesagt: Bei der Nutzung der API entstehen Kosten pro Token, deren Höhe je nach Modell variiert. Sowohl Eingabe- als auch Ausgabe-Token werden abgerechnet.
Bei den Preismodellen habt ihr zwei Optionen: On-Demand und Provisioned Throughput.
On-Demand
Ich empfehle euch dringend, die On-Demand-Preise zu nutzen, bis ihr ein klares Bild von eurer Nutzung habt. Sie eignen sich gut für Tests, Tuning und POC-Setups.
Provisioned Throughput
Zieht dieses Preismodell in Betracht, wenn ihr einen überzeugenden Business Case habt und wisst, dass Provisioned Throughput finanziell sinnvoll ist. Nutzt diese Option nur bei konstant hoher Nachfrage, da sie recht teuer ist.
Weitere wichtige Kostenfaktoren sind Knowledge Bases und Guardrails. Leider bietet AWS noch keinen offiziellen, einfach nutzbaren Preisrechner. Auf der AWS-Bedrock-Preisseite findet ihr jedoch weitere Informationen.
Abschließende Tipps
Wagt euch mutig dorthin, wo euer Unternehmen noch nie war – aber denkt daran, Kostenalarme einzurichten.
Ich empfehle euch dringend, euch bei der AWS Console anzumelden und euch im Bedrock-Playground umzusehen.
Testet verschiedene Modelle im Playground.
Testet die Leistung und Vorteile von Knowledge Bases mit euren nicht kategorisierten Daten.
Überlegt euch konkrete Guardrails und Kombinationen und testet sie, um sichere Antworten bereitzustellen.
Legt los und experimentiert mit AWS CLI und SDKs.
Denkt dabei jedoch daran, dass in Cloud-Umgebungen in den meisten Fällen für alles zumindest geringe Kosten anfallen. Wenn die Kosten also nicht auf Organisationsebene verwaltet werden, solltet ihr eigene Abrechnungsalarme einrichten. So geht's.
Entwickelt neue, konkrete Lösungen
Jetzt, da die „neue Ära des Computing“ angebrochen ist, solltet ihr bestehende Herausforderungen aus einer anderen Perspektive betrachten. Haltet während eures Arbeitsalltags Augen und Ohren offen für Möglichkeiten, mit denen AI-Lösungen alltägliche Probleme lösen könnten.
Schaut euch auch euren Ideen-Backlog oder kürzlich verworfene Ideen an. Vielleicht gibt es jetzt eine AI-gestützte Lösung, mit der ihr sie umsetzen könnt.
Bonus-Tipp: Bedrock Studio nutzen
Amazon Bedrock Studio ist eine kürzlich veröffentlichte Preview-Funktion von Bedrock. Damit könnt ihr Apps einfach erstellen, ohne eine separate Entwicklungsumgebung zu benötigen. Stellt es euch als benutzerfreundliche Weboberfläche vor, in der ihr mit verschiedenen Modellen und Funktionen experimentieren könnt. Beispielsweise könnt ihr unterschiedliche Prompts mit dem Anthropic-Claude-Modell ausprobieren, ohne Code zu schreiben.
Mit Bedrock Studio könnt ihr auch Funktionen wie Knowledge Bases (für kontextbezogene Antworten), Guardrails (für verantwortungsvolle AI) und Function Calling (für den Zugriff auf bestimmte Funktionen) einfach hinzufügen – ganz ohne Programmierkenntnisse.
- AI
- Design and UX
- Software development
Subscribe to our newsletter
Related blogs