Wie verwende ich das AWS CDK, um einen Amazon-Bedrock-Agenten zu aktualisieren?
Ich möchte das AWS Cloud Development Kit (AWS CDK) verwenden, um einen Amazon-Bedrock-Agenten zu aktualisieren.
Kurzbeschreibung
Um das AWS CDK zur Aktualisierung eines vorhandenen Amazon-Bedrock-Agenten zu verwenden, musst du den AWS-CDK-Code ändern, der den Agenten definiert. Stelle dann die Änderungen bereit.
Hinweis: Informationen zur Verwendung des AWS CDK zum Erstellen eines Amazon-Bedrock-Agenten findest du unter How do I use the AWS CDK to create an Amazon Bedrock Agent? (Wie verwende ich das AWS CDK, um einen Amazon-Bedrock-Agenten zu erstellen?
Lösung
Agenteneigenschaften ändern
Um den Agenten zu ändern, ändere mindestens eine der folgenden Agenteneigenschaften in deinem AWS-CDK-Code:
- Handlungsanweisung: Aktualisiere die Anweisungen des Agenten, um das Verhalten des Agenten zu verfeinern.
- Basismodell: Ändere das zugrunde liegende Basismodell, das der Agent verwendet.
- Aktionsgruppen: Aktualisiere die Lambda-Funktionen oder andere zugehörige Ressourcen, um bestehende Aktionsgruppen zu ändern, neue Gruppen hinzuzufügen oder unnötige Gruppen zu entfernen.
- Wissensdatenbanken: Füge Wissensdatenbanken hinzu bzw. trenne sie oder aktualisiere die Konfigurationen der Wissensdatenbank.
- Integritätsschutz: Passe deine Integritätsschutzeinstellungen an.
- Beschreibung: Aktualisiere die Beschreibung des Agenten.
- Konfigurationseinstellungen: Ändere andere Agentenkonfigurationsparameter, wie idleSessionTTLInSeconds oder agentResourceRoleArn.
Die Agentenversion und den Alias aktualisieren
Um einen bereitgestellten Agenten zu ändern, aktualisiere den Agenten und erstelle eine neue Agentenversion, die die Änderungen enthält. Wenn du einen Agenten änderst, gelten die Änderungen für eine Entwurfsversion. Wenn du eine neue Agentenversion erstellst, behält die Version den Status des Entwurfs zum Zeitpunkt der Erstellung der Version bei.
Um eine neue Version zu erstellen, erstelle einen Agenten-Alias, der der neuen Version zugeordnet ist.
Im Folgenden findest du ein Beispiel für einen AWS-CDK-Code mit einem modifizierten Basismodell, einer Anweisung, einer Beschreibung und dem idleSessionTTLInSeconds-Parameter:
from aws_cdk import ( Stack, aws_bedrock as bedrock, aws_iam as iam, aws_s3 as s3, aws_lambda as lambda_, CfnOutput, ) from constructs import Construct class BedrockAgentCdkStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Create Lambda function for action group action_lambda = lambda_.Function( self, "AgentActionFunction", runtime=lambda_.Runtime.PYTHON_3_11, handler="index.handler", code=lambda_.Code.from_inline(""" def handler(event, context): import json action = event.get('actionGroup', '') api_path = event.get('apiPath', '') parameters = event.get('parameters', []) # Process the action if api_path == '/getWeather': city = next((p['value'] for p in parameters if p['name'] == 'city'), 'Unknown') result = { 'city': city, 'temperature': 72, 'condition': 'Sunny' } else: result = {'error': 'Unknown action'} return { 'messageVersion': '1.0', 'response': { 'actionGroup': action, 'apiPath': api_path, 'httpMethod': event.get('httpMethod', 'GET'), 'httpStatusCode': 200, 'responseBody': { 'application/json': { 'body': json.dumps(result) } } } } """), ) # IAM role for agent agent_role = iam.Role( self, "BedrockAgentRole", assumed_by=iam.ServicePrincipal("bedrock.amazonaws.com"), ) agent_role.add_to_policy( iam.PolicyStatement( actions=["bedrock:InvokeModel"], resources=[ f"arn:aws:bedrock:{self.region}::foundation-model/anthropic.claude-v2", f"arn:aws:bedrock:{self.region}::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0" ], ) ) # Allow agent to invoke Lambda action_lambda.grant_invoke(agent_role) # Create Bedrock Agent agent = bedrock.CfnAgent( self, "BedrockAgent", # ID of your existing agent in CDK agent_name="my-bedrock-agent", # Same name to update agent_resource_role_arn=agent_role.role_arn, foundation_model="anthropic.claude-v2", # Changed instruction="Updated instruction: You are an expert AWS assistant.", # Changed description="Updated description", # Changed idle_session_ttl_in_seconds=1800, # Changed ) # Create Action Group action_group = bedrock.CfnAgent.AgentActionGroupProperty( action_group_name="weather-actions", description="Actions for getting weather information", action_group_state="ENABLED", action_group_executor=bedrock.CfnAgent.ActionGroupExecutorProperty( lambda_=action_lambda.function_arn ), api_schema=bedrock.CfnAgent.APISchemaProperty( payload=""" { "openapi": "3.0.0", "info": { "title": "Weather API", "version": "1.0.0", "description": "API for getting weather information" }, "paths": { "/getWeather": { "get": { "summary": "Get weather for a city", "description": "Returns current weather information for the specified city", "operationId": "getWeather", "parameters": [ { "name": "city", "in": "query", "description": "Name of the city", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful response", "content": { "application/json": { "schema": { "type": "object", "properties": { "city": {"type": "string"}, "temperature": {"type": "number"}, "condition": {"type": "string"} } } } } } } } } } } """ ), ) # Update agent with action groups agent.action_groups = [action_group] # Create agent version and update alias to point to the new version agent_alias = bedrock.CfnAgentAlias( self, "AgentAlias", agent_alias_name="prod", agent_id=agent.attr_agent_id, description='updated', ) CfnOutput(self, "AgentId", value=agent.attr_agent_id) CfnOutput(self, "AgentAliasId", value=agent_alias.attr_agent_alias_id)
Synthetisieren und bereitstellen
Nachdem du den AWS-CDK-Code geändert hast, musst du die AWS-CloudFormation-Vorlage synthetisieren und den CloudFormation-Stack bereitstellen.
Führe den folgenden Befehl aus, um die CloudFormation-Vorlage zu synthetisieren:
cdk synth
Führe den folgenden Befehl aus, um den Stack bereitzustellen:
cdk deploy
Das AWS CDK ist idempotent. Wenn du den Befehl cdk deploy mehrmals ausführst, wendet das AWS CDK Änderungen nur an, wenn es einen Unterschied zwischen deinem Code und dem bereitgestellten Code gibt.
Zusätzliche Ressourcen
class Agent (construct) (Agenten-Klasse (Konstrukt)
- Tags
- Amazon Bedrock
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten
AWS OFFICIALAktualisiert vor 5 Monaten