promptfoo 0.119.13 → 0.119.14
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/dist/package.json +28 -26
- package/dist/src/app/assets/index-eJ2lMe94.js +51 -0
- package/dist/src/app/assets/{source-map-support-Bnh0UQ2S.js → source-map-support-1v4oeb7P.js} +1 -1
- package/dist/src/app/assets/sync-CtLQRuC1.js +1 -0
- package/dist/src/app/assets/{vendor-charts-T60Uk0Z3.js → vendor-charts-DnVv66VV.js} +1 -1
- package/dist/src/app/assets/{vendor-markdown-DLig-KJh.js → vendor-markdown-DCpQIyMA.js} +1 -1
- package/dist/src/app/assets/{vendor-mui-core-5BLaiG3c.js → vendor-mui-core-Boqnpf9f.js} +1 -1
- package/dist/src/app/assets/{vendor-mui-icons-fn39Fu2e.js → vendor-mui-icons-B8MqoVbj.js} +1 -1
- package/dist/src/app/assets/vendor-mui-x-CGSS6QHF.js +45 -0
- package/dist/src/app/assets/{vendor-utils-DYBMEuwX.js → vendor-utils-DdfHIEy8.js} +1 -1
- package/dist/src/app/index.html +7 -7
- package/dist/src/assertions/guardrails.d.ts +1 -1
- package/dist/src/assertions/guardrails.js +18 -9
- package/dist/src/assertions/index.d.ts +1 -1
- package/dist/src/assertions/index.js +9 -3
- package/dist/src/assertions/searchRubric.d.ts +3 -0
- package/dist/src/assertions/searchRubric.js +18 -0
- package/dist/src/commands/eval.js +1 -1
- package/dist/src/commands/modelScan.d.ts +7 -1
- package/dist/src/commands/modelScan.js +121 -59
- package/dist/src/database/index.d.ts +6 -0
- package/dist/src/database/index.js +11 -0
- package/dist/src/database/tables.d.ts +46 -24
- package/dist/src/envars.d.ts +17 -0
- package/dist/src/generated/constants.js +1 -1
- package/dist/src/logger.d.ts +5 -0
- package/dist/src/logger.js +28 -0
- package/dist/src/main.js +17 -6
- package/dist/src/matchers.d.ts +1 -0
- package/dist/src/matchers.js +80 -0
- package/dist/src/models/eval.d.ts +2 -1
- package/dist/src/models/eval.js +44 -2
- package/dist/src/prompts/grading.d.ts +1 -0
- package/dist/src/prompts/grading.js +26 -1
- package/dist/src/prompts/index.d.ts +1 -0
- package/dist/src/prompts/index.js +4 -1
- package/dist/src/providers/adaline.gateway.js +2 -2
- package/dist/src/providers/anthropic/defaults.d.ts +1 -1
- package/dist/src/providers/anthropic/defaults.js +15 -0
- package/dist/src/providers/azure/chat.d.ts +3 -1
- package/dist/src/providers/azure/chat.js +16 -3
- package/dist/src/providers/azure/defaults.js +660 -141
- package/dist/src/providers/azure/responses.d.ts +5 -0
- package/dist/src/providers/azure/responses.js +33 -4
- package/dist/src/providers/azure/types.d.ts +4 -0
- package/dist/src/providers/bedrock/agents.d.ts +1 -1
- package/dist/src/providers/bedrock/agents.js +2 -2
- package/dist/src/providers/bedrock/base.d.ts +40 -0
- package/dist/src/providers/bedrock/base.js +171 -0
- package/dist/src/providers/bedrock/converse.d.ts +146 -0
- package/dist/src/providers/bedrock/converse.js +1044 -0
- package/dist/src/providers/bedrock/index.d.ts +1 -34
- package/dist/src/providers/bedrock/index.js +4 -159
- package/dist/src/providers/bedrock/knowledgeBase.d.ts +1 -1
- package/dist/src/providers/bedrock/knowledgeBase.js +2 -2
- package/dist/src/providers/bedrock/nova-sonic.d.ts +2 -1
- package/dist/src/providers/bedrock/nova-sonic.js +2 -2
- package/dist/src/providers/claude-agent-sdk.d.ts +58 -1
- package/dist/src/providers/claude-agent-sdk.js +22 -1
- package/dist/src/providers/defaults.js +4 -0
- package/dist/src/providers/github/defaults.js +6 -6
- package/dist/src/providers/google/types.d.ts +25 -0
- package/dist/src/providers/google/util.d.ts +2 -0
- package/dist/src/providers/google/vertex.js +78 -22
- package/dist/src/providers/{groq.d.ts → groq/chat.d.ts} +26 -20
- package/dist/src/providers/groq/chat.js +79 -0
- package/dist/src/providers/groq/index.d.ts +5 -0
- package/dist/src/providers/groq/index.js +24 -0
- package/dist/src/providers/groq/responses.d.ts +106 -0
- package/dist/src/providers/groq/responses.js +64 -0
- package/dist/src/providers/groq/types.d.ts +44 -0
- package/dist/src/providers/groq/types.js +3 -0
- package/dist/src/providers/groq/util.d.ts +15 -0
- package/dist/src/providers/groq/util.js +28 -0
- package/dist/src/providers/mcp/client.d.ts +8 -0
- package/dist/src/providers/mcp/client.js +60 -10
- package/dist/src/providers/mcp/types.d.ts +21 -0
- package/dist/src/providers/openai/chatkit-pool.d.ts +114 -0
- package/dist/src/providers/openai/chatkit-pool.js +548 -0
- package/dist/src/providers/openai/chatkit-types.d.ts +73 -0
- package/dist/src/providers/openai/chatkit-types.js +3 -0
- package/dist/src/providers/openai/chatkit.d.ts +76 -0
- package/dist/src/providers/openai/chatkit.js +879 -0
- package/dist/src/providers/openai/codex-sdk.d.ts +109 -0
- package/dist/src/providers/openai/codex-sdk.js +346 -0
- package/dist/src/providers/openai/defaults.d.ts +2 -0
- package/dist/src/providers/openai/defaults.js +10 -4
- package/dist/src/providers/registry.js +48 -9
- package/dist/src/providers/responses/types.d.ts +1 -1
- package/dist/src/providers/sagemaker.d.ts +2 -2
- package/dist/src/providers/webSearchUtils.d.ts +17 -0
- package/dist/src/providers/webSearchUtils.js +169 -0
- package/dist/src/providers/xai/chat.d.ts +61 -0
- package/dist/src/providers/xai/chat.js +68 -3
- package/dist/src/providers/xai/responses.d.ts +189 -0
- package/dist/src/providers/xai/responses.js +268 -0
- package/dist/src/redteam/constants/plugins.d.ts +1 -1
- package/dist/src/redteam/constants/plugins.js +1 -1
- package/dist/src/redteam/constants/strategies.d.ts +1 -1
- package/dist/src/redteam/constants/strategies.js +1 -0
- package/dist/src/redteam/plugins/vlguard.d.ts +53 -4
- package/dist/src/redteam/plugins/vlguard.js +362 -46
- package/dist/src/redteam/providers/constants.d.ts +2 -2
- package/dist/src/redteam/providers/constants.js +2 -2
- package/dist/src/redteam/providers/crescendo/index.d.ts +1 -1
- package/dist/src/redteam/providers/crescendo/index.js +5 -3
- package/dist/src/redteam/providers/hydra/index.js +1 -1
- package/dist/src/server/routes/modelAudit.js +4 -4
- package/dist/src/share.js +4 -2
- package/dist/src/telemetry.js +44 -8
- package/dist/src/types/env.d.ts +3 -0
- package/dist/src/types/env.js +1 -0
- package/dist/src/types/index.d.ts +896 -615
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/providers.d.ts +1 -0
- package/dist/src/types/tracing.d.ts +3 -0
- package/dist/src/util/database.d.ts +6 -4
- package/dist/src/util/file.js +6 -4
- package/dist/src/util/modelAuditCliParser.d.ts +4 -4
- package/dist/src/util/xlsx.js +52 -26
- package/dist/src/validators/providers.d.ts +142 -122
- package/dist/src/validators/providers.js +4 -6
- package/dist/src/validators/redteam.d.ts +36 -28
- package/dist/src/validators/redteam.js +9 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -26
- package/dist/drizzle/CLAUDE.md +0 -65
- package/dist/src/app/assets/index-DifT6VGT.js +0 -51
- package/dist/src/app/assets/sync-Oo-W_Rbj.js +0 -1
- package/dist/src/app/assets/vendor-mui-x-C2xF-yiO.js +0 -45
- package/dist/src/providers/groq.js +0 -48
|
@@ -5,6 +5,11 @@ export declare class AzureResponsesProvider extends AzureGenericProvider {
|
|
|
5
5
|
private processor;
|
|
6
6
|
constructor(...args: ConstructorParameters<typeof AzureGenericProvider>);
|
|
7
7
|
private initializeMCP;
|
|
8
|
+
/**
|
|
9
|
+
* Check if the current deployment is a reasoning model.
|
|
10
|
+
* Reasoning models use max_completion_tokens instead of max_tokens,
|
|
11
|
+
* don't support temperature, and accept reasoning_effort parameter.
|
|
12
|
+
*/
|
|
8
13
|
isReasoningModel(): boolean;
|
|
9
14
|
supportsTemperature(): boolean;
|
|
10
15
|
getAzureResponsesBody(prompt: string, context?: CallApiContextParams, _callApiOptions?: CallApiOptionsParams): Promise<Record<string, any>>;
|
|
@@ -35,11 +35,36 @@ class AzureResponsesProvider extends generic_1.AzureGenericProvider {
|
|
|
35
35
|
async initializeMCP() {
|
|
36
36
|
// TODO: Initialize MCP if needed
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if the current deployment is a reasoning model.
|
|
40
|
+
* Reasoning models use max_completion_tokens instead of max_tokens,
|
|
41
|
+
* don't support temperature, and accept reasoning_effort parameter.
|
|
42
|
+
*/
|
|
38
43
|
isReasoningModel() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
// Check explicit config flags first (match chat.ts behavior)
|
|
45
|
+
if (this.config.isReasoningModel || this.config.o1) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
const lowerName = this.deploymentName.toLowerCase();
|
|
49
|
+
return (
|
|
50
|
+
// OpenAI reasoning models
|
|
51
|
+
lowerName.startsWith('o1') ||
|
|
52
|
+
lowerName.includes('-o1') ||
|
|
53
|
+
lowerName.startsWith('o3') ||
|
|
54
|
+
lowerName.includes('-o3') ||
|
|
55
|
+
lowerName.startsWith('o4') ||
|
|
56
|
+
lowerName.includes('-o4') ||
|
|
57
|
+
// GPT-5 series (reasoning by default)
|
|
58
|
+
lowerName.startsWith('gpt-5') ||
|
|
59
|
+
lowerName.includes('-gpt-5') ||
|
|
60
|
+
// DeepSeek reasoning models
|
|
61
|
+
lowerName.includes('deepseek-r1') ||
|
|
62
|
+
lowerName.includes('deepseek_r1') ||
|
|
63
|
+
// Microsoft Phi reasoning models
|
|
64
|
+
lowerName.includes('phi-4-reasoning') ||
|
|
65
|
+
lowerName.includes('phi-4-mini-reasoning') ||
|
|
66
|
+
// xAI Grok reasoning models
|
|
67
|
+
(lowerName.includes('grok') && lowerName.includes('reasoning')));
|
|
43
68
|
}
|
|
44
69
|
supportsTemperature() {
|
|
45
70
|
return !this.isReasoningModel();
|
|
@@ -107,6 +132,10 @@ class AzureResponsesProvider extends generic_1.AzureGenericProvider {
|
|
|
107
132
|
else {
|
|
108
133
|
textFormat = { format: { type: 'text' } };
|
|
109
134
|
}
|
|
135
|
+
// Add verbosity for reasoning models if configured
|
|
136
|
+
if (isReasoningModel && config.verbosity) {
|
|
137
|
+
textFormat = { ...textFormat, verbosity: config.verbosity };
|
|
138
|
+
}
|
|
110
139
|
// Azure Responses API uses 'model' field for deployment name
|
|
111
140
|
const body = {
|
|
112
141
|
model: this.deploymentName,
|
|
@@ -85,6 +85,10 @@ export interface AzureCompletionOptions {
|
|
|
85
85
|
stop?: string[];
|
|
86
86
|
seed?: number;
|
|
87
87
|
reasoning_effort?: 'low' | 'medium' | 'high';
|
|
88
|
+
/**
|
|
89
|
+
* Controls the verbosity of the model's responses. Only used for reasoning models (GPT-5, o1, o3, etc.).
|
|
90
|
+
*/
|
|
91
|
+
verbosity?: 'low' | 'medium' | 'high';
|
|
88
92
|
/**
|
|
89
93
|
* If set, automatically call these functions when the model calls them.
|
|
90
94
|
* Keys are function names, values are either functions or strings (JavaScript code).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AwsBedrockGenericProvider } from './
|
|
1
|
+
import { AwsBedrockGenericProvider } from './base';
|
|
2
2
|
import type { BedrockAgentRuntimeClient } from '@aws-sdk/client-bedrock-agent-runtime';
|
|
3
3
|
import type { EnvOverrides } from '../../types/env';
|
|
4
4
|
import type { ApiProvider, ProviderResponse } from '../../types/providers';
|
|
@@ -41,7 +41,7 @@ const cache_1 = require("../../cache");
|
|
|
41
41
|
const envars_1 = require("../../envars");
|
|
42
42
|
const logger_1 = __importDefault(require("../../logger"));
|
|
43
43
|
const telemetry_1 = __importDefault(require("../../telemetry"));
|
|
44
|
-
const
|
|
44
|
+
const base_1 = require("./base");
|
|
45
45
|
/**
|
|
46
46
|
* AWS Bedrock Agents provider for invoking deployed AI agents.
|
|
47
47
|
* Supports all Bedrock Agents features including memory, knowledge bases, action groups,
|
|
@@ -81,7 +81,7 @@ const index_1 = require("./index");
|
|
|
81
81
|
* maximumLength: 2048
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
|
-
class AwsBedrockAgentsProvider extends
|
|
84
|
+
class AwsBedrockAgentsProvider extends base_1.AwsBedrockGenericProvider {
|
|
85
85
|
constructor(agentId, options = {}) {
|
|
86
86
|
super(agentId, options);
|
|
87
87
|
// Validate required fields
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Bedrock Base Provider
|
|
3
|
+
*
|
|
4
|
+
* Contains the abstract base class for all Bedrock providers.
|
|
5
|
+
* This is extracted to avoid circular dependency issues.
|
|
6
|
+
*/
|
|
7
|
+
import type { BedrockRuntime, Trace } from '@aws-sdk/client-bedrock-runtime';
|
|
8
|
+
import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@aws-sdk/types';
|
|
9
|
+
import type { EnvOverrides } from '../../types/env';
|
|
10
|
+
export interface BedrockOptions {
|
|
11
|
+
accessKeyId?: string;
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
profile?: string;
|
|
14
|
+
region?: string;
|
|
15
|
+
secretAccessKey?: string;
|
|
16
|
+
sessionToken?: string;
|
|
17
|
+
guardrailIdentifier?: string;
|
|
18
|
+
guardrailVersion?: string;
|
|
19
|
+
trace?: Trace;
|
|
20
|
+
showThinking?: boolean;
|
|
21
|
+
endpoint?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class AwsBedrockGenericProvider {
|
|
24
|
+
modelName: string;
|
|
25
|
+
env?: EnvOverrides;
|
|
26
|
+
bedrock?: BedrockRuntime;
|
|
27
|
+
config: BedrockOptions;
|
|
28
|
+
constructor(modelName: string, options?: {
|
|
29
|
+
config?: BedrockOptions;
|
|
30
|
+
id?: string;
|
|
31
|
+
env?: EnvOverrides;
|
|
32
|
+
});
|
|
33
|
+
id(): string;
|
|
34
|
+
toString(): string;
|
|
35
|
+
protected getApiKey(): string | undefined;
|
|
36
|
+
getCredentials(): Promise<AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined>;
|
|
37
|
+
getBedrockInstance(): Promise<BedrockRuntime>;
|
|
38
|
+
getRegion(): string;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AWS Bedrock Base Provider
|
|
4
|
+
*
|
|
5
|
+
* Contains the abstract base class for all Bedrock providers.
|
|
6
|
+
* This is extracted to avoid circular dependency issues.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.AwsBedrockGenericProvider = void 0;
|
|
46
|
+
const envars_1 = require("../../envars");
|
|
47
|
+
const logger_1 = __importDefault(require("../../logger"));
|
|
48
|
+
const telemetry_1 = __importDefault(require("../../telemetry"));
|
|
49
|
+
class AwsBedrockGenericProvider {
|
|
50
|
+
constructor(modelName, options = {}) {
|
|
51
|
+
const { config, id, env } = options;
|
|
52
|
+
this.env = env;
|
|
53
|
+
this.modelName = modelName;
|
|
54
|
+
this.config = config || {};
|
|
55
|
+
this.id = id ? () => id : this.id;
|
|
56
|
+
if (this.config.guardrailIdentifier) {
|
|
57
|
+
telemetry_1.default.record('feature_used', {
|
|
58
|
+
feature: 'guardrail',
|
|
59
|
+
provider: 'bedrock',
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
id() {
|
|
64
|
+
return `bedrock:${this.modelName}`;
|
|
65
|
+
}
|
|
66
|
+
toString() {
|
|
67
|
+
return `[Amazon Bedrock Provider ${this.modelName}]`;
|
|
68
|
+
}
|
|
69
|
+
getApiKey() {
|
|
70
|
+
return this.config.apiKey || (0, envars_1.getEnvString)('AWS_BEARER_TOKEN_BEDROCK');
|
|
71
|
+
}
|
|
72
|
+
async getCredentials() {
|
|
73
|
+
// 1. Explicit credentials have ABSOLUTE highest priority (as documented)
|
|
74
|
+
if (this.config.accessKeyId && this.config.secretAccessKey) {
|
|
75
|
+
logger_1.default.debug(`Using credentials from config file`);
|
|
76
|
+
return {
|
|
77
|
+
accessKeyId: this.config.accessKeyId,
|
|
78
|
+
secretAccessKey: this.config.secretAccessKey,
|
|
79
|
+
sessionToken: this.config.sessionToken,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// 2. API key authentication as second priority
|
|
83
|
+
const apiKey = this.getApiKey();
|
|
84
|
+
if (apiKey) {
|
|
85
|
+
logger_1.default.debug(`Using Bedrock API key authentication`);
|
|
86
|
+
// For Bedrock API keys, we don't need traditional AWS credentials
|
|
87
|
+
// The API key will be handled in the request headers
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
// 3. SSO profile as third priority
|
|
91
|
+
if (this.config.profile) {
|
|
92
|
+
logger_1.default.debug(`Using SSO profile: ${this.config.profile}`);
|
|
93
|
+
try {
|
|
94
|
+
const { fromSSO } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/credential-provider-sso')));
|
|
95
|
+
return fromSSO({ profile: this.config.profile });
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
logger_1.default.error(`Error loading @aws-sdk/credential-provider-sso: ${err}`);
|
|
99
|
+
throw new Error('The @aws-sdk/credential-provider-sso package is required for SSO profiles. Please install it: npm install @aws-sdk/credential-provider-sso');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// 4. AWS default credential chain (lowest priority)
|
|
103
|
+
logger_1.default.debug(`No explicit credentials in config, falling back to AWS default chain`);
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
async getBedrockInstance() {
|
|
107
|
+
if (!this.bedrock) {
|
|
108
|
+
let handler;
|
|
109
|
+
const apiKey = this.getApiKey();
|
|
110
|
+
// Create request handler for proxy or API key scenarios
|
|
111
|
+
if ((0, envars_1.getEnvString)('HTTP_PROXY') || (0, envars_1.getEnvString)('HTTPS_PROXY') || apiKey) {
|
|
112
|
+
try {
|
|
113
|
+
const { NodeHttpHandler } = await Promise.resolve().then(() => __importStar(require('@smithy/node-http-handler')));
|
|
114
|
+
const { ProxyAgent } = await Promise.resolve().then(() => __importStar(require('proxy-agent')));
|
|
115
|
+
// Create handler with proxy support if needed
|
|
116
|
+
const proxyAgent = (0, envars_1.getEnvString)('HTTP_PROXY') || (0, envars_1.getEnvString)('HTTPS_PROXY')
|
|
117
|
+
? new ProxyAgent()
|
|
118
|
+
: undefined;
|
|
119
|
+
handler = new NodeHttpHandler({
|
|
120
|
+
...(proxyAgent ? { httpsAgent: proxyAgent } : {}),
|
|
121
|
+
requestTimeout: 300000, // 5 minutes
|
|
122
|
+
});
|
|
123
|
+
// Add Bearer token middleware for API key authentication
|
|
124
|
+
if (apiKey) {
|
|
125
|
+
const originalHandle = handler.handle.bind(handler);
|
|
126
|
+
handler.handle = async (request, options) => {
|
|
127
|
+
// Add Authorization header with Bearer token
|
|
128
|
+
request.headers = {
|
|
129
|
+
...request.headers,
|
|
130
|
+
Authorization: `Bearer ${apiKey}`,
|
|
131
|
+
};
|
|
132
|
+
return originalHandle(request, options);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
const reason = apiKey
|
|
138
|
+
? 'API key authentication requires the @smithy/node-http-handler package'
|
|
139
|
+
: 'Proxy configuration requires the @smithy/node-http-handler package';
|
|
140
|
+
throw new Error(`${reason}. Please install it in your project or globally.`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
const { BedrockRuntime } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-bedrock-runtime')));
|
|
145
|
+
const credentials = await this.getCredentials();
|
|
146
|
+
const bedrock = new BedrockRuntime({
|
|
147
|
+
region: this.getRegion(),
|
|
148
|
+
maxAttempts: (0, envars_1.getEnvInt)('AWS_BEDROCK_MAX_RETRIES', 10),
|
|
149
|
+
retryMode: 'adaptive',
|
|
150
|
+
...(credentials ? { credentials } : {}),
|
|
151
|
+
...(handler ? { requestHandler: handler } : {}),
|
|
152
|
+
...(this.config.endpoint ? { endpoint: this.config.endpoint } : {}),
|
|
153
|
+
});
|
|
154
|
+
this.bedrock = bedrock;
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
logger_1.default.error(`Error creating BedrockRuntime: ${err}`);
|
|
158
|
+
throw new Error('The @aws-sdk/client-bedrock-runtime package is required as a peer dependency. Please install it in your project or globally.');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return this.bedrock;
|
|
162
|
+
}
|
|
163
|
+
getRegion() {
|
|
164
|
+
return (this.config?.region ||
|
|
165
|
+
this.env?.AWS_BEDROCK_REGION ||
|
|
166
|
+
(0, envars_1.getEnvString)('AWS_BEDROCK_REGION') ||
|
|
167
|
+
'us-east-1');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.AwsBedrockGenericProvider = AwsBedrockGenericProvider;
|
|
171
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Bedrock Converse API Provider
|
|
3
|
+
*
|
|
4
|
+
* This provider implements the AWS Bedrock Converse API, which provides a unified
|
|
5
|
+
* interface for all Bedrock models. It supports:
|
|
6
|
+
* - Extended thinking (reasoning/ultrathink) for Claude models
|
|
7
|
+
* - Tool calling with standardized format
|
|
8
|
+
* - Streaming responses via ConverseStream
|
|
9
|
+
* - Performance configuration (latency optimization, service tiers)
|
|
10
|
+
* - Guardrails integration
|
|
11
|
+
* - Cache token tracking
|
|
12
|
+
*/
|
|
13
|
+
import { AwsBedrockGenericProvider, type BedrockOptions } from './base';
|
|
14
|
+
import type { Message, SystemContentBlock } from '@aws-sdk/client-bedrock-runtime';
|
|
15
|
+
import type { DocumentType } from '@smithy/types';
|
|
16
|
+
import type { EnvOverrides } from '../../types/env';
|
|
17
|
+
import type { ApiProvider, CallApiContextParams, ProviderResponse } from '../../types/providers';
|
|
18
|
+
/**
|
|
19
|
+
* Configuration options for the Bedrock Converse API provider
|
|
20
|
+
* Extends base BedrockOptions with Converse-specific parameters
|
|
21
|
+
*/
|
|
22
|
+
export interface BedrockConverseOptions extends BedrockOptions {
|
|
23
|
+
maxTokens?: number;
|
|
24
|
+
max_tokens?: number;
|
|
25
|
+
temperature?: number;
|
|
26
|
+
topP?: number;
|
|
27
|
+
top_p?: number;
|
|
28
|
+
stopSequences?: string[];
|
|
29
|
+
stop?: string[];
|
|
30
|
+
thinking?: {
|
|
31
|
+
type: 'enabled';
|
|
32
|
+
budget_tokens: number;
|
|
33
|
+
};
|
|
34
|
+
performanceConfig?: {
|
|
35
|
+
latency: 'standard' | 'optimized';
|
|
36
|
+
};
|
|
37
|
+
serviceTier?: {
|
|
38
|
+
type: 'priority' | 'default' | 'flex';
|
|
39
|
+
};
|
|
40
|
+
tools?: BedrockConverseToolConfig[];
|
|
41
|
+
toolChoice?: 'auto' | 'any' | {
|
|
42
|
+
tool: {
|
|
43
|
+
name: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
functionToolCallbacks?: Record<string, string | Function>;
|
|
47
|
+
additionalModelRequestFields?: Record<string, unknown>;
|
|
48
|
+
additionalModelResponseFieldPaths?: string[];
|
|
49
|
+
streaming?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Tool configuration for Converse API
|
|
53
|
+
*/
|
|
54
|
+
export interface BedrockConverseToolConfig {
|
|
55
|
+
toolSpec?: {
|
|
56
|
+
name: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
inputSchema?: {
|
|
59
|
+
json: DocumentType;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
type?: 'function';
|
|
63
|
+
function?: {
|
|
64
|
+
name: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
parameters?: Record<string, unknown>;
|
|
67
|
+
};
|
|
68
|
+
name?: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
input_schema?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Parse prompt into Converse API message format
|
|
74
|
+
*/
|
|
75
|
+
export declare function parseConverseMessages(prompt: string): {
|
|
76
|
+
messages: Message[];
|
|
77
|
+
system?: SystemContentBlock[];
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* AWS Bedrock Converse API Provider
|
|
81
|
+
*/
|
|
82
|
+
export declare class AwsBedrockConverseProvider extends AwsBedrockGenericProvider implements ApiProvider {
|
|
83
|
+
config: BedrockConverseOptions;
|
|
84
|
+
private loadedFunctionCallbacks;
|
|
85
|
+
constructor(modelName: string, options?: {
|
|
86
|
+
config?: BedrockConverseOptions;
|
|
87
|
+
id?: string;
|
|
88
|
+
env?: EnvOverrides;
|
|
89
|
+
});
|
|
90
|
+
id(): string;
|
|
91
|
+
toString(): string;
|
|
92
|
+
/**
|
|
93
|
+
* Loads a function from an external file
|
|
94
|
+
* @param fileRef The file reference in the format 'file://path/to/file:functionName'
|
|
95
|
+
* @returns The loaded function
|
|
96
|
+
*/
|
|
97
|
+
private loadExternalFunction;
|
|
98
|
+
/**
|
|
99
|
+
* Executes a function callback with proper error handling
|
|
100
|
+
*/
|
|
101
|
+
private executeFunctionCallback;
|
|
102
|
+
/**
|
|
103
|
+
* Build the inference configuration from options
|
|
104
|
+
*/
|
|
105
|
+
private buildInferenceConfig;
|
|
106
|
+
/**
|
|
107
|
+
* Build the tool configuration from options
|
|
108
|
+
*/
|
|
109
|
+
private buildToolConfig;
|
|
110
|
+
/**
|
|
111
|
+
* Build the guardrail configuration
|
|
112
|
+
*/
|
|
113
|
+
private buildGuardrailConfig;
|
|
114
|
+
/**
|
|
115
|
+
* Build additional model request fields (including thinking config)
|
|
116
|
+
*/
|
|
117
|
+
private buildAdditionalModelRequestFields;
|
|
118
|
+
/**
|
|
119
|
+
* Build performance configuration
|
|
120
|
+
*/
|
|
121
|
+
private buildPerformanceConfig;
|
|
122
|
+
/**
|
|
123
|
+
* Build service tier configuration
|
|
124
|
+
*/
|
|
125
|
+
private buildServiceTier;
|
|
126
|
+
/**
|
|
127
|
+
* Main API call using Converse API
|
|
128
|
+
*/
|
|
129
|
+
callApi(prompt: string, context?: CallApiContextParams): Promise<ProviderResponse>;
|
|
130
|
+
/**
|
|
131
|
+
* Parse the Converse API response into ProviderResponse format
|
|
132
|
+
*/
|
|
133
|
+
private parseResponse;
|
|
134
|
+
/**
|
|
135
|
+
* Streaming API call using ConverseStream
|
|
136
|
+
*
|
|
137
|
+
* Note: functionToolCallbacks are not executed in streaming mode.
|
|
138
|
+
* Tool use blocks are captured and returned in the output, but callbacks
|
|
139
|
+
* are not automatically invoked. Use non-streaming mode if you need
|
|
140
|
+
* automatic tool callback execution.
|
|
141
|
+
*/
|
|
142
|
+
callApiStreaming(prompt: string, context?: CallApiContextParams): Promise<ProviderResponse & {
|
|
143
|
+
stream?: AsyncIterable<string>;
|
|
144
|
+
}>;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=converse.d.ts.map
|