Skip to content

Commit a1c44fd

Browse files
committed
chore: address review comments - first run
1 parent 3e09b8c commit a1c44fd

File tree

5 files changed

+32
-20
lines changed

5 files changed

+32
-20
lines changed

lib/aws-genai-llm-chatbot-stack.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,19 @@ export class AwsGenAILLMChatbotStack extends cdk.Stack {
7171
(model) => model.interface === ModelInterface.LangChain
7272
);
7373

74+
let bedrockAgentsInterface: BedrockAgentInterface | undefined;
7475
if (props.config.bedrock?.enabled) {
75-
new BedrockAgentInterface(this, "IBedrockAgent", {
76-
shared,
77-
config: props.config,
78-
messagesTopic: chatBotApi.messagesTopic,
79-
sessionsTable: chatBotApi.sessionsTable,
80-
byUserIdIndex: chatBotApi.byUserIdIndex,
81-
});
76+
bedrockAgentsInterface = new BedrockAgentInterface(
77+
this,
78+
"IBedrockAgent",
79+
{
80+
shared,
81+
config: props.config,
82+
messagesTopic: chatBotApi.messagesTopic,
83+
sessionsTable: chatBotApi.sessionsTable,
84+
byUserIdIndex: chatBotApi.byUserIdIndex,
85+
}
86+
);
8287
}
8388

8489
// check if any deployed model requires langchain interface or if bedrock is enabled from config
@@ -220,6 +225,9 @@ export class AwsGenAILLMChatbotStack extends cdk.Stack {
220225
chatBotApi.outBoundQueue,
221226
ideficsInterface.ingestionQueue,
222227
...(langchainInterface ? [langchainInterface.ingestionQueue] : []),
228+
...(bedrockAgentsInterface
229+
? [bedrockAgentsInterface.ingestionQueue]
230+
: []),
223231
],
224232
aurora: ragEngines?.auroraPgVector?.database,
225233
opensearch: ragEngines?.openSearchVector?.openSearchCollection,

lib/model-interfaces/bedrock-agents/functions/request-handler/adapters/bedrock/base.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
from typing import Any, Dict, Iterator, Optional
33
from pydantic import root_validator, Extra
44
from ..base import AgentAdapter
5+
from aws_lambda_powertools import Logger
6+
7+
logger = Logger()
58

69

710
class AgentInputOutputAdapter:
@@ -19,7 +22,7 @@ def prepare_output_stream(cls, response: Any) -> Iterator[str]:
1922
yield ""
2023

2124
for event in stream:
22-
print(event)
25+
logger.info("Stream event", event=event)
2326
chunk = event.get("chunk")
2427
# chunk obj format varies with provider
2528
yield chunk["bytes"].decode("utf8")
@@ -117,6 +120,3 @@ def _invoke_agent(
117120

118121
for event in response["completion"]:
119122
yield event
120-
121-
# for chunk in AgentInputOutputAdapter.prepare_output_stream(response):
122-
# yield chunk

lib/model-interfaces/bedrock-agents/functions/request-handler/index.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
logger = Logger()
1919

2020
AWS_REGION = os.environ["AWS_REGION"]
21-
API_KEYS_SECRETS_ARN = os.environ["API_KEYS_SECRETS_ARN"]
2221
CONFIG_PARAMETER_NAME = os.environ["CONFIG_PARAMETER_NAME"]
2322

2423
sequence_number = 0
@@ -49,7 +48,7 @@ def handle_run(record):
4948
prompt,
5049
)
5150

52-
logger.info(response)
51+
logger.info("Bedrock Agent response", response=response)
5352
sequence_number = 0
5453
run_id = str(uuid.uuid4())
5554
for r in response:
@@ -109,7 +108,7 @@ def record_handler(record: SQSRecord):
109108
payload: str = record.body
110109
message: dict = json.loads(payload)
111110
detail: dict = json.loads(message["Message"])
112-
logger.info(detail)
111+
logger.info("Incoming event", detail=detail)
113112

114113
if detail["action"] == ChatbotAction.RUN.value:
115114
handle_run(detail)
@@ -123,7 +122,7 @@ def handle_failed_records(records):
123122
payload: str = record.body
124123
message: dict = json.loads(payload)
125124
detail: dict = json.loads(message["Message"])
126-
logger.info(detail)
125+
logger.info("Failed event", detail=detail)
127126
user_id = detail["userId"]
128127
data = detail.get("data", {})
129128
session_id = data.get("sessionId", "")
@@ -137,7 +136,7 @@ def handle_failed_records(records):
137136
"timestamp": str(int(round(datetime.now().timestamp()))),
138137
"data": {
139138
"sessionId": session_id,
140-
"content": str(error),
139+
"content": "Something went wrong",
141140
"type": "text",
142141
},
143142
}
@@ -155,7 +154,12 @@ def handler(event, context: LambdaContext):
155154
except BatchProcessingError as e:
156155
logger.error(e)
157156

158-
logger.info(processed_messages)
157+
for message in processed_messages:
158+
logger.info(
159+
"Request complete with status " + message[0],
160+
status=message[0],
161+
cause=message[1],
162+
)
159163
handle_failed_records(
160164
message for message in processed_messages if message[0] == "fail"
161165
)

lib/model-interfaces/bedrock-agents/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ export class BedrockAgentInterface extends Construct {
3939
tracing: lambda.Tracing.ACTIVE,
4040
timeout: cdk.Duration.minutes(15),
4141
memorySize: 1024,
42-
logRetention: logs.RetentionDays.ONE_WEEK,
42+
logRetention: props.config.logRetention ?? logs.RetentionDays.ONE_WEEK,
43+
loggingFormat: lambda.LoggingFormat.JSON,
4344
layers: [props.shared.powerToolsLayer, props.shared.commonLayer],
4445
environment: {
4546
...props.shared.defaultEnvironmentVariables,
4647
CONFIG_PARAMETER_NAME: props.shared.configParameter.parameterName,
4748
SESSIONS_TABLE_NAME: props.sessionsTable.tableName,
4849
SESSIONS_BY_USER_ID_INDEX_NAME: props.byUserIdIndex,
49-
API_KEYS_SECRETS_ARN: props.shared.apiKeysSecret.secretArn,
5050
MESSAGES_TOPIC_ARN: props.messagesTopic.topicArn,
5151
},
5252
});

lib/shared/layers/python-sdk/python/genai_core/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def list_bedrock_agents():
7070

7171
return bedrock_agents
7272
except Exception as e:
73-
print(f"Error listing Bedrock agents: {e}")
73+
logger.error("Error listing Bedrock agents:", e)
7474
return None
7575

7676

0 commit comments

Comments
 (0)