Come posso utilizzare AWS CDK per aggiornare un agente Amazon Bedrock?
Desidero utilizzare il Kit di sviluppo per il cloud AWS (AWS CDK) per aggiornare un agente Amazon Bedrock.
Breve descrizione
Per aggiornare un agente Amazon Bedrock esistente utilizzando AWS CDK, devi modificare il codice AWS CDK che definisce l'agente. Quindi distribuisci le modifiche.
Nota: per creare un agente Amazon Bedrock utilizzando AWS CDK, consulta How do I use the AWS CDK to create an Amazon Bedrock Agent? (Come posso utilizzare AWS CDK per creare un agente Amazon Bedrock?)
Risoluzione
Modifica le proprietà dell'agente
Per modificare l'agente, modifica almeno una delle seguenti proprietà dell'agente nel codice AWS CDK:
- Richiesta di istruzioni: aggiorna le istruzioni dell'agente per perfezionarne il comportamento.
- Modello di fondazione: modifica il modello di base sottostante utilizzato dall'agente.
- Gruppi di azione: aggiorna le funzioni Lambda o altre risorse associate per modificare i gruppi di azioni esistenti, aggiungere nuovi gruppi o rimuovere i gruppi non necessari.
- Knowledge base: collega o scollega le knowledge base o aggiorna le configurazioni della knowledge base.
- Guardrail: modifica le impostazioni del guardrail.
- Descrizione: aggiorna la descrizione dell'agente.
- Impostazioni di configurazione: modifica altri parametri di configurazione dell'agente, ad esempio idleSessionTTLInSeconds o agentResourceRoleArn.
Aggiorna la versione e l'alias dell'agente
Per modificare un agente distribuito, aggiorna l'agente e creane una nuova versione che includa le modifiche. Quando modifichi agente, le modifiche si applicano a una versione bozza. Quando crei una nuova versione dell'agente, la versione mantiene lo stato che aveva la bozza nel momento in cui è stata creata la versione.
Per creare una nuova versione, crea un alias dell'agente associato alla nuova versione.
Di seguito è riportato un esempio di codice AWS CDK con il modello di fondazione, l'istruzione, la descrizione e il parametro idleSessionTTLInSeconds modificati:
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)
Sintetizza e distribuisci
Dopo aver modificato il codice AWS CDK, devi sintetizzare il modello di AWS CloudFormation e distribuire lo stack di CloudFormation.
Per sintetizzare il modello di CloudFormation, esegui questo comando:
cdk synth
Per distribuire lo stack, esegui questo comando:
cdk deploy
AWS CDK è idempotente. Quando esegui il comando cdk deploy più volte, AWS CDK applica le modifiche solo se c'è una differenza tra il codice da distribuire e il codice distribuito.
Risorse aggiuntive
class Agent (construct) (class Agent (costrutto))
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 7 mesi fa