promptfoo 0.94.5 → 0.95.0
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/drizzle/0010_needy_bishop.sql +11 -0
- package/dist/drizzle/meta/0010_snapshot.json +691 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/package.json +15 -15
- package/dist/src/app/assets/{index-DPkfMrKn.css → index-YwjS5Vq2.css} +1 -1
- package/dist/src/app/assets/index-zXzgAsKj.js +769 -0
- package/dist/src/app/assets/{index.es-C1C9rdhp.js → index.es-Jztl1qad.js} +1 -1
- package/dist/src/app/assets/{sync-DMqxyaVi.js → sync-BJBBGzPI.js} +1 -1
- package/dist/src/app/index.html +2 -2
- package/dist/src/assertions/index.d.ts.map +1 -1
- package/dist/src/assertions/index.js +2 -0
- package/dist/src/assertions/index.js.map +1 -1
- package/dist/src/cache.d.ts +1 -1
- package/dist/src/cache.d.ts.map +1 -1
- package/dist/src/cache.js +2 -1
- package/dist/src/cache.js.map +1 -1
- package/dist/src/commands/auth.d.ts.map +1 -1
- package/dist/src/commands/auth.js +38 -0
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/eval.d.ts.map +1 -1
- package/dist/src/commands/eval.js +35 -20
- package/dist/src/commands/eval.js.map +1 -1
- package/dist/src/database/tables.d.ts +103 -0
- package/dist/src/database/tables.d.ts.map +1 -1
- package/dist/src/database/tables.js +17 -1
- package/dist/src/database/tables.js.map +1 -1
- package/dist/src/evaluator.d.ts.map +1 -1
- package/dist/src/evaluator.js +30 -8
- package/dist/src/evaluator.js.map +1 -1
- package/dist/src/models/eval.d.ts +2 -0
- package/dist/src/models/eval.d.ts.map +1 -1
- package/dist/src/models/eval.js +13 -1
- package/dist/src/models/eval.js.map +1 -1
- package/dist/src/models/evalResult.d.ts +6 -1
- package/dist/src/models/evalResult.d.ts.map +1 -1
- package/dist/src/models/evalResult.js +21 -2
- package/dist/src/models/evalResult.js.map +1 -1
- package/dist/src/prompts/grading.js +4 -4
- package/dist/src/providers/bedrock.d.ts.map +1 -1
- package/dist/src/providers/bedrock.js +13 -4
- package/dist/src/providers/bedrock.js.map +1 -1
- package/dist/src/providers/http.d.ts.map +1 -1
- package/dist/src/providers/http.js +1 -2
- package/dist/src/providers/http.js.map +1 -1
- package/dist/src/providers/promptfoo.d.ts +1 -1
- package/dist/src/providers/promptfoo.d.ts.map +1 -1
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +12 -8
- package/dist/src/providers.js.map +1 -1
- package/dist/src/redteam/commands/generate.d.ts.map +1 -1
- package/dist/src/redteam/commands/generate.js +6 -4
- package/dist/src/redteam/commands/generate.js.map +1 -1
- package/dist/src/redteam/commands/run.d.ts.map +1 -1
- package/dist/src/redteam/commands/run.js +9 -3
- package/dist/src/redteam/commands/run.js.map +1 -1
- package/dist/src/redteam/constants.d.ts +2 -2
- package/dist/src/redteam/constants.d.ts.map +1 -1
- package/dist/src/redteam/constants.js +8 -3
- package/dist/src/redteam/constants.js.map +1 -1
- package/dist/src/redteam/index.d.ts.map +1 -1
- package/dist/src/redteam/index.js +6 -2
- package/dist/src/redteam/index.js.map +1 -1
- package/dist/src/redteam/plugins/bfla.d.ts.map +1 -1
- package/dist/src/redteam/plugins/bfla.js +14 -2
- package/dist/src/redteam/plugins/bfla.js.map +1 -1
- package/dist/src/redteam/plugins/competitors.d.ts.map +1 -1
- package/dist/src/redteam/plugins/competitors.js +2 -6
- package/dist/src/redteam/plugins/competitors.js.map +1 -1
- package/dist/src/redteam/plugins/debugAccess.d.ts.map +1 -1
- package/dist/src/redteam/plugins/debugAccess.js +20 -1
- package/dist/src/redteam/plugins/debugAccess.js.map +1 -1
- package/dist/src/redteam/plugins/pii.d.ts.map +1 -1
- package/dist/src/redteam/plugins/pii.js +39 -41
- package/dist/src/redteam/plugins/pii.js.map +1 -1
- package/dist/src/redteam/plugins/sqlInjection.d.ts.map +1 -1
- package/dist/src/redteam/plugins/sqlInjection.js +18 -1
- package/dist/src/redteam/plugins/sqlInjection.js.map +1 -1
- package/dist/src/redteam/providers/goat.d.ts +12 -0
- package/dist/src/redteam/providers/goat.d.ts.map +1 -0
- package/dist/src/redteam/providers/goat.js +70 -0
- package/dist/src/redteam/providers/goat.js.map +1 -0
- package/dist/src/redteam/strategies/goat.d.ts +3 -0
- package/dist/src/redteam/strategies/goat.d.ts.map +1 -0
- package/dist/src/redteam/strategies/goat.js +24 -0
- package/dist/src/redteam/strategies/goat.js.map +1 -0
- package/dist/src/redteam/strategies/index.d.ts.map +1 -1
- package/dist/src/redteam/strategies/index.js +10 -0
- package/dist/src/redteam/strategies/index.js.map +1 -1
- package/dist/src/redteam/types.d.ts +1 -0
- package/dist/src/redteam/types.d.ts.map +1 -1
- package/dist/src/server/routes/configs.d.ts +2 -0
- package/dist/src/server/routes/configs.d.ts.map +1 -0
- package/dist/src/server/routes/configs.js +100 -0
- package/dist/src/server/routes/configs.js.map +1 -0
- package/dist/src/server/routes/eval.js +48 -0
- package/dist/src/server/routes/eval.js.map +1 -1
- package/dist/src/server/server.d.ts.map +1 -1
- package/dist/src/server/server.js +3 -0
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/types/index.d.ts +6 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -1
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/providers.d.ts +1 -0
- package/dist/src/types/providers.d.ts.map +1 -1
- package/dist/src/types/providers.js.map +1 -1
- package/dist/src/util/exportToFile/index.d.ts +43 -0
- package/dist/src/util/exportToFile/index.d.ts.map +1 -0
- package/dist/src/util/exportToFile/index.js +98 -0
- package/dist/src/util/exportToFile/index.js.map +1 -0
- package/dist/src/util/exportToFile/writeToFile.d.ts +8 -0
- package/dist/src/util/exportToFile/writeToFile.d.ts.map +1 -0
- package/dist/src/util/exportToFile/writeToFile.js +30 -0
- package/dist/src/util/exportToFile/writeToFile.js.map +1 -0
- package/dist/src/util/index.d.ts.map +1 -1
- package/dist/src/util/index.js +35 -9
- package/dist/src/util/index.js.map +1 -1
- package/dist/test/assertions/index.test.js +86 -48
- package/dist/test/assertions/index.test.js.map +1 -1
- package/dist/test/evaluator.test.js +14 -6
- package/dist/test/evaluator.test.js.map +1 -1
- package/dist/test/factories/evalFactory.d.ts.map +1 -1
- package/dist/test/factories/evalFactory.js +26 -1
- package/dist/test/factories/evalFactory.js.map +1 -1
- package/dist/test/providers/http.test.js +1 -0
- package/dist/test/providers/http.test.js.map +1 -1
- package/dist/test/providers/index.test.js +8 -0
- package/dist/test/providers/index.test.js.map +1 -1
- package/dist/test/redteam/providers/goat.test.d.ts +2 -0
- package/dist/test/redteam/providers/goat.test.d.ts.map +1 -0
- package/dist/test/redteam/providers/goat.test.js +67 -0
- package/dist/test/redteam/providers/goat.test.js.map +1 -0
- package/dist/test/redteam/strategies/goat.test.d.ts +2 -0
- package/dist/test/redteam/strategies/goat.test.d.ts.map +1 -0
- package/dist/test/redteam/strategies/goat.test.js +47 -0
- package/dist/test/redteam/strategies/goat.test.js.map +1 -0
- package/dist/test/server/eval.test.d.ts +2 -0
- package/dist/test/server/eval.test.d.ts.map +1 -0
- package/dist/test/server/eval.test.js +155 -0
- package/dist/test/server/eval.test.js.map +1 -0
- package/dist/test/util/index.test.js +13 -0
- package/dist/test/util/index.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -15
- package/dist/src/app/assets/index-DD2hujB4.js +0 -769
|
@@ -2151,17 +2151,21 @@ describe('runAssertion', () => {
|
|
|
2151
2151
|
type: 'javascript',
|
|
2152
2152
|
value: 'file:///path/to/assert.js',
|
|
2153
2153
|
};
|
|
2154
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2155
|
+
const providerResponse = { output };
|
|
2154
2156
|
const result = await (0, assertions_1.runAssertion)({
|
|
2155
2157
|
prompt: 'Some prompt',
|
|
2156
|
-
provider
|
|
2158
|
+
provider,
|
|
2157
2159
|
assertion: fileAssertion,
|
|
2158
2160
|
test: {},
|
|
2159
|
-
providerResponse
|
|
2161
|
+
providerResponse,
|
|
2160
2162
|
});
|
|
2161
2163
|
expect(mockFn).toHaveBeenCalledWith('Expected output', {
|
|
2162
2164
|
prompt: 'Some prompt',
|
|
2163
2165
|
vars: {},
|
|
2164
2166
|
test: {},
|
|
2167
|
+
provider,
|
|
2168
|
+
providerResponse,
|
|
2165
2169
|
});
|
|
2166
2170
|
expect(result).toMatchObject({
|
|
2167
2171
|
pass: expectedPass,
|
|
@@ -2214,17 +2218,21 @@ describe('runAssertion', () => {
|
|
|
2214
2218
|
type: 'javascript',
|
|
2215
2219
|
value: 'package:@promptfoo/fake:assertionFunction',
|
|
2216
2220
|
};
|
|
2221
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2222
|
+
const providerResponse = { output };
|
|
2217
2223
|
const result = await (0, assertions_1.runAssertion)({
|
|
2218
2224
|
prompt: 'Some prompt',
|
|
2219
|
-
provider
|
|
2225
|
+
provider,
|
|
2220
2226
|
assertion: fileAssertion,
|
|
2221
2227
|
test: {},
|
|
2222
|
-
providerResponse
|
|
2228
|
+
providerResponse,
|
|
2223
2229
|
});
|
|
2224
2230
|
expect(mockFn).toHaveBeenCalledWith('Expected output', {
|
|
2225
2231
|
prompt: 'Some prompt',
|
|
2226
2232
|
vars: {},
|
|
2227
2233
|
test: {},
|
|
2234
|
+
provider,
|
|
2235
|
+
providerResponse,
|
|
2228
2236
|
});
|
|
2229
2237
|
expect(result).toMatchObject({
|
|
2230
2238
|
pass: expectedPass,
|
|
@@ -2239,17 +2247,21 @@ describe('runAssertion', () => {
|
|
|
2239
2247
|
type: 'javascript',
|
|
2240
2248
|
value: 'file://./path/to/assert.js',
|
|
2241
2249
|
};
|
|
2250
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2251
|
+
const providerResponse = { output };
|
|
2242
2252
|
const result = await (0, assertions_1.runAssertion)({
|
|
2243
2253
|
prompt: 'Some prompt',
|
|
2244
|
-
provider
|
|
2254
|
+
provider,
|
|
2245
2255
|
assertion: fileAssertion,
|
|
2246
2256
|
test: {},
|
|
2247
|
-
providerResponse
|
|
2257
|
+
providerResponse,
|
|
2248
2258
|
});
|
|
2249
2259
|
expect(mockFn).toHaveBeenCalledWith('Expected output', {
|
|
2250
2260
|
prompt: 'Some prompt',
|
|
2251
2261
|
vars: {},
|
|
2252
2262
|
test: {},
|
|
2263
|
+
provider,
|
|
2264
|
+
providerResponse,
|
|
2253
2265
|
});
|
|
2254
2266
|
expect(result).toMatchObject({
|
|
2255
2267
|
pass: true,
|
|
@@ -2264,17 +2276,19 @@ describe('runAssertion', () => {
|
|
|
2264
2276
|
type: 'python',
|
|
2265
2277
|
value: expectedPythonValue,
|
|
2266
2278
|
};
|
|
2279
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2280
|
+
const providerResponse = { output };
|
|
2267
2281
|
const result = await (0, assertions_1.runAssertion)({
|
|
2268
2282
|
prompt: 'Some prompt',
|
|
2269
|
-
provider
|
|
2283
|
+
provider,
|
|
2270
2284
|
assertion: pythonAssertion,
|
|
2271
2285
|
test: {},
|
|
2272
|
-
providerResponse
|
|
2286
|
+
providerResponse,
|
|
2273
2287
|
});
|
|
2274
2288
|
expect(wrapper_1.runPythonCode).toHaveBeenCalledTimes(1);
|
|
2275
2289
|
expect(wrapper_1.runPythonCode).toHaveBeenCalledWith(expect.anything(), 'main', [
|
|
2276
2290
|
output,
|
|
2277
|
-
{ prompt: 'Some prompt', test: {}, vars: {} },
|
|
2291
|
+
{ prompt: 'Some prompt', test: {}, vars: {}, provider, providerResponse },
|
|
2278
2292
|
]);
|
|
2279
2293
|
expect(result).toMatchObject({
|
|
2280
2294
|
pass: true,
|
|
@@ -2327,17 +2341,19 @@ describe('runAssertion', () => {
|
|
|
2327
2341
|
threshold,
|
|
2328
2342
|
};
|
|
2329
2343
|
jest.mocked(wrapper_1.runPythonCode).mockResolvedValueOnce(resolvedValue);
|
|
2344
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2345
|
+
const providerResponse = { output };
|
|
2330
2346
|
const result = await (0, assertions_1.runAssertion)({
|
|
2331
2347
|
prompt: 'Some prompt',
|
|
2332
|
-
provider
|
|
2348
|
+
provider,
|
|
2333
2349
|
assertion: pythonAssertion,
|
|
2334
2350
|
test: {},
|
|
2335
|
-
providerResponse
|
|
2351
|
+
providerResponse,
|
|
2336
2352
|
});
|
|
2337
2353
|
expect(wrapper_1.runPythonCode).toHaveBeenCalledTimes(1);
|
|
2338
2354
|
expect(wrapper_1.runPythonCode).toHaveBeenCalledWith(expect.anything(), 'main', [
|
|
2339
2355
|
output,
|
|
2340
|
-
{ prompt: 'Some prompt', test: {}, vars: {} },
|
|
2356
|
+
{ prompt: 'Some prompt', test: {}, vars: {}, provider, providerResponse },
|
|
2341
2357
|
]);
|
|
2342
2358
|
expect(result).toMatchObject({
|
|
2343
2359
|
pass: expectedPass,
|
|
@@ -2371,12 +2387,14 @@ describe('runAssertion', () => {
|
|
|
2371
2387
|
type: 'python',
|
|
2372
2388
|
value: 'file:///path/to/assert.py',
|
|
2373
2389
|
};
|
|
2390
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2391
|
+
const providerResponse = { output };
|
|
2374
2392
|
const result = await (0, assertions_1.runAssertion)({
|
|
2375
2393
|
prompt: 'Some prompt that includes "double quotes" and \'single quotes\'',
|
|
2376
|
-
provider
|
|
2394
|
+
provider,
|
|
2377
2395
|
assertion: fileAssertion,
|
|
2378
2396
|
test: {},
|
|
2379
|
-
providerResponse
|
|
2397
|
+
providerResponse,
|
|
2380
2398
|
});
|
|
2381
2399
|
expect(pythonUtils_1.runPython).toHaveBeenCalledWith(path.resolve('/path/to/assert.py'), 'get_assert', [
|
|
2382
2400
|
output,
|
|
@@ -2384,6 +2402,8 @@ describe('runAssertion', () => {
|
|
|
2384
2402
|
prompt: 'Some prompt that includes "double quotes" and \'single quotes\'',
|
|
2385
2403
|
vars: {},
|
|
2386
2404
|
test: {},
|
|
2405
|
+
provider,
|
|
2406
|
+
providerResponse,
|
|
2387
2407
|
},
|
|
2388
2408
|
]);
|
|
2389
2409
|
expect(result).toMatchObject({
|
|
@@ -2401,12 +2421,14 @@ describe('runAssertion', () => {
|
|
|
2401
2421
|
type: 'python',
|
|
2402
2422
|
value: 'file:///path/to/assert.py',
|
|
2403
2423
|
};
|
|
2424
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2425
|
+
const providerResponse = { output };
|
|
2404
2426
|
const result = await (0, assertions_1.runAssertion)({
|
|
2405
2427
|
prompt: 'Some prompt that includes "double quotes" and \'single quotes\'',
|
|
2406
|
-
provider
|
|
2428
|
+
provider,
|
|
2407
2429
|
assertion: fileAssertion,
|
|
2408
2430
|
test: {},
|
|
2409
|
-
providerResponse
|
|
2431
|
+
providerResponse,
|
|
2410
2432
|
});
|
|
2411
2433
|
expect(pythonUtils_1.runPython).toHaveBeenCalledTimes(1);
|
|
2412
2434
|
expect(result).toEqual({
|
|
@@ -2422,16 +2444,18 @@ describe('runAssertion', () => {
|
|
|
2422
2444
|
describe('latency assertion', () => {
|
|
2423
2445
|
it('should pass when the latency assertion passes', async () => {
|
|
2424
2446
|
const output = 'Expected output';
|
|
2447
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2448
|
+
const providerResponse = { output };
|
|
2425
2449
|
const result = await (0, assertions_1.runAssertion)({
|
|
2426
2450
|
prompt: 'Some prompt',
|
|
2427
|
-
provider
|
|
2451
|
+
provider,
|
|
2428
2452
|
assertion: {
|
|
2429
2453
|
type: 'latency',
|
|
2430
2454
|
threshold: 100,
|
|
2431
2455
|
},
|
|
2432
2456
|
latencyMs: 50,
|
|
2433
2457
|
test: {},
|
|
2434
|
-
providerResponse
|
|
2458
|
+
providerResponse,
|
|
2435
2459
|
});
|
|
2436
2460
|
expect(result).toMatchObject({
|
|
2437
2461
|
pass: true,
|
|
@@ -2440,16 +2464,18 @@ describe('runAssertion', () => {
|
|
|
2440
2464
|
});
|
|
2441
2465
|
it('should fail when the latency assertion fails', async () => {
|
|
2442
2466
|
const output = 'Expected output';
|
|
2467
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2468
|
+
const providerResponse = { output };
|
|
2443
2469
|
const result = await (0, assertions_1.runAssertion)({
|
|
2444
2470
|
prompt: 'Some prompt',
|
|
2445
|
-
provider
|
|
2471
|
+
provider,
|
|
2446
2472
|
assertion: {
|
|
2447
2473
|
type: 'latency',
|
|
2448
2474
|
threshold: 100,
|
|
2449
2475
|
},
|
|
2450
2476
|
latencyMs: 1000,
|
|
2451
2477
|
test: {},
|
|
2452
|
-
providerResponse
|
|
2478
|
+
providerResponse,
|
|
2453
2479
|
});
|
|
2454
2480
|
expect(result).toMatchObject({
|
|
2455
2481
|
pass: false,
|
|
@@ -2471,16 +2497,18 @@ describe('runAssertion', () => {
|
|
|
2471
2497
|
});
|
|
2472
2498
|
it('should pass when the latency is 0ms', async () => {
|
|
2473
2499
|
const output = 'Expected output';
|
|
2500
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2501
|
+
const providerResponse = { output };
|
|
2474
2502
|
const result = await (0, assertions_1.runAssertion)({
|
|
2475
2503
|
prompt: 'Some prompt',
|
|
2476
|
-
provider
|
|
2504
|
+
provider,
|
|
2477
2505
|
assertion: {
|
|
2478
2506
|
type: 'latency',
|
|
2479
2507
|
threshold: 100,
|
|
2480
2508
|
},
|
|
2481
2509
|
latencyMs: 0,
|
|
2482
2510
|
test: {},
|
|
2483
|
-
providerResponse
|
|
2511
|
+
providerResponse,
|
|
2484
2512
|
});
|
|
2485
2513
|
expect(result).toMatchObject({
|
|
2486
2514
|
pass: true,
|
|
@@ -2502,16 +2530,18 @@ describe('runAssertion', () => {
|
|
|
2502
2530
|
});
|
|
2503
2531
|
it('should handle latency equal to threshold', async () => {
|
|
2504
2532
|
const output = 'Expected output';
|
|
2533
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
2534
|
+
const providerResponse = { output };
|
|
2505
2535
|
const result = await (0, assertions_1.runAssertion)({
|
|
2506
2536
|
prompt: 'Some prompt',
|
|
2507
|
-
provider
|
|
2537
|
+
provider,
|
|
2508
2538
|
assertion: {
|
|
2509
2539
|
type: 'latency',
|
|
2510
2540
|
threshold: 100,
|
|
2511
2541
|
},
|
|
2512
2542
|
latencyMs: 100,
|
|
2513
2543
|
test: {},
|
|
2514
|
-
providerResponse
|
|
2544
|
+
providerResponse,
|
|
2515
2545
|
});
|
|
2516
2546
|
expect(result).toMatchObject({
|
|
2517
2547
|
pass: true,
|
|
@@ -2525,6 +2555,7 @@ describe('runAssertion', () => {
|
|
|
2525
2555
|
const provider = {
|
|
2526
2556
|
callApi: jest.fn().mockResolvedValue({ logProbs }),
|
|
2527
2557
|
};
|
|
2558
|
+
const providerResponse = { output: 'Some output', logProbs };
|
|
2528
2559
|
const result = await (0, assertions_1.runAssertion)({
|
|
2529
2560
|
prompt: 'Some prompt',
|
|
2530
2561
|
provider,
|
|
@@ -2533,7 +2564,7 @@ describe('runAssertion', () => {
|
|
|
2533
2564
|
threshold: 2,
|
|
2534
2565
|
},
|
|
2535
2566
|
test: {},
|
|
2536
|
-
providerResponse
|
|
2567
|
+
providerResponse,
|
|
2537
2568
|
});
|
|
2538
2569
|
expect(result).toMatchObject({
|
|
2539
2570
|
pass: true,
|
|
@@ -2545,6 +2576,7 @@ describe('runAssertion', () => {
|
|
|
2545
2576
|
const provider = {
|
|
2546
2577
|
callApi: jest.fn().mockResolvedValue({ logProbs }),
|
|
2547
2578
|
};
|
|
2579
|
+
const providerResponse = { output: 'Some output', logProbs };
|
|
2548
2580
|
const result = await (0, assertions_1.runAssertion)({
|
|
2549
2581
|
prompt: 'Some prompt',
|
|
2550
2582
|
provider,
|
|
@@ -2553,7 +2585,7 @@ describe('runAssertion', () => {
|
|
|
2553
2585
|
threshold: 0.2,
|
|
2554
2586
|
},
|
|
2555
2587
|
test: {},
|
|
2556
|
-
providerResponse
|
|
2588
|
+
providerResponse,
|
|
2557
2589
|
});
|
|
2558
2590
|
expect(result).toMatchObject({
|
|
2559
2591
|
pass: false,
|
|
@@ -2567,6 +2599,7 @@ describe('runAssertion', () => {
|
|
|
2567
2599
|
const provider = {
|
|
2568
2600
|
callApi: jest.fn().mockResolvedValue({ logProbs }),
|
|
2569
2601
|
};
|
|
2602
|
+
const providerResponse = { output: 'Some output', logProbs };
|
|
2570
2603
|
const result = await (0, assertions_1.runAssertion)({
|
|
2571
2604
|
prompt: 'Some prompt',
|
|
2572
2605
|
provider,
|
|
@@ -2575,7 +2608,7 @@ describe('runAssertion', () => {
|
|
|
2575
2608
|
threshold: 0.25,
|
|
2576
2609
|
},
|
|
2577
2610
|
test: {},
|
|
2578
|
-
providerResponse
|
|
2611
|
+
providerResponse,
|
|
2579
2612
|
});
|
|
2580
2613
|
expect(result).toMatchObject({
|
|
2581
2614
|
pass: true,
|
|
@@ -2587,6 +2620,7 @@ describe('runAssertion', () => {
|
|
|
2587
2620
|
const provider = {
|
|
2588
2621
|
callApi: jest.fn().mockResolvedValue({ logProbs }),
|
|
2589
2622
|
};
|
|
2623
|
+
const providerResponse = { output: 'Some output', logProbs };
|
|
2590
2624
|
const result = await (0, assertions_1.runAssertion)({
|
|
2591
2625
|
prompt: 'Some prompt',
|
|
2592
2626
|
provider,
|
|
@@ -2595,7 +2629,7 @@ describe('runAssertion', () => {
|
|
|
2595
2629
|
threshold: 0.5,
|
|
2596
2630
|
},
|
|
2597
2631
|
test: {},
|
|
2598
|
-
providerResponse
|
|
2632
|
+
providerResponse,
|
|
2599
2633
|
});
|
|
2600
2634
|
expect(result).toMatchObject({
|
|
2601
2635
|
pass: false,
|
|
@@ -2609,6 +2643,7 @@ describe('runAssertion', () => {
|
|
|
2609
2643
|
const provider = {
|
|
2610
2644
|
callApi: jest.fn().mockResolvedValue({ cost }),
|
|
2611
2645
|
};
|
|
2646
|
+
const providerResponse = { output: 'Some output', cost };
|
|
2612
2647
|
const result = await (0, assertions_1.runAssertion)({
|
|
2613
2648
|
prompt: 'Some prompt',
|
|
2614
2649
|
provider,
|
|
@@ -2617,7 +2652,7 @@ describe('runAssertion', () => {
|
|
|
2617
2652
|
threshold: 0.001,
|
|
2618
2653
|
},
|
|
2619
2654
|
test: {},
|
|
2620
|
-
providerResponse
|
|
2655
|
+
providerResponse,
|
|
2621
2656
|
});
|
|
2622
2657
|
expect(result).toMatchObject({
|
|
2623
2658
|
pass: true,
|
|
@@ -2629,6 +2664,7 @@ describe('runAssertion', () => {
|
|
|
2629
2664
|
const provider = {
|
|
2630
2665
|
callApi: jest.fn().mockResolvedValue({ cost }),
|
|
2631
2666
|
};
|
|
2667
|
+
const providerResponse = { output: 'Some output', cost };
|
|
2632
2668
|
const result = await (0, assertions_1.runAssertion)({
|
|
2633
2669
|
prompt: 'Some prompt',
|
|
2634
2670
|
provider,
|
|
@@ -2637,7 +2673,7 @@ describe('runAssertion', () => {
|
|
|
2637
2673
|
threshold: 0.001,
|
|
2638
2674
|
},
|
|
2639
2675
|
test: {},
|
|
2640
|
-
providerResponse
|
|
2676
|
+
providerResponse,
|
|
2641
2677
|
});
|
|
2642
2678
|
expect(result).toMatchObject({
|
|
2643
2679
|
pass: false,
|
|
@@ -2648,30 +2684,32 @@ describe('runAssertion', () => {
|
|
|
2648
2684
|
describe('is-valid-openai-function-call assertion', () => {
|
|
2649
2685
|
it('should pass for a valid function call with correct arguments', async () => {
|
|
2650
2686
|
const output = { arguments: '{"x": 10, "y": 20}', name: 'add' };
|
|
2651
|
-
const
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
{
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
type: '
|
|
2660
|
-
|
|
2661
|
-
x: { type: 'number' },
|
|
2662
|
-
y: { type: 'number' },
|
|
2663
|
-
},
|
|
2664
|
-
required: ['x', 'y'],
|
|
2687
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('foo', {
|
|
2688
|
+
config: {
|
|
2689
|
+
functions: [
|
|
2690
|
+
{
|
|
2691
|
+
name: 'add',
|
|
2692
|
+
parameters: {
|
|
2693
|
+
type: 'object',
|
|
2694
|
+
properties: {
|
|
2695
|
+
x: { type: 'number' },
|
|
2696
|
+
y: { type: 'number' },
|
|
2665
2697
|
},
|
|
2698
|
+
required: ['x', 'y'],
|
|
2666
2699
|
},
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
}
|
|
2700
|
+
},
|
|
2701
|
+
],
|
|
2702
|
+
},
|
|
2703
|
+
});
|
|
2704
|
+
const providerResponse = { output };
|
|
2705
|
+
const result = await (0, assertions_1.runAssertion)({
|
|
2706
|
+
prompt: 'Some prompt',
|
|
2707
|
+
provider,
|
|
2670
2708
|
assertion: {
|
|
2671
2709
|
type: 'is-valid-openai-function-call',
|
|
2672
2710
|
},
|
|
2673
2711
|
test: {},
|
|
2674
|
-
providerResponse
|
|
2712
|
+
providerResponse,
|
|
2675
2713
|
});
|
|
2676
2714
|
expect(result).toMatchObject({
|
|
2677
2715
|
pass: true,
|