@composurecdk/bedrock 0.10.1 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -17
- package/dist/commonjs/alarm-definition.d.ts +29 -0
- package/dist/commonjs/alarm-definition.d.ts.map +1 -0
- package/dist/commonjs/alarm-definition.js +53 -0
- package/dist/commonjs/alarm-definition.js.map +1 -0
- package/dist/commonjs/application-inference-profile-builder.d.ts +44 -0
- package/dist/commonjs/application-inference-profile-builder.d.ts.map +1 -0
- package/dist/commonjs/application-inference-profile-builder.js +51 -0
- package/dist/commonjs/application-inference-profile-builder.js.map +1 -0
- package/dist/commonjs/grants.d.ts +25 -1
- package/dist/commonjs/grants.d.ts.map +1 -1
- package/dist/commonjs/grants.js +57 -6
- package/dist/commonjs/grants.js.map +1 -1
- package/dist/commonjs/guardrail-alarms.d.ts +40 -0
- package/dist/commonjs/guardrail-alarms.d.ts.map +1 -0
- package/dist/commonjs/guardrail-alarms.js +41 -0
- package/dist/commonjs/guardrail-alarms.js.map +1 -0
- package/dist/commonjs/guardrail-builder.d.ts +70 -0
- package/dist/commonjs/guardrail-builder.d.ts.map +1 -0
- package/dist/commonjs/guardrail-builder.js +78 -0
- package/dist/commonjs/guardrail-builder.js.map +1 -0
- package/dist/commonjs/guardrail-defaults.d.ts +25 -0
- package/dist/commonjs/guardrail-defaults.d.ts.map +1 -0
- package/dist/commonjs/guardrail-defaults.js +30 -0
- package/dist/commonjs/guardrail-defaults.js.map +1 -0
- package/dist/commonjs/index.d.ts +8 -2
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +15 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/inference-profile.d.ts +19 -0
- package/dist/commonjs/inference-profile.d.ts.map +1 -1
- package/dist/commonjs/inference-profile.js.map +1 -1
- package/dist/commonjs/inference-target.d.ts +14 -7
- package/dist/commonjs/inference-target.d.ts.map +1 -1
- package/dist/commonjs/inference-target.js +63 -35
- package/dist/commonjs/inference-target.js.map +1 -1
- package/dist/commonjs/model-alarm-defaults.d.ts.map +1 -1
- package/dist/commonjs/model-alarm-defaults.js +5 -14
- package/dist/commonjs/model-alarm-defaults.js.map +1 -1
- package/dist/commonjs/model-alarms.d.ts +2 -2
- package/dist/commonjs/model-alarms.d.ts.map +1 -1
- package/dist/commonjs/model-alarms.js +35 -58
- package/dist/commonjs/model-alarms.js.map +1 -1
- package/dist/commonjs/model-invocation-logging-alarms.d.ts +42 -0
- package/dist/commonjs/model-invocation-logging-alarms.d.ts.map +1 -0
- package/dist/commonjs/model-invocation-logging-alarms.js +59 -0
- package/dist/commonjs/model-invocation-logging-alarms.js.map +1 -0
- package/dist/commonjs/model-invocation-logging-builder.d.ts +84 -0
- package/dist/commonjs/model-invocation-logging-builder.d.ts.map +1 -0
- package/dist/commonjs/model-invocation-logging-builder.js +135 -0
- package/dist/commonjs/model-invocation-logging-builder.js.map +1 -0
- package/dist/esm/alarm-definition.d.ts +29 -0
- package/dist/esm/alarm-definition.d.ts.map +1 -0
- package/dist/esm/alarm-definition.js +48 -0
- package/dist/esm/alarm-definition.js.map +1 -0
- package/dist/esm/application-inference-profile-builder.d.ts +44 -0
- package/dist/esm/application-inference-profile-builder.d.ts.map +1 -0
- package/dist/esm/application-inference-profile-builder.js +48 -0
- package/dist/esm/application-inference-profile-builder.js.map +1 -0
- package/dist/esm/grants.d.ts +25 -1
- package/dist/esm/grants.d.ts.map +1 -1
- package/dist/esm/grants.js +58 -7
- package/dist/esm/grants.js.map +1 -1
- package/dist/esm/guardrail-alarms.d.ts +40 -0
- package/dist/esm/guardrail-alarms.d.ts.map +1 -0
- package/dist/esm/guardrail-alarms.js +37 -0
- package/dist/esm/guardrail-alarms.js.map +1 -0
- package/dist/esm/guardrail-builder.d.ts +70 -0
- package/dist/esm/guardrail-builder.d.ts.map +1 -0
- package/dist/esm/guardrail-builder.js +75 -0
- package/dist/esm/guardrail-builder.js.map +1 -0
- package/dist/esm/guardrail-defaults.d.ts +25 -0
- package/dist/esm/guardrail-defaults.d.ts.map +1 -0
- package/dist/esm/guardrail-defaults.js +27 -0
- package/dist/esm/guardrail-defaults.js.map +1 -0
- package/dist/esm/index.d.ts +8 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/inference-profile.d.ts +19 -0
- package/dist/esm/inference-profile.d.ts.map +1 -1
- package/dist/esm/inference-profile.js.map +1 -1
- package/dist/esm/inference-target.d.ts +14 -7
- package/dist/esm/inference-target.d.ts.map +1 -1
- package/dist/esm/inference-target.js +62 -35
- package/dist/esm/inference-target.js.map +1 -1
- package/dist/esm/model-alarm-defaults.d.ts.map +1 -1
- package/dist/esm/model-alarm-defaults.js +1 -10
- package/dist/esm/model-alarm-defaults.js.map +1 -1
- package/dist/esm/model-alarms.d.ts +2 -2
- package/dist/esm/model-alarms.d.ts.map +1 -1
- package/dist/esm/model-alarms.js +35 -58
- package/dist/esm/model-alarms.js.map +1 -1
- package/dist/esm/model-invocation-logging-alarms.d.ts +42 -0
- package/dist/esm/model-invocation-logging-alarms.d.ts.map +1 -0
- package/dist/esm/model-invocation-logging-alarms.js +55 -0
- package/dist/esm/model-invocation-logging-alarms.js.map +1 -0
- package/dist/esm/model-invocation-logging-builder.d.ts +84 -0
- package/dist/esm/model-invocation-logging-builder.d.ts.map +1 -0
- package/dist/esm/model-invocation-logging-builder.js +131 -0
- package/dist/esm/model-invocation-logging-builder.js.map +1 -0
- package/package.json +5 -11
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { CfnGuardrail, type CfnGuardrailProps, CfnGuardrailVersion } from "aws-cdk-lib/aws-bedrock";
|
|
2
|
+
import type { Alarm } from "aws-cdk-lib/aws-cloudwatch";
|
|
3
|
+
import type { IConstruct } from "constructs";
|
|
4
|
+
import { COPY_STATE, type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
5
|
+
import { type ITaggedBuilder } from "@composurecdk/cloudformation";
|
|
6
|
+
import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
|
|
7
|
+
import { type GuardrailAlarmConfig, type GuardrailMetrics } from "./guardrail-alarms.js";
|
|
8
|
+
/** A guardrail's ARN and published version. */
|
|
9
|
+
export interface GuardrailReference {
|
|
10
|
+
/** The guardrail's ARN, without a version. */
|
|
11
|
+
readonly guardrailArn: string;
|
|
12
|
+
/** The published version, e.g. `"1"`. */
|
|
13
|
+
readonly version: string;
|
|
14
|
+
}
|
|
15
|
+
/** Configuration properties for {@link createGuardrailBuilder}. */
|
|
16
|
+
export interface GuardrailBuilderProps extends Omit<CfnGuardrailProps, "tags" | "kmsKeyArn"> {
|
|
17
|
+
/** A customer managed key to encrypt the guardrail with. */
|
|
18
|
+
kmsKeyArn?: Resolvable<NonNullable<CfnGuardrailProps["kmsKeyArn"]>>;
|
|
19
|
+
/**
|
|
20
|
+
* Configuration for the recommended alarms, which are all opt-in. Set to
|
|
21
|
+
* `false` to disable them; alarms added with `addAlarm()` are unaffected.
|
|
22
|
+
*/
|
|
23
|
+
recommendedAlarms?: GuardrailAlarmConfig | false;
|
|
24
|
+
}
|
|
25
|
+
/** The build output of an {@link IGuardrailBuilder}. */
|
|
26
|
+
export interface GuardrailBuilderResult {
|
|
27
|
+
guardrail: CfnGuardrail;
|
|
28
|
+
/** The published version callers should use, rather than the working draft. */
|
|
29
|
+
version: CfnGuardrailVersion;
|
|
30
|
+
/** The guardrail's ARN and published version, for grants and invocations. */
|
|
31
|
+
reference: GuardrailReference;
|
|
32
|
+
/** The CloudWatch alarms created, keyed by alarm key. */
|
|
33
|
+
alarms: Record<string, Alarm>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A fluent builder for an Amazon Bedrock guardrail.
|
|
37
|
+
*
|
|
38
|
+
* @see {@link createGuardrailBuilder}
|
|
39
|
+
*/
|
|
40
|
+
export type IGuardrailBuilder = ITaggedBuilder<GuardrailBuilderProps, GuardrailBuilder>;
|
|
41
|
+
declare class GuardrailBuilder implements Lifecycle<GuardrailBuilderResult> {
|
|
42
|
+
#private;
|
|
43
|
+
props: Partial<GuardrailBuilderProps>;
|
|
44
|
+
/**
|
|
45
|
+
* Adds a custom alarm. The metric factory receives the guardrail version's
|
|
46
|
+
* {@link GuardrailMetrics}.
|
|
47
|
+
*/
|
|
48
|
+
addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<GuardrailMetrics>) => AlarmDefinitionBuilder<GuardrailMetrics>): this;
|
|
49
|
+
/** @internal — see ADR-0005. */
|
|
50
|
+
[COPY_STATE](target: GuardrailBuilder): void;
|
|
51
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): GuardrailBuilderResult;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a builder for an Amazon Bedrock guardrail and a published version
|
|
55
|
+
* of it ([GENSEC02-BP01](https://docs.aws.amazon.com/wellarchitected/latest/generative-ai-lens/gensec02-bp01.html)).
|
|
56
|
+
*
|
|
57
|
+
* By default it filters every harmful-content category and prompt attacks at
|
|
58
|
+
* `HIGH` ({@link GUARDRAIL_DEFAULTS}). Pass its `reference` to
|
|
59
|
+
* `modelGrants.invoke(target, { requireGuardrail })` to make callers use it.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* createGuardrailBuilder()
|
|
64
|
+
* .name("support-assistant")
|
|
65
|
+
* .topicPolicyConfig({ topicsConfig: [{ name: "Legal", definition: "Legal advice.", type: "DENY" }] });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function createGuardrailBuilder(): IGuardrailBuilder;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=guardrail-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrail-builder.d.ts","sourceRoot":"","sources":["../../src/guardrail-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAgB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAGtB,MAAM,uBAAuB,CAAC;AAG/B,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAC;IAC1F,4DAA4D;IAC5D,SAAS,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAEpE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;CAClD;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,YAAY,CAAC;IACxB,+EAA+E;IAC/E,OAAO,EAAE,mBAAmB,CAAC;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,kBAAkB,CAAC;IAC9B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAWxF,cAAM,gBAAiB,YAAW,SAAS,CAAC,sBAAsB,CAAC;;IACjE,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;IAG3C;;;OAGG;IACH,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,KAC5C,sBAAsB,CAAC,gBAAgB,CAAC,GAC5C,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAI5C,KAAK,CACH,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,sBAAsB;CA4B1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGuardrailBuilder = createGuardrailBuilder;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_bedrock_1 = require("aws-cdk-lib/aws-bedrock");
|
|
6
|
+
const core_1 = require("@composurecdk/core");
|
|
7
|
+
const cloudformation_1 = require("@composurecdk/cloudformation");
|
|
8
|
+
const cloudwatch_1 = require("@composurecdk/cloudwatch");
|
|
9
|
+
const guardrail_alarms_js_1 = require("./guardrail-alarms.js");
|
|
10
|
+
const guardrail_defaults_js_1 = require("./guardrail-defaults.js");
|
|
11
|
+
/** 32-bit FNV-1a, as 8 hex digits. */
|
|
12
|
+
function fnv1a(value) {
|
|
13
|
+
let hash = 0x811c9dc5;
|
|
14
|
+
for (let i = 0; i < value.length; i++) {
|
|
15
|
+
hash = Math.imul(hash ^ value.charCodeAt(i), 0x01000193) >>> 0;
|
|
16
|
+
}
|
|
17
|
+
return hash.toString(16).padStart(8, "0");
|
|
18
|
+
}
|
|
19
|
+
class GuardrailBuilder {
|
|
20
|
+
props = {};
|
|
21
|
+
#customAlarms = [];
|
|
22
|
+
/**
|
|
23
|
+
* Adds a custom alarm. The metric factory receives the guardrail version's
|
|
24
|
+
* {@link GuardrailMetrics}.
|
|
25
|
+
*/
|
|
26
|
+
addAlarm(key, configure) {
|
|
27
|
+
this.#customAlarms.push(configure(new cloudwatch_1.AlarmDefinitionBuilder(key)));
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
/** @internal — see ADR-0005. */
|
|
31
|
+
[core_1.COPY_STATE](target) {
|
|
32
|
+
target.#customAlarms.push(...this.#customAlarms);
|
|
33
|
+
}
|
|
34
|
+
build(scope, id, context = {}) {
|
|
35
|
+
const { kmsKeyArn, recommendedAlarms, ...rest } = this.props;
|
|
36
|
+
if (!rest.name) {
|
|
37
|
+
throw new Error(`GuardrailBuilder "${id}" requires a name. Call .name().`);
|
|
38
|
+
}
|
|
39
|
+
const props = {
|
|
40
|
+
...guardrail_defaults_js_1.GUARDRAIL_DEFAULTS,
|
|
41
|
+
...rest,
|
|
42
|
+
name: rest.name,
|
|
43
|
+
...(kmsKeyArn !== undefined && { kmsKeyArn: (0, core_1.resolve)(kmsKeyArn, context) }),
|
|
44
|
+
};
|
|
45
|
+
const guardrail = new aws_bedrock_1.CfnGuardrail(scope, id, props);
|
|
46
|
+
// A version is a snapshot, so a configuration change publishes a new one.
|
|
47
|
+
const fingerprint = fnv1a(JSON.stringify(aws_cdk_lib_1.Stack.of(scope).resolve(props)));
|
|
48
|
+
const version = new aws_bedrock_1.CfnGuardrailVersion(scope, `${id}Version${fingerprint}`, {
|
|
49
|
+
guardrailIdentifier: guardrail.attrGuardrailId,
|
|
50
|
+
});
|
|
51
|
+
const reference = { guardrailArn: guardrail.attrGuardrailArn, version: version.attrVersion };
|
|
52
|
+
const metrics = (0, guardrail_alarms_js_1.guardrailMetrics)(reference);
|
|
53
|
+
const alarms = (0, cloudwatch_1.createAlarms)(scope, id, [
|
|
54
|
+
...(0, guardrail_alarms_js_1.resolveGuardrailAlarmDefinitions)(metrics, recommendedAlarms),
|
|
55
|
+
...this.#customAlarms.map((b) => b.resolve(metrics)),
|
|
56
|
+
]);
|
|
57
|
+
return { guardrail, version, reference, alarms };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a builder for an Amazon Bedrock guardrail and a published version
|
|
62
|
+
* of it ([GENSEC02-BP01](https://docs.aws.amazon.com/wellarchitected/latest/generative-ai-lens/gensec02-bp01.html)).
|
|
63
|
+
*
|
|
64
|
+
* By default it filters every harmful-content category and prompt attacks at
|
|
65
|
+
* `HIGH` ({@link GUARDRAIL_DEFAULTS}). Pass its `reference` to
|
|
66
|
+
* `modelGrants.invoke(target, { requireGuardrail })` to make callers use it.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* createGuardrailBuilder()
|
|
71
|
+
* .name("support-assistant")
|
|
72
|
+
* .topicPolicyConfig({ topicsConfig: [{ name: "Legal", definition: "Legal advice.", type: "DENY" }] });
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
function createGuardrailBuilder() {
|
|
76
|
+
return (0, cloudformation_1.taggedBuilder)(GuardrailBuilder);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=guardrail-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrail-builder.js","sourceRoot":"","sources":["../../src/guardrail-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults for {@link createGuardrailBuilder}.
|
|
3
|
+
*
|
|
4
|
+
* @see https://docs.aws.amazon.com/wellarchitected/latest/generative-ai-lens/gensec02-bp01.html
|
|
5
|
+
*/
|
|
6
|
+
export declare const GUARDRAIL_DEFAULTS: {
|
|
7
|
+
blockedInputMessaging: string;
|
|
8
|
+
blockedOutputsMessaging: string;
|
|
9
|
+
/**
|
|
10
|
+
* Every harmful-content category and prompt attacks, at `HIGH`. AWS
|
|
11
|
+
* recommends no strengths; `HIGH` blocks the most, and a category that
|
|
12
|
+
* blocks legitimate content can be lowered. Prompt attacks only apply to
|
|
13
|
+
* input, so their output strength must be `NONE`.
|
|
14
|
+
*
|
|
15
|
+
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-content-filters.html
|
|
16
|
+
*/
|
|
17
|
+
contentPolicyConfig: {
|
|
18
|
+
filtersConfig: {
|
|
19
|
+
type: string;
|
|
20
|
+
inputStrength: string;
|
|
21
|
+
outputStrength: string;
|
|
22
|
+
}[];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=guardrail-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrail-defaults.d.ts","sourceRoot":"","sources":["../../src/guardrail-defaults.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;IAI7B;;;;;;;OAOG;;;;;;;;CAOiC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GUARDRAIL_DEFAULTS = void 0;
|
|
4
|
+
const HARMFUL_CONTENT = ["SEXUAL", "VIOLENCE", "HATE", "INSULTS", "MISCONDUCT"];
|
|
5
|
+
/** The Bedrock console's default message for a blocked prompt or response. */
|
|
6
|
+
const BLOCKED_MESSAGE = "Sorry, the model cannot answer this question.";
|
|
7
|
+
/**
|
|
8
|
+
* Defaults for {@link createGuardrailBuilder}.
|
|
9
|
+
*
|
|
10
|
+
* @see https://docs.aws.amazon.com/wellarchitected/latest/generative-ai-lens/gensec02-bp01.html
|
|
11
|
+
*/
|
|
12
|
+
exports.GUARDRAIL_DEFAULTS = {
|
|
13
|
+
blockedInputMessaging: BLOCKED_MESSAGE,
|
|
14
|
+
blockedOutputsMessaging: BLOCKED_MESSAGE,
|
|
15
|
+
/**
|
|
16
|
+
* Every harmful-content category and prompt attacks, at `HIGH`. AWS
|
|
17
|
+
* recommends no strengths; `HIGH` blocks the most, and a category that
|
|
18
|
+
* blocks legitimate content can be lowered. Prompt attacks only apply to
|
|
19
|
+
* input, so their output strength must be `NONE`.
|
|
20
|
+
*
|
|
21
|
+
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails-content-filters.html
|
|
22
|
+
*/
|
|
23
|
+
contentPolicyConfig: {
|
|
24
|
+
filtersConfig: [
|
|
25
|
+
...HARMFUL_CONTENT.map((type) => ({ type, inputStrength: "HIGH", outputStrength: "HIGH" })),
|
|
26
|
+
{ type: "PROMPT_ATTACK", inputStrength: "HIGH", outputStrength: "NONE" },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=guardrail-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrail-defaults.js","sourceRoot":"","sources":["../../src/guardrail-defaults.ts"],"names":[],"mappings":";;;AAEA,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAEhF,8EAA8E;AAC9E,MAAM,eAAe,GAAG,+CAA+C,CAAC;AAExE;;;;GAIG;AACU,QAAA,kBAAkB,GAAG;IAChC,qBAAqB,EAAE,eAAe;IACtC,uBAAuB,EAAE,eAAe;IAExC;;;;;;;OAOG;IACH,mBAAmB,EAAE;QACnB,aAAa,EAAE;YACb,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3F,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE;SACzE;KACF;CACmC,CAAC"}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { type ApplicationInferenceProfileBuilderProps, type ApplicationInferenceProfileBuilderResult, createApplicationInferenceProfileBuilder, type IApplicationInferenceProfileBuilder, } from "./application-inference-profile-builder.js";
|
|
2
|
+
export { type ApplicationInferenceProfile, foundationModelFor, type GeographicInferenceProfile, type GeographicInferenceProfileOptions, type GlobalInferenceProfile, INFERENCE_PROFILE_GEOGRAPHIES, type InferenceProfile, type InferenceProfileGeography, inferenceProfile, } from "./inference-profile.js";
|
|
2
3
|
export { type InferenceTarget, invocationArns } from "./inference-target.js";
|
|
3
|
-
export { modelGrants } from "./grants.js";
|
|
4
|
+
export { guardrailGrants, type ModelInvokeGrantOptions, modelGrants } from "./grants.js";
|
|
5
|
+
export { createGuardrailBuilder, type GuardrailBuilderProps, type GuardrailBuilderResult, type GuardrailReference, type IGuardrailBuilder, } from "./guardrail-builder.js";
|
|
6
|
+
export { GUARDRAIL_DEFAULTS } from "./guardrail-defaults.js";
|
|
7
|
+
export { type GuardrailAlarmConfig, type GuardrailMetrics, guardrailMetrics, } from "./guardrail-alarms.js";
|
|
4
8
|
export { createModelAlarmBuilder, type IModelAlarmBuilder, type ModelAlarmBuilderProps, type ModelAlarmBuilderResult, } from "./model-alarm-builder.js";
|
|
5
9
|
export { type ModelAlarmConfig, type QuotaAlarmConfig } from "./model-alarm-config.js";
|
|
6
10
|
export { MODEL_ALARM_DEFAULTS } from "./model-alarm-defaults.js";
|
|
7
11
|
export { type ModelAlarmTarget, type ModelMetrics, modelMetrics } from "./model-alarms.js";
|
|
12
|
+
export { createModelInvocationLoggingBuilder, type IModelInvocationLoggingBuilder, MODEL_INVOCATION_LOGGING_DEFAULTS, type ModelInvocationLoggingBuilderProps, type ModelInvocationLoggingBuilderResult, type ModelInvocationLoggingModalities, } from "./model-invocation-logging-builder.js";
|
|
13
|
+
export { MODEL_INVOCATION_LOGGING_ALARM_DEFAULTS, type ModelInvocationLoggingAlarmConfig, } from "./model-invocation-logging-alarms.js";
|
|
8
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,6BAA6B,EAC7B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uCAAuC,EAC5C,KAAK,wCAAwC,EAC7C,wCAAwC,EACxC,KAAK,mCAAmC,GACzC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,KAAK,2BAA2B,EAChC,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,6BAA6B,EAC7B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EACL,mCAAmC,EACnC,KAAK,8BAA8B,EACnC,iCAAiC,EACjC,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,gCAAgC,GACtC,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,uCAAuC,EACvC,KAAK,iCAAiC,GACvC,MAAM,sCAAsC,CAAC"}
|
package/dist/commonjs/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.modelMetrics = exports.MODEL_ALARM_DEFAULTS = exports.createModelAlarmBuilder = exports.modelGrants = exports.invocationArns = exports.inferenceProfile = exports.INFERENCE_PROFILE_GEOGRAPHIES = exports.foundationModelFor = void 0;
|
|
3
|
+
exports.MODEL_INVOCATION_LOGGING_ALARM_DEFAULTS = exports.MODEL_INVOCATION_LOGGING_DEFAULTS = exports.createModelInvocationLoggingBuilder = exports.modelMetrics = exports.MODEL_ALARM_DEFAULTS = exports.createModelAlarmBuilder = exports.guardrailMetrics = exports.GUARDRAIL_DEFAULTS = exports.createGuardrailBuilder = exports.modelGrants = exports.guardrailGrants = exports.invocationArns = exports.inferenceProfile = exports.INFERENCE_PROFILE_GEOGRAPHIES = exports.foundationModelFor = exports.createApplicationInferenceProfileBuilder = void 0;
|
|
4
|
+
var application_inference_profile_builder_js_1 = require("./application-inference-profile-builder.js");
|
|
5
|
+
Object.defineProperty(exports, "createApplicationInferenceProfileBuilder", { enumerable: true, get: function () { return application_inference_profile_builder_js_1.createApplicationInferenceProfileBuilder; } });
|
|
4
6
|
var inference_profile_js_1 = require("./inference-profile.js");
|
|
5
7
|
Object.defineProperty(exports, "foundationModelFor", { enumerable: true, get: function () { return inference_profile_js_1.foundationModelFor; } });
|
|
6
8
|
Object.defineProperty(exports, "INFERENCE_PROFILE_GEOGRAPHIES", { enumerable: true, get: function () { return inference_profile_js_1.INFERENCE_PROFILE_GEOGRAPHIES; } });
|
|
@@ -8,11 +10,23 @@ Object.defineProperty(exports, "inferenceProfile", { enumerable: true, get: func
|
|
|
8
10
|
var inference_target_js_1 = require("./inference-target.js");
|
|
9
11
|
Object.defineProperty(exports, "invocationArns", { enumerable: true, get: function () { return inference_target_js_1.invocationArns; } });
|
|
10
12
|
var grants_js_1 = require("./grants.js");
|
|
13
|
+
Object.defineProperty(exports, "guardrailGrants", { enumerable: true, get: function () { return grants_js_1.guardrailGrants; } });
|
|
11
14
|
Object.defineProperty(exports, "modelGrants", { enumerable: true, get: function () { return grants_js_1.modelGrants; } });
|
|
15
|
+
var guardrail_builder_js_1 = require("./guardrail-builder.js");
|
|
16
|
+
Object.defineProperty(exports, "createGuardrailBuilder", { enumerable: true, get: function () { return guardrail_builder_js_1.createGuardrailBuilder; } });
|
|
17
|
+
var guardrail_defaults_js_1 = require("./guardrail-defaults.js");
|
|
18
|
+
Object.defineProperty(exports, "GUARDRAIL_DEFAULTS", { enumerable: true, get: function () { return guardrail_defaults_js_1.GUARDRAIL_DEFAULTS; } });
|
|
19
|
+
var guardrail_alarms_js_1 = require("./guardrail-alarms.js");
|
|
20
|
+
Object.defineProperty(exports, "guardrailMetrics", { enumerable: true, get: function () { return guardrail_alarms_js_1.guardrailMetrics; } });
|
|
12
21
|
var model_alarm_builder_js_1 = require("./model-alarm-builder.js");
|
|
13
22
|
Object.defineProperty(exports, "createModelAlarmBuilder", { enumerable: true, get: function () { return model_alarm_builder_js_1.createModelAlarmBuilder; } });
|
|
14
23
|
var model_alarm_defaults_js_1 = require("./model-alarm-defaults.js");
|
|
15
24
|
Object.defineProperty(exports, "MODEL_ALARM_DEFAULTS", { enumerable: true, get: function () { return model_alarm_defaults_js_1.MODEL_ALARM_DEFAULTS; } });
|
|
16
25
|
var model_alarms_js_1 = require("./model-alarms.js");
|
|
17
26
|
Object.defineProperty(exports, "modelMetrics", { enumerable: true, get: function () { return model_alarms_js_1.modelMetrics; } });
|
|
27
|
+
var model_invocation_logging_builder_js_1 = require("./model-invocation-logging-builder.js");
|
|
28
|
+
Object.defineProperty(exports, "createModelInvocationLoggingBuilder", { enumerable: true, get: function () { return model_invocation_logging_builder_js_1.createModelInvocationLoggingBuilder; } });
|
|
29
|
+
Object.defineProperty(exports, "MODEL_INVOCATION_LOGGING_DEFAULTS", { enumerable: true, get: function () { return model_invocation_logging_builder_js_1.MODEL_INVOCATION_LOGGING_DEFAULTS; } });
|
|
30
|
+
var model_invocation_logging_alarms_js_1 = require("./model-invocation-logging-alarms.js");
|
|
31
|
+
Object.defineProperty(exports, "MODEL_INVOCATION_LOGGING_ALARM_DEFAULTS", { enumerable: true, get: function () { return model_invocation_logging_alarms_js_1.MODEL_INVOCATION_LOGGING_ALARM_DEFAULTS; } });
|
|
18
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uGAKoD;AAFlD,oKAAA,wCAAwC,OAAA;AAG1C,+DAUgC;AAR9B,0HAAA,kBAAkB,OAAA;AAIlB,qIAAA,6BAA6B,OAAA;AAG7B,wHAAA,gBAAgB,OAAA;AAElB,6DAA6E;AAA9C,qHAAA,cAAc,OAAA;AAC7C,yCAAyF;AAAhF,4GAAA,eAAe,OAAA;AAAgC,wGAAA,WAAW,OAAA;AACnE,+DAMgC;AAL9B,8HAAA,sBAAsB,OAAA;AAMxB,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAC3B,6DAI+B;AAD7B,uHAAA,gBAAgB,OAAA;AAElB,mEAKkC;AAJhC,iIAAA,uBAAuB,OAAA;AAMzB,qEAAiE;AAAxD,+HAAA,oBAAoB,OAAA;AAC7B,qDAA2F;AAAxC,+GAAA,YAAY,OAAA;AAC/D,6FAO+C;AAN7C,0JAAA,mCAAmC,OAAA;AAEnC,wJAAA,iCAAiC,OAAA;AAKnC,2FAG8C;AAF5C,6JAAA,uCAAuC,OAAA"}
|
|
@@ -47,6 +47,25 @@ export interface GlobalInferenceProfile {
|
|
|
47
47
|
}
|
|
48
48
|
/** A system-defined cross-Region inference profile. */
|
|
49
49
|
export type InferenceProfile = GeographicInferenceProfile | GlobalInferenceProfile;
|
|
50
|
+
/**
|
|
51
|
+
* An application inference profile: an account-owned profile, tagged for
|
|
52
|
+
* cost allocation, that routes to a foundation model or a system-defined
|
|
53
|
+
* profile. Build one with `createApplicationInferenceProfileBuilder()`.
|
|
54
|
+
*
|
|
55
|
+
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-create.html
|
|
56
|
+
*/
|
|
57
|
+
export interface ApplicationInferenceProfile {
|
|
58
|
+
readonly kind: "application";
|
|
59
|
+
/** The profile's ARN, which callers pass as the model id. */
|
|
60
|
+
readonly profileArn: string;
|
|
61
|
+
/**
|
|
62
|
+
* The profile's id, the last segment of {@link profileArn}: the `ModelId`
|
|
63
|
+
* its invocation metrics are reported under.
|
|
64
|
+
*/
|
|
65
|
+
readonly profileId: string;
|
|
66
|
+
/** What the profile routes to. */
|
|
67
|
+
readonly source: FoundationModelIdentifier | InferenceProfile;
|
|
68
|
+
}
|
|
50
69
|
/** Options for {@link inferenceProfile.geographic}. */
|
|
51
70
|
export type GeographicInferenceProfileOptions = Pick<GeographicInferenceProfile, "model" | "geography" | "routingRegions">;
|
|
52
71
|
declare function geographic(options: GeographicInferenceProfileOptions): GeographicInferenceProfile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-profile.d.ts","sourceRoot":"","sources":["../../src/inference-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,qDAAsD,CAAC;AAEjG,2EAA2E;AAC3E,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAIvF;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9D,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uDAAuD;AACvD,MAAM,MAAM,gBAAgB,GAAG,0BAA0B,GAAG,sBAAsB,CAAC;AAEnF,uDAAuD;AACvD,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,0BAA0B,EAC1B,OAAO,GAAG,WAAW,GAAG,gBAAgB,CACzC,CAAC;AA4CF,iBAAS,UAAU,CAAC,OAAO,EAAE,iCAAiC,GAAG,0BAA0B,CAiB1F;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,CAGxE;AAaD,iBAAS,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAAC;AAC1D,iBAAS,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAkBvF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;IAC3B,8CAA8C;;IAE9C,4DAA4D;;IAE5D;;;;OAIG;;CAEJ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAE/E"}
|
|
1
|
+
{"version":3,"file":"inference-profile.d.ts","sourceRoot":"","sources":["../../src/inference-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,qDAAsD,CAAC;AAEjG,2EAA2E;AAC3E,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAIvF;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9D,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,gFAAgF;IAChF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,uDAAuD;AACvD,MAAM,MAAM,gBAAgB,GAAG,0BAA0B,GAAG,sBAAsB,CAAC;AAEnF;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,gBAAgB,CAAC;CAC/D;AAED,uDAAuD;AACvD,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,0BAA0B,EAC1B,OAAO,GAAG,WAAW,GAAG,gBAAgB,CACzC,CAAC;AA4CF,iBAAS,UAAU,CAAC,OAAO,EAAE,iCAAiC,GAAG,0BAA0B,CAiB1F;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,CAGxE;AAaD,iBAAS,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAAC;AAC1D,iBAAS,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAkBvF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;IAC3B,8CAA8C;;IAE9C,4DAA4D;;IAE5D;;;;OAIG;;CAEJ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAE/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-profile.js","sourceRoot":"","sources":["../../src/inference-profile.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"inference-profile.js","sourceRoot":"","sources":["../../src/inference-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { FoundationModelIdentifier, IModel } from "aws-cdk-lib/aws-bedrock";
|
|
2
2
|
import { type IConstruct } from "constructs";
|
|
3
|
-
import type { InferenceProfile } from "./inference-profile.js";
|
|
3
|
+
import type { ApplicationInferenceProfile, InferenceProfile } from "./inference-profile.js";
|
|
4
4
|
/**
|
|
5
5
|
* Anything a caller can invoke: an in-Region foundation model, a
|
|
6
|
-
* system-defined inference profile, or any {@link IModel} (a
|
|
7
|
-
* model, or `{ modelArn }` for a model ARN from elsewhere).
|
|
6
|
+
* system-defined or application inference profile, or any {@link IModel} (a
|
|
7
|
+
* provisioned model, or `{ modelArn }` for a model ARN from elsewhere).
|
|
8
8
|
*/
|
|
9
|
-
export type InferenceTarget = FoundationModelIdentifier | InferenceProfile | IModel;
|
|
9
|
+
export type InferenceTarget = FoundationModelIdentifier | InferenceProfile | ApplicationInferenceProfile | IModel;
|
|
10
10
|
/** @internal */
|
|
11
11
|
export declare function isInferenceProfile(target: InferenceTarget): target is InferenceProfile;
|
|
12
12
|
/** One IAM statement's resources and conditions for invoking a target. @internal */
|
|
@@ -15,18 +15,25 @@ export interface InvocationStatement {
|
|
|
15
15
|
readonly conditions?: Record<string, Record<string, unknown>>;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* The statements
|
|
19
|
-
* the
|
|
18
|
+
* The statements for invoking `target` from the Region `scope` deploys to:
|
|
19
|
+
* those the Bedrock user guide prescribes, and for an application profile the
|
|
20
|
+
* shape verified against live IAM.
|
|
20
21
|
*
|
|
21
22
|
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/geographic-cross-region-inference.html#geographic-cris-iam-setup
|
|
22
23
|
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/global-cross-region-inference.html#global-cris-iam-setup
|
|
23
24
|
* @internal
|
|
24
25
|
*/
|
|
25
26
|
export declare function invocationStatements(target: InferenceTarget, scope?: IConstruct): InvocationStatement[];
|
|
27
|
+
/**
|
|
28
|
+
* The ARN that identifies `source` in `scope`'s Region: the foundation model
|
|
29
|
+
* or the system-defined profile. @internal
|
|
30
|
+
*/
|
|
31
|
+
export declare function sourceArn(source: FoundationModelIdentifier | InferenceProfile, scope: IConstruct | undefined): string;
|
|
26
32
|
/**
|
|
27
33
|
* Every resource ARN a caller in `scope`'s Region must be allowed to invoke to
|
|
28
34
|
* use `target`. For a cross-Region profile that is the profile plus the
|
|
29
|
-
* foundation model in the source Region and in each Region it routes to
|
|
35
|
+
* foundation model in the source Region and in each Region it routes to; for
|
|
36
|
+
* an application profile, the profile plus its source's foundation models.
|
|
30
37
|
*
|
|
31
38
|
* {@link modelGrants.invoke} applies these with the conditions the Bedrock
|
|
32
39
|
* user guide prescribes; use this list where you write a policy yourself,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-target.d.ts","sourceRoot":"","sources":["../../src/inference-target.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"inference-target.d.ts","sourceRoot":"","sources":["../../src/inference-target.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5F;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACzB,yBAAyB,GAAG,gBAAgB,GAAG,2BAA2B,GAAG,MAAM,CAAC;AAEtF,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,IAAI,gBAAgB,CAEtF;AAUD,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/D;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,UAAU,GACjB,mBAAmB,EAAE,CASvB;AA4DD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,yBAAyB,GAAG,gBAAgB,EACpD,KAAK,EAAE,UAAU,GAAG,SAAS,GAC5B,MAAM,CAKR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAEpF;AAED,gBAAgB;AAChB,wBAAgB,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAElE"}
|
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isInferenceProfile = isInferenceProfile;
|
|
4
4
|
exports.invocationStatements = invocationStatements;
|
|
5
|
+
exports.sourceArn = sourceArn;
|
|
5
6
|
exports.invocationArns = invocationArns;
|
|
6
7
|
exports.scopeOf = scopeOf;
|
|
7
8
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
9
|
const constructs_1 = require("constructs");
|
|
9
10
|
/** @internal */
|
|
10
11
|
function isInferenceProfile(target) {
|
|
11
|
-
return "kind" in target;
|
|
12
|
+
return "kind" in target && (target.kind === "geographic" || target.kind === "global");
|
|
13
|
+
}
|
|
14
|
+
function isApplicationProfile(target) {
|
|
15
|
+
return "kind" in target && target.kind === "application";
|
|
12
16
|
}
|
|
13
17
|
function isModel(target) {
|
|
14
18
|
return "modelArn" in target;
|
|
@@ -30,8 +34,9 @@ function bedrockArn(partition, resource, resourceName, region, account = "") {
|
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
/**
|
|
33
|
-
* The statements
|
|
34
|
-
* the
|
|
37
|
+
* The statements for invoking `target` from the Region `scope` deploys to:
|
|
38
|
+
* those the Bedrock user guide prescribes, and for an application profile the
|
|
39
|
+
* shape verified against live IAM.
|
|
35
40
|
*
|
|
36
41
|
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/geographic-cross-region-inference.html#geographic-cris-iam-setup
|
|
37
42
|
* @see https://docs.aws.amazon.com/bedrock/latest/userguide/global-cross-region-inference.html#global-cris-iam-setup
|
|
@@ -40,52 +45,75 @@ function bedrockArn(partition, resource, resourceName, region, account = "") {
|
|
|
40
45
|
function invocationStatements(target, scope) {
|
|
41
46
|
if (isModel(target))
|
|
42
47
|
return [{ resourceArns: [target.modelArn] }];
|
|
43
|
-
|
|
48
|
+
if (isApplicationProfile(target)) {
|
|
49
|
+
return [
|
|
50
|
+
{ resourceArns: [target.profileArn] },
|
|
51
|
+
...sourceStatements(target.source, scope, target.profileArn),
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
return sourceStatements(target, scope);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Statements for a foundation model or system-defined profile. Through an
|
|
58
|
+
* application profile (`viaProfile`), Bedrock checks only that profile's ARN
|
|
59
|
+
* in `bedrock:InferenceProfileArn` and needs no access to the source profile
|
|
60
|
+
* itself (verified live for a global source), so none is granted.
|
|
61
|
+
*/
|
|
62
|
+
function sourceStatements(target, scope, viaProfile) {
|
|
63
|
+
const { partition, region: sourceRegion } = environmentOf(scope);
|
|
44
64
|
const modelArn = (modelId, region) => bedrockArn(partition, "foundation-model", modelId, region);
|
|
65
|
+
const through = (arn) => ({ "bedrock:InferenceProfileArn": arn });
|
|
45
66
|
if (!isInferenceProfile(target)) {
|
|
46
|
-
return [{ resourceArns: [modelArn(target.modelId, sourceRegion)] }];
|
|
47
|
-
}
|
|
48
|
-
const profileArn = bedrockArn(partition, "inference-profile", target.profileId, sourceRegion, account);
|
|
49
|
-
const { modelId } = target.model;
|
|
50
|
-
if (target.kind === "geographic") {
|
|
51
|
-
const regions = [...new Set([sourceRegion, ...target.routingRegions])];
|
|
52
67
|
return [
|
|
53
|
-
{ resourceArns: [profileArn] },
|
|
54
68
|
{
|
|
55
|
-
resourceArns:
|
|
56
|
-
|
|
69
|
+
resourceArns: [modelArn(target.modelId, sourceRegion)],
|
|
70
|
+
...(viaProfile && { conditions: { StringEquals: through(viaProfile) } }),
|
|
57
71
|
},
|
|
58
72
|
];
|
|
59
73
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
const profileArn = sourceArn(target, scope);
|
|
75
|
+
const via = through(viaProfile ?? profileArn);
|
|
76
|
+
const { modelId } = target.model;
|
|
77
|
+
const ownProfile = {
|
|
78
|
+
resourceArns: [profileArn],
|
|
79
|
+
...(target.kind === "global" && {
|
|
63
80
|
conditions: { StringEquals: { "aws:RequestedRegion": sourceRegion } },
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
83
|
+
const models = target.kind === "geographic"
|
|
84
|
+
? [
|
|
85
|
+
{
|
|
86
|
+
resourceArns: [...new Set([sourceRegion, ...target.routingRegions])].map((region) => modelArn(modelId, region)),
|
|
87
|
+
conditions: { StringEquals: via },
|
|
72
88
|
},
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
StringEquals: {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
89
|
+
]
|
|
90
|
+
: [
|
|
91
|
+
{
|
|
92
|
+
resourceArns: [modelArn(modelId, sourceRegion)],
|
|
93
|
+
conditions: { StringEquals: { "aws:RequestedRegion": sourceRegion, ...via } },
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
resourceArns: [modelArn(modelId, "")],
|
|
97
|
+
conditions: { StringEquals: { "aws:RequestedRegion": "unspecified", ...via } },
|
|
81
98
|
},
|
|
82
|
-
|
|
83
|
-
];
|
|
99
|
+
];
|
|
100
|
+
return viaProfile ? models : [ownProfile, ...models];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The ARN that identifies `source` in `scope`'s Region: the foundation model
|
|
104
|
+
* or the system-defined profile. @internal
|
|
105
|
+
*/
|
|
106
|
+
function sourceArn(source, scope) {
|
|
107
|
+
const { partition, region, account } = environmentOf(scope);
|
|
108
|
+
return isInferenceProfile(source)
|
|
109
|
+
? bedrockArn(partition, "inference-profile", source.profileId, region, account)
|
|
110
|
+
: bedrockArn(partition, "foundation-model", source.modelId, region);
|
|
84
111
|
}
|
|
85
112
|
/**
|
|
86
113
|
* Every resource ARN a caller in `scope`'s Region must be allowed to invoke to
|
|
87
114
|
* use `target`. For a cross-Region profile that is the profile plus the
|
|
88
|
-
* foundation model in the source Region and in each Region it routes to
|
|
115
|
+
* foundation model in the source Region and in each Region it routes to; for
|
|
116
|
+
* an application profile, the profile plus its source's foundation models.
|
|
89
117
|
*
|
|
90
118
|
* {@link modelGrants.invoke} applies these with the conditions the Bedrock
|
|
91
119
|
* user guide prescribes; use this list where you write a policy yourself,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference-target.js","sourceRoot":"","sources":["../../src/inference-target.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"inference-target.js","sourceRoot":"","sources":["../../src/inference-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/model-alarm-defaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/model-alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,sBAAsB,EAAE,mBAAmB,CAAC;IAC5C,sBAAsB,EAAE,mBAAmB,CAAC;IAC5C,2EAA2E;IAC3E,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAC9C,sBAAsB,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAQlC,CAAC"}
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MODEL_ALARM_DEFAULTS = void 0;
|
|
4
|
-
const
|
|
5
|
-
/**
|
|
6
|
-
* 3 breaching minutes out of 5: SDK retries absorb isolated throttles and
|
|
7
|
-
* transient errors, so a single datapoint is noise. No traffic emits no data.
|
|
8
|
-
*/
|
|
9
|
-
const SUSTAINED = {
|
|
10
|
-
evaluationPeriods: 5,
|
|
11
|
-
datapointsToAlarm: 3,
|
|
12
|
-
treatMissingData: aws_cloudwatch_1.TreatMissingData.NOT_BREACHING,
|
|
13
|
-
};
|
|
4
|
+
const alarm_definition_js_1 = require("./alarm-definition.js");
|
|
14
5
|
/**
|
|
15
6
|
* Default alarm configuration for a Bedrock model. AWS publishes no Bedrock
|
|
16
7
|
* thresholds; these follow the shape of AWS's recommended Lambda `Errors` and
|
|
@@ -20,10 +11,10 @@ const SUSTAINED = {
|
|
|
20
11
|
*/
|
|
21
12
|
exports.MODEL_ALARM_DEFAULTS = {
|
|
22
13
|
enabled: true,
|
|
23
|
-
invocationThrottles: { threshold: 0, ...SUSTAINED },
|
|
24
|
-
invocationServerErrors: { threshold: 0, ...SUSTAINED },
|
|
25
|
-
invocationClientErrors: { threshold: 0, ...SUSTAINED },
|
|
26
|
-
optIn: SUSTAINED,
|
|
14
|
+
invocationThrottles: { threshold: 0, ...alarm_definition_js_1.SUSTAINED },
|
|
15
|
+
invocationServerErrors: { threshold: 0, ...alarm_definition_js_1.SUSTAINED },
|
|
16
|
+
invocationClientErrors: { threshold: 0, ...alarm_definition_js_1.SUSTAINED },
|
|
17
|
+
optIn: alarm_definition_js_1.SUSTAINED,
|
|
27
18
|
/** Leaves 20% headroom to act before requests are throttled. */
|
|
28
19
|
estimatedTpmQuotaUsage: { thresholdPercent: 0.8 },
|
|
29
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-alarm-defaults.js","sourceRoot":"","sources":["../../src/model-alarm-defaults.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"model-alarm-defaults.js","sourceRoot":"","sources":["../../src/model-alarm-defaults.ts"],"names":[],"mappings":";;;AACA,+DAAkD;AAYlD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAuB;IACtD,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,+BAAS,EAAE;IACnD,sBAAsB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,+BAAS,EAAE;IACtD,sBAAsB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,+BAAS,EAAE;IACtD,KAAK,EAAE,+BAAS;IAChB,gEAAgE;IAChE,sBAAsB,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE;CAClD,CAAC"}
|