Skip to content

Commit e48bc08

Browse files
author
awstools
committed
feat(client-bedrock-runtime): Add Prompt Caching support to Converse and ConverseStream APIs
1 parent a73e632 commit e48bc08

File tree

5 files changed

+196
-1
lines changed

5 files changed

+196
-1
lines changed

clients/client-bedrock-runtime/src/commands/ConverseCommand.ts

+12
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ export interface ConverseCommandOutput extends ConverseResponse, __MetadataBeare
146146
* },
147147
* },
148148
* },
149+
* cachePoint: { // CachePointBlock
150+
* type: "default", // required
151+
* },
149152
* reasoningContent: { // ReasoningContentBlock Union: only one key present
150153
* reasoningText: { // ReasoningTextBlock
151154
* text: "STRING_VALUE", // required
@@ -174,6 +177,9 @@ export interface ConverseCommandOutput extends ConverseResponse, __MetadataBeare
174177
* },
175178
* },
176179
* },
180+
* cachePoint: {
181+
* type: "default", // required
182+
* },
177183
* },
178184
* ],
179185
* inferenceConfig: { // InferenceConfiguration
@@ -194,6 +200,7 @@ export interface ConverseCommandOutput extends ConverseResponse, __MetadataBeare
194200
* json: "DOCUMENT_VALUE",
195201
* },
196202
* },
203+
* cachePoint: "<CachePointBlock>",
197204
* },
198205
* ],
199206
* toolChoice: { // ToolChoice Union: only one key present
@@ -309,6 +316,9 @@ export interface ConverseCommandOutput extends ConverseResponse, __MetadataBeare
309316
* // },
310317
* // },
311318
* // },
319+
* // cachePoint: { // CachePointBlock
320+
* // type: "default", // required
321+
* // },
312322
* // reasoningContent: { // ReasoningContentBlock Union: only one key present
313323
* // reasoningText: { // ReasoningTextBlock
314324
* // text: "STRING_VALUE", // required
@@ -325,6 +335,8 @@ export interface ConverseCommandOutput extends ConverseResponse, __MetadataBeare
325335
* // inputTokens: Number("int"), // required
326336
* // outputTokens: Number("int"), // required
327337
* // totalTokens: Number("int"), // required
338+
* // cacheReadInputTokens: Number("int"),
339+
* // cacheWriteInputTokens: Number("int"),
328340
* // },
329341
* // metrics: { // ConverseMetrics
330342
* // latencyMs: Number("long"), // required

clients/client-bedrock-runtime/src/commands/ConverseStreamCommand.ts

+9
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ export interface ConverseStreamCommandOutput extends ConverseStreamResponse, __M
152152
* },
153153
* },
154154
* },
155+
* cachePoint: { // CachePointBlock
156+
* type: "default", // required
157+
* },
155158
* reasoningContent: { // ReasoningContentBlock Union: only one key present
156159
* reasoningText: { // ReasoningTextBlock
157160
* text: "STRING_VALUE", // required
@@ -180,6 +183,9 @@ export interface ConverseStreamCommandOutput extends ConverseStreamResponse, __M
180183
* },
181184
* },
182185
* },
186+
* cachePoint: {
187+
* type: "default", // required
188+
* },
183189
* },
184190
* ],
185191
* inferenceConfig: { // InferenceConfiguration
@@ -200,6 +206,7 @@ export interface ConverseStreamCommandOutput extends ConverseStreamResponse, __M
200206
* json: "DOCUMENT_VALUE",
201207
* },
202208
* },
209+
* cachePoint: "<CachePointBlock>",
203210
* },
204211
* ],
205212
* toolChoice: { // ToolChoice Union: only one key present
@@ -274,6 +281,8 @@ export interface ConverseStreamCommandOutput extends ConverseStreamResponse, __M
274281
* // inputTokens: Number("int"), // required
275282
* // outputTokens: Number("int"), // required
276283
* // totalTokens: Number("int"), // required
284+
* // cacheReadInputTokens: Number("int"),
285+
* // cacheWriteInputTokens: Number("int"),
277286
* // },
278287
* // metrics: { // ConverseStreamMetrics
279288
* // latencyMs: Number("long"), // required

clients/client-bedrock-runtime/src/models/models_0.ts

+100-1
Original file line numberDiff line numberDiff line change
@@ -1509,6 +1509,31 @@ export interface InferenceConfiguration {
15091509
stopSequences?: string[] | undefined;
15101510
}
15111511

1512+
/**
1513+
* @public
1514+
* @enum
1515+
*/
1516+
export const CachePointType = {
1517+
DEFAULT: "default",
1518+
} as const;
1519+
1520+
/**
1521+
* @public
1522+
*/
1523+
export type CachePointType = (typeof CachePointType)[keyof typeof CachePointType];
1524+
1525+
/**
1526+
* <p>Defines a section of content to be cached for reuse in subsequent API calls.</p>
1527+
* @public
1528+
*/
1529+
export interface CachePointBlock {
1530+
/**
1531+
* <p>Specifies the type of cache point within the CachePointBlock.</p>
1532+
* @public
1533+
*/
1534+
type: CachePointType | undefined;
1535+
}
1536+
15121537
/**
15131538
* @public
15141539
* @enum
@@ -2219,6 +2244,7 @@ export interface ToolUseBlock {
22192244
* @public
22202245
*/
22212246
export type ContentBlock =
2247+
| ContentBlock.CachePointMember
22222248
| ContentBlock.DocumentMember
22232249
| ContentBlock.GuardContentMember
22242250
| ContentBlock.ImageMember
@@ -2245,6 +2271,7 @@ export namespace ContentBlock {
22452271
toolUse?: never;
22462272
toolResult?: never;
22472273
guardContent?: never;
2274+
cachePoint?: never;
22482275
reasoningContent?: never;
22492276
$unknown?: never;
22502277
}
@@ -2264,6 +2291,7 @@ export namespace ContentBlock {
22642291
toolUse?: never;
22652292
toolResult?: never;
22662293
guardContent?: never;
2294+
cachePoint?: never;
22672295
reasoningContent?: never;
22682296
$unknown?: never;
22692297
}
@@ -2280,6 +2308,7 @@ export namespace ContentBlock {
22802308
toolUse?: never;
22812309
toolResult?: never;
22822310
guardContent?: never;
2311+
cachePoint?: never;
22832312
reasoningContent?: never;
22842313
$unknown?: never;
22852314
}
@@ -2296,6 +2325,7 @@ export namespace ContentBlock {
22962325
toolUse?: never;
22972326
toolResult?: never;
22982327
guardContent?: never;
2328+
cachePoint?: never;
22992329
reasoningContent?: never;
23002330
$unknown?: never;
23012331
}
@@ -2312,6 +2342,7 @@ export namespace ContentBlock {
23122342
toolUse: ToolUseBlock;
23132343
toolResult?: never;
23142344
guardContent?: never;
2345+
cachePoint?: never;
23152346
reasoningContent?: never;
23162347
$unknown?: never;
23172348
}
@@ -2328,6 +2359,7 @@ export namespace ContentBlock {
23282359
toolUse?: never;
23292360
toolResult: ToolResultBlock;
23302361
guardContent?: never;
2362+
cachePoint?: never;
23312363
reasoningContent?: never;
23322364
$unknown?: never;
23332365
}
@@ -2349,6 +2381,24 @@ export namespace ContentBlock {
23492381
toolUse?: never;
23502382
toolResult?: never;
23512383
guardContent: GuardrailConverseContentBlock;
2384+
cachePoint?: never;
2385+
reasoningContent?: never;
2386+
$unknown?: never;
2387+
}
2388+
2389+
/**
2390+
* <p>CachePoint to include in the message.</p>
2391+
* @public
2392+
*/
2393+
export interface CachePointMember {
2394+
text?: never;
2395+
image?: never;
2396+
document?: never;
2397+
video?: never;
2398+
toolUse?: never;
2399+
toolResult?: never;
2400+
guardContent?: never;
2401+
cachePoint: CachePointBlock;
23522402
reasoningContent?: never;
23532403
$unknown?: never;
23542404
}
@@ -2365,6 +2415,7 @@ export namespace ContentBlock {
23652415
toolUse?: never;
23662416
toolResult?: never;
23672417
guardContent?: never;
2418+
cachePoint?: never;
23682419
reasoningContent: ReasoningContentBlock;
23692420
$unknown?: never;
23702421
}
@@ -2380,6 +2431,7 @@ export namespace ContentBlock {
23802431
toolUse?: never;
23812432
toolResult?: never;
23822433
guardContent?: never;
2434+
cachePoint?: never;
23832435
reasoningContent?: never;
23842436
$unknown: [string, any];
23852437
}
@@ -2392,6 +2444,7 @@ export namespace ContentBlock {
23922444
toolUse: (value: ToolUseBlock) => T;
23932445
toolResult: (value: ToolResultBlock) => T;
23942446
guardContent: (value: GuardrailConverseContentBlock) => T;
2447+
cachePoint: (value: CachePointBlock) => T;
23952448
reasoningContent: (value: ReasoningContentBlock) => T;
23962449
_: (name: string, value: any) => T;
23972450
}
@@ -2404,6 +2457,7 @@ export namespace ContentBlock {
24042457
if (value.toolUse !== undefined) return visitor.toolUse(value.toolUse);
24052458
if (value.toolResult !== undefined) return visitor.toolResult(value.toolResult);
24062459
if (value.guardContent !== undefined) return visitor.guardContent(value.guardContent);
2460+
if (value.cachePoint !== undefined) return visitor.cachePoint(value.cachePoint);
24072461
if (value.reasoningContent !== undefined) return visitor.reasoningContent(value.reasoningContent);
24082462
return visitor._(value.$unknown[0], value.$unknown[1]);
24092463
};
@@ -2524,6 +2578,7 @@ export namespace PromptVariableValues {
25242578
* @public
25252579
*/
25262580
export type SystemContentBlock =
2581+
| SystemContentBlock.CachePointMember
25272582
| SystemContentBlock.GuardContentMember
25282583
| SystemContentBlock.TextMember
25292584
| SystemContentBlock.$UnknownMember;
@@ -2539,6 +2594,7 @@ export namespace SystemContentBlock {
25392594
export interface TextMember {
25402595
text: string;
25412596
guardContent?: never;
2597+
cachePoint?: never;
25422598
$unknown?: never;
25432599
}
25442600

@@ -2551,6 +2607,18 @@ export namespace SystemContentBlock {
25512607
export interface GuardContentMember {
25522608
text?: never;
25532609
guardContent: GuardrailConverseContentBlock;
2610+
cachePoint?: never;
2611+
$unknown?: never;
2612+
}
2613+
2614+
/**
2615+
* <p>CachePoint to include in the system prompt.</p>
2616+
* @public
2617+
*/
2618+
export interface CachePointMember {
2619+
text?: never;
2620+
guardContent?: never;
2621+
cachePoint: CachePointBlock;
25542622
$unknown?: never;
25552623
}
25562624

@@ -2560,18 +2628,21 @@ export namespace SystemContentBlock {
25602628
export interface $UnknownMember {
25612629
text?: never;
25622630
guardContent?: never;
2631+
cachePoint?: never;
25632632
$unknown: [string, any];
25642633
}
25652634

25662635
export interface Visitor<T> {
25672636
text: (value: string) => T;
25682637
guardContent: (value: GuardrailConverseContentBlock) => T;
2638+
cachePoint: (value: CachePointBlock) => T;
25692639
_: (name: string, value: any) => T;
25702640
}
25712641

25722642
export const visit = <T>(value: SystemContentBlock, visitor: Visitor<T>): T => {
25732643
if (value.text !== undefined) return visitor.text(value.text);
25742644
if (value.guardContent !== undefined) return visitor.guardContent(value.guardContent);
2645+
if (value.cachePoint !== undefined) return visitor.cachePoint(value.cachePoint);
25752646
return visitor._(value.$unknown[0], value.$unknown[1]);
25762647
};
25772648
}
@@ -2744,7 +2815,7 @@ export interface ToolSpecification {
27442815
* <p>Information about a tool that you can use with the Converse API. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html">Tool use (function calling)</a> in the Amazon Bedrock User Guide.</p>
27452816
* @public
27462817
*/
2747-
export type Tool = Tool.ToolSpecMember | Tool.$UnknownMember;
2818+
export type Tool = Tool.CachePointMember | Tool.ToolSpecMember | Tool.$UnknownMember;
27482819

27492820
/**
27502821
* @public
@@ -2756,6 +2827,17 @@ export namespace Tool {
27562827
*/
27572828
export interface ToolSpecMember {
27582829
toolSpec: ToolSpecification;
2830+
cachePoint?: never;
2831+
$unknown?: never;
2832+
}
2833+
2834+
/**
2835+
* <p>CachePoint to include in the tool configuration.</p>
2836+
* @public
2837+
*/
2838+
export interface CachePointMember {
2839+
toolSpec?: never;
2840+
cachePoint: CachePointBlock;
27592841
$unknown?: never;
27602842
}
27612843

@@ -2764,16 +2846,19 @@ export namespace Tool {
27642846
*/
27652847
export interface $UnknownMember {
27662848
toolSpec?: never;
2849+
cachePoint?: never;
27672850
$unknown: [string, any];
27682851
}
27692852

27702853
export interface Visitor<T> {
27712854
toolSpec: (value: ToolSpecification) => T;
2855+
cachePoint: (value: CachePointBlock) => T;
27722856
_: (name: string, value: any) => T;
27732857
}
27742858

27752859
export const visit = <T>(value: Tool, visitor: Visitor<T>): T => {
27762860
if (value.toolSpec !== undefined) return visitor.toolSpec(value.toolSpec);
2861+
if (value.cachePoint !== undefined) return visitor.cachePoint(value.cachePoint);
27772862
return visitor._(value.$unknown[0], value.$unknown[1]);
27782863
};
27792864
}
@@ -3049,6 +3134,18 @@ export interface TokenUsage {
30493134
* @public
30503135
*/
30513136
totalTokens: number | undefined;
3137+
3138+
/**
3139+
* <p>The number of input tokens read from the cache for the request.</p>
3140+
* @public
3141+
*/
3142+
cacheReadInputTokens?: number | undefined;
3143+
3144+
/**
3145+
* <p>The number of input tokens written to the cache for the request.</p>
3146+
* @public
3147+
*/
3148+
cacheWriteInputTokens?: number | undefined;
30523149
}
30533150

30543151
/**
@@ -4543,6 +4640,7 @@ export const ContentBlockFilterSensitiveLog = (obj: ContentBlock): any => {
45434640
if (obj.toolResult !== undefined) return { toolResult: obj.toolResult };
45444641
if (obj.guardContent !== undefined)
45454642
return { guardContent: GuardrailConverseContentBlockFilterSensitiveLog(obj.guardContent) };
4643+
if (obj.cachePoint !== undefined) return { cachePoint: obj.cachePoint };
45464644
if (obj.reasoningContent !== undefined) return { reasoningContent: SENSITIVE_STRING };
45474645
if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: "UNKNOWN" };
45484646
};
@@ -4562,6 +4660,7 @@ export const SystemContentBlockFilterSensitiveLog = (obj: SystemContentBlock): a
45624660
if (obj.text !== undefined) return { text: obj.text };
45634661
if (obj.guardContent !== undefined)
45644662
return { guardContent: GuardrailConverseContentBlockFilterSensitiveLog(obj.guardContent) };
4663+
if (obj.cachePoint !== undefined) return { cachePoint: obj.cachePoint };
45654664
if (obj.$unknown !== undefined) return { [obj.$unknown[0]]: "UNKNOWN" };
45664665
};
45674666

0 commit comments

Comments
 (0)