Skip to content

Commit 066850d

Browse files
authored
Merge pull request #153 from aws-samples/python_samples_update
feat(bedrocksample): added sample for prompt management
2 parents 6d14642 + 922a382 commit 066850d

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
from aws_cdk import (
2+
Stack,
3+
aws_kms as kms,
4+
)
5+
from constructs import Construct
6+
from cdklabs.generative_ai_cdk_constructs import (
7+
bedrock
8+
)
9+
from aws_cdk.aws_bedrock import CfnPrompt
10+
11+
class PromptManagementStack(Stack):
12+
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
13+
super().__init__(scope, construct_id, **kwargs)
14+
15+
# Create KMS key
16+
cmk = kms.Key(self, "cmk")
17+
18+
claude_model = bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
19+
# Create tool specification
20+
tool_spec = CfnPrompt.ToolSpecificationProperty(
21+
name="top_song",
22+
description="Get the most popular song played on a radio station.",
23+
input_schema=CfnPrompt.ToolInputSchemaProperty(
24+
json={
25+
"type": "object",
26+
"properties": {
27+
"sign": {
28+
"type": "string",
29+
"description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKR."
30+
}
31+
},
32+
"required": ["sign"]
33+
}
34+
)
35+
)
36+
37+
# Create tool configuration
38+
tool_config = bedrock.ToolConfiguration(
39+
tool_choice=bedrock.ToolChoice.AUTO,
40+
tools=[
41+
CfnPrompt.ToolProperty(
42+
tool_spec=tool_spec
43+
)
44+
]
45+
)
46+
47+
# Create chat variant
48+
variant_chat = bedrock.PromptVariant.chat(
49+
variant_name="variant1",
50+
model=bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,
51+
messages=[
52+
bedrock.ChatMessage.user("From now on, you speak Japanese!"),
53+
bedrock.ChatMessage.assistant("Konnichiwa!"),
54+
bedrock.ChatMessage.user("From now on, you speak {{language}}!"),
55+
],
56+
system="You are a helpful assistant that only speaks the language you're told.",
57+
prompt_variables=["language"],
58+
tool_configuration=tool_config
59+
)
60+
61+
# Create prompt
62+
prompt = bedrock.Prompt(
63+
self,
64+
"prompt1",
65+
prompt_name="prompt-chat",
66+
description="my first chat prompt",
67+
default_variant=variant_chat,
68+
variants=[variant_chat],
69+
kms_key=cmk
70+
)
71+
72+
# Create variant2 as a text variant
73+
variant2 = bedrock.PromptVariant.text(
74+
variant_name="variant2",
75+
model=claude_model,
76+
prompt_variables=["topic"],
77+
prompt_text="This is my second text prompt. Please summarize our conversation on: {{topic}}.",
78+
inference_configuration={
79+
"temperature": 0.5,
80+
"topP": 0.999,
81+
"maxTokens": 2000,
82+
}
83+
)
84+
85+
prompt.add_variant(variant2)
86+
87+

0 commit comments

Comments
 (0)