Wird geladen

Um deine erste API-Anfrage an AWS Bedrock zu stellen, benötigst du drei wesentliche Komponenten: einen Bedrock Runtime Client, um sich mit dem Dienst zu verbinden, eine Model ID, um festzulegen, welches Modell du ausführen möchtest, und eine User Message, die den Text enthält, den du in das Modell einspeisen möchtest.

Einrichten des Bedrock-Clients

Beginne damit, mithilfe von boto3 einen Client zu erstellen, um dich mit dem Bedrock Runtime-Dienst zu verbinden:

python
import boto3

client = boto3.client("bedrock-runtime", region_name="us-west-2")

Model IDs und regionale Verfügbarkeit verstehen

Hier wird es etwas knifflig. Nicht jedes Modell ist in jeder AWS-Region verfügbar. Wenn du versuchst, ein Modell auszuführen, das in deiner gewählten Region nicht existiert, erhältst du eine kryptische Fehlermeldung, die besagt, dass das Modell nicht existiert.

Wenn beispielsweise Claude Sonnet in us-west-2 verfügbar ist, du aber Anfragen von us-east-1 aus stellst, schlägt deine Anfrage fehl.

Verwenden von Inference Profiles

Inference Profiles lösen das Problem der regionalen Verfügbarkeit, indem sie deine Anfragen automatisch an eine Region weiterleiten, in der dein gewähltes Modell tatsächlich gehostet wird.

Anstatt nachzuverfolgen, welche Modelle in welchen Regionen verfügbar sind, kannst du ein Inference Profile verwenden, das weiß, dass das Modell in mehreren Regionen wie us-west-2 und us-east-2 verfügbar ist.

Wenn du eine Anfrage mit einem Inference Profile stellst, leitet AWS diese automatisch an die richtige Region weiter, in der dein Modell existiert, selbst wenn du dich von einer anderen Region aus verbindest.

Um Inference Profile IDs zu finden, gehe zur AWS Bedrock-Konsole und schau unter „Cross-region inference" nach, anstatt die Model ID von der Hauptseite des Modellkatalogs zu verwenden.

Kopiere die Inference Profile ID für dein gewähltes Modell. Die Beispiele in diesem Kurs verwenden Claude Haiku 4.5, dessen Inference Profile ID us.anthropic.claude-haiku-4-5-20251001-v1:0 lautet.

Erstellen von User Messages

User Messages haben eine spezifische Struktur, die auf den ersten Blick übermäßig komplex wirken mag, aber dafür gibt es einen guten Grund:

python
user_message = {
    "role": "user",
    "content": [
        {"text": "What's 1+1?"}
    ]
}

Der Content ist eine Liste, weil eine einzelne Nachricht unterschiedliche Arten von Inhalten enthalten kann – Text, Bilder oder andere Medientypen. Diese Struktur ermöglicht es dir, multimodale Anfragen zu senden.

Die Anfrage stellen

Jetzt kannst du deinen API-Call mit der converse-Methode ausführen:

python
response = client.converse(
    modelId=model_id,
    messages=[user_message]
)

Die Antwort enthält eine Menge Metadaten, aber um nur den generierten Text zu erhalten, musst du dich durch die Antwortstruktur navigieren:

python
response["output"]["message"]["content"][0]["text"]

Nachrichtentypen verstehen

Es gibt zwei Haupttypen von Nachrichten, mit denen du arbeiten wirst:

  • User Messages – Inhalte, die du in das Modell einspeisen möchtest (role: „user")
  • Assistant Messages – Inhalte, die das Modell produziert hat (role: „assistant")

Beide Nachrichtentypen folgen der gleichen Struktur mit einer role und einer content-Liste. Diese Konsistenz macht es einfach, Konversationen aufzubauen, indem man zwischen User- und Assistant-Nachrichten wechselt.

Die Assistant Message, die du von Bedrock zurückbekommst, folgt genau demselben Format wie deine User Message, nur mit einer anderen role. Diese standardisierte Struktur macht es unkompliziert, mehrere Anfragen für längere Konversationen miteinander zu verknüpfen.