Skip to content

Commit 4b9dd7e

Browse files
author
Bob Strahan
committed
add custom model arn for classification and extraction
1 parent ee4fcf3 commit 4b9dd7e

File tree

4 files changed

+49
-8
lines changed

4 files changed

+49
-8
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.2
1+
0.3.3-alpha

patterns/pattern-2/template.yaml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ Parameters:
9696
Conditions:
9797
IsSummarizationEnabled: !Equals [!Ref IsSummarizationEnabled, "true"]
9898
HasGuardrailConfig: !And [!Not [!Equals [!Ref BedrockGuardrailId, ""]], !Not [!Equals [!Ref BedrockGuardrailVersion, ""]]]
99+
HasCustomClassificationModelARN : !Not [!Equals [!Ref CustomClassificationModelARN , ""]]
100+
HasCustomExtractionModelARN : !Not [!Equals [!Ref CustomExtractionModelARN , ""]]
99101

100102

101103
Resources:
@@ -248,7 +250,19 @@ Resources:
248250
model:
249251
type: string
250252
description: Model identifier
251-
enum: ["us.amazon.nova-lite-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-premier-v1:0", "us.anthropic.claude-3-haiku-20240307-v1:0", "us.anthropic.claude-3-5-sonnet-20241022-v2:0", "us.anthropic.claude-3-7-sonnet-20250219-v1:0", "us.anthropic.claude-sonnet-4-20250514-v1:0", "us.anthropic.claude-opus-4-20250514-v1:0"]
253+
enum:
254+
- !If
255+
- HasCustomClassificationModelARN
256+
- !Ref CustomClassificationModelARN
257+
- !Ref AWS::NoValue
258+
- "us.amazon.nova-lite-v1:0"
259+
- "us.amazon.nova-pro-v1:0"
260+
- "us.amazon.nova-premier-v1:0"
261+
- "us.anthropic.claude-3-haiku-20240307-v1:0"
262+
- "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
263+
- "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
264+
- "us.anthropic.claude-sonnet-4-20250514-v1:0"
265+
- "us.anthropic.claude-opus-4-20250514-v1:0"
252266
order: 1
253267
classificationMethod:
254268
type: string
@@ -299,7 +313,19 @@ Resources:
299313
model:
300314
type: string
301315
description: Model identifier
302-
enum: ["us.amazon.nova-lite-v1:0", "us.amazon.nova-pro-v1:0", "us.amazon.nova-premier-v1:0", "us.anthropic.claude-3-haiku-20240307-v1:0", "us.anthropic.claude-3-5-sonnet-20241022-v2:0", "us.anthropic.claude-3-7-sonnet-20250219-v1:0", "us.anthropic.claude-sonnet-4-20250514-v1:0", "us.anthropic.claude-opus-4-20250514-v1:0"]
316+
enum:
317+
- !If
318+
- HasCustomExtractionModelARN
319+
- !Ref CustomExtractionModelARN
320+
- !Ref AWS::NoValue
321+
- "us.amazon.nova-lite-v1:0"
322+
- "us.amazon.nova-pro-v1:0"
323+
- "us.amazon.nova-premier-v1:0"
324+
- "us.anthropic.claude-3-haiku-20240307-v1:0"
325+
- "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
326+
- "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
327+
- "us.anthropic.claude-sonnet-4-20250514-v1:0"
328+
- "us.anthropic.claude-opus-4-20250514-v1:0"
303329
order: 1
304330
temperature:
305331
type: number
@@ -446,6 +472,8 @@ Resources:
446472
ServiceToken: !Ref UpdateConfigurationFunctionArn
447473
Default: !Ref ConfigurationDefaultS3Uri
448474
ConfigLibraryHash: !Ref ConfigLibraryHash
475+
CustomClassificationModelARN: !Ref CustomClassificationModelARN
476+
CustomExtractionModelARN: !Ref CustomExtractionModelARN
449477

450478
OCRFunction:
451479
Type: AWS::Serverless::Function

src/lambda/update_configuration/index.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,21 @@ def handler(event: Dict[str, Any], context: Any) -> None:
126126
# Update Default configuration
127127
if 'Default' in properties:
128128
resolved_default = resolve_content(properties['Default'])
129+
130+
# Apply custom model ARNs if provided
131+
if isinstance(resolved_default, dict):
132+
# Replace classification model if CustomClassificationModelARN is provided and not empty
133+
if 'CustomClassificationModelARN' in properties and properties['CustomClassificationModelARN'].strip():
134+
if 'classification' in resolved_default:
135+
resolved_default['classification']['model'] = properties['CustomClassificationModelARN']
136+
logger.info(f"Updated classification model to: {properties['CustomClassificationModelARN']}")
137+
138+
# Replace extraction model if CustomExtractionModelARN is provided and not empty
139+
if 'CustomExtractionModelARN' in properties and properties['CustomExtractionModelARN'].strip():
140+
if 'extraction' in resolved_default:
141+
resolved_default['extraction']['model'] = properties['CustomExtractionModelARN']
142+
logger.info(f"Updated extraction model to: {properties['CustomExtractionModelARN']}")
143+
129144
update_configuration('Default', resolved_default)
130145

131146
# Update Custom configuration if provided and not empty
@@ -152,4 +167,4 @@ def handler(event: Dict[str, Any], context: Any) -> None:
152167
physical_id = generate_physical_id(event['StackId'], event['LogicalResourceId'])
153168
cfnresponse.send(event, context, cfnresponse.FAILED, {
154169
'Error': str(e)
155-
}, physical_id)
170+
}, physical_id)

template.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ Parameters:
8282
Pattern2CustomClassificationModelARN:
8383
Type: String
8484
Default: ""
85-
Description: (NOT YET SUPPORTED) Specify Custom Fine Tuned Classification Model ARN. Leave blank to use pretrained model specified in the selected configuration.
85+
Description: Specify Custom Fine Tuned Classification Model ARN. Leave blank to use pretrained model specified in the selected configuration.
8686

8787
Pattern2CustomExtractionModelARN:
8888
Type: String
8989
Default: ""
90-
Description: (NOT YET SUPPORTED) Specify Custom Fine Tuned Extraction Model ARN. Leave blank to use pretrained model specified in the selected configuration.
90+
Description: Specify Custom Fine Tuned Extraction Model ARN. Leave blank to use pretrained model specified in the selected configuration.
9191

9292
# Pattern 3 Parameters
9393

@@ -292,8 +292,6 @@ Rules:
292292
- Assert: !Not [!Equals [!Ref Pattern3UDOPModelArtifactPath, ""]]
293293
AssertDescription: UDOP Model Artifact Path is required when IDPPattern is 'Pattern1'
294294

295-
# Pattern 2 rules - Custom model validation now handled in pattern templates
296-
297295
Conditions:
298296
IsPattern1:
299297
!Equals [

0 commit comments

Comments
 (0)