

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Didacticiel : création d’un agent Amazon Bedrock simple
<a name="agent-tutorial"></a>

Ce didacticiel vous explique comment créer et configurer un agent Amazon Bedrock simple à l’aide de la console de gestion AWS. Vous allez apprendre à créer un agent capable de répondre aux requêtes des utilisateurs concernant la date et l’heure actuelles en invoquant une fonction Lambda.

Dans ce tutoriel, vous apprendrez à : 

1. Créer une fonction Lambda : créez une fonction Python qui renvoie la date et l’heure actuelles lorsqu’elle est invoquée par votre agent.

1. Créer un agent Amazon Bedrock : configurez un agent dans la console Amazon Bedrock et configurez-le avec des instructions pour traiter les requêtes de date et d’heure.

1. Tester l’agent : utilisez l’interface de test intégrée pour vérifier que votre agent peut répondre correctement aux demandes de date et d’heure.

1. Déployer l’agent avec un alias : créez une version de votre agent et déployez-la avec un alias pour le rendre utilisable.

1. Appeler l’agent à partir du code Python : découvrez comment interagir par programmation avec votre agent à l’aide du kit AWS SDK pour Python (Boto). 

1. Nettoyer les ressources : supprimez les ressources AWS créées au cours de ce didacticiel pour éviter d’encourir des frais inutiles.

À la fin de ce didacticiel, vous disposerez d’un agent Amazon Bedrock fonctionnel capable de comprendre les demandes d’informations de date et d’heure en langage naturel et de répondre avec des données précises issues de votre fonction Lambda.

Ce didacticiel est basé sur l’exemple de code d’agent figurant dans la documentation AWS [Référentiel GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/bedrock-agent/scenario_get_started_with_agents.py). 

**Topics**
+ [Conditions préalables](agent-tutorial-prereq.md)
+ [Étape 1 : créer une fonction Lambda](agent-tutorial-step1.md)
+ [Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md)
+ [Étape 3 : test de l’agent](agent-tutorial-step3.md)
+ [Étape 4 : déployer l’agent avec un alias](agent-tutorial-step4.md)
+ [Étape 5 : appeler l’agent à partir du code Python](agent-tutorial-step5.md)
+ [Étape 6 : nettoyer les ressources](agent-tutorial-step6.md)
+ [Ressources supplémentaires](agent-tutorial-resources.md)

# Conditions préalables
<a name="agent-tutorial-prereq"></a>

Avant de démarrer ce didacticiel, assurez-vous de disposer des éléments suivants :
+ Compte AWS avec les politiques gérées suivantes :
  + [AmazonBedrockFullAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockFullAccess)
  + [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html#lambda-security-iam-awsmanpol-AWSLambda_FullAccess)
  + [IAMFullAccess](aws-managed-policy/latest/reference/IAMFullAccess.html)
**Important**  
Ces autorisations vous permettent d’exécuter ce didacticiel et d’autres tâches non liées. Dans les environnements de production, veillez à n’attribuer que les autorisations dont vos utilisateurs ont besoin pour exécuter votre application.
+ Compréhension de base des rôles et autorisations IAM ([Guide de l’utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html))
+ Maîtrise des fonctions AWS Lambda ([Guide du développeur Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html))

# Étape 1 : créer une fonction Lambda
<a name="agent-tutorial-step1"></a>

Commencez par créer une fonction Lambda que votre agent invoquera pour effectuer des actions. Dans cette procédure, vous allez créer une fonction Lambda Python qui renvoie la date et l’heure actuelles lorsqu’elle est invoquée. Vous configurerez la fonction avec les autorisations de base, ajouterez le code nécessaire pour traiter les demandes provenant de votre agent Amazon Bedrock, puis déploierez la fonction afin qu’elle soit prête à être connectée à votre agent.

Pour plus d’informations, consultez [Création de votre première fonction Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) dans le *Guide du développeur AWS Lambda*.

**Création d’une fonction Lambda**

1. Connectez-vous à la console de gestion AWS et ouvrez la console Lambda à l’adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Choisissez **Créer une fonction**.

1. Sélectionnez **Créer à partir de zéro**.

1. Dans la section **Informations de base** :
   + Dans **Nom de la fonction**, entrez un nom de fonction (par exemple `DateTimeFunction`). Notez le nom de la fonction, vous en aurez besoin à l’étape 15 de l’[Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md).
   + Pour **Exécution**, sélectionnez **Python 3.9** (ou votre version préférée).
   + Pour **Architecture**, ne modifiez rien.
   + Dans **Autorisations**, sélectionnez **Modifier le rôle d’exécution par défaut**, puis sélectionnez **Créer un nouveau rôle avec des autorisations Lambda de base**.

1. Choisissez **Créer une fonction**.

1. Dans **Présentation de la fonction**, sous **ARN de la fonction**, notez l’Amazon Resource Name (ARN) de la fonction. Vous en avez besoin pour l’étape 24 de l’[Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md). 

1. Dans l’onglet **Code**, remplacez le code existant par le code suivant :

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   import datetime
   import json
   
   
   def lambda_handler(event, context):
       now = datetime.datetime.now()
   
       response = {"date": now.strftime("%Y-%m-%d"), "time": now.strftime("%H:%M:%S")}
   
       response_body = {"application/json": {"body": json.dumps(response)}}
   
       action_response = {
           "actionGroup": event["actionGroup"],
           "apiPath": event["apiPath"],
           "httpMethod": event["httpMethod"],
           "httpStatusCode": 200,
           "responseBody": response_body,
       }
   
       session_attributes = event["sessionAttributes"]
       prompt_session_attributes = event["promptSessionAttributes"]
   
       return {
           "messageVersion": "1.0",
           "response": action_response,
           "sessionAttributes": session_attributes,
           "promptSessionAttributes": prompt_session_attributes,
       }
   ```

1. Pour déployer votre fonction, choisissez **Déployer**.

1. Cliquez sur l’onglet **Configuration**.

1. Choisissez **Autorisations**.

1. Sous **Déclarations de stratégie basées sur les ressources**, choisissez **Ajouter des autorisations**.

1. Dans **Modifier la déclaration de politique**, procédez comme suit :

   1. Choisissez **Service AWS**.

   1. Dans **Service**, sélectionnez **Autre**.

   1. Dans **ID de déclaration**, entrez un identifiant unique (par exemple, `AllowBedrockInvocation`).

   1. Pour **Principal**, entrez `bedrock.amazonaws.com`.

   1. Pour **ARN source**, entrez `arn:aws:bedrock:region:AWS account ID:agent/*`

      Remplacez `region` par la région AWS que vous utilisez, telle que `us-east-1`. Remplacez `AWS account ID` par votre ID de compte AWS.

   1. Pour **Action**, sélectionnez `lambda:InvokeFunction`.

1. Choisissez **Enregistrer**.

# Étape 2 : création d’un agent Amazon Bedrock
<a name="agent-tutorial-step2"></a>

Vous allez ensuite créer un agent Amazon Bedrock. Dans cette procédure, vous allez configurer un agent dans la console Amazon Bedrock, le configurer avec un modèle de fondation et fournir des instructions qui définissent son comportement en tant que chatbot convivial renvoyant des informations de date et d’heure. Vous allez également créer un groupe d’actions avec un schéma OpenAPI qui définit les points de terminaison d’API que votre agent peut appeler, en particulier le point de terminaison permettant d’obtenir la date et l’heure actuelles. En outre, vous allez ajouter une politique en ligne au rôle IAM de votre agent pour lui permettre d’invoquer votre fonction Lambda. L’agent servira d’interface entre les utilisateurs et votre fonction Lambda, interprétant les demandes en langage naturel et les convertissant en appels de fonction structurés pour récupérer les informations de date et d’heure.

Pour plus d’informations, consultez [Création et configuration manuelles de l’agent](agents-create.md).

**Création d’un agent Amazon Bedrock**

1. Connectez-vous au AWS Management Console avec une identité IAM autorisée à utiliser la console Amazon Bedrock. Ouvrez ensuite la console Amazon Bedrock à l'adresse [https://console.aws.amazon.com/bedrock.](https://console.aws.amazon.com/bedrock)

1. Assurez-vous que vous vous trouvez dans une AWS [région](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/select-region.html) qui prend en charge les [agents](agents-supported.md) Amazon Bedrock. 

1. Dans le volet de navigation, sous **Outils de création**, choisissez **Agents**.

1. Choisissez **Create agent (Créer un agent)**.

1. Dans le champ **Nom**, entrez le nom de votre agent (par exemple, `MyBedrockAgent`).

1. (Facultatif) Sous **Description**, entrez une description.

1. Choisissez **Créer**. Le volet **Créateur d’agent** s’ouvre.

1. Dans la section **Informations sur l’agent** :
   + Pour **Rôle de ressource d’agent**, sélectionnez **Créer et utiliser un nouveau rôle de service**.
   + Pour **Sélectionner un modèle**, sélectionnez un modèle, tel que Claude 3 Haiku.
   + Dans la section **Instructions pour l’agent**, entrez les instructions suivantes.

     ```
     You are a friendly chat bot. You have access to a function called that returns
     information about the current date and time. When responding with date or time,
     please make sure to add the timezone UTC.
     ```

1. Choisissez **Enregistrer**.

1. Choisissez l’onglet **Groupes d’actions**.

1. Dans **Groupes d’actions**, sélectionnez **Ajouter**.

1. Dans **Entrez le nom du groupe d’actions**, entrez le nom du groupe d’actions (par exemple, `TimeActions`).

1. (Facultatif) Pour **Description**, saisissez une description du groupe d’actions.

1. Dans **Type de groupe d’actions**, sélectionnez **Définir avec des schémas d’API**.

1. Dans **Invocation de groupes d’actions**, choisissez **Sélectionner une fonction Lambda existante**. 

1. Dans **Sélectionner la fonction Lambda**, choisissez le nom de la fonction Lambda que vous avez créée dans [Étape 1 : créer une fonction Lambda](agent-tutorial-step1.md).

1. Dans **Schéma de groupe d’actions**, sélectionnez **Définir via l’éditeur de schéma en ligne**.

1. Dans la zone de texte **Schéma OpenAPI en ligne**, remplacez le schéma existant par le schéma YAML OpenAPI suivant :

   ```
   openapi: 3.0.0
   info:
     title: Time API
     version: 1.0.0
     description: API to get the current date and time.
   paths:
     /get-current-date-and-time:
       get:
         summary: Gets the current date and time.
         description: Gets the current date and time.
         operationId: getDateAndTime
         responses:
           '200':
             description: Gets the current date and time.
             content:
               'application/json':
                 schema:
                   type: object
                   properties:
                     date:
                       type: string
                       description: The current date
                     time:
                       type: string
                       description: The current time
   ```

1. Passez en revue la configuration de votre groupe d’actions, puis choisissez **Créer**.

1. Choisissez **Save** pour enregistrer les changements.

1. Choisissez **Préparer** pour préparer l’agent.

1. Choisissez **Enregistrer et quitter** pour enregistrer vos modifications et quitter le créateur d’agents.

1. Dans la section **Vue d’ensemble de l’agent**, sous **Autorisations**, choisissez le rôle de service IAM. Cela ouvre le rôle dans la console IAM. 

1. Dans la console IAM, choisissez l’onglet **Autorisations**.

1. Sélectionnez **Ajouter des autorisations**, puis **Créer la politique en ligne**.

1. Choisissez l’onglet **JSON** et collez la stratégie suivante. Assurez-vous que `Resource` est l’Amazon Resource Name (ARN) de votre fonction Lambda. Vous avez noté l’ARN à l’étape 6 de [Étape 1 : créer une fonction Lambda](agent-tutorial-step1.md). 

1. Choisissez **Suivant**.

1. Entrez un nom pour la stratégie (par exemple, `BedrockAgentLambdaInvoke`).

1. Choisissez **Create Policy** (Créer une politique).

# Étape 3 : test de l’agent
<a name="agent-tutorial-step3"></a>

Dans cette procédure, vous allez tester la version préliminaire de votre agent à l’aide de l’interface de test intégrée à la console Amazon Bedrock. Vous allez envoyer des requêtes en langage naturel demandant la date et l’heure actuelles, et observer comment l’agent traite ces demandes, invoque votre fonction Lambda et renvoie des réponses formatées. Cette étape de test vous permet de vérifier que votre agent comprend correctement l’intention de l’utilisateur, appelle correctement la fonction Lambda et présente les informations de manière conviviale.

Pour plus d’informations, consultez [Test du comportement des agents et résolution des problèmes](agents-test.md).

**Pour tester l’agent**

1. Dans la console Amazon Bedrock, ouvrez l’agent que vous avez créé à l’[Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md).

1. Choisissez **Tester** pour ouvrir le panneau **Test**.

1. Dans le menu déroulant **Alias**, sélectionnez **TestAlias : version préliminaire**.

1. Dans l’interface de chat, entrez une invite qui déclenchera l’une des actions de votre agent, telle que :
   + **What time is it?**
   + **Can you tell me today's date?**

1. L’agent traitera votre invite, invoquera la fonction Lambda si nécessaire et renverra une réponse.

1. (Facultatif) Choisissez **Afficher la trace** pour voir les étapes de [traçage](trace-events.md) correspondant à l’invite que vous avez envoyée au modèle. Dans la trace, vous devriez voir le raisonnement utilisé par le modèle pour déterminer quand appeler la fonction Lambda pour obtenir la date et l’heure.

# Étape 4 : déployer l’agent avec un alias
<a name="agent-tutorial-step4"></a>

Après avoir configuré votre agent, vous devez le déployer avec un alias pour le rendre utilisable. Dans cette procédure, vous allez préparer votre agent au déploiement en créant un alias et une version de votre agent. L’alias pointe vers la version, ce qui vous permet d’invoquer votre agent via un point de terminaison stable tout en conservant la possibilité de mettre à jour l’implémentation sous-jacente.

Pour plus d’informations, consultez [Déploiement et utilisation d’un agent Amazon Bedrock dans votre application](agents-deploy.md).

**Déployer l’agent avec un alias**

1. Dans la console Amazon Bedrock, ouvrez l’agent que vous avez créé à l’[Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md).

1. Sélectionnez **Créer un alias**.

1. Pour **Nom de l’alias**, saisissez un nom pour l’alias. Par exemple  **DateTimeAliasAgentAlias**.

1. (Facultatif) Sous **Description**, entrez une description.

1. Pour **Associer une version**, sélectionnez **Créer une version et l’associer à cet alias**.

1. Sélectionnez **Créer un alias**.

1. Testez l’alias en suivant les instructions de l’[Étape 3 : test de l’agent](agent-tutorial-step3.md). Pour l’étape 6, choisissez l’alias que vous venez de créer.

# Étape 5 : appeler l’agent à partir du code Python
<a name="agent-tutorial-step5"></a>

Au cours de cette étape, vous allez apprendre à interagir par programme avec votre agent à l’aide du kit AWS SDK pour Python (Boto). L'exemple de code montre comment utiliser l'[InvokeAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html)opération, qui nécessite à la fois l'ID de l'AGENT et l'ID ALIAS comme paramètres pour appeler votre agent. Le code indique comment envoyer une invite à votre agent, traiter la réponse et gérer à la fois les modes de réponse en streaming et hors streaming. Cela vous permet d’intégrer votre agent Bedrock dans vos propres applications Python.

Pour plus d’informations, consultez [Invocation d’un agent depuis votre application](agents-invoke-agent.md).

**Pour appeler l’agent à partir du code Python**

1. Obtenez l’identifiant de l’agent. Pour plus d’informations, consultez [Affichage d’informations sur un agent](agents-view.md).

1. Obtenez l’ID de l’alias de l’agent. Pour plus d’informations, consultez [Affichage d’informations sur les alias d’agents dans Amazon Bedrock](agents-alias-view.md).

1. Exécutez le code suivant. Mettez à jour les éléments suivants :
   + **AGENT\$1ID** : par l’identifiant de votre agent.
   + **ALIAS\$1ID** : par l’identifiant de l’alias de votre agent.
   + **RÉGION** : vers la AWS région dans laquelle vous avez créé votre agent, par exemple`us-east-1`. 

   Pour diffuser la réponse de l’agent, modifiez la valeur de `streamFinalResponse` sur `True`.

   ```
   import boto3
   import logging
   
   from botocore.exceptions import ClientError
   
   
   logging.basicConfig(level=logging.INFO)
   logger = logging.getLogger(__name__)
   
   def invoke_agent(client, agent_id, alias_id, prompt, session_id):
           response = client.invoke_agent(
               agentId=agent_id,
               agentAliasId=alias_id,
               enableTrace=True,
               sessionId = session_id,
               inputText=prompt,
               streamingConfigurations = { 
       "applyGuardrailInterval" : 20,
         "streamFinalResponse" : False
               }
           )
           completion = ""
           for event in response.get("completion"):
               #Collect agent output.
               if 'chunk' in event:
                   chunk = event["chunk"]
                   completion += chunk["bytes"].decode()
               
               # Log trace output.
               if 'trace' in event:
                   trace_event = event.get("trace")
                   trace = trace_event['trace']
                   for key, value in trace.items():
                       logging.info("%s: %s",key,value)
   
           print(f"Agent response: {completion}")
   
   
   if __name__ == "__main__":
   
       client=boto3.client(
               service_name="bedrock-agent-runtime",
               region_name="REGION") 
       
       agent_id = "AGENT_ID"
       alias_id = "ALIAS_ID"
       session_id = "123456"
       prompt = "What's the current time?"
   
       try:
   
           invoke_agent(client, agent_id, alias_id, prompt, session_id)
   
       except ClientError as e:
           print(f"Client error: {str(e)}")
           logger.error("Client error: %s", {str(e)})
   ```

# Étape 6 : nettoyer les ressources
<a name="agent-tutorial-step6"></a>

Lorsque vous aurez terminé avec votre agent Amazon Bedrock, vous devez nettoyer les ressources pour éviter d’encourir des frais inutiles. Dans cette dernière procédure, vous supprimerez systématiquement toutes les AWS ressources créées au cours de ce didacticiel, y compris l'agent Bedrock, la fonction Lambda et les rôles \$1IAM associés. Ce processus de nettoyage est important pour la gestion des coûts, car il permet d’éviter des frais permanents pour les ressources que vous n’utilisez plus. La procédure est organisée en trois parties : suppression de l’agent, suppression de la fonction Lambda et nettoyage des rôles IAM créés pour prendre en charge ces services.

**Topics**
+ [supprimer l’agent](#agent-tutorial-step6-console-agent)
+ [Supprimer la fonction Lambda](#agent-tutorial-step6-console-lambda)
+ [Supprimer les rôles IAM](#agent-tutorial-step6-console-iam)

## supprimer l’agent
<a name="agent-tutorial-step6-console-agent"></a>

**supprimer l’agent**

1. Dans la console Amazon Bedrock, ouvrez l’agent que vous avez créé à l’[Étape 2 : création d’un agent Amazon Bedrock](agent-tutorial-step2.md).

1. Sélectionnez l’agent que vous avez créé.

1. Sélectionnez **Delete**.

1. Confirmez la suppression.

## Supprimer la fonction Lambda
<a name="agent-tutorial-step6-console-lambda"></a>

**Supprimer la fonction Lambda**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Sélectionnez la fonction Lambda que vous avez créée.

1. Choisissez **Actions**, puis **Supprimer**.

1. Confirmez la suppression.

## Supprimer les rôles IAM
<a name="agent-tutorial-step6-console-iam"></a>

**Supprimer les rôles IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le panneau de navigation, choisissez **Rôles**.

1. Sélectionnez le rôle de service d’agent que vous avez créé.

1. Sélectionnez **Delete**.

1. Confirmez la suppression.

1. Répétez l’opération pour le rôle d’exécution Lambda.

# Ressources supplémentaires
<a name="agent-tutorial-resources"></a>
+ [Guide de l’utilisateur Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Référence API d’Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)
+ [Guide du développeur AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Guide de l’utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [Documentation relative aux agents Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
+ [Spécification OpenAPI](https://swagger.io/specification/)