Web-Playgrounds sind großartig für Demos. Man fügt einen Textblock ein, sieht zu, wie das Modell eine ordentliche Zusammenfassung erstellt, und schließt den Tab. Aber das ist kein Engineering. Produktionsarbeit bedeutet APIs, Fehlerbehandlung und Code, der läuft, während man schläft. Wenn Sie Meeting-Transkripte, Support-Tickets oder Forschungsarbeiten nach einem Zeitplan verarbeiten müssen, benötigen Sie eine Pipeline.
Dieser Leitfaden führt Sie durch den Aufbau genau dessen: ein leichtgewichtiges, automatisiertes Skript zur Dokumentenzusammenfassung unter Verwendung von Python, dem AWS SDK für Python (boto3) und Amazon Bedrock. Wir werden Anthropic's Claude 3 Haiku verwenden, ein Modell, das die ideale Balance zwischen Geschwindigkeit und Kosten für Textzusammenfassungsaufgaben bietet.
Warum Bedrock und Claude 3 Haiku?
Amazon Bedrock ist ein verwalteter Dienst, der Foundation Models über einen einzigen Satz von AWS-APIs bereitstellt. Anstatt externe Endpunkte zusammenzusuchen und sich mit separaten Abrechnungs- und Sicherheitsmodellen herumzuschlagen, rufen Sie einen AWS-Endpunkt mit standardmäßigen IAM-Kontrollen auf. Ihre Daten bleiben innerhalb Ihrer AWS-Umgebung.
Claude 3 Haiku ist das schlankste Modell in der Claude 3-Familie von Anthropic. Es ist auf Reaktionsfähigkeit und geringe Kosten ausgelegt, was es ideal für Zusammenfassungen in hohem Volumen macht, bei denen Sie ein vorhersagbares Ergebnis wünschen, ohne für die Rechenleistung größerer Modelle bei einfachen Leseaufgaben zu bezahlen.
Was Sie benötigen
Bevor Sie Code schreiben, stellen Sie sicher, dass Sie Folgendes bereit haben:
- Ein aktives AWS-Konto.
- Lokal installiertes Python 3.9 oder höher.
- Die AWS CLI, konfiguriert mit Anmeldedaten, die die Berechtigung haben, Bedrock-Modelle aufzurufen. Wenn Sie
aws configurenoch nicht ausgeführt haben, tun Sie dies jetzt. Wenn Sie später Berechtigungsfehler erhalten, müssen Sie Ihrem IAM-Benutzer oder Ihrer Rolle wahrscheinlich die entsprechenden Berechtigungen für den Bedrock-Aufruf zuweisen. - Modellzugriff, der speziell für Anthropic Claude 3 Haiku in der AWS Bedrock-Konsole aktiviert wurde. AWS erfordert, dass Sie explizit für jeden Modellanbieter zustimmen, bevor Sie ihn aufrufen können.
Schritt 1: Modellzugriff aktivieren
Bedrock erlaubt standardmäßig keinen Modellaufruf. Sie müssen zuerst in der Konsole den Schalter umlegen.
- Melden Sie sich in der AWS Management Console an.
- Nutzen Sie die Suchleiste, um Amazon Bedrock zu finden.
- Wählen Sie im linken Navigationsbereich Model access.
- Klicken Sie auf Modify model access.
- Setzen Sie ein Häkchen bei Anthropic (Claude 3 Haiku) und senden Sie Ihre Anfrage ab.
Sobald der Status auf „Access granted“ springt, können Sie das Modell per Code aufrufen.
Schritt 2: Umgebung einrichten
Eine saubere Python-Umgebung hält Abhängigkeiten isoliert und reproduzierbar. Öffnen Sie Ihr Terminal und führen Sie diese Befehle aus:
mkdir bedrock-summarizer && cd bedrock-summarizer
python3 -m venv venv
source venv/bin/activate
pip install boto3
Windows-Benutzer sollten den Aktivierungsbefehl durch venv\Scripts\activate ersetzen. Sobald pip install boto3 abgeschlossen ist, haben Sie alles, was Sie benötigen, um mit den AWS-APIs zu kommunizieren.
Schritt 3: Das Skript schreiben
Erstellen Sie eine Datei namens summarize.py. Das Ziel ist es, ein Dokument von der Festplatte zu lesen, es an die Bedrock Converse API zu übergeben und eine prägnante Zusammenfassung auszugeben.
Hier ist eine vollständige, funktionierende Implementierung. Wir verwenden die Converse API, da sie die rohe JSON-Formatierung abstrahiert, die verschiedene Modellanbieter erwarten. Sie übergeben einfach eine Liste von Nachrichten und Inferenz-Einstellungen.
import boto3
def summarize_document(text: str) -> str:
client = boto3.client("bedrock-runtime")
model_id = "anthropic.claude-3-haiku-20240307-v1:0"
messages = [
{
"role": "user",
"content": [
{
"text": (
"Provide a concise summary of the following document. "
"Focus on the main points and avoid unnecessary detail:\n\n"
f"{text}"
)
}
]
}
]
response = client.converse(
modelId=model_id,
messages=messages,
inferenceConfig={
"temperature": 0.3,
"maxTokens": 512
}
)
summary = response["output"]["message"]["content"][0]["text"]
return summary.strip()
if __name__ == "__main__":
with open("document.txt", "r", encoding="utf-8") as f:
document_text = f.read()
result = summarize_document(document_text)
print("\n--- Summary ---\n")
print(result)
Einige praktische Details, die hier hervorzuheben sind:
- boto3.client("bedrock-runtime") zielt auf den Runtime-Endpunkt ab, der die Inferenz verarbeitet. Stellen Sie sicher, dass Ihre AWS-Region in
~/.aws/configBedrock unterstützt und dass Sie Haiku in derselben Region aktiviert haben. - Die Model ID
anthropic.claude-3-haiku-20240307-v1:0ist die exakte Kennung, die Bedrock erwartet. Kopieren Sie sie präzise. - Eine Temperatur von 0,3 hält die Ausgabe konsistent. Bei Zusammenfassungen wünschen Sie sich Konsistenz und Treue zum Quelltext, keine kreative Ausschmückung. Wenn Sie die Temperatur in Richtung 1,0 erhöhen, beginnt das Modell, bei der Formulierung Freiheiten einzunehmen und gelegentlich Details zu erfinden.
- Der Prompt selbst ist spezifisch. Anstatt dem Modell einfach nur rohen Text mit einem vagen „fasse dies zusammen“ vorzuwerfen, bitten wir explizit um die Hauptpunkte und weisen es an, Füllmaterial zu überspringen. Diese Art von Klarheit unterscheidet unbrauchbare Ergebnisse von etwas, das man tatsächlich produktiv einsetzen kann.
Legen Sie jede Textdatei, die Sie zusammenfassen möchten, im selben Verzeichnis ab und nennen Sie sie document.txt.
Schritt 4: Ausführen
Führen Sie mit aktivem Virtual Environment aus:
python summarize.py
Wenn Ihre Anmeldedaten und der Modellzugriff korrekt sind, sollten Sie innerhalb weniger Sekunden eine ordentliche Zusammenfassung in Ihrem Terminal sehen. Wenn Sie einen Zugriffsfehler erhalten, überprüfen Sie Ihre IAM-Berechtigungen und stellen Sie sicher, dass Sie Claude 3 Haiku in der Konsole aktiviert haben.
Über das Skript hinausgehen
This pipeline is intentionally simple, but it is the foundation for real automation. Here is how you can extend it without adding bloat.
Batch processing. Swap the single file read for a loop over a directory. Drop fifty PDFs or text files into an input folder, iterate through them, and write the summaries to an output folder. If you want to ingest PDFs directly, you will need a preprocessing step with a library like PyPDF2 or pdfplumber to extract raw text before it hits Bedrock.
Chunking strategy. Very long documents may exceed the model’s context limit. When that happens, split the text into logical chunks by paragraph or section, summarize each chunk individually, and then pass the intermediate summaries back through the model for a final synthesis. This two-stage approach keeps you under token limits while preserving coverage of the full document.
Error handling. Production code should catch boto3.exceptions.ClientError specifically. AWS may throttle your requests if you call the API too aggressively. Wrap your converse call in a retry loop with exponential backoff, or use a library like tenacity to handle rate limits gracefully.
Prompt engineering. The difference between a mediocre summary and a useful one often comes down to the prompt. Ask for bullet points if you need scanability. Ask for a one-paragraph executive summary if the audience is senior leadership. You can even pass formatting constraints, such as "Limit the summary to three sentences" or "Return the output as JSON with keys for topic, key_points, and action_items."
The Real Takeaway
Moving from a chat playground to a working script is the inflection point where AI becomes infrastructure. Once this pipeline runs locally, you can lift it into an AWS Lambda function triggered by S3 uploads, schedule it on ECS Fargate, or hook it into an existing data workflow. The API call is the easy part. The engineering value comes from wrapping that call in logic that handles files, errors, and formatting so you never have to copy and paste text into a browser again.
For additional context and variations on this setup, see the original walkthrough on Dev.to. If you want to discuss AWS architectures, LLM pipelines, or prompt engineering with a community of builders, join the conversation over at [GyaanSetu AI on Telegram](https://t.me/GyaanSet
