Skip to content

Commit 7a759ee

Browse files
authored
fix(appcomposer): use userIntent to get higher quality responses from codewhisperer (#5368)
Problem: appcompser got a lot invalid JSON responses and out of domain errors from codewhisperer api call Solution: starling using `userIntent` to get higher quality responses from codewhisperer
1 parent 408befe commit 7a759ee

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

packages/core/src/applicationcomposer/messageHandlers/generateResourceHandler.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
5-
import { GenerateAssistantResponseRequest, SupplementaryWebLink, Reference } from '@amzn/codewhisperer-streaming'
5+
import {
6+
GenerateAssistantResponseRequest,
7+
SupplementaryWebLink,
8+
Reference,
9+
UserIntent,
10+
} from '@amzn/codewhisperer-streaming'
611

712
import {
813
GenerateResourceRequestMessage,
@@ -19,7 +24,7 @@ const TIMEOUT = 30_000
1924

2025
export async function generateResourceHandler(request: GenerateResourceRequestMessage, context: WebviewContext) {
2126
try {
22-
const { chatResponse, references, metadata, isSuccess } = await generateResource(request.prompt)
27+
const { chatResponse, references, metadata, isSuccess } = await generateResource(request.cfnType)
2328

2429
const responseMessage: GenerateResourceResponseMessage = {
2530
command: Command.GENERATE_RESOURCE,
@@ -49,7 +54,7 @@ export async function generateResourceHandler(request: GenerateResourceRequestMe
4954
}
5055
}
5156

52-
async function generateResource(prompt: string) {
57+
async function generateResource(cfnType: string) {
5358
let startTime = globals.clock.Date.now()
5459

5560
try {
@@ -61,7 +66,8 @@ async function generateResource(prompt: string) {
6166
conversationState: {
6267
currentMessage: {
6368
userInputMessage: {
64-
content: prompt,
69+
content: cfnType,
70+
userIntent: UserIntent.GENERATE_CLOUDFORMATION_TEMPLATE,
6571
},
6672
},
6773
chatTriggerType: 'MANUAL',
@@ -99,7 +105,6 @@ async function generateResource(prompt: string) {
99105
throw new Error('Invalid model response')
100106
}
101107
}
102-
103108
if (value?.messageMetadataEvent?.conversationId) {
104109
conversationId = value.messageMetadataEvent.conversationId
105110
}
@@ -134,7 +139,7 @@ async function generateResource(prompt: string) {
134139

135140
getLogger().debug(
136141
`CW Chat Debug message:
137-
prompt = "${prompt}",
142+
cfnType = "${cfnType}",
138143
conversationId = ${conversationId},
139144
metadata = \n${JSON.stringify(metadata, undefined, 2)},
140145
supplementaryWebLinks = \n${JSON.stringify(supplementaryWebLinks, undefined, 2)},

packages/core/src/applicationcomposer/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ export interface ReferenceDetails {
147147
}
148148

149149
export interface GenerateResourceRequestMessage extends Message {
150+
cfnType: string
150151
prompt: string
151152
traceId: string
152153
}

packages/core/src/test/applicationcomposer/messageHandlers/generateResourceHandler.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ describe('generateResourceHandler', function () {
2424
{
2525
command: Command.GENERATE_RESOURCE,
2626
messageType: MessageType.REQUEST,
27+
cfnType: '',
2728
prompt: '',
2829
traceId: '0',
2930
},

0 commit comments

Comments
 (0)