AWS Germany – Amazon Web Services in Deutschland

Amazon Bedrock ist jetzt allgemein verfügbar!

von Antje Barth, übersetzt von Tobias Nitzsche.

Im April haben wir Amazon Bedrock als Teil eines neuen Toolsets für den Bau von generativer KI auf AWS vorgestellt. Amazon Bedrock ist ein vollständig verwalteter Service, der eine Auswahl von leistungsstarken Grundlagenmodellen (engl. Foundation Models – FMs) von führenden KI-Unternehmen wie AI21 Labs [EN, Extern], Anthropic [EN, Extern], Cohere [EN, Extern], Stability AI [EN, Extern] und Amazon [EN] bietet. Dazu kommen umfangreiche Möglichkeiten, generative KI-Anwendungen zu erstellen, wobei die Entwicklung vereinfacht wird, ohne dabei Datenschutz und Sicherheit zu vernachlässigen.

Heute freue ich mich, Ihnen mitteilen zu können, dass Amazon Bedrock nun allgemein verfügbar ist! Zudem freue ich mich, Ihnen mitteilen zu können, dass Metas Llama 2 [EN, Extern] 13B und 70B Parameter-Modelle bald auch auf Amazon Bedrock verfügbar sein werden.

Die umfassenden Möglichkeiten von Amazon Bedrock unterstützen Sie dabei, mit einer Vielzahl von Top-FMs zu experimentieren, sie privat mit Ihren Daten mittels Techniken wie Feinabstimmung und Retrieval-augmented Generation (RAG) anzupassen und verwaltete Agents zu erstellen, die komplexe Geschäftsaufgaben erledigen – und das alles ohne jeglichen Code. Schauen Sie sich meine vorherigen Beiträge an, um mehr über Agents für Amazon Bedrock und die Verbindung von FMs mit den Datenquellen Ihres Unternehmens zu erfahren.

Bitte beachten Sie, dass einige Funktionen, wie z.B. Agents für Amazon Bedrock einschließlich Wissensdatenbanken, weiterhin als Vorschau verfügbar sind. Genauere Details dazu, welche Funktionen weiterhin in der Vorschau verfügbar sind, werde ich gegen Ende dieses Blog-Beitrags mitteilen.

Da Amazon Bedrock serverlos ist, müssen Sie keine Infrastruktur verwalten. Sie können generative KI-Fähigkeiten sicher in Ihre bestehenden und neuen Anwendungen integrieren, indem Sie die Ihnen bereits vertrauten AWS-Dienste nutzen.

Amazon Bedrock ist mit Amazon CloudWatch und AWS CloudTrail integriert, um Ihre Überwachungs- und Governance-Bedürfnisse zu unterstützen. Mit CloudWatch können Sie Nutzungsdaten verfolgen und angepasste Dashboards für Audit-Zwecke erstellen. Mit CloudTrail können Sie API-Aktivitäten überwachen und Probleme beheben, während Sie andere Systeme in Ihre generativen KI-Anwendungen integrieren. Amazon Bedrock ermöglicht es Ihnen auch, Anwendungen zu erstellen, die mit der DSGVO konform sind, und Sie können Amazon Bedrock nutzen, um sensible Workloads gemäß dem US-amerikanischen Health Insurance Portability and Accountability Act (HIPAA) auszuführen.

Starten Sie mit Amazon Bedrock

Sie können auf verfügbare FMs in Amazon Bedrock über die AWS Management Console, AWS SDKs und Open-Source-Frameworks wie LangChain [EN, Extern] zugreifen.

Mit der Amazon Bedrock-Konsole [EN] können Sie FMs durchstöbern und Beispiele sowie Aufforderungen für jedes Modell erkunden und laden. Zuerst müssen Sie den Zugriff auf die Modelle aktivieren. Im Konsolenbereich wählen Sie auf der linken Navigationsleiste Model access (Modellzugriff) aus und aktivieren die Modelle, auf die Sie zugreifen möchten. Sobald der Modellzugriff aktiviert ist, können Sie verschiedene Modelle und Inferenzkonfigurationseinstellungen ausprobieren, um ein Modell zu finden, das zu Ihrem Anwendungsfall passt.

Hier ein Beispiel für einen Anwendungsfall zur Vertragsentitäts-Extraktion mit Cohere’s [EN, Extern] Command Modell:

Das Beispiel zeigt eine Aufforderung mit einer Musterantwort, die Inferenzkonfigurationseinstellungen für das Beispiel und die API-Anfrage, die das Beispiel ausführt. Wenn Sie Open in Playground (Im Spielplatz öffnen) auswählen, können Sie das Modell und den Anwendungsfall in einer interaktiven Konsolenumgebung weiter erkunden.Amazon Bedrock bietet Chat-, Text- und Bildmodell-Spielplätze an. Im Chat-Spielplatz können Sie mit verschiedenen FMs über eine konversationelle Chat-Schnittstelle experimentieren. Das folgende Beispiel verwendet Anthropic’s [EN, Extern] Claude Modell:

Während Sie verschiedene Modelle bewerten, sollten Sie verschiedene Aufforderungstechniken (engl. prompt engineering) und Inferenzparameter (engl. inference configurations) ausprobieren. Promt Engineering ist eine neue und spannende Aufgabe, die darauf abzielt, besser zu verstehen wie Sie FMs für Ihre Aufgaben und Anwendungsfälle nutzen können. Promt Engineering dreht sich darum, die den perfekten Promt zu formulieren, um das Beste aus den FMs herauszuholen und korrekte, sowie präzise Antworten zu erhalten. Im Allgemeinen sollten Prompts einfach, direkt und frei von Mehrdeutigkeit sein. Sie können auch Beispiele im Prompt geben oder das Modell dazu anregen, komplexere Aufgaben zu “durchdenken”.

Inference Configurations beeinflussen die vom Modell erzeugte Antwort. Parameter wie Temperature, Top P und Top K geben Ihnen Kontrolle über Zufall und Vielfalt. Die maximale Länge (Maximum Length) oder die maximale Anzahl an Tokens (Max Tokens) steuern die Länge der Modellantworten. Beachten Sie, dass jedes Modell eine unterschiedliche, aber oft überschneidende Menge von Inferenzparametern bietet. Diese Parameter sind entweder zwischen den Modellen gleich benannt oder ähnlich genug, um sie zu verstehen, wenn Sie verschiedene Modelle ausprobieren.

Wir besprechen Promt Engineering und Inference Configurations ausführlicher in Woche 1 des On-Demand-Kurses Generative KI mit großen Sprachmodellen [EN, Extern], der von AWS in Zusammenarbeit mit DeepLearning.AI [EN, Extern] entwickelt wurde. Sie können auch die Amazon Bedrock-Dokumentation und die jeweilige Dokumentation des Modellanbieters für weitere Tipps konsultieren.

Als Nächstes sehen wir uns an, wie Sie über APIs mit Amazon Bedrock interagieren können.

Mit der Amazon Bedrock API arbeiten

Die Arbeit mit Amazon Bedrock ist so einfach wie das Auswählen eines FM für Ihren Anwendungsfall und das Tätigen einiger API-Aufrufe. In den folgenden Code-Beispielen werde ich das AWS SDK für Python (Boto3) verwenden, um mit Amazon Bedrock zu interagieren.

Verfügbare Foundation Modelle auflisten

Zunächst richten wir den boto3 Client ein und verwenden dann list_foundation_models(), um die aktuellste Liste der verfügbaren FMs zu sehen:

import boto3
import json

bedrock = boto3.client(
    service_name='bedrock', 
    region_name='us-east-1'
)

bedrock.list_foundation_models()

Inferenz mit Amazon Bedrocks InvokeModel API durchführen

Anschließend führen wir eine Inferenzanfrage mit der InvokeModel API von Amazon Bedrock und dem boto3-Runtime-Client durch. Der Runtime-Client verwaltet die Datenplane-APIs, einschließlich der InvokeModel API.

Die InvokeModel API erwartet die folgenden Parameter:

{
    "modelId": <MODEL_ID>,
    "contentType": "application/json",
    "accept": "application/json",
    "body": <BODY>
}

Der Parameter modelId identifiziert das FM, das Sie verwenden möchten. Der body des Anfrage ist ein JSON-String, der die Aufforderung für Ihre Aufgabe sowie etwaige Inference Configurations enthält. Beachten Sie, dass das Format der Aufforderung je nach ausgewähltem Modellanbieter und FM variieren kann. Die Parameter contentType und accept definieren den MIME-Typ der Daten im Anfragekörper und in der Antwort und sind standardmäßig auf application/json festgelegt. Weitere Informationen zu den neuesten Modellen, InvokeModel API-Parametern und Aufforderungsformaten finden Sie in der Amazon Bedrock-Dokumentation [EN].

Beispiel: Texterzeugung mit AI21 Labs Jurassic-2 Modell

Hier ein Beispiel für die Texterzeugung mit dem Jurassic-2 Ultra-Modell von AI21 Lab [EN, Extern]. Ich werde das Modell bitten, mir einen Klopf-Klopf-Witz zu erzählen – meine Version von einem Hallo-Welt-Programm.

bedrock_runtime = boto3.client(
    service_name='bedrock-runtime', 
    region_name='us-east-1'
)

modelId = 'ai21.j2-ultra-v1' 
accept = 'application/json'
contentType = 'application/json'

body = json.dumps(
    {"prompt": "Knock, knock!", 
     "maxTokens": 200,
     "temperature": 0.7,
     "topP": 1,
    }
)

response = bedrock_runtime.invoke_model(
    body=body, 
	modelId=modelId, 
	accept=accept, 
	contentType=contentType
)

response_body = json.loads(response.get('body').read())

Hier ist die Antwort:

outputText = response_body.get('completions')[0].get('data').get('text')
print(outputText)
Who's there? 
Boo! 
Boo who? 
Don't cry, it's just a joke!

Sie können die API InvokeModel nutzen, um mit Einbettungsmodellen zu arbeiten.

Beispiel: Erstellen von Texteinbettungen mit Amazons Titan-Einbettungsmodell

Text-Einbettungsmodelle übersetzen Texteingaben, wie Wörter, Phrasen oder möglicherweise große Texteinheiten, in numerische Darstellungen, die als Einbettungsvektoren bekannt sind. Diese Vektoren erfassen die semantische Bedeutung des Textes in einem hochdimensionalen Vektorraum und sind nützlich für Anwendungen wie Personalisierung oder Suche. Im folgenden Beispiel verwende ich das Amazon Titan Einbettungsmodell [EN], um einen Einbettungsvektor zu erstellen.

prompt = "Knock-knock jokes are hilarious."

body = json.dumps({
    "inputText": prompt,
})

model_id = 'amazon.titan-embed-text-v1'
accept = 'application/json' 
content_type = 'application/json'

response = bedrock_runtime.invoke_model(
    body=body, 
    modelId=model_id, 
    accept=accept, 
    contentType=content_type
)

response_body = json.loads(response['body'].read())
embedding = response_body.get('embedding')

Der Einbettungsvektor (gekürzt) sieht etwa so aus:

[0.82421875, -0.6953125, -0.115722656, 0.87890625, 0.05883789,
-0.020385742, 0.32421875, -0.00078201294, -0.40234375, 0.44140625, ...]

Beachten Sie, dass Amazon Titan Einbettungen ab heute verfügbar sind. Die Amazon Titan Text Modellfamilie zur Textgenerierung ist weiterhin in einer eingeschränkten Vorschau verfügbar.

Inferenz mit Amazon Bedrocks InvokeModelWithResponseStream API durchführen

Die InvokeModel API-Anfrage ist synchron und wartet darauf, dass die gesamte Antwort vom Modell generiert wird. Für Modelle, die Streaming-Antworten unterstützen, bietet Bedrock auch eine InvokeModelWithResponseStream API an, mit der das angegebene Modell zur Inferenz mit der bereitgestellten Eingabe aufgerufen werden kann, während die Antwort gestreamt wird, wenn das Modell die Ausgabe generiert.

Streaming-Antworten sind besonders nützlich für responsive Chat-Schnittstellen, um die Nutzer:innen in einer interaktiven Anwendung engagiert zu halten. Hier ist ein Python-Code-Beispiel, das die InvokeModelWithResponseStream API von Amazon Bedrock verwendet:

response = bedrock_runtime.invoke_model_with_response_stream(
    modelId=modelId, 
    body=body)

stream = response.get('body')
if stream:
    for event in stream:
        chunk=event.get('chunk')
        if chunk:
            print(json.loads(chunk.get(‘bytes').decode))

Datenschutz und Netzwerksicherheit

Mit Amazon Bedrock haben Sie die Kontrolle über Ihre Daten, alle Ihre Eingaben und Anpassungen bleiben sicher in Ihrem AWS-Account. Ihre Daten, wie Prompts, Vervollständigungen und fein abgestimmte Modelle, werden nicht zur Serviceverbesserung verwendet. Zudem werden die Daten nie mit Drittanbieter-Modellanbietern geteilt.

Ihre Daten verbleiben in der Region, in der der API-Aufruf verarbeitet wird. Alle Daten werden während der Übertragung mit mindestens TLS 1.2 verschlüsselt. Daten im Ruhezustand werden mit AES-256 unter Verwendung von AWS KMS-verwalteten Datenverschlüsselungsschlüsseln verschlüsselt. Sie können auch Ihre eigenen Schlüssel (kundenspezifische Schlüssel) verwenden, um die Daten zu verschlüsseln.

Sie können Ihr AWS-Konto und Ihr virtuelles privates Netzwerk (VPC) so konfigurieren, dass Amazon VPC-Endpunkte (basiert auf AWS PrivateLink) verwendet werden, um sicher über das AWS-Netzwerk eine Verbindung zu Amazon Bedrock herzustellen. Dies ermöglicht eine sichere und private Verbindung zwischen Ihren Anwendungen, die in einem VPC laufen, und Amazon Bedrock.

Steuerung und Überwachung

Amazon Bedrock integriert sich in AWS IAM, um Ihnen zu helfen, die Berechtigungen für Amazon Bedrock zu verwalten. Zu diesen Berechtigungen gehören der Zugriff auf bestimmte Modelle, den Playground oder Funktionen innerhalb von Amazon Bedrock. Alle von AWS verwalteten Service-API-Aktivitäten, einschließlich der Aktivitäten von Amazon Bedrock, werden in Ihrem Konto in CloudTrail protokolliert.

Amazon Bedrock übermittelt Datenpunkte an Amazon CloudWatch im Namespace AWS/Bedrock, um gängige Metriken wie InputTokenCount, OutputTokenCount, InvocationLatency und (Anzahl der) Invocations zu verfolgen. Sie können Ergebnisse filtern und Statistiken für ein bestimmtes Modell erhalten, indem Sie die Modell-ID-Dimension angeben, wenn Sie nach Metriken suchen. Diese nahezu Echtzeiteinblicke helfen Ihnen, die Nutzung und Kosten (Input- und Output-Token-Anzahl) zu überwachen und Leistungsprobleme (Aufruflatenz und Anzahl der Aufrufe) zu beheben, während Sie generative KI-Anwendungen mit Amazon Bedrock erstellen.

Abrechnung und Preismodelle

Hier sind einige Dinge zur Abrechnung und den Preisgestaltungsmodellen zu beachten, wenn Sie Amazon Bedrock verwenden:

Abrechnung – Textgenerierungsmodelle werden pro verarbeiteten Eingabetoken und pro generierten Ausgabetoken abgerechnet. Texteinbettungsmodelle werden pro verarbeiteten Eingabetoken abgerechnet. Bildgenerierungsmodelle werden pro generiertem Bild abgerechnet.

Preismodelle – Amazon Bedrock bietet zwei Preismodelle, On-Demand und reservierter Durchsatz. On-Demand-Preise ermöglichen es Ihnen, FMs nach dem Pay-as-you-go-Prinzip zu nutzen, ohne zeitbasierte Verpflichtungen eingehen zu müssen. Reservierter Durchsatz ist hauptsächlich für große, konsistente Inferenzworkloads konzipiert, die einen garantierten Durchsatz im Austausch für eine Vertragslaufzeit benötigen. Hier geben Sie die Anzahl der Modell-Einheiten eines bestimmten FMs an, um den Leistungsanforderungen Ihrer Anwendung gerecht zu werden, wie sie durch die maximale Anzahl der pro Minute verarbeiteten Eingabe- und Ausgabetoken definiert sind.

Weitere Informationen zur Preisgestaltung finden Sie unter Amazon Bedrock Preise [EN].

Jetzt verfügbar!

Amazon Bedrock ist heute in den AWS-Regionen US East (N. Virginia) und US West (Oregon) verfügbar. Um mehr zu erfahren, besuchen Sie Amazon Bedrock [EN], sehen Sie sich die Amazon Bedrock-Dokumentation [EN] an, erkunden Sie den generativen KI-Bereich auf community.aws [EN] und sammeln Sie praktische Erfahrungen mit unseren Amazon Bedrock-Workshops [EN]. Feedback können Sie über AWS re:Post für Amazon Bedrock [EN] oder über Ihre üblichen AWS-Kontakte senden.

(In der Vorschau verfügbar) Die Amazon Titan Text-Modellfamilie zur Textgenerierung, das Stable Diffusion XL Bildgenerierungsmodell von Stability AI und Agents für Amazon Bedrock, einschließlich Wissensdatenbanken, sind weiterhin in der Vorschau verfügbar. Kontaktieren Sie uns über Ihre üblichen AWS-Kontakte, wenn Sie Zugang wünschen.

(Demnächst verfügbar) Die Modelle Llama 2 [EN, Extern] 13B und 70B von Meta [EN, Extern] werden bald über Amazons Bedrock’s vollständig verwaltete API für Inferenz und Feinabstimmung verfügbar sein.

Beginnen Sie noch heute mit dem Aufbau generativer KI-Anwendungen mit Amazon Bedrock! [EN]

Antje [Extern] & Tobi [Extern]

Über die Autoren

Antje Barth
Antje Barth ist Principal Developer Advocate für AI und ML bei AWS. Sie ist Co-Autorin des O’Reilly-Buchs – Data Science auf AWS. Antje spricht häufig auf AI/ML-Konferenzen, Veranstaltungen und Meetups auf der ganzen Welt. Sie hat auch das Düsseldorfer Kapitel von Women in Big Data mitbegründet.