AWS in Switzerland and Austria (Alps)
Effiziente KI-Agenten-Entwicklung mit AWS Strands Agents und Amazon Q Developer
Dieser Blog bietet eine kurze Einführung in das Open-Source-SDK Strands Agents von Amazon, das die Entwicklung von Agentic AI erheblich vereinfacht. Entwickler können dabei entweder Amazon Bedrock, alternative LLM’s oder sogar lokal gehostete Modelle, verwenden. Im folgenden Beispiel wird eine Agentic AI-Anwendung mit Hilfe des KI-gestützten Assistenten für Softwareentwickler (Amazon Q Developer) erstellt. Dabei erleben wir GenAI aus zwei Perspektiven: einerseits zur Code-Generierung und andererseits zur Nutzung des entwickelten KI-Agenten.
Was ist das Strands Agents SDK?
Strands Agents ist ein Open-Source-SDK von AWS, das die Entwicklung von KI-Agenten deutlich vereinfacht und beschleunigt. Es verfolgt einen modellgetriebenen Ansatz, bei dem ein Large Language Model (LLM) wie Claude die Verarbeitung der Anfrage orchestriert. Im Gegensatz zu klassischen, workflow-basierten Frameworks, bei denen Entwickler komplexe Schritt-für-Schritt-Prozesse definieren müssen, genügen bei Strands Agents bereits ein kurzer Prompt (Aufgabenbeschreibung) und eine Liste von Werkzeugen (Tools), um einen Agenten zu erstellen. Das LLM plant eigenständig die nächsten Schritte (Reasoning), ruft bei Bedarf Tools auf und verarbeitet deren Ergebnisse weiter, bis die Aufgabe gelöst ist. Strands Agents entstand aus dem internen Bedarf bei der Entwicklung von Amazon Q Developer. Früher waren komplexe Bibliotheken nötig, um AI-Agenten zu entwickeln, und der Weg von Prototyp zur Produktion dauerte mehrere Monate. Mit Strands lassen sich nun Prototypen schnell entwickeln und die Zeit bis zur Produktionsreife hat sich auf Tage und Wochen verkürzt. Mehrere AWS-Teams nutzen Strands bereits produktiv, darunter Amazon Q Developer, AWS Glue und VPC Reachability Analyzer.
Ein Agent interagiert mit seinem Modell und seinen Tools in einer Schleife (Agentic Loop), bis er die durch den Prompt vorgegebene Aufgabe abgeschlossen hat. Diese Schleife bildet den Kern von Strands’ Fähigkeiten. Dabei wird die volle Leistungsfähigkeit moderner LLMs und ihre natürlichen Fähigkeiten zu Schlussfolgern, Planen und zur Tool-Auswahl optimal ausgenutzt.
Setup und Voraussetzungen
Bevor Sie mit der Entwicklung von Strands Agents beginnen können, müssen einige grundlegende AWS-Komponenten korrekt konfiguriert sein. Diese Basis-Infrastruktur ist essentiell für die Arbeit mit dem Framework und Amazon Bedrock.
AWS-Grundkonfiguration: Zunächst benötigen Sie einen AWS Account mit einer funktionierenden AWS CLI-Installation. Das AWS CLI sollte bereits mit gültigen IAM-Credentials konfiguriert sein, die Ihnen Zugriff auf Ihre AWS-Ressourcen ermöglichen. Falls Sie das AWS CLI noch nicht installiert haben, finden Sie die Anleitung in der offiziellen AWS-Dokumentation.
IAM-Berechtigungen für Amazon Bedrock: Für die Nutzung von Strands Agents mit Amazon Bedrock benötigen Sie eine IAM-Rolle oder einen IAM-Benutzer mit entsprechenden Berechtigungen. Die minimal erforderliche Berechtigung ist bedrock-runtime:InvokeModel
und allenfalls bedrock-runtime:InvokeModelWithResponseStream
, die es Ihnen ermöglicht, Large Language Models aufzurufen. Je nach Ihren spezifischen Anforderungen können weitere Berechtigungen wie bedrock:InvokeAgent
, bedrock:GetAgent
und bedrock:UpdateAgent
benötigt werden.
Hier ein Beispiel für eine IAM-Policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"bedrock-runtime:InvokeModel",
"bedrock-runtime:InvokeModelWithResponseStream"
],
"Resource": "*"
}
]
}
Modell-Aktivierung in Amazon Bedrock: Ein nötiger Schritt ist die Aktivierung der gewünschten LLM-Modelle in Amazon Bedrock. Diese Aktivierung muss explizit für jede AWS-Region durchgeführt werden, in der Sie Strands nutzen möchten. Navigieren Sie dazu in der AWS-Konsole zu Amazon Bedrock und wählen Sie im linken Menü “Modellzugriff” aus.
Installation von Amazon Q for Developer CLI: Das folgende Beispiel verwendet Amazon Q Developer CLI, das speziell für die Kommandozeilen-basierte Entwicklung optimiert ist. Alternativ können Sie auch das Amazon Q Developer Plugin für Ihre bevorzugte Entwicklungsumgebung (wie VS Code oder JetBrains IDEs) verwenden. Die detaillierte Installationsanleitung für Amazon Q Developer CLI finden Sie in der offiziellen AWS-Dokumentation.
Praktisches Beispiel: Schweizer Post API
Im folgenden Beispiel implementieren wir anhand einer API-Spezifikation Tools und einen Agenten. Dazu verwenden wir eine API der Schweizer Post, um dem Agenten Tools zur Abfrage von Preisinformationen und Versandmöglichkeiten zur Verfügung zu stellen. Details dazu und Informationen zur Erstellung eines API-Keys finden Sie im Developer Portal der Post: https://developer.apis.post.ch.
Amazon Q Developer CLI Setup
Um mit Strands Agents zu beginnen, eignet sich der KI-Coding-Assisstent Amazon Q for Developer hervorragend. Im Beispiel wurde Amazon Q Developer CLI verwendet. Eine Einführung finden Sie im Blog “A lightning fast, new agentic coding experience within the Amazon Q Developer CLI“.
Amazon Q Developer unterstützt MCP (Model Context Protocol), einen universellen, offenen Standard für die Integration externer Datenquellen und Tools in KI-Modelle. Für Strands Agents steht ein spezieller MCP-Server zur Verfügung, der die aktuelle Strands-Dokumentation bereitstellt. Dadurch kann Amazon Q Developer auf Informationen zugreifen, die dem zugrundeliegenden Modell noch nicht bekannt sind. Zunächst müssen Sie dazu den uv Package Manager installieren, einen schnellen Python-Paketmanager, der für den Strands Agent MCP Server benötigt wird. Die Installationsanleitung finden Sie auf der offiziellen uv-Website. Danach binden Sie den Strands Agent MCP-Server über die untenstehende Konfiguration ein. Diese ermöglicht Amazon Q Developer den direkten Zugriff auf die Strands-Dokumentation während der Code-Generierung.
In ~/.aws/amazonq/mcp.json:
{
"mcpServers": {
"strands": {
"command": "uvx",
"args": ["strands-agents-mcp-server"]
}
}
}
Danach kann Amazon Q Developer CLI mit q chat aufgerufen werden. Mit /tools können die vorhandenen aufgelistet werden (z.B. strands documentation)
Agent-Entwicklung mit Amazon Q Developer
Nach der Konfiguration rufen wir Amazon Q Developer CLI mit qchat auf und geben folgenden Prompt ein. Wir kopieren dazu auch die OpenAPI Spezifikation der gewünschten API in den Prompt:
Amazon Q Developer beginnt dann zu planen, nutzt Tools vom MCP-Server und startet die Implementierung des Agents inkl. der Tools basierend auf der API-Spezifizierung.
Beispiel-Interaktion
Das produzierte Script kann danach aufgerufen werden. Als, erstes wird der API-Key für das Post API nachgefragt.
Erweiterte Funktionen mit Strands
Strands hat viele weitere Funktionen, so können z.B. Guardrails und Knowledge Bases von Amazon Bedrock genutzt werden. Zusätzlich können Details zum LLM wie Region oder Modell angegeben werden. Umfangreiche Möglichkeiten rund um Throttling und Rate Limiting sind standardmässig eingebaut. Hier die entsprechenden Paramater zum Tuning.
# Create a BedrockModel instance with Claude 3.5 in Europe/Zurich and throttling
bedrock_model = BedrockModel(
model_id=anthropic.claude-3-5-sonnet-20240620-v1:0,
region_name=eu-central-2,
temperature=0.7, # Default temperature, adjust as needed
max_retries=10, # Increase max retries
backoff_factor=3.0, # More aggressive exponential backoff
retry_delay=5.0, # Longer initial delay
retry_jitter=True, # Add randomness to retry timing
# Add rate limiting to avoid throttling
rate_limit_config={
"tokens_per_minute": 100000, # Adjust based on your quota
"max_parallel_requests": 1
}
)
agent = Agent(model=bedrock_model)
Weitere Informationen zur Konfiguration des Modelles können in der Model Provider Dokumentation gefunden werden.
Produktions-Deployment von Strands Agents
Strands wurde für den Produktionseinsatz entwickelt und bietet flexible Deployment-Optionen für verschiedene Anwendungsszenarien. Von Haus aus, unterstützt das Framework vier Möglichkeiten zum Deployment des Agents auf AWS:
AWS Lambda eignet sich perfekt für kurze Agent-Interaktionen und Batch-Verarbeitung. Diese Serverless-Option minimiert Infrastruktur-Management und ist kosteneffizient für sporadische Nutzung. Beispiel: Ein Agent, der täglich Berichte generiert oder auf Webhook-Events reagiert.
AWS Fargate bietet containerisierte Deployments mit Streaming-Support. Ideal für interaktive Anwendungen mit Echtzeit-Anforderungen oder hoher Gleichzeitigkeit. Beispiel: Chatbots oder Customer-Service-Agenten, die kontinuierlich verfügbar sein müssen.
Amazon EKS/ECS ermöglicht ebenfalls containerisierte Bereitstellung mit erweiterten Kubernetes-Features. Geeignet für komplexe Multi-Agent-Systeme oder wenn Sie bereits Kubernetes-Infrastruktur nutzen. Beispiel: Orchestrierung mehrerer spezialisierter Agenten in einem Microservice-System.
Amazon EC2 bietet maximale Kontrolle und Flexibilität für High-Volume-Anwendungen oder spezielle Infrastruktur-Anforderungen. Beispiel: Agenten mit besonderen Hardware-Anforderungen oder bei Bedarf nach vollständiger Umgebungskontrolle.
Die Praxistauglichkeit zeigt sich daran, dass AWS-Teams wie Amazon Q Developer, AWS Glue und VPC Reachability Analyzer Strands bereits produktiv einsetzen.
Detaillierte Deployment-Anleitungen für jeden AWS-Service finden Sie in der Strands-Dokumentation.
Zusammenfassung
AWS hat Strands entwickelt, um die Integration von Agentic AI in eigene Produkte zu vereinfachen und die Implementierungszeit für neue Agenten drastisch zu reduzieren. Als Open-Source-Lösung ermöglicht Strands das Erstellen und Ausführen von KI-Agenten mit nur wenigen Codezeilen. Das Framework skaliert von einfachen bis zu komplexen Anwendungsfällen und von der lokalen Entwicklung bis zum Produktionseinsatz.
Weitere Ressourcen:
Blog über Strands Agents: https://aws.amazon.com/blogs/opensource/introducing-strands-agents-an-open-source-ai-agents-sdk/
Dokumentation: https://strandsagents.com/
Workshop: https://workshops.aws/categories/Strands%20Agents