View a markdown version of this page

Erste Schritte ohne AgentCore CLI - Amazon Grundgestein AgentCore

Erste Schritte ohne AgentCore CLI

Sie können einen AgentCore Runtime-Agent ohne die AgentCore CLI erstellen. Stattdessen können Sie eine Kombination von Befehlszeilentools verwenden, um Ihren Agenten zu konfigurieren und für eine AgentCore Runtime bereitzustellen.

Dieses Tutorial zeigt, wie Sie einen benutzerdefinierten Agenten bereitstellen, ohne die AgentCore CLI zu verwenden. Ein benutzerdefinierter Agent ist ein Agent, der ohne Verwendung des AgentCore Python-SDK erstellt wurde. In diesem Tutorial wird der benutzerdefinierte Agent mit FastAPI und Docker erstellt. Der benutzerdefinierte Agent folgt den AgentCore Runtime-Anforderungen, was bedeutet, dass der Agent /invocations POST- und /ping GET-Endpunkte verfügbar machen und in einem Docker-Container verpackt sein muss. Amazon Bedrock AgentCore benötigt eine ARM64-Architektur für alle bereitgestellten Agenten.

Anmerkung

Sie können diesen Ansatz auch für Agenten verwenden, die Sie mit dem AgentCore Python-SDK erstellen.

Schnellstart-Setup

Aktivieren Sie Observability für Ihren Agenten

Amazon Bedrock AgentCore Observability hilft Ihnen dabei, Agenten, die Sie in Runtime hosten, zu verfolgen, zu debuggen und zu überwachen. AgentCore Um einen Agenten zu beobachten, aktivieren Sie zunächst die CloudWatch Transaktionssuche, indem Sie den Anweisungen unter Observability aktivieren folgen. AgentCore

Installieren Sie uv

In diesem Beispiel verwenden wir den uv Paketmanager, obwohl Sie jedes Python-Hilfsprogramm oder jeden Paketmanager verwenden können. Zur Installation uv auf macOS:

curl -LsSf https://astral.sh/uv/install.sh | sh

Installationsanweisungen auf anderen Plattformen finden Sie in der UV-Dokumentation.

Erstellen Sie Ihr Agentenprojekt

Richten Sie Ihr Projekt ein

  1. Erstellen Sie Ihr Projektverzeichnis und navigieren Sie zu diesem:

    mkdir my-custom-agent && cd my-custom-agent
  2. Initialisieren Sie das Projekt mit Python 3.11:

    uv init --python 3.11
  3. Fügen Sie die erforderlichen Abhängigkeiten hinzu (uv erstellt automatisch ein .venv):

    uv add fastapi 'uvicorn[standard]' pydantic httpx strands-agents

Anforderungen an den Vertrag für Agenten

Ihr kundenspezifischer Agent muss die folgenden Kernanforderungen erfüllen:

  • /invocations Endpunkt: POST-Endpunkt für Agenteninteraktionen (ERFORDERLICH)

  • /ping Endpoint: GET-Endpunkt für Zustandsprüfungen (ERFORDERLICH)

  • Docker Container: Containerisiertes ARM64-Bereitstellungspaket

Struktur des Projekts

Hinweis: Der Einfachheit halber verwendet das folgende Beispiel FastAPI Server als Webserver-Framework für die Bearbeitung von Anfragen.

Ihr Projekt sollte die folgende Struktur haben:

my-custom-agent/ ├── agent.py # FastAPI application ├── Dockerfile # ARM64 container configuration ├── pyproject.toml # Created by uv init └── uv.lock # Created automatically by uv

Vollständiges Beispiel für Strands Agent

Erstellen Sie agent.py in Ihrem Projektstamm den folgenden Inhalt:

Beispiel agent.py

from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Dict, Any from datetime import datetime from strands import Agent app = FastAPI(title="Strands Agent Server", version="1.0.0") # Initialize Strands agent strands_agent = Agent() class InvocationRequest(BaseModel): input: Dict[str, Any] class InvocationResponse(BaseModel): output: Dict[str, Any] @app.post("/invocations", response_model=InvocationResponse) async def invoke_agent(request: InvocationRequest): try: user_message = request.input.get("prompt", "") if not user_message: raise HTTPException( status_code=400, detail="No prompt found in input. Please provide a 'prompt' key in the input." ) result = strands_agent(user_message) response = { "message": result.message, "timestamp": datetime.utcnow().isoformat() } return InvocationResponse(output=response) except Exception as e: raise HTTPException(status_code=500, detail=f"Agent processing failed: {str(e)}") @app.get("/ping") async def ping(): return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8080)

Diese Implementierung:

  • Erstellt eine FastAPI-Anwendung mit den erforderlichen Endpunkten

  • Initialisiert einen Strings-Agenten für die Verarbeitung von Benutzernachrichten

  • Implementiert den /invocations POST-Endpunkt für Agenteninteraktionen

  • Implementiert den /ping GET-Endpunkt für Zustandsprüfungen

  • Konfiguriert den Server so, dass er auf Host 0.0.0.0 und Port läuft 8080

Ausführen lokaler Tests

Testen Sie Ihren Agenten

  1. Führen Sie die Anwendung aus:

    uv run uvicorn agent:app --host 0.0.0.0 --port 8080
  2. Testen Sie den /ping Endpunkt (in einem anderen Terminal):

    curl http://localhost:8080/ping
  3. Testen Sie den /invocations Endpunkt:

    curl -X POST http://localhost:8080/invocations \ -H "Content-Type: application/json" \ -d '{ "input": {"prompt": "What is artificial intelligence?"} }'

Erstellen Sie eine Docker-Datei

Erstellen Sie Dockerfile in Ihrem Projektstamm mit dem folgenden Inhalt:

Beispiel Dockerfile

# Use uv's ARM64 Python base image FROM --platform=linux/arm64 ghcr.io/astral-sh/uv:python3.11-bookworm-slim WORKDIR /app # Copy uv files COPY pyproject.toml uv.lock ./ # Install dependencies (including strands-agents) RUN uv sync --frozen --no-cache # Copy agent file COPY agent.py ./ # Expose port EXPOSE 8080 # Run application CMD ["uv", "run", "uvicorn", "agent:app", "--host", "0.0.0.0", "--port", "8080"]

Dieses Dockerfile:

  • Verwendet ein ARM64-Python-Basis-Image (von Amazon AgentCore Bedrock erforderlich)

  • Richtet das Arbeitsverzeichnis ein

  • Kopiert die Abhängigkeitsdateien und installiert Abhängigkeiten

  • Kopiert den Agentencode

  • Macht Port 8080 verfügbar

  • Konfiguriert den Befehl zum Ausführen der Anwendung

Erstellen und implementieren Sie ein ARM64-Image

Docker Buildx einrichten

Mit Docker buildx können Sie Images für verschiedene Architekturen erstellen. Richten Sie es ein mit:

docker buildx create --use

Für ARM64 erstellen und lokal testen

Ihr Image erstellen und testen

  1. Erstellen Sie das Image lokal zum Testen:

    docker buildx build --platform linux/arm64 -t my-agent:arm64 --load.
  2. Testen Sie lokal mit Anmeldeinformationen (Strons-Agenten benötigen AWS Anmeldeinformationen):

    docker run --platform linux/arm64 -p 8080:8080 \ -e AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" \ -e AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" \ -e AWS_SESSION_TOKEN="$AWS_SESSION_TOKEN" \ -e AWS_REGION="$AWS_REGION" \ my-agent:arm64

ECR-Repository erstellen und bereitstellen

Bereitstellung auf ECR

  1. Erstellen Sie ein ECR-Repository:

    aws ecr create-repository --repository-name my-strands-agent --region us-west-2
  2. Melden Sie sich bei ECR an:

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin account-id.dkr.ecr.us-west-2.amazonaws.com
  3. Erstellen und auf ECR übertragen:

    docker buildx build --platform linux/arm64 -t account-id.dkr.ecr.us-west-2.amazonaws.com/my-strands-agent:latest --push.
  4. Stellen Sie sicher, dass das Image übertragen wurde:

    aws ecr describe-images --repository-name my-strands-agent --region us-west-2

Agent-Runtime bereitstellen

Erstellen Sie eine Datei mit dem Namen deploy_agent.py und dem folgenden Inhalt:

Beispiel deploy_agent.py

import boto3 client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') response = client.create_agent_runtime( agentRuntimeName='strands_agent', agentRuntimeArtifact={ 'containerConfiguration': { 'containerUri': 'account-id.dkr.ecr.us-west-2.amazonaws.com/my-strands-agent:latest' } }, networkConfiguration={"networkMode": "PUBLIC"}, roleArn='arn:aws:iam::account-id:role/AgentRuntimeRole', lifecycleConfiguration={ 'idleRuntimeSessionTimeout': 300, # 5 min, configurable 'maxLifetime': 1800 # 30 minutes, configurable }, ) print(f"Agent Runtime created successfully!") print(f"Agent Runtime ARN: {response['agentRuntimeArn']}") print(f"Status: {response['status']}")

Führen Sie das Skript aus, um Ihren Agenten bereitzustellen:

uv run deploy_agent.py

Dieses Skript verwendet den create_agent_runtime Vorgang, um Ihren Agenten auf Amazon Bedrock AgentCore bereitzustellen. Stellen Sie sicher, dass Sie es durch Ihre tatsächliche AWS Konto-ID account-id ersetzen und stellen Sie sicher, dass die IAM-Rolle über die erforderlichen Berechtigungen verfügt. Weitere Informationen finden Sie unter IAM-Berechtigungen für AgentCore Runtime.

Aufrufen Ihres Agenten

Erstellen Sie eine Datei mit dem Namen invoke_agent.py und dem folgenden Inhalt:

Beispiel invoke_agent.py

import boto3 import json agent_core_client = boto3.client('bedrock-agentcore', region_name='us-west-2') payload = json.dumps({ "input": {"prompt": "Explain machine learning in simple terms"} }) response = agent_core_client.invoke_agent_runtime( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:account-id:runtime/myStrandsAgent-suffix', runtimeSessionId='dfmeoagmreaklgmrkleafremoigrmtesogmtrskhmtkrlshmt', # Must be 33+ chars payload=payload, qualifier="DEFAULT" ) response_body = response['response'].read() response_data = json.loads(response_body) print("Agent Response:", response_data)

Führen Sie das Skript aus, um Ihren Agenten aufzurufen:

uv run invoke_agent.py

Dieses Skript verwendet den InvokeAgentRuntime AWS SDK-Vorgang, um eine Anfrage an Ihren bereitgestellten Agenten zu senden. Stellen Sie sicher, dass Sie account-id und agentArn durch Ihre tatsächlichen Werte ersetzen.

Wenn Sie vorhaben, Ihren Agenten in OAuth zu integrieren, können Sie das AWS SDK nicht für Anrufe verwenden. InvokeAgentRuntime Stellen Sie stattdessen eine HTTPS-Anfrage an. InvokeAgentRuntime Weitere Informationen finden Sie unter Authentifizieren und Autorisieren mit Inbound Auth und Outbound Auth.

Erwartetes Antwortformat

Wenn Sie Ihren Agenten aufrufen, erhalten Sie eine Antwort wie diese:

Beispiel für eine Antwort

{ "output": { "message": { "role": "assistant", "content": [ { "text": "# Artificial Intelligence in Simple Terms\n\nArtificial Intelligence (AI) is technology that allows computers to do tasks that normally need human intelligence. Think of it as teaching machines to:\n\n- Learn from information (like how you learn from experience)\n- Make decisions based on what they've learned\n- Recognize patterns (like identifying faces in photos)\n- Understand language (like when I respond to your questions)\n\nInstead of following specific step-by-step instructions for every situation, AI systems can adapt to new information and improve over time.\n\nExamples you might use every day include voice assistants like Siri, recommendation systems on streaming services, and email spam filters that learn which messages are unwanted." } ] }, "timestamp": "2025-07-13T01:48:06.740668" } }

Runtime-Sitzung beenden

Um die laufende Sitzung vor der konfigurierbaren Sitzung zu beenden IdleRuntimeSessionTimeout (standardmäßig 15 Minuten) und mögliche Kosten zu vermeiden, führen Sie folgenden Befehl aus: stop_runtime_session

Erstellen Sie eine Datei mit dem Namen stop_runtime_session.py und dem folgenden Inhalt:

Beispiel stop_runtime_session.py

import boto3 agent_core_client = boto3.client('bedrock-agentcore', region_name='us-west-2') response = agent_core_client.stop_runtime_session( agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:account-id:runtime/myStrandsAgent-suffix', runtimeSessionId='dfmeoagmreaklgmrkleafremoigrmtesogmtrskhmtkrlshmt', qualifier="DEFAULT" )

Zusammenfassung der Amazon AgentCore Bedrock-Anforderungen

  • Plattform: Muss sein linux/arm64

  • Endpunkte: /invocations POST und /ping GET sind obligatorisch

  • ECR: Bilder müssen für ECR bereitgestellt werden

  • Port: Die Anwendung läuft auf Port 8080

  • Strands Integration: Verwendet Strands Agent für die KI-Verarbeitung

  • Anmeldeinformationen: Strons-Agenten benötigen AWS Anmeldeinformationen für den Betrieb

Schlussfolgerung

In diesem Handbuch haben Sie gelernt, wie Sie:

  • Richten Sie eine Entwicklungsumgebung für die Erstellung benutzerdefinierter Agenten ein

  • Erstellen Sie eine FastAPI-Anwendung, die die erforderlichen Endpunkte implementiert

  • Containerisieren Sie Ihren Agenten für die ARM64-Architektur

  • Testen Sie Ihren Agenten lokal

  • Stellen Sie Ihren Agenten in ECR bereit

  • Erstellen Sie eine Agentenlaufzeit in Amazon Bedrock AgentCore

  • Rufen Sie Ihren eingesetzten Agenten auf

  • Beenden Sie die Agenten-Laufzeitsitzung

Wenn Sie diese Schritte befolgen, können Sie benutzerdefinierte Agenten erstellen und bereitstellen, die die Leistungsfähigkeit von Amazon Bedrock nutzen und AgentCore gleichzeitig die volle Kontrolle über die Implementierung Ihres Agenten behalten.