

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.

# Journalisation des invites des utilisateurs dans Amazon Q Developer
Journalisation des invites des utilisateurs

Les administrateurs peuvent activer l’enregistrement de toutes les [suggestions intégrées](inline-suggestions.md) et de toutes les [conversations de chat](q-in-IDE-chat.md) que les utilisateurs ont avec Amazon Q dans leur environnement de développement intégré (IDE). Ces journaux peuvent contribuer à l’audit, au débogage, à l’analyse et à la garantie de conformité.

Lorsque les développeurs utilisent des suggestions intégrées, Amazon Q enregistre les suggestions acceptées et rejetées activement. Lorsque les développeurs discutent avec Amazon Q, Amazon Q enregistre à la fois les invites des développeurs et les réponses d’Amazon Q. Lorsque les développeurs discutent avec [l’agent Amazon Q pour le développement de logiciels](q-in-IDE-chat.md#develop-code) à l’aide de la commande **/dev**, seules les invites sont enregistrées.

Amazon Q stocke les journaux dans un compartiment Amazon S3 que vous créez, sur le chemin suivant :

`bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/log-type/region/year/month/day/utc-hour/zipFile.gz/logFile.json`

Sur le chemin précédent, `log-type` est l’un des suivants :
+ `GenerateAssistantResponse` : conserve les journaux de chat
+ `GenerateCompletions` : conserve les journaux de saisie semi-automatique en ligne
+ `StartTaskAssistCodeGeneration` : conserve les journaux **/dev**

Pour obtenir des exemples et des explications sur le contenu des fichiers journaux, consultez [Exemples de journaux d’invites dans Amazon Q Developer](q-admin-prompt-log-examples.md).

La fonctionnalité de journalisation des invites est gratuite, à l’exception du coût de stockage du compartiment Amazon S3 utilisé pour stocker les journaux et d’une somme modique pour la clé KMS optionnelle utilisée pour chiffrer le compartiment.

Utilisez les instructions suivantes pour activer la journalisation des invites.

**Conditions préalables**
+ Assurez-vous que les utilisateurs sont abonnés à un compte autonome ou, si vous utilisez [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html), à un compte de gestion. Actuellement, Q Developer ne prend pas en charge la journalisation des invites des utilisateurs abonnés à des comptes membres dans AWS Organizations.
+ Créez un compartiment Amazon S3 pour y stocker les journaux des invites. Le compartiment doit :
  + Soyez dans la AWS région où le profil de développeur Amazon Q a été installé. Ce profil a été installé lorsque vous avez abonné les utilisateurs à Amazon Q Developer Pro pour la première fois. Pour en savoir plus sur ce profil et les régions où il est pris en charge, consultez [Qu'est-ce que le profil de développeur Amazon Q ?](subscribe-understanding-profile.md) et [Régions prises en charge pour la console Q Developer et le profil Q Developer](q-admin-setup-subscribe-regions.md#qdev-console-and-profile-regions).
  + Connectez-vous au AWS compte auquel les utilisateurs sont abonnés.
  + Avoir une stratégie de compartiment comme la suivante. Remplacez *bucketName**region*,*accountId*, et *prefix* par vos propres informations.

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "QDeveloperLogsWrite",
                "Effect": "Allow",
                "Principal": {
                    "Service": "q.amazonaws.com"
                },
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::bucketName/prefix/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "111122223333"
                    },
                    "ArnLike": {
                    "aws:SourceArn": "arn:aws:codewhisperer:us-east-1:111122223333:*"
                    }
                }
            }
        ]
    }
    ```

------

    Si vous configurez SSE-KMS sur le compartiment, ajoutez la politique ci-dessous au niveau de la clé KMS :

    ```
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "q.amazonaws.com"
        },
        "Action": "kms:GenerateDataKey",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "accountId" 
            },
            "ArnLike": {
               "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
            }
        }
    }
    ```

    Pour en savoir plus sur la protection des données de votre compartiment Amazon S3, consultez [Protection des données à l’aide du chiffrement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) dans le *Guide de l’utilisateur Amazon Simple Storage Service*.

**Pour activer la journalisation des invites**

1. Ouvrez la console Amazon Q Developer.

   Pour utiliser la console Amazon Q Developer, vous devez disposer des autorisations définies dans [Administrateurs autorisés à utiliser la console Amazon Q Developer](id-based-policy-examples-admins.md#q-admin-setup-admin-users).
**Note**  
Vous devez vous connecter en tant qu’administrateur de compte autonome ou administrateur de compte de gestion. Les administrateurs de comptes membres ne peuvent pas activer la journalisation des invites, car celle-ci n’est pas prise en charge pour les utilisateurs abonnés à des comptes membres.

1. Cliquez sur **Paramètres**.

1. Sous **Préférences**, choisissez **Modifier**.

1. Dans la fenêtre Modifier les préférences, activez la **journalisation des invites par Q Developer**.

1. Sous Emplacement Amazon S3, entrez l’URI Amazon S3 que vous utiliserez pour recevoir les journaux. Exemple : `s3://amzn-s3-demo-bucket/qdev-prompt-logs/`

# Exemples de journaux d’invites dans Amazon Q Developer
Exemples de journaux d’invites

Cette section propose des exemples des journaux d’invite générés par Amazon Q Developer. 

Chaque exemple est suivi d’un tableau qui décrit les champs du fichier journal.

Pour en savoir plus sur les journaux d’invites, consultez [Journalisation des invites des utilisateurs dans Amazon Q Developer](q-admin-prompt-logging.md).

**Topics**
+ [

## Exemple de journal de suggestions intégrées
](#prompt-log-examples-inline)
+ [

## Exemples de journaux de chat
](#prompt-log-examples-chat)
+ [

## exemple de journaux /dev
](#prompt-log-examples-dev)

## Exemple de journal de suggestions intégrées
Exemple de journal de suggestions intégrées

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur accepte une suggestion intégrée.

```
{
    "records": [
        {
            "generateCompletionsEventRequest": {
                "leftContext": "import * cdk from 'aws-cdk-lib';\r\nimport * s3 from 'aws-cdk-lib/aws-s3';\r\nimport { Stack, StackProps } from 'constructs';\r\nexport class MyStack extends Stack {\r\n  constructor(scope: cdk.App, id: string, props?: StackProps) {\r\n    super(scope, id, props);\r\n\r\n    new s3.Bucket(this, 'XXXXXXXX', {\r\n      versioned: true\r\n    });\r\n  }\r\n  ",
                "rightContext": "",
                "fileName": "cdk-modified.ts",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:09:16.412719Z"
            },
            "generateCompletionsEventResponse": {
                "completions": ["synth() {\n    return cdk.App.prototype.synth.apply(this, arguments);\n  }"],
                "requestId": "797c70ee-abc9-4cc7-a148-b9df17f6ce48"
            }
        }
    ]
}
```

Le tableau suivant décrit les champs du fichier journal pour les suggestions intégrées.


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble de suggestions intégrées, également appelées saisie semi-automatique intégrée.  | 
|  `generateCompletionsEventRequest`  |  Décrit la demande de suggestion de code intégrée. La demande est faite par Amazon Q, au nom de l’utilisateur.  | 
|  `leftContext`  |  Indique le code situé devant le curseur qu’Amazon Q utilise comme contexte pour générer une suggestion intégrée.  | 
|  `rightContext`  |  Indique le code situé après le curseur qu’Amazon Q utilise comme contexte pour générer une suggestion intégrée.  | 
|  `fileName`  |  Indique le nom du fichier dans lequel une suggestion intégrée a été demandée.  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée aux suggestions intégrées. Dans cet exemple, il n’y a aucune personnalisation.   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a demandé une suggestion intégrée.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles la suggestion intégrée a été demandée. L’heure doit être exprimée en heure UTC (temps universel coordonné).  | 
|  `generateCompletionsEventResponse`  |  Décrit la suggestion intégrée générée par Amazon Q.  | 
|  `completions`  |  Indique la suggestion intégrée fournie par Amazon Q et que l’utilisateur a acceptée.  | 
|  `requestId`  |  L’ID de la demande en ligne qui identifie l’événement de manière unique.  | 

## Exemples de journaux de chat
Exemples de journaux de chat

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur discute à l’aide d’Amazon Q dans son IDE.

```
{
    "records": [
        {
            "generateAssistantResponseEventRequest": {
                "prompt": "Can you explain how to set up object-level access control in an S3 bucket using AWS CDK?",
                "chatTriggerType": "MANUAL",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-06T15:05:56.313070Z"
            },
            "generateAssistantResponseEventResponse": {
                "assistantResponse": "I'll explain how to set up object-level access control for an S3 bucket using AWS CDK. Here's how you can implement different access control configurations: [[1]](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html)\n\n1. Using Bucket Owner Enforced (Recommended Modern Approach):\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL\n});\n```\n\n2. Using Public Access Block Configuration:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  blockPublicAccess: new s3.BlockPublicAccess({\n    blockPublicAcls: true,\n    blockPublicPolicy: true,\n    ignorePublicAcls: true,\n    restrictPublicBuckets: true\n  })\n});\n```\n\n3. Setting Access Control for Specific Use Cases:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\nimport * as iam from 'aws-cdk-lib/aws-iam';\n\nconst bucket = new s3.Bucket(this, 'XXXXXXXX', {\n  // Enable versioning for object-level recovery\n  versioned: true,\n  \n  // Enforce encryption\n  encryption: s3.BucketEncryption.S3_MANAGED,\n  \n  // Block all public access\n  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n  \n  // Enforce object ownership\n  objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED,\n  \n  // Enable server access logs\n  serverAccessLogsPrefix: 'logs/'\n});\n\n// Grant read access to specific IAM role\nconst role = new iam.Role(this, 'MyRole', {\n  assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),\n});\nbucket.grantRead(role);\n\n// Grant write access to specific objects with prefix\nbucket.addToResourcePolicy(new iam.PolicyStatement({\n  actions: ['s3:PutObject'],\n  resources: [bucket.arnForObjects('uploads/*')],\n  principals: [new iam.AccountRootPrincipal()]\n}));\n```\n\n4. Setting up Lifecycle Rules for Objects:\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as s3 from 'aws-cdk-lib/aws-s3';\n\nnew s3.Bucket(this, 'XXXXXXXX', {\n  lifecycle: [\n    {\n      transitions: [\n        {\n          storageClass: s3.StorageClass.INFREQUENT_ACCESS,\n          transitionAfter: cdk.Duration.days(30)\n        },\n        {\n          storageClass: s3.StorageClass.GLACIER,\n          transitionAfter: cdk.Duration.days(90)\n        }\n      ],\n      expiration: cdk.Duration.days(365)\n    }\n  ]\n});\n```\n\nKey points to remember:\n- Always use the principle of least privilege\n- Block public access by default unless explicitly required\n- Use BUCKET_OWNER_ENFORCED for object ownership when possible\n- Consider implementing lifecycle rules for cost optimization\n- Use versioning for sensitive data\n- Implement server-side encryption\n- Use resource policies and IAM roles for access control instead of ACLs\n- Monitor access patterns using server access logging\n\nThese configurations help create a secure and well-managed S3 bucket with appropriate access controls at both bucket and object levels.",
                "followupPrompts": "How can you implement multi-factor authentication for S3 bucket access using AWS CDK?What are the best practices for setting up object-level versioning in AWS S3 using CDK?How can you use AWS CDK to create a custom error message for unauthorized access attempts on an S3 bucket?",
                "messageMetadata": {
                    "conversationId": "491bd3cd-d70d-40c0-a452-5ef3f0878422",
                    "utteranceId": null
                },
                "codeReferenceEvents": [],
                "supplementaryWebLinksEvent": [
                    {
                        "uri": "https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ManageACLs_section.html",
                        "title": "[1] Manage access control lists (ACLs) for Amazon S3 buckets using an AWS SDK - Amazon Simple Storage Service",
                        "snippet": "The following code example shows how to manage access control lists (ACLs) for Amazon S3 buckets.\n\n.NET\n\n**AWS SDK for .NET**\n\n```\n    using System;\n    using System.Collections.Generic;\n    using System.Threading.Tasks;\n    using Amazon.S3;\n    using Amazon.S3.Model;\n\n    /// <summary>\n    /// This example shows how to manage Amazon Simple Storage Service\n    /// (Amazon S3) access control lists (ACLs) to control Amazon S3 bucket\n    /// access.\n    /// </summary>\n    public class ManageACLs\n    {\n        public static async Task Main()\n        {\n            string bucketName = \"amzn-s3-demo-bucket1\";\n            string newBucketName = \"amzn-s3-demo-bucket2\";\n            string keyName = \"sample-object.txt\";\n            string emailAddress = \"someone@example.com\";\n\n            // If the AWS Region where your bucket is located is different from\n            // the Region defined for the default user, pass the Amazon S3 bucket's\n            // name to the client constructor. It should look like this:\n            // RegionEndpoint bucketRegion = RegionEndpoint.USEast1;\n            IAmazonS3 client = new AmazonS3Client();\n\n            await TestBucketObjectACLsAsync(client, bucketName, newBucketName, keyName, emailAddress);\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL, then retrieves the ACL\n        /// information and then adds a new ACL to one of the objects in the\n        /// Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized Amazon S3 client object used to call\n        /// methods to create a bucket, get an ACL, and add a different ACL to\n        /// one of the objects.</param>\n        /// <param name=\"bucketName\">A string representing the original Amazon S3\n        /// bucket name.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new bucket that will be created.</param>\n        /// <param name=\"keyName\">A string representing the key name of an Amazon S3\n        /// object for which we will change the ACL.</param>\n        /// <param name=\"emailAddress\">A string representing the email address\n        /// belonging to the person to whom access to the Amazon S3 bucket will be\n        /// granted.</param>\n        public static async Task TestBucketObjectACLsAsync(\n            IAmazonS3 client,\n            string bucketName,\n            string newBucketName,\n            string keyName,\n            string emailAddress)\n        {\n            try\n            {\n                // Create a new Amazon S3 bucket and specify canned ACL.\n                var success = await CreateBucketWithCannedACLAsync(client, newBucketName);\n\n                // Get the ACL on a bucket.\n                await GetBucketACLAsync(client, bucketName);\n\n                // Add (replace) the ACL on an object in a bucket.\n                await AddACLToExistingObjectAsync(client, bucketName, keyName, emailAddress);\n            }\n            catch (AmazonS3Exception amazonS3Exception)\n            {\n                Console.WriteLine($\"Exception: {amazonS3Exception.Message}\");\n            }\n        }\n\n        /// <summary>\n        /// Creates a new Amazon S3 bucket with a canned ACL attached.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"newBucketName\">A string representing the name of the\n        /// new Amazon S3 bucket.</param>\n        /// <returns>Returns a boolean value indicating success or failure.</returns>\n        public static async Task<bool> CreateBucketWithCannedACLAsync(IAmazonS3 client, string newBucketName)\n        {\n            var request = new PutBucketRequest()\n            {\n                BucketName = newBucketName,\n                BucketRegion = S3Region.EUWest1,\n\n                // Add a canned ACL.\n                CannedACL = S3CannedACL.LogDeliveryWrite,\n            };\n\n            var response = await client.PutBucketAsync(request);\n            return response.HttpStatusCode == System.Net.HttpStatusCode.OK;\n        }\n\n\n        /// <summary>\n        /// Retrieves the ACL associated with the Amazon S3 bucket name in the\n        /// bucketName parameter.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">The Amazon S3 bucket for which we want to get the\n        /// ACL list.</param>\n        /// <returns>Returns an S3AccessControlList returned from the call to\n        /// GetACLAsync.</returns>\n        public static async Task<S3AccessControlList> GetBucketACLAsync(IAmazonS3 client, string bucketName)\n        {\n            GetACLResponse response = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n            });\n\n            return response.AccessControlList;\n        }\n\n\n\n        /// <summary>\n        /// Adds a new ACL to an existing object in the Amazon S3 bucket.\n        /// </summary>\n        /// <param name=\"client\">The initialized client object used to call\n        /// PutBucketAsync.</param>\n        /// <param name=\"bucketName\">A string representing the name of the Amazon S3\n        /// bucket containing the object to which we want to apply a new ACL.</param>\n        /// <param name=\"keyName\">A string representing the name of the object\n        /// to which we want to apply the new ACL.</param>\n        /// <param name=\"emailAddress\">The email address of the person to whom\n        /// we will be applying to whom access will be granted.</param>\n        public static async Task AddACLToExistingObjectAsync(IAmazonS3 client, string bucketName, string keyName, string emailAddress)\n        {\n            // Retrieve the ACL for an object.\n            GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n            });\n\n            S3AccessControlList acl = aclResponse.AccessControlList;\n\n            // Retrieve the owner.\n            Owner owner = acl.Owner;\n\n            // Clear existing grants.\n            acl.Grants.Clear();\n\n            // Add a grant to reset the owner's full permission\n            // (the previous clear statement removed all permissions).\n            var fullControlGrant = new S3Grant\n            {\n                Grantee = new S3Grantee { CanonicalUser = acl.Owner.Id },\n            };\n            acl.AddGrant(fullControlGrant.Grantee, S3Permission.FULL_CONTROL);\n\n            // Specify email to identify grantee for granting permissions.\n            var grantUsingEmail = new S3Grant\n            {\n                Grantee = new S3Grantee { EmailAddress = emailAddress },\n                Permission = S3Permission.WRITE_ACP,\n            };\n\n            // Specify log delivery group as grantee.\n            var grantLogDeliveryGroup = new S3Grant\n            {\n                Grantee = new S3Grantee { URI = \"http://acs.amazonaws.com/groups/s3/LogDelivery\" },\n                Permission = S3Permission.WRITE,\n            };\n\n            // Create a new ACL.\n            var newAcl = new S3AccessControlList\n            {\n                Grants = new List<S3Grant> { grantUsingEmail, grantLogDeliveryGroup },\n                Owner = owner,\n            };\n\n            // Set the new ACL. We're throwing away the response here.\n            _ = await client.PutACLAsync(new PutACLRequest\n            {\n                BucketName = bucketName,\n                Key = keyName,\n                AccessControlList = newAcl,\n            });\n        }\n\n    }\n\n\n```\n\n* For API details, see the following topics in _AWS SDK for .NET API Reference_.\n  \n  * GetBucketAcl\n\n* GetObjectAcl\n\n* PutBucketAcl\n\n* PutObjectAcl\n\nFor a complete list of AWS SDK developer guides and code examples, see Developing with Amazon S3 using the AWS SDKs. This topic also includes information about getting started and details about previous SDK versions.\n"
                    }
                ],
                "requestId": "dad38fc0-815c-45f7-970a-db916cb7f131"
            }
        }
    ]
}
```


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble d’invites et de réponses.  | 
|  `generateAssistantResponseEventRequest`  |  Décrit l’invite saisie par l’utilisateur dans la fenêtre de chat de son IDE.  | 
|  `prompt`  |  Indique l’invite saisie par l’utilisateur dans la fenêtre de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indique que l’utilisateur a saisi une invite dans la fenêtre de chat ou qu’il a cliqué sur l’une des questions suggérées dans la fenêtre de chat. `INLINE_CHAT` indique que l’utilisateur a saisi une invite dans le petit écran de saisie de la fenêtre de codage principale. Pour en savoir plus sur le chat intégré, consultez [Chat en ligne avec Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée au chat. Dans cet exemple, il n’y a aucune personnalisation. Dans   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a saisi l’invite.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles l’utilisateur a saisi l’invite. L’horodatage est exprimé en heure UTC (temps universel).  | 
|  `generateAssistantResponseEventResponse`  |  Décrit la réponse générée par Amazon Q.  | 
|  `assistantResponse`  |  Indique la réponse fournie par Amazon Q à l’invite de l’utilisateur.  | 
|  `followupPrompts`  |  Indique les exemples d’invites de suivi qui ont été affichés pour l’utilisateur à la fin de la réponse.  | 
|  `messageMetadata`  |  Décrit les métadonnées associées à la réponse.  | 
|  `conversationId`  |  Indique l’ID de conversation de la réponse. L’ID de conversation regroupe les messages d’une session de chat.  | 
|  `utteranceId`  |  Indique l’ID de l’énoncé de la réponse. Un ID d’énoncé est une étiquette qui distingue une invite d’une autre dans un dialogue ou un jeu de données.  | 
|  `codeReferenceEvents`  |  Décrit les liens vers les références de code incluses dans la réponse.  | 
|  `supplementaryWebLinksEvent`  |  Indique les liens qui ont été affichés à l’attention de l’utilisateur à la fin de la réponse.  | 
|  `requestId`  |  L’ID de la réponse qui identifie l’événement de manière unique.  | 

## exemple de journaux /dev
exemple de journaux /dev

L’exemple suivant montre un fichier journal généré lorsqu’un utilisateur entre une commande **/dev** dans le chat Amazon Q de son IDE.

```
{
    "records": [
        {
            "startTaskAssistCodeGenerationEventRequest": {
                "prompt": "write a python application that prints 'hello world!' text to the screen and format it in red bold text",
                "chatTriggerType": "MANUAL",
                "conversationId": "da1c95b6-84e1-46a2-9ef9-fe92f5ee169e",
                "customizationArn": null,
                "userId": "d-92675051d5.b8f1f340-9081-70ad-5fc5-0f37151937a6",
                "timeStamp": "2025-01-13T15:40:27.808027101Z"
            },
            "startTaskAssistCodeGenerationEventResponse": {
                "requestId": "e504f126-7197-4e3c-a046-1a10d5a3f3e0"
            }
        }
    ]
}
```


| Nom de champ | Description | 
| --- | --- | 
|  `records`  |  Champ de niveau supérieur contenant un ensemble d’invites et de réponses.  | 
|  `startTaskAssistCodeGenerationEventRequest`  |  Décrit l’invite **/dev** saisie par l’utilisateur dans la fenêtre de chat de son IDE.  | 
|  `prompt`  |  Indique l’invite **/dev** saisie par l’utilisateur dans la fenêtre de chat.  | 
|  `chatTriggerType`  |  `MANUAL` indique que l’utilisateur a saisi une invite dans la fenêtre de chat ou qu’il a cliqué sur l’une des questions suggérées dans la fenêtre de chat. `INLINE_CHAT` indique que l’utilisateur a saisi une invite dans le petit écran de saisie de la fenêtre de codage principale. Pour en savoir plus sur le chat intégré, consultez [Chat en ligne avec Amazon Q Developer](q-in-IDE-inline-chat.md).  | 
|  `conversationId`  |  Indique l’ID de conversation de la réponse. L’ID de conversation regroupe les messages d’une session de chat.  | 
|  `customizationArn`  |  Indique l’Amazon Resource Name (ARN) de la personnalisation appliquée au chat. Dans cet exemple, il n’y a aucune personnalisation. Dans   | 
|  `userId`  |  Indique l’ID utilisateur de l’utilisateur qui a saisi l’invite.  | 
|  `timeStamp`  |  Indique la date et l’heure auxquelles l’utilisateur a saisi l’invite. L’horodatage est exprimé en heure UTC (temps universel).  | 
|  `startTaskAssistCodeGenerationEventResponse`  |  Décrit la réponse générée par Amazon Q. Actuellement, l’enregistrement des réponses aux commandes **/dev** n’est pas pris en charge. Le champ n’inclut donc pas de réponse.  | 
|  `assistantResponse`  |  Indique la réponse fournie par Amazon Q à l’invite de l’utilisateur.  | 
|  `requestId`  |  L’ID de la réponse qui identifie l’événement de manière unique.  | 