promptfoo 0.107.0 → 0.107.2

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.
Files changed (141) hide show
  1. package/dist/package.json +20 -17
  2. package/dist/src/app/assets/{index-aPpzVtDP.js → index-DmqkyVHC.js} +234 -234
  3. package/dist/src/app/assets/{index.es-BZ4ADnog.js → index.es-BSriX8RW.js} +1 -1
  4. package/dist/src/app/assets/{sync-ulUFOpow.js → sync-CAUebwzg.js} +1 -1
  5. package/dist/src/app/index.html +1 -1
  6. package/dist/src/assertions/answerRelevance.d.ts.map +1 -1
  7. package/dist/src/assertions/contains.d.ts.map +1 -1
  8. package/dist/src/assertions/contextRecall.d.ts.map +1 -1
  9. package/dist/src/assertions/contextRelevance.d.ts.map +1 -1
  10. package/dist/src/assertions/cost.d.ts.map +1 -1
  11. package/dist/src/assertions/equals.d.ts.map +1 -1
  12. package/dist/src/assertions/factuality.d.ts.map +1 -1
  13. package/dist/src/assertions/geval.d.ts.map +1 -1
  14. package/dist/src/assertions/guardrails.d.ts.map +1 -1
  15. package/dist/src/assertions/javascript.d.ts.map +1 -1
  16. package/dist/src/assertions/latency.d.ts.map +1 -1
  17. package/dist/src/assertions/llmRubric.d.ts.map +1 -1
  18. package/dist/src/assertions/modelGradedClosedQa.d.ts.map +1 -1
  19. package/dist/src/assertions/moderation.d.ts.map +1 -1
  20. package/dist/src/assertions/openai.d.ts.map +1 -1
  21. package/dist/src/assertions/python.d.ts.map +1 -1
  22. package/dist/src/assertions/redteam.d.ts.map +1 -1
  23. package/dist/src/assertions/regex.d.ts.map +1 -1
  24. package/dist/src/assertions/similar.d.ts.map +1 -1
  25. package/dist/src/assertions/sql.d.ts.map +1 -1
  26. package/dist/src/assertions/startsWith.d.ts.map +1 -1
  27. package/dist/src/assertions/xml.d.ts.map +1 -1
  28. package/dist/src/commands/auth.d.ts.map +1 -1
  29. package/dist/src/commands/auth.js +4 -5
  30. package/dist/src/commands/auth.js.map +1 -1
  31. package/dist/src/commands/init.d.ts.map +1 -1
  32. package/dist/src/commands/init.js +14 -2
  33. package/dist/src/commands/init.js.map +1 -1
  34. package/dist/src/database/tables.d.ts +22 -0
  35. package/dist/src/database/tables.d.ts.map +1 -1
  36. package/dist/src/fetch.js +1 -1
  37. package/dist/src/fetch.js.map +1 -1
  38. package/dist/src/globalConfig/cloud.d.ts +1 -0
  39. package/dist/src/globalConfig/cloud.d.ts.map +1 -1
  40. package/dist/src/globalConfig/cloud.js +11 -10
  41. package/dist/src/globalConfig/cloud.js.map +1 -1
  42. package/dist/src/matchers.d.ts.map +1 -1
  43. package/dist/src/matchers.js +79 -39
  44. package/dist/src/matchers.js.map +1 -1
  45. package/dist/src/onboarding.d.ts.map +1 -1
  46. package/dist/src/onboarding.js +5 -8
  47. package/dist/src/onboarding.js.map +1 -1
  48. package/dist/src/prompts/grading.d.ts +1 -10
  49. package/dist/src/prompts/grading.d.ts.map +1 -1
  50. package/dist/src/prompts/grading.js +37 -42
  51. package/dist/src/prompts/grading.js.map +1 -1
  52. package/dist/src/prompts/processors/javascript.d.ts.map +1 -1
  53. package/dist/src/prompts/processors/python.d.ts.map +1 -1
  54. package/dist/src/providers/adaline.gateway.d.ts.map +1 -1
  55. package/dist/src/providers/adaline.gateway.js +6 -5
  56. package/dist/src/providers/adaline.gateway.js.map +1 -1
  57. package/dist/src/providers/anthropic/completion.d.ts +15 -0
  58. package/dist/src/providers/anthropic/completion.d.ts.map +1 -0
  59. package/dist/src/providers/anthropic/completion.js +93 -0
  60. package/dist/src/providers/anthropic/completion.js.map +1 -0
  61. package/dist/src/providers/anthropic/defaults.d.ts +18 -0
  62. package/dist/src/providers/anthropic/defaults.d.ts.map +1 -0
  63. package/dist/src/providers/anthropic/defaults.js +105 -0
  64. package/dist/src/providers/anthropic/defaults.js.map +1 -0
  65. package/dist/src/providers/anthropic/generic.d.ts +37 -0
  66. package/dist/src/providers/anthropic/generic.d.ts.map +1 -0
  67. package/dist/src/providers/anthropic/generic.js +46 -0
  68. package/dist/src/providers/anthropic/generic.js.map +1 -0
  69. package/dist/src/providers/anthropic/messages.d.ts +23 -0
  70. package/dist/src/providers/anthropic/messages.d.ts.map +1 -0
  71. package/dist/src/providers/anthropic/messages.js +129 -0
  72. package/dist/src/providers/anthropic/messages.js.map +1 -0
  73. package/dist/src/providers/anthropic/types.d.ts +26 -0
  74. package/dist/src/providers/anthropic/types.d.ts.map +1 -0
  75. package/dist/src/providers/anthropic/types.js +3 -0
  76. package/dist/src/providers/anthropic/types.js.map +1 -0
  77. package/dist/src/providers/anthropic/util.d.ts +18 -0
  78. package/dist/src/providers/anthropic/util.d.ts.map +1 -0
  79. package/dist/src/providers/anthropic/util.js +192 -0
  80. package/dist/src/providers/anthropic/util.js.map +1 -0
  81. package/dist/src/providers/bedrock.d.ts +12 -12
  82. package/dist/src/providers/bedrock.d.ts.map +1 -1
  83. package/dist/src/providers/bedrock.js +14 -12
  84. package/dist/src/providers/bedrock.js.map +1 -1
  85. package/dist/src/providers/defaults.d.ts +1 -12
  86. package/dist/src/providers/defaults.d.ts.map +1 -1
  87. package/dist/src/providers/defaults.js +24 -22
  88. package/dist/src/providers/defaults.js.map +1 -1
  89. package/dist/src/providers/openai/realtime.d.ts +68 -0
  90. package/dist/src/providers/openai/realtime.d.ts.map +1 -0
  91. package/dist/src/providers/openai/realtime.js +919 -0
  92. package/dist/src/providers/openai/realtime.js.map +1 -0
  93. package/dist/src/providers/openai/util.d.ts +10 -0
  94. package/dist/src/providers/openai/util.d.ts.map +1 -1
  95. package/dist/src/providers/openai/util.js +32 -2
  96. package/dist/src/providers/openai/util.js.map +1 -1
  97. package/dist/src/providers/registry.d.ts.map +1 -1
  98. package/dist/src/providers/registry.js +30 -11
  99. package/dist/src/providers/registry.js.map +1 -1
  100. package/dist/src/redteam/constants.d.ts +1 -1
  101. package/dist/src/redteam/constants.d.ts.map +1 -1
  102. package/dist/src/redteam/constants.js +7 -0
  103. package/dist/src/redteam/constants.js.map +1 -1
  104. package/dist/src/redteam/extraction/entities.d.ts.map +1 -1
  105. package/dist/src/redteam/extraction/entities.js +2 -0
  106. package/dist/src/redteam/extraction/entities.js.map +1 -1
  107. package/dist/src/redteam/graders.d.ts.map +1 -1
  108. package/dist/src/redteam/graders.js +2 -0
  109. package/dist/src/redteam/graders.js.map +1 -1
  110. package/dist/src/redteam/plugins/index.d.ts.map +1 -1
  111. package/dist/src/redteam/plugins/index.js +2 -0
  112. package/dist/src/redteam/plugins/index.js.map +1 -1
  113. package/dist/src/redteam/plugins/toolDiscovery.d.ts +13 -0
  114. package/dist/src/redteam/plugins/toolDiscovery.d.ts.map +1 -0
  115. package/dist/src/redteam/plugins/toolDiscovery.js +102 -0
  116. package/dist/src/redteam/plugins/toolDiscovery.js.map +1 -0
  117. package/dist/src/redteam/providers/shared.d.ts.map +1 -1
  118. package/dist/src/redteam/strategies/iterative.js +1 -1
  119. package/dist/src/redteam/strategies/iterative.js.map +1 -1
  120. package/dist/src/types/env.d.ts +3 -0
  121. package/dist/src/types/env.d.ts.map +1 -1
  122. package/dist/src/types/env.js +1 -0
  123. package/dist/src/types/env.js.map +1 -1
  124. package/dist/src/types/index.d.ts +291 -0
  125. package/dist/src/types/index.d.ts.map +1 -1
  126. package/dist/src/types/providers.d.ts +13 -0
  127. package/dist/src/types/providers.d.ts.map +1 -1
  128. package/dist/src/util/database.d.ts +2 -0
  129. package/dist/src/util/database.d.ts.map +1 -1
  130. package/dist/src/util/objectUtils.d.ts.map +1 -1
  131. package/dist/src/util/time.d.ts.map +1 -1
  132. package/dist/src/validators/providers.d.ts +20 -0
  133. package/dist/src/validators/providers.d.ts.map +1 -1
  134. package/dist/src/validators/redteam.d.ts +8 -0
  135. package/dist/src/validators/redteam.d.ts.map +1 -1
  136. package/dist/tsconfig.tsbuildinfo +1 -1
  137. package/package.json +20 -17
  138. package/dist/src/providers/anthropic.d.ts +0 -84
  139. package/dist/src/providers/anthropic.d.ts.map +0 -1
  140. package/dist/src/providers/anthropic.js +0 -505
  141. package/dist/src/providers/anthropic.js.map +0 -1
@@ -1,505 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.DefaultLlmRubricProvider = exports.AnthropicLlmRubricProvider = exports.DefaultSuggestionsProvider = exports.DefaultGradingJsonProvider = exports.DefaultGradingProvider = exports.AnthropicCompletionProvider = exports.AnthropicMessagesProvider = void 0;
40
- exports.outputFromMessage = outputFromMessage;
41
- exports.parseMessages = parseMessages;
42
- exports.calculateAnthropicCost = calculateAnthropicCost;
43
- const sdk_1 = __importStar(require("@anthropic-ai/sdk"));
44
- const cache_1 = require("../cache");
45
- const envars_1 = require("../envars");
46
- const logger_1 = __importDefault(require("../logger"));
47
- const util_1 = require("../util");
48
- const shared_1 = require("./shared");
49
- const ANTHROPIC_MODELS = [
50
- ...['claude-instant-1.2'].map((model) => ({
51
- id: model,
52
- cost: {
53
- input: 0.0008 / 1000,
54
- output: 0.0024 / 1000,
55
- },
56
- })),
57
- ...['claude-2.0'].map((model) => ({
58
- id: model,
59
- cost: {
60
- input: 0.008 / 1000,
61
- output: 0.024 / 1000,
62
- },
63
- })),
64
- ...['claude-2.1'].map((model) => ({
65
- id: model,
66
- cost: {
67
- input: 0.008 / 1000,
68
- output: 0.024 / 1000,
69
- },
70
- })),
71
- ...['claude-3-haiku-20240307', 'claude-3-haiku-latest'].map((model) => ({
72
- id: model,
73
- cost: {
74
- input: 0.00025 / 1000,
75
- output: 0.00125 / 1000,
76
- },
77
- })),
78
- ...['claude-3-opus-20240229', 'claude-3-opus-latest'].map((model) => ({
79
- id: model,
80
- cost: {
81
- input: 0.015 / 1000,
82
- output: 0.075 / 1000,
83
- },
84
- })),
85
- ...['claude-3-5-haiku-20241022', 'claude-3-5-haiku-latest'].map((model) => ({
86
- id: model,
87
- cost: {
88
- input: 1 / 1e6,
89
- output: 5 / 1e6,
90
- },
91
- })),
92
- ...[
93
- 'claude-3-sonnet-20240229',
94
- 'claude-3-sonnet-latest',
95
- 'claude-3-5-sonnet-20240620',
96
- 'claude-3-5-sonnet-20241022',
97
- 'claude-3-5-sonnet-latest',
98
- 'claude-3-7-sonnet-20250219',
99
- 'claude-3-7-sonnet-latest',
100
- ].map((model) => ({
101
- id: model,
102
- cost: {
103
- input: 3 / 1e6,
104
- output: 15 / 1e6,
105
- },
106
- })),
107
- ];
108
- function getTokenUsage(data, cached) {
109
- if (data.usage) {
110
- const total_tokens = data.usage.input_tokens + data.usage.output_tokens;
111
- if (cached) {
112
- return { cached: total_tokens, total: total_tokens };
113
- }
114
- else {
115
- return {
116
- total: total_tokens,
117
- prompt: data.usage.input_tokens || 0,
118
- completion: data.usage.output_tokens || 0,
119
- };
120
- }
121
- }
122
- return {};
123
- }
124
- function outputFromMessage(message, showThinking) {
125
- const hasToolUse = message.content.some((block) => block.type === 'tool_use');
126
- const hasThinking = message.content.some((block) => block.type === 'thinking' || block.type === 'redacted_thinking');
127
- if (hasToolUse || hasThinking) {
128
- return message.content
129
- .map((block) => {
130
- if (block.type === 'text') {
131
- return block.text;
132
- }
133
- else if (block.type === 'thinking' && showThinking) {
134
- return `Thinking: ${block.thinking}\nSignature: ${block.signature}`;
135
- }
136
- else if (block.type === 'redacted_thinking' && showThinking) {
137
- return `Redacted Thinking: ${block.data}`;
138
- }
139
- else if (block.type !== 'thinking' && block.type !== 'redacted_thinking') {
140
- return JSON.stringify(block);
141
- }
142
- return '';
143
- })
144
- .filter((text) => text !== '')
145
- .join('\n\n');
146
- }
147
- return message.content
148
- .map((block) => {
149
- return block.text;
150
- })
151
- .join('\n\n');
152
- }
153
- function parseMessages(messages) {
154
- try {
155
- const parsed = JSON.parse(messages);
156
- if (Array.isArray(parsed)) {
157
- const systemMessage = parsed.find((msg) => msg.role === 'system');
158
- const thinking = parsed.find((msg) => msg.thinking)?.thinking;
159
- return {
160
- extractedMessages: parsed
161
- .filter((msg) => msg.role !== 'system')
162
- .map((msg) => ({
163
- role: msg.role,
164
- content: Array.isArray(msg.content)
165
- ? msg.content
166
- : [{ type: 'text', text: msg.content }],
167
- })),
168
- system: systemMessage
169
- ? Array.isArray(systemMessage.content)
170
- ? systemMessage.content
171
- : [{ type: 'text', text: systemMessage.content }]
172
- : undefined,
173
- thinking,
174
- };
175
- }
176
- }
177
- catch {
178
- // Not JSON, parse as plain text
179
- }
180
- const lines = messages
181
- .split('\n')
182
- .map((line) => line.trim())
183
- .filter((line) => line);
184
- let system;
185
- let thinking;
186
- const extractedMessages = [];
187
- let currentRole = null;
188
- let currentContent = [];
189
- const pushMessage = () => {
190
- if (currentRole && currentContent.length > 0) {
191
- extractedMessages.push({
192
- role: currentRole,
193
- content: [{ type: 'text', text: currentContent.join('\n') }],
194
- });
195
- currentContent = [];
196
- }
197
- };
198
- for (const line of lines) {
199
- if (line.startsWith('system:')) {
200
- system = [{ type: 'text', text: line.slice(7).trim() }];
201
- }
202
- else if (line.startsWith('thinking:')) {
203
- try {
204
- thinking = JSON.parse(line.slice(9).trim());
205
- }
206
- catch {
207
- // Invalid thinking config, ignore
208
- }
209
- }
210
- else if (line.startsWith('user:') || line.startsWith('assistant:')) {
211
- pushMessage();
212
- currentRole = line.startsWith('user:') ? 'user' : 'assistant';
213
- currentContent.push(line.slice(line.indexOf(':') + 1).trim());
214
- }
215
- else if (currentRole) {
216
- currentContent.push(line);
217
- }
218
- else {
219
- // If no role is set, assume it's a user message
220
- currentRole = 'user';
221
- currentContent.push(line);
222
- }
223
- }
224
- pushMessage();
225
- if (extractedMessages.length === 0 && !system) {
226
- extractedMessages.push({
227
- role: 'user',
228
- content: [{ type: 'text', text: messages.trim() }],
229
- });
230
- }
231
- return { system, extractedMessages, thinking };
232
- }
233
- function calculateAnthropicCost(modelName, config, promptTokens, completionTokens) {
234
- return (0, shared_1.calculateCost)(modelName, config, promptTokens, completionTokens, ANTHROPIC_MODELS);
235
- }
236
- class AnthropicMessagesProvider {
237
- constructor(modelName, options = {}) {
238
- if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) {
239
- logger_1.default.warn(`Using unknown Anthropic model: ${modelName}`);
240
- }
241
- const { id, config, env } = options;
242
- this.env = env;
243
- this.modelName = modelName;
244
- this.id = id ? () => id : this.id;
245
- this.config = config || {};
246
- this.apiKey = config?.apiKey || env?.ANTHROPIC_API_KEY || (0, envars_1.getEnvString)('ANTHROPIC_API_KEY');
247
- this.anthropic = new sdk_1.default({ apiKey: this.apiKey, baseURL: this.config.apiBaseUrl });
248
- }
249
- id() {
250
- return `anthropic:messages:${this.modelName || 'claude-2.1'}`;
251
- }
252
- toString() {
253
- return `[Anthropic Messages Provider ${this.modelName || 'claude-2.1'}]`;
254
- }
255
- getApiKey() {
256
- return this.apiKey;
257
- }
258
- getApiBaseUrl() {
259
- return this.config.apiBaseUrl;
260
- }
261
- async callApi(prompt) {
262
- if (!this.apiKey) {
263
- throw new Error('Anthropic API key is not set. Set the ANTHROPIC_API_KEY environment variable or add `apiKey` to the provider config.');
264
- }
265
- const { system, extractedMessages, thinking } = parseMessages(prompt);
266
- const params = {
267
- model: this.modelName,
268
- ...(system ? { system } : {}),
269
- max_tokens: this.config?.max_tokens ||
270
- (0, envars_1.getEnvInt)('ANTHROPIC_MAX_TOKENS', this.config.thinking || thinking ? 2048 : 1024),
271
- messages: extractedMessages,
272
- stream: false,
273
- temperature: this.config.thinking || thinking
274
- ? this.config.temperature
275
- : this.config.temperature || (0, envars_1.getEnvFloat)('ANTHROPIC_TEMPERATURE', 0),
276
- ...(this.config.tools ? { tools: (0, util_1.maybeLoadFromExternalFile)(this.config.tools) } : {}),
277
- ...(this.config.tool_choice ? { tool_choice: this.config.tool_choice } : {}),
278
- ...(this.config.thinking || thinking ? { thinking: this.config.thinking || thinking } : {}),
279
- ...(typeof this.config?.extra_body === 'object' && this.config.extra_body
280
- ? this.config.extra_body
281
- : {}),
282
- };
283
- logger_1.default.debug(`Calling Anthropic Messages API: ${JSON.stringify(params)}`);
284
- const headers = {
285
- ...(this.config.headers || {}),
286
- };
287
- // Add beta features header if specified
288
- if (this.config.beta?.length) {
289
- headers['anthropic-beta'] = this.config.beta.join(',');
290
- }
291
- const cache = await (0, cache_1.getCache)();
292
- const cacheKey = `anthropic:${JSON.stringify(params)}`;
293
- if ((0, cache_1.isCacheEnabled)()) {
294
- // Try to get the cached response
295
- const cachedResponse = await cache.get(cacheKey);
296
- if (cachedResponse) {
297
- logger_1.default.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
298
- try {
299
- const parsedCachedResponse = JSON.parse(cachedResponse);
300
- return {
301
- output: outputFromMessage(parsedCachedResponse, this.config.showThinking ?? true),
302
- tokenUsage: getTokenUsage(parsedCachedResponse, true),
303
- cost: calculateAnthropicCost(this.modelName, this.config, parsedCachedResponse.usage?.input_tokens, parsedCachedResponse.usage?.output_tokens),
304
- };
305
- }
306
- catch {
307
- // Could be an old cache item, which was just the text content from TextBlock.
308
- return {
309
- output: cachedResponse,
310
- tokenUsage: {},
311
- };
312
- }
313
- }
314
- }
315
- try {
316
- const response = await this.anthropic.messages.create(params, {
317
- ...(typeof headers === 'object' && Object.keys(headers).length > 0 ? { headers } : {}),
318
- });
319
- logger_1.default.debug(`Anthropic Messages API response: ${JSON.stringify(response)}`);
320
- if ((0, cache_1.isCacheEnabled)()) {
321
- try {
322
- await cache.set(cacheKey, JSON.stringify(response));
323
- }
324
- catch (err) {
325
- logger_1.default.error(`Failed to cache response: ${String(err)}`);
326
- }
327
- }
328
- if ('stream' in response) {
329
- // Handle streaming response
330
- return {
331
- output: 'Streaming response not supported in this context',
332
- error: 'Streaming should be disabled for this use case',
333
- };
334
- }
335
- return {
336
- output: outputFromMessage(response, this.config.showThinking ?? true),
337
- tokenUsage: getTokenUsage(response, false),
338
- cost: calculateAnthropicCost(this.modelName, this.config, response.usage?.input_tokens, response.usage?.output_tokens),
339
- };
340
- }
341
- catch (err) {
342
- logger_1.default.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
343
- if (err instanceof sdk_1.APIError && err.error) {
344
- const errorDetails = err.error;
345
- return {
346
- error: `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}`,
347
- };
348
- }
349
- return {
350
- error: `API call error: ${err instanceof Error ? err.message : String(err)}`,
351
- };
352
- }
353
- }
354
- }
355
- exports.AnthropicMessagesProvider = AnthropicMessagesProvider;
356
- AnthropicMessagesProvider.ANTHROPIC_MODELS = ANTHROPIC_MODELS;
357
- AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES = ANTHROPIC_MODELS.map((model) => model.id);
358
- class AnthropicCompletionProvider {
359
- constructor(modelName, options = {}) {
360
- const { config, id, env } = options;
361
- this.modelName = modelName;
362
- this.apiKey = config?.apiKey || env?.ANTHROPIC_API_KEY || (0, envars_1.getEnvString)('ANTHROPIC_API_KEY');
363
- this.anthropic = new sdk_1.default({ apiKey: this.apiKey });
364
- this.config = config || {};
365
- this.id = id ? () => id : this.id;
366
- }
367
- id() {
368
- return `anthropic:${this.modelName}`;
369
- }
370
- toString() {
371
- return `[Anthropic Provider ${this.modelName}]`;
372
- }
373
- async callApi(prompt) {
374
- if (!this.apiKey) {
375
- throw new Error('Anthropic API key is not set. Set the ANTHROPIC_API_KEY environment variable or add `apiKey` to the provider config.');
376
- }
377
- let stop;
378
- try {
379
- stop = (0, envars_1.getEnvString)('ANTHROPIC_STOP')
380
- ? JSON.parse((0, envars_1.getEnvString)('ANTHROPIC_STOP') || '')
381
- : ['<|im_end|>', '<|endoftext|>'];
382
- }
383
- catch (err) {
384
- throw new Error(`ANTHROPIC_STOP is not a valid JSON string: ${err}`);
385
- }
386
- const params = {
387
- model: this.modelName,
388
- prompt: `${sdk_1.default.HUMAN_PROMPT} ${prompt} ${sdk_1.default.AI_PROMPT}`,
389
- max_tokens_to_sample: this.config?.max_tokens_to_sample || (0, envars_1.getEnvInt)('ANTHROPIC_MAX_TOKENS', 1024),
390
- temperature: this.config.temperature ?? (0, envars_1.getEnvFloat)('ANTHROPIC_TEMPERATURE', 0),
391
- stop_sequences: stop,
392
- };
393
- logger_1.default.debug(`Calling Anthropic API: ${JSON.stringify(params)}`);
394
- const cache = await (0, cache_1.getCache)();
395
- const cacheKey = `anthropic:${JSON.stringify(params)}`;
396
- if ((0, cache_1.isCacheEnabled)()) {
397
- // Try to get the cached response
398
- const cachedResponse = await cache.get(cacheKey);
399
- if (cachedResponse) {
400
- logger_1.default.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
401
- return {
402
- output: JSON.parse(cachedResponse),
403
- tokenUsage: {},
404
- };
405
- }
406
- }
407
- let response;
408
- try {
409
- response = await this.anthropic.completions.create(params);
410
- }
411
- catch (err) {
412
- return {
413
- error: `API call error: ${String(err)}`,
414
- };
415
- }
416
- logger_1.default.debug(`\tAnthropic API response: ${JSON.stringify(response)}`);
417
- if ((0, cache_1.isCacheEnabled)()) {
418
- try {
419
- await cache.set(cacheKey, JSON.stringify(response.completion));
420
- }
421
- catch (err) {
422
- logger_1.default.error(`Failed to cache response: ${String(err)}`);
423
- }
424
- }
425
- try {
426
- return {
427
- output: response.completion,
428
- tokenUsage: {}, // TODO: add token usage once Anthropic API supports it
429
- };
430
- }
431
- catch (err) {
432
- return {
433
- error: `API response error: ${String(err)}: ${JSON.stringify(response)}`,
434
- };
435
- }
436
- }
437
- }
438
- exports.AnthropicCompletionProvider = AnthropicCompletionProvider;
439
- AnthropicCompletionProvider.ANTHROPIC_COMPLETION_MODELS = [
440
- 'claude-1',
441
- 'claude-1-100k',
442
- 'claude-instant-1',
443
- 'claude-instant-1.2',
444
- 'claude-instant-1-100k',
445
- 'claude-2',
446
- 'claude-2.1',
447
- ];
448
- exports.DefaultGradingProvider = new AnthropicMessagesProvider('claude-3-5-sonnet-20240620');
449
- exports.DefaultGradingJsonProvider = new AnthropicMessagesProvider('claude-3-5-sonnet-20240620');
450
- exports.DefaultSuggestionsProvider = new AnthropicMessagesProvider('claude-3-5-sonnet-20240620');
451
- class AnthropicLlmRubricProvider extends AnthropicMessagesProvider {
452
- constructor(modelName) {
453
- super(modelName, {
454
- config: {
455
- tool_choice: { type: 'tool', name: 'grade_output' },
456
- tools: [
457
- {
458
- name: 'grade_output',
459
- description: 'Grade the given output based on specific criteria',
460
- input_schema: {
461
- type: 'object',
462
- properties: {
463
- pass: {
464
- type: 'boolean',
465
- description: 'Whether the output passes the criteria',
466
- },
467
- score: {
468
- type: 'number',
469
- description: 'The score assigned to the output',
470
- },
471
- reason: {
472
- type: 'string',
473
- description: 'The reason for the given grade',
474
- },
475
- },
476
- required: ['pass', 'score', 'reason'],
477
- },
478
- },
479
- ],
480
- },
481
- });
482
- }
483
- async callApi(prompt) {
484
- const result = await super.callApi(prompt);
485
- if (typeof result.output !== 'string') {
486
- return {
487
- error: `Anthropic LLM rubric grader - malformed non-string output\n\n${JSON.stringify(result.output)}`,
488
- };
489
- }
490
- try {
491
- const functionCall = JSON.parse(result.output);
492
- return {
493
- output: functionCall.input,
494
- };
495
- }
496
- catch (err) {
497
- return {
498
- error: `Anthropic LLM rubric grader - invalid JSON: ${err}\n\n${result.output}`,
499
- };
500
- }
501
- }
502
- }
503
- exports.AnthropicLlmRubricProvider = AnthropicLlmRubricProvider;
504
- exports.DefaultLlmRubricProvider = new AnthropicLlmRubricProvider('claude-3-5-sonnet-20240620');
505
- //# sourceMappingURL=anthropic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}