Skip to content

Commit 9433863

Browse files
committed
Merge branch 'feature/customfinetuned-model' into 'develop'
add custom model arn for classification and extraction See merge request genaiic-reusable-assets/engagement-artifacts/genaiic-idp-accelerator!155
2 parents 51a0a6d + 855e81d commit 9433863

File tree

4 files changed

+57
-8
lines changed

4 files changed

+57
-8
lines changed

VERSION

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

patterns/pattern-2/template.yaml

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ Conditions:
105105
IsSummarizationEnabled: !Equals [!Ref IsSummarizationEnabled, "true"]
106106
IsAssessmentEnabled: !Equals [!Ref IsAssessmentEnabled, "true"]
107107
HasGuardrailConfig: !And [!Not [!Equals [!Ref BedrockGuardrailId, ""]], !Not [!Equals [!Ref BedrockGuardrailVersion, ""]]]
108+
HasCustomClassificationModelARN : !Not [!Equals [!Ref CustomClassificationModelARN , ""]]
109+
HasCustomExtractionModelARN : !Not [!Equals [!Ref CustomExtractionModelARN , ""]]
108110

109111

110112
Resources:
@@ -263,7 +265,19 @@ Resources:
263265
model:
264266
type: string
265267
description: Model identifier
266-
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"]
268+
enum:
269+
- !If
270+
- HasCustomClassificationModelARN
271+
- !Ref CustomClassificationModelARN
272+
- !Ref AWS::NoValue
273+
- "us.amazon.nova-lite-v1:0"
274+
- "us.amazon.nova-pro-v1:0"
275+
- "us.amazon.nova-premier-v1:0"
276+
- "us.anthropic.claude-3-haiku-20240307-v1:0"
277+
- "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
278+
- "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
279+
- "us.anthropic.claude-sonnet-4-20250514-v1:0"
280+
- "us.anthropic.claude-opus-4-20250514-v1:0"
267281
order: 1
268282
classificationMethod:
269283
type: string
@@ -314,7 +328,19 @@ Resources:
314328
model:
315329
type: string
316330
description: Model identifier
317-
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"]
331+
enum:
332+
- !If
333+
- HasCustomExtractionModelARN
334+
- !Ref CustomExtractionModelARN
335+
- !Ref AWS::NoValue
336+
- "us.amazon.nova-lite-v1:0"
337+
- "us.amazon.nova-pro-v1:0"
338+
- "us.amazon.nova-premier-v1:0"
339+
- "us.anthropic.claude-3-haiku-20240307-v1:0"
340+
- "us.anthropic.claude-3-5-sonnet-20241022-v2:0"
341+
- "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
342+
- "us.anthropic.claude-sonnet-4-20250514-v1:0"
343+
- "us.anthropic.claude-opus-4-20250514-v1:0"
318344
order: 1
319345
temperature:
320346
type: number
@@ -503,6 +529,8 @@ Resources:
503529
ServiceToken: !Ref UpdateConfigurationFunctionArn
504530
Default: !Ref ConfigurationDefaultS3Uri
505531
ConfigLibraryHash: !Ref ConfigLibraryHash
532+
CustomClassificationModelARN: !Ref CustomClassificationModelARN
533+
CustomExtractionModelARN: !Ref CustomExtractionModelARN
506534

507535
OCRFunction:
508536
Type: AWS::Serverless::Function
@@ -644,6 +672,10 @@ Resources:
644672
Resource:
645673
- !Sub "arn:aws:bedrock:*::foundation-model/*"
646674
- !Sub "arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:inference-profile/*"
675+
- !If
676+
- HasCustomClassificationModelARN
677+
- !Ref CustomClassificationModelARN
678+
- !Ref AWS::NoValue
647679
- !If
648680
- HasGuardrailConfig
649681
- Effect: Allow
@@ -722,6 +754,10 @@ Resources:
722754
Resource:
723755
- !Sub "arn:aws:bedrock:*::foundation-model/*"
724756
- !Sub "arn:aws:bedrock:${AWS::Region}:${AWS::AccountId}:inference-profile/*"
757+
- !If
758+
- HasCustomExtractionModelARN
759+
- !Ref CustomExtractionModelARN
760+
- !Ref AWS::NoValue
725761
- !If
726762
- HasGuardrailConfig
727763
- Effect: Allow

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, reason=str(e))
170+
}, physical_id, reason=str(e))

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

@@ -308,8 +308,6 @@ Rules:
308308
- Assert: !Not [!Equals [!Ref Pattern3UDOPModelArtifactPath, ""]]
309309
AssertDescription: UDOP Model Artifact Path is required when IDPPattern is 'Pattern1'
310310

311-
# Pattern 2 rules - Custom model validation now handled in pattern templates
312-
313311
Conditions:
314312
IsPattern1:
315313
!Equals [

0 commit comments

Comments
 (0)