promptfoo 0.21.4 → 0.23.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.
Files changed (86) hide show
  1. package/README.md +40 -30
  2. package/dist/package.json +1 -1
  3. package/dist/src/assertions.d.ts +5 -3
  4. package/dist/src/assertions.d.ts.map +1 -1
  5. package/dist/src/assertions.js +42 -9
  6. package/dist/src/assertions.js.map +1 -1
  7. package/dist/src/evaluator.d.ts +1 -0
  8. package/dist/src/evaluator.d.ts.map +1 -1
  9. package/dist/src/evaluator.js +44 -5
  10. package/dist/src/evaluator.js.map +1 -1
  11. package/dist/src/index.d.ts +2 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +6 -0
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/main.js +9 -4
  16. package/dist/src/main.js.map +1 -1
  17. package/dist/src/matchers.d.ts +3 -1
  18. package/dist/src/matchers.d.ts.map +1 -1
  19. package/dist/src/matchers.js +163 -3
  20. package/dist/src/matchers.js.map +1 -1
  21. package/dist/src/prompts.d.ts +2 -0
  22. package/dist/src/prompts.d.ts.map +1 -1
  23. package/dist/src/prompts.js +45 -3
  24. package/dist/src/prompts.js.map +1 -1
  25. package/dist/src/providers/azureopenai.js +1 -1
  26. package/dist/src/providers/azureopenai.js.map +1 -1
  27. package/dist/src/providers/llama.d.ts +1 -1
  28. package/dist/src/providers/llama.d.ts.map +1 -1
  29. package/dist/src/providers/llama.js +18 -19
  30. package/dist/src/providers/llama.js.map +1 -1
  31. package/dist/src/providers/localai.js +1 -1
  32. package/dist/src/providers/localai.js.map +1 -1
  33. package/dist/src/providers/openai.js +1 -1
  34. package/dist/src/providers/openai.js.map +1 -1
  35. package/dist/src/providers/palm.d.ts +40 -0
  36. package/dist/src/providers/palm.d.ts.map +1 -0
  37. package/dist/src/providers/palm.js +93 -0
  38. package/dist/src/providers/palm.js.map +1 -0
  39. package/dist/src/providers/shared.d.ts +1 -5
  40. package/dist/src/providers/shared.d.ts.map +1 -1
  41. package/dist/src/providers/shared.js +4 -4
  42. package/dist/src/providers/shared.js.map +1 -1
  43. package/dist/src/providers/vertex.d.ts +51 -0
  44. package/dist/src/providers/vertex.d.ts.map +1 -0
  45. package/dist/src/providers/vertex.js +132 -0
  46. package/dist/src/providers/vertex.js.map +1 -0
  47. package/dist/src/providers.d.ts.map +1 -1
  48. package/dist/src/providers.js +11 -1
  49. package/dist/src/providers.js.map +1 -1
  50. package/dist/src/table.d.ts.map +1 -1
  51. package/dist/src/table.js +6 -1
  52. package/dist/src/table.js.map +1 -1
  53. package/dist/src/types.d.ts +23 -5
  54. package/dist/src/types.d.ts.map +1 -1
  55. package/dist/src/util.d.ts +3 -0
  56. package/dist/src/util.d.ts.map +1 -1
  57. package/dist/src/util.js +52 -21
  58. package/dist/src/util.js.map +1 -1
  59. package/dist/src/web/nextui/404/index.html +1 -1
  60. package/dist/src/web/nextui/404.html +1 -1
  61. package/dist/src/web/nextui/_next/static/chunks/613-b8dbbee738eefa17.js +1 -1
  62. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/not-found-14c00147c1eba0de.js +1 -0
  63. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/{page-319d2ee38d37574e.js → page-f49f9dde02e0609a.js} +1 -1
  64. package/dist/src/web/nextui/_next/static/chunks/app/eval/page-e7a68ae4a30dd34a.js +1 -0
  65. package/dist/src/web/nextui/_next/static/chunks/app/layout-d60ac3764e5cf889.js +1 -0
  66. package/dist/src/web/nextui/_next/static/chunks/app/{page-1ae60660130041b2.js → page-3d77d57947154b0c.js} +1 -1
  67. package/dist/src/web/nextui/_next/static/chunks/app/setup/page-6ffcc85cc2fddd4f.js +1 -0
  68. package/dist/src/web/nextui/_next/static/chunks/{main-app-581ccf0003955b21.js → main-app-a18517c2b68322ff.js} +1 -1
  69. package/dist/src/web/nextui/_next/static/chunks/webpack-dcf86e6c452ed420.js +1 -0
  70. package/dist/src/web/nextui/_next/static/css/16c1dd82fc87c9d7.css +1 -0
  71. package/dist/src/web/nextui/_next/static/css/{408b930062eabefb.css → ff2293947f885320.css} +1 -1
  72. package/dist/src/web/nextui/eval/index.html +1 -1
  73. package/dist/src/web/nextui/eval/index.txt +6 -6
  74. package/dist/src/web/nextui/index.html +1 -1
  75. package/dist/src/web/nextui/index.txt +5 -5
  76. package/dist/src/web/nextui/setup/index.html +2 -2
  77. package/dist/src/web/nextui/setup/index.txt +9 -9
  78. package/package.json +1 -1
  79. package/dist/src/web/nextui/_next/static/chunks/app/eval/[id]/not-found-366629541fd598e9.js +0 -1
  80. package/dist/src/web/nextui/_next/static/chunks/app/eval/page-a6b1ff91723b7beb.js +0 -1
  81. package/dist/src/web/nextui/_next/static/chunks/app/layout-19c92c911a7607b5.js +0 -1
  82. package/dist/src/web/nextui/_next/static/chunks/app/setup/page-4b0585deaf7eff9e.js +0 -1
  83. package/dist/src/web/nextui/_next/static/chunks/webpack-c173e301236a84c2.js +0 -1
  84. package/dist/src/web/nextui/_next/static/css/4d399fceacd06992.css +0 -1
  85. /package/dist/src/web/nextui/_next/static/{JbATVGuab-lA7B4krURUN → DnQDUETrvmnRwmEIY4Deh}/_buildManifest.js +0 -0
  86. /package/dist/src/web/nextui/_next/static/{JbATVGuab-lA7B4krURUN → DnQDUETrvmnRwmEIY4Deh}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -13,7 +13,7 @@ With promptfoo, you can:
13
13
  - **Speed up evaluations** with caching and concurrency
14
14
  - **Score outputs automatically** by defining test cases
15
15
  - Use as a CLI, library, or in CI/CD
16
- - Use OpenAI, Anthropic, Azure, open-source models like Llama, or integrate custom API providers for any LLM API
16
+ - Use OpenAI, Anthropic, Azure, Google, open-source models like Llama, or integrate custom API providers for any LLM API
17
17
 
18
18
  The goal: **test-driven prompt engineering**, rather than trial-and-error.
19
19
 
@@ -63,9 +63,7 @@ See the [Configuration docs](https://www.promptfoo.dev/docs/configuration/guide)
63
63
 
64
64
  ```yaml
65
65
  prompts: [prompt1.txt, prompt2.txt]
66
- providers: [openai:gpt-3.5-turbo, localai:chat:vicuna]
67
- defaultTest:
68
- assert:
66
+ providers: [openai:gpt-3.5-turbo, ollama:llama2:70b]
69
67
  tests:
70
68
  - description: 'Test translation to French'
71
69
  vars:
@@ -74,41 +72,44 @@ tests:
74
72
  assert:
75
73
  - type: contains-json
76
74
  - type: javascript
77
- value: output.startsWith('Bonjour')
75
+ value: output.length < 100
76
+
78
77
  - description: 'Test translation to German'
79
78
  vars:
80
79
  language: German
81
80
  input: How's it going?
82
81
  assert:
82
+ - type: model-graded-closedqa
83
+ value: does not describe self as an AI, model, or chatbot
83
84
  - type: similar
84
85
  value: was geht
85
86
  threshold: 0.6 # cosine similarity
86
- - type: llm-rubric
87
- value: does not describe self as an AI, model, or chatbot
88
87
  ```
89
88
 
90
89
  ### Supported assertion types
91
90
 
92
91
  See [Test assertions](https://promptfoo.dev/docs/configuration/expected-outputs) for full details.
93
92
 
94
- | Assertion Type | Returns true if... |
95
- | --------------- | ------------------------------------------------------------------------- |
96
- | `equals` | output matches exactly |
97
- | `contains` | output contains substring |
98
- | `icontains` | output contains substring, case insensitive |
99
- | `regex` | output matches regex |
100
- | `starts-with` | output starts with string |
101
- | `contains-any ` | output contains any of the listed substrings |
102
- | `contains-all` | output contains all list of substrings |
103
- | `is-json` | output is valid json (optional json schema validation) |
104
- | `contains-json` | output contains valid json (optional json schema validation) |
105
- | `javascript` | provided Javascript function validates the output |
106
- | `python` | provided Python function validates the output |
107
- | `webhook` | provided webhook returns `{pass: true}` |
108
- | `similar` | embeddings and cosine similarity are above a threshold |
109
- | `llm-rubric` | LLM output matches a given rubric, using a Language Model to grade output |
110
- | `rouge-n` | Rouge-N score is above a given threshold |
111
- | `levenshtein` | Levenshtein distance is below a threshold |
93
+ | Assertion Type | Returns true if... |
94
+ | ------------------------- | ------------------------------------------------------------------------------- |
95
+ | `equals` | output matches exactly |
96
+ | `contains` | output contains substring |
97
+ | `icontains` | output contains substring, case insensitive |
98
+ | `regex` | output matches regex |
99
+ | `starts-with` | output starts with string |
100
+ | `contains-any ` | output contains any of the listed substrings |
101
+ | `contains-all` | output contains all list of substrings |
102
+ | `is-json` | output is valid json (optional json schema validation) |
103
+ | `contains-json` | output contains valid json (optional json schema validation) |
104
+ | `javascript` | provided Javascript function validates the output |
105
+ | `python` | provided Python function validates the output |
106
+ | `webhook` | provided webhook returns `{pass: true}` |
107
+ | `similar` | embeddings and cosine similarity are above a threshold |
108
+ | `llm-rubric` | LLM output matches a given rubric, using a Language Model to grade output |
109
+ | `model-graded-factuality` | LLM output adheres to the given facts, using Factuality method from OpenAI eval |
110
+ | `model-graded-closedqa` | LLM output adheres to given criteria, using Closed QA method from OpenAI eval |
111
+ | `rouge-n` | Rouge-N score is above a given threshold |
112
+ | `levenshtein` | Levenshtein distance is below a threshold |
112
113
 
113
114
  Every test type can be negated by prepending `not-`. For example, `not-equals` or `not-regex`.
114
115
 
@@ -188,7 +189,7 @@ You can also use `promptfoo` as a library in your project by importing the `eval
188
189
  - `testSuite`: the Javascript equivalent of the promptfooconfig.yaml
189
190
 
190
191
  ```typescript
191
- interface TestSuiteConfig {
192
+ interface EvaluateTestSuite {
192
193
  providers: string[]; // Valid provider name (e.g. openai:gpt-3.5-turbo)
193
194
  prompts: string[]; // List of prompts
194
195
  tests: string | TestCase[]; // Path to a CSV file, or list of test cases
@@ -198,18 +199,27 @@ You can also use `promptfoo` as a library in your project by importing the `eval
198
199
  }
199
200
 
200
201
  interface TestCase {
202
+ // Optional description of what you're testing
201
203
  description?: string;
202
- vars?: Record<string, string>;
204
+
205
+ // Key-value pairs to substitute in the prompt
206
+ vars?: Record<string, string | string[] | object>;
207
+
208
+ // Optional list of automatic checks to run on the LLM output
203
209
  assert?: Assertion[];
204
210
 
205
- prompt?: PromptConfig;
206
- grading?: GradingConfig;
211
+ // Additional configuration settings for the prompt
212
+ options?: PromptConfig & OutputConfig & GradingConfig;
213
+
214
+ // The required score for this test case. If not provided, the test case is graded pass/fail.
215
+ threshold?: number;
207
216
  }
208
217
 
209
218
  interface Assertion {
210
219
  type: string;
211
220
  value?: string;
212
- threshold?: number; // For similarity assertions
221
+ threshold?: number; // Required score for pass
222
+ weight?: number; // The weight of this assertion compared to other assertions in the test case. Defaults to 1.
213
223
  provider?: ApiProvider; // For assertions that require an LLM provider
214
224
  }
215
225
  ```
package/dist/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "promptfoo",
3
3
  "description": "LLM eval & testing toolkit",
4
4
  "author": "Ian Webster",
5
- "version": "0.21.4",
5
+ "version": "0.23.0",
6
6
  "license": "MIT",
7
7
  "type": "commonjs",
8
8
  "main": "dist/src/index.js",
@@ -1,11 +1,13 @@
1
- import { matchesSimilarity, matchesLlmRubric } from './matchers';
1
+ import { matchesSimilarity, matchesLlmRubric, matchesFactuality, matchesClosedQa } from './matchers';
2
2
  import type { Assertion, GradingResult, AtomicTestCase } from './types';
3
- export declare function runAssertions(test: AtomicTestCase, output: string): Promise<GradingResult>;
4
- export declare function runAssertion(assertion: Assertion, test: AtomicTestCase, output: string): Promise<GradingResult>;
3
+ export declare function runAssertions(prompt: string, test: AtomicTestCase, output: string): Promise<GradingResult>;
4
+ export declare function runAssertion(prompt: string, assertion: Assertion, test: AtomicTestCase, output: string): Promise<GradingResult>;
5
5
  export declare function assertionFromString(expected: string): Assertion;
6
6
  declare const _default: {
7
7
  matchesSimilarity: typeof matchesSimilarity;
8
8
  matchesLlmRubric: typeof matchesLlmRubric;
9
+ matchesFactuality: typeof matchesFactuality;
10
+ matchesClosedQa: typeof matchesClosedQa;
9
11
  };
10
12
  export default _default;
11
13
  //# sourceMappingURL=assertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/assertions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAiB,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAiCvF,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA4DhG;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CA0ZxB;AAmBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CA6D/D;;;;;AAGD,wBAGE"}
1
+ {"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/assertions.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAiB,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAiCvF,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAocxB;AAmBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CA6D/D;;;;;;;AAGD,wBAKE"}
@@ -28,7 +28,7 @@ function handleRougeScore(baseType, assertion, expected, output, inverted) {
28
28
  assertion,
29
29
  };
30
30
  }
31
- async function runAssertions(test, output) {
31
+ async function runAssertions(prompt, test, output) {
32
32
  const tokensUsed = {
33
33
  total: 0,
34
34
  prompt: 0,
@@ -45,7 +45,7 @@ async function runAssertions(test, output) {
45
45
  for (const assertion of test.assert) {
46
46
  const weight = assertion.weight || 1;
47
47
  totalWeight += weight;
48
- const result = await runAssertion(assertion, test, output);
48
+ const result = await runAssertion(prompt, assertion, test, output);
49
49
  totalScore += result.score * weight;
50
50
  componentResults.push(result);
51
51
  if (result.tokensUsed) {
@@ -83,7 +83,7 @@ async function runAssertions(test, output) {
83
83
  };
84
84
  }
85
85
  exports.runAssertions = runAssertions;
86
- async function runAssertion(assertion, test, output) {
86
+ async function runAssertion(prompt, assertion, test, output) {
87
87
  let pass = false;
88
88
  let score = 0.0;
89
89
  (0, tiny_invariant_1.default)(assertion.type, `Assertion must have a type: ${JSON.stringify(assertion)}`);
@@ -180,7 +180,7 @@ async function runAssertion(assertion, test, output) {
180
180
  }
181
181
  if (baseType === 'regex') {
182
182
  (0, tiny_invariant_1.default)(renderedValue, '"regex" assertion type must have a string value');
183
- (0, tiny_invariant_1.default)(typeof renderedValue === 'string', '"contains" assertion type must have a string value');
183
+ (0, tiny_invariant_1.default)(typeof renderedValue === 'string', '"regex" assertion type must have a string value');
184
184
  const regex = new RegExp(renderedValue);
185
185
  pass = regex.test(output) !== inverse;
186
186
  return {
@@ -242,6 +242,7 @@ async function runAssertion(assertion, test, output) {
242
242
  };
243
243
  }
244
244
  const context = {
245
+ prompt,
245
246
  vars: test.vars || {},
246
247
  };
247
248
  if (baseType === 'javascript') {
@@ -341,16 +342,45 @@ ${assertion.value}`,
341
342
  };
342
343
  }
343
344
  if (baseType === 'similar') {
344
- (0, tiny_invariant_1.default)(renderedValue, 'Similarity assertion must have a string value');
345
- (0, tiny_invariant_1.default)(typeof renderedValue === 'string', '"contains" assertion type must have a string value');
345
+ (0, tiny_invariant_1.default)(typeof renderedValue === 'string', 'Similarity assertion type must have a string value');
346
346
  return {
347
347
  assertion,
348
348
  ...(await (0, matchers_1.matchesSimilarity)(renderedValue, output, assertion.threshold || 0.75, inverse)),
349
349
  };
350
350
  }
351
351
  if (baseType === 'llm-rubric') {
352
- (0, tiny_invariant_1.default)(renderedValue, 'Similarity assertion must have a string value');
353
- (0, tiny_invariant_1.default)(typeof renderedValue === 'string', '"contains" assertion type must have a string value');
352
+ (0, tiny_invariant_1.default)(typeof renderedValue === 'string' || typeof renderedValue === 'undefined', '"llm-rubric" assertion type must have a string value');
353
+ // Assertion provider overrides test provider
354
+ test.options = test.options || {};
355
+ test.options.provider = assertion.provider || test.options.provider;
356
+ test.options.rubricPrompt = assertion.rubricPrompt || test.options.rubricPrompt;
357
+ if (test.options.rubricPrompt) {
358
+ if (typeof test.options.rubricPrompt === 'object') {
359
+ test.options.rubricPrompt = JSON.stringify(test.options.rubricPrompt);
360
+ }
361
+ }
362
+ return {
363
+ assertion,
364
+ ...(await (0, matchers_1.matchesLlmRubric)(renderedValue || '', output, test.options, test.vars)),
365
+ };
366
+ }
367
+ if (baseType === 'model-graded-factuality') {
368
+ (0, tiny_invariant_1.default)(typeof renderedValue === 'string', 'model-graded-factuality assertion type must have a string value');
369
+ // Assertion provider overrides test provider
370
+ test.options = test.options || {};
371
+ test.options.provider = assertion.provider || test.options.provider;
372
+ test.options.rubricPrompt = assertion.rubricPrompt || test.options.rubricPrompt;
373
+ if (test.options.rubricPrompt) {
374
+ // Substitute vars in prompt
375
+ test.options.rubricPrompt = nunjucks.renderString(test.options.rubricPrompt, test.vars || {});
376
+ }
377
+ return {
378
+ assertion,
379
+ ...(await (0, matchers_1.matchesFactuality)(prompt, renderedValue, output, test.options, test.vars)),
380
+ };
381
+ }
382
+ if (baseType === 'model-graded-closedqa') {
383
+ (0, tiny_invariant_1.default)(typeof renderedValue === 'string', 'model-graded-closedqa assertion type must have a string value');
354
384
  // Assertion provider overrides test provider
355
385
  test.options = test.options || {};
356
386
  test.options.provider = assertion.provider || test.options.provider;
@@ -361,7 +391,7 @@ ${assertion.value}`,
361
391
  }
362
392
  return {
363
393
  assertion,
364
- ...(await (0, matchers_1.matchesLlmRubric)(renderedValue, output, test.options)),
394
+ ...(await (0, matchers_1.matchesClosedQa)(prompt, renderedValue, output, test.options, test.vars)),
365
395
  };
366
396
  }
367
397
  if (baseType === 'webhook') {
@@ -369,6 +399,7 @@ ${assertion.value}`,
369
399
  (0, tiny_invariant_1.default)(typeof renderedValue === 'string', '"webhook" assertion type must have a URL value');
370
400
  try {
371
401
  const context = {
402
+ prompt,
372
403
  vars: test.vars || {},
373
404
  };
374
405
  const response = await (0, util_1.fetchWithRetries)(renderedValue, {
@@ -504,5 +535,7 @@ exports.assertionFromString = assertionFromString;
504
535
  exports.default = {
505
536
  matchesSimilarity: matchers_1.matchesSimilarity,
506
537
  matchesLlmRubric: matchers_1.matchesLlmRubric,
538
+ matchesFactuality: matchers_1.matchesFactuality,
539
+ matchesClosedQa: matchers_1.matchesClosedQa,
507
540
  };
508
541
  //# sourceMappingURL=assertions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/assertions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/assertions.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { EvaluateOptions, EvaluateSummary, TestSuite } from './types';
2
+ export declare function renderPrompt(rawPrompt: string, vars: Record<string, string | object>): string;
2
3
  export declare function evaluate(testSuite: TestSuite, options: EvaluateOptions): Promise<EvaluateSummary>;
3
4
  //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/evaluator.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,eAAe,EAGf,eAAe,EAEf,SAAS,EAIV,MAAM,SAAS,CAAC;AAsejB,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,4BAGtE"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/evaluator.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,eAAe,EAGf,eAAe,EAEf,SAAS,EAIV,MAAM,SAAS,CAAC;AAiDjB,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CA+B7F;AA8bD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,4BAGtE"}
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.evaluate = void 0;
29
+ exports.evaluate = exports.renderPrompt = void 0;
30
30
  const readline_1 = __importDefault(require("readline"));
31
31
  const async_1 = __importDefault(require("async"));
32
32
  const chalk_1 = __importDefault(require("chalk"));
@@ -58,6 +58,38 @@ function generateVarCombinations(vars) {
58
58
  }
59
59
  return combinations;
60
60
  }
61
+ function renderPrompt(rawPrompt, vars) {
62
+ try {
63
+ if (process.env.PROMPTFOO_DISABLE_JSON_AUTOESCAPE) {
64
+ return nunjucks.renderString(rawPrompt, vars);
65
+ }
66
+ const parsed = JSON.parse(rawPrompt);
67
+ // Remove any trailing newlines from vars
68
+ for (const key of Object.keys(vars)) {
69
+ if (typeof vars[key] === 'string') {
70
+ vars[key] = vars[key].replace(/\n$/, '');
71
+ }
72
+ }
73
+ // The _raw_ prompt is valid JSON. That means that the user likely wants to substitute vars _within_ the JSON itself.
74
+ // Recursively walk the JSON structure. If we find a string, render it with nunjucks.
75
+ const walk = (obj) => {
76
+ if (typeof obj === 'string') {
77
+ return nunjucks.renderString(obj, vars);
78
+ }
79
+ else if (typeof obj === 'object') {
80
+ for (const key of Object.keys(obj)) {
81
+ obj[key] = walk(obj[key]);
82
+ }
83
+ }
84
+ return obj;
85
+ };
86
+ return JSON.stringify(walk(parsed));
87
+ }
88
+ catch (err) {
89
+ return nunjucks.renderString(rawPrompt, vars);
90
+ }
91
+ }
92
+ exports.renderPrompt = renderPrompt;
61
93
  class Evaluator {
62
94
  constructor(testSuite, options) {
63
95
  this.testSuite = testSuite;
@@ -75,13 +107,16 @@ class Evaluator {
75
107
  }
76
108
  async runEval({ provider, prompt, test, includeProviderId, delay, }) {
77
109
  const vars = test.vars || {};
78
- const renderedPrompt = nunjucks.renderString(prompt.raw, vars);
110
+ const renderedPrompt = renderPrompt(prompt.raw, vars);
79
111
  // Note that we're using original prompt, not renderedPrompt
80
112
  let promptDisplay = prompt.display;
81
113
  if (includeProviderId) {
82
114
  promptDisplay = `[${provider.id()}] ${promptDisplay}`;
83
115
  }
84
116
  const setup = {
117
+ provider: {
118
+ id: provider.id(),
119
+ },
85
120
  prompt: {
86
121
  raw: renderedPrompt,
87
122
  display: promptDisplay,
@@ -91,7 +126,9 @@ class Evaluator {
91
126
  let latencyMs = 0;
92
127
  try {
93
128
  const startTime = Date.now();
94
- const response = await provider.callApi(renderedPrompt);
129
+ const response = await provider.callApi(renderedPrompt, {
130
+ vars,
131
+ });
95
132
  const endTime = Date.now();
96
133
  latencyMs = endTime - startTime;
97
134
  if (!response.cached) {
@@ -120,13 +157,15 @@ class Evaluator {
120
157
  if (test.options?.postprocess) {
121
158
  const { postprocess } = test.options;
122
159
  const postprocessFn = new Function('output', 'context', postprocess.includes('\n') ? postprocess : `return ${postprocess}`);
123
- processedResponse.output = postprocessFn(processedResponse.output);
160
+ processedResponse.output = postprocessFn(processedResponse.output, {
161
+ vars,
162
+ });
124
163
  if (processedResponse.output == null) {
125
164
  throw new Error('Postprocess function did not return a value');
126
165
  }
127
166
  }
128
167
  (0, tiny_invariant_1.default)(processedResponse.output != null, 'Response output should not be null');
129
- const checkResult = await (0, assertions_1.runAssertions)(test, processedResponse.output);
168
+ const checkResult = await (0, assertions_1.runAssertions)(renderedPrompt, test, processedResponse.output);
130
169
  if (!checkResult.pass) {
131
170
  ret.error = checkResult.reason;
132
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/evaluator.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ declare const _default: {
10
10
  assertions: {
11
11
  matchesSimilarity: typeof import("./matchers").matchesSimilarity;
12
12
  matchesLlmRubric: typeof import("./matchers").matchesLlmRubric;
13
+ matchesFactuality: typeof import("./matchers").matchesFactuality;
14
+ matchesClosedQa: typeof import("./matchers").matchesClosedQa;
13
15
  };
14
16
  providers: {
15
17
  OpenAiCompletionProvider: typeof import("./providers/openai").OpenAiCompletionProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKzD,OAAO,KAAK,EAAE,eAAe,EAAa,iBAAiB,EAAmB,MAAM,SAAS,CAAC;AAE9F,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,iBAAe,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,8CAmDlF;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;;;;;;;;;;;;;;;;;AAE3C,wBAIE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMzD,OAAO,KAAK,EAAE,eAAe,EAAa,iBAAiB,EAAmB,MAAM,SAAS,CAAC;AAE9F,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,iBAAe,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,8CAwDlF;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;;;;;;;;;;;;;;;;;;;AAE3C,wBAIE"}
package/dist/src/index.js CHANGED
@@ -36,6 +36,7 @@ exports.assertions = assertions_1.default;
36
36
  const providers_1 = __importStar(require("./providers"));
37
37
  exports.providers = providers_1.default;
38
38
  const telemetry_1 = __importDefault(require("./telemetry"));
39
+ const cache_1 = require("./cache");
39
40
  const evaluator_1 = require("./evaluator");
40
41
  const providers_2 = require("./providers");
41
42
  const util_1 = require("./util");
@@ -78,7 +79,12 @@ async function evaluate(testSuite, options = {}) {
78
79
  }
79
80
  }
80
81
  }
82
+ // Other settings
83
+ if (options.cache === false) {
84
+ (0, cache_1.disableCache)();
85
+ }
81
86
  telemetry_1.default.maybeShowNotice();
87
+ // Run the eval!
82
88
  const ret = await (0, evaluator_1.evaluate)(constructedTestSuite, options);
83
89
  if (testSuite.outputPath) {
84
90
  (0, util_1.writeOutput)(testSuite.outputPath, ret, testSuite, null);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAuC;AAEvC,8DAAsC;AAiEnB,qBAjEZ,oBAAU,CAiEY;AAhE7B,yDAAyD;AAgE1B,oBAhExB,mBAAS,CAgEwB;AA/DxC,4DAAoC;AACpC,2CAAqD;AACrD,2CAA+C;AAC/C,iCAAoE;AAGpE,0CAAwB;AAExB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,KAAK,UAAU,QAAQ,CAAC,SAA4B,EAAE,UAA2B,EAAE;IACjF,MAAM,oBAAoB,GAAc;QACtC,GAAG,SAAS;QACZ,SAAS,EAAE,MAAM,IAAA,4BAAgB,EAAC,SAAS,CAAC,SAAS,EAAE;YACrD,GAAG,EAAE,SAAS,CAAC,GAAG;SACnB,CAAC;QACF,KAAK,EAAE,MAAM,IAAA,gBAAS,EAAC,SAAS,CAAC,KAAK,CAAC;QAEvC,wCAAwC;QACxC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;KACJ,CAAC;IAEF,2BAA2B;IAC3B,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,KAAK,IAAI,EAAE,EAAE;QACnD,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE;YACzE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACtE;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;gBACnC,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACtB,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,QAA2B,CAAC;wBACrD,IAAA,wBAAS,EAAC,MAAM,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC;wBACxD,SAAS,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC5E;yBAAM,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBACjD,SAAS,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;qBAChE;yBAAM;wBACL,0CAA0C;qBAC3C;iBACF;aACF;SACF;KACF;IAED,mBAAS,CAAC,eAAe,EAAE,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAU,EAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAE5D,IAAI,SAAS,CAAC,UAAU,EAAE;QACxB,IAAA,kBAAW,EAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACzD;IAED,IAAI,SAAS,CAAC,kBAAkB,EAAE;QAChC,IAAA,yBAAkB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;KACpC;IAED,MAAM,mBAAS,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC;AAEQ,4BAAQ;AAEjB,kBAAe;IACb,QAAQ;IACR,UAAU,EAAV,oBAAU;IACV,SAAS,EAAT,mBAAS;CACV,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAuC;AAEvC,8DAAsC;AAuEnB,qBAvEZ,oBAAU,CAuEY;AAtE7B,yDAAyD;AAsE1B,oBAtExB,mBAAS,CAsEwB;AArExC,4DAAoC;AACpC,mCAAuC;AACvC,2CAAqD;AACrD,2CAA+C;AAC/C,iCAAoE;AAGpE,0CAAwB;AAExB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,KAAK,UAAU,QAAQ,CAAC,SAA4B,EAAE,UAA2B,EAAE;IACjF,MAAM,oBAAoB,GAAc;QACtC,GAAG,SAAS;QACZ,SAAS,EAAE,MAAM,IAAA,4BAAgB,EAAC,SAAS,CAAC,SAAS,EAAE;YACrD,GAAG,EAAE,SAAS,CAAC,GAAG;SACnB,CAAC;QACF,KAAK,EAAE,MAAM,IAAA,gBAAS,EAAC,SAAS,CAAC,KAAK,CAAC;QAEvC,wCAAwC;QACxC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;KACJ,CAAC;IAEF,2BAA2B;IAC3B,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,KAAK,IAAI,EAAE,EAAE;QACnD,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE;YACzE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SACtE;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;gBACnC,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACtB,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,QAA2B,CAAC;wBACrD,IAAA,wBAAS,EAAC,MAAM,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC;wBACxD,SAAS,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;qBAC5E;yBAAM,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;wBACjD,SAAS,CAAC,QAAQ,GAAG,MAAM,IAAA,2BAAe,EAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;qBAChE;yBAAM;wBACL,0CAA0C;qBAC3C;iBACF;aACF;SACF;KACF;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;QAC3B,IAAA,oBAAY,GAAE,CAAC;KAChB;IACD,mBAAS,CAAC,eAAe,EAAE,CAAC;IAE5B,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAU,EAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAE5D,IAAI,SAAS,CAAC,UAAU,EAAE;QACxB,IAAA,kBAAW,EAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACzD;IAED,IAAI,SAAS,CAAC,kBAAkB,EAAE;QAChC,IAAA,yBAAkB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;KACpC;IAED,MAAM,mBAAS,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC;AAEQ,4BAAQ;AAEjB,kBAAe;IACb,QAAQ;IACR,UAAU,EAAV,oBAAU;IACV,SAAS,EAAT,mBAAS;CACV,CAAC"}
package/dist/src/main.js CHANGED
@@ -205,7 +205,9 @@ async function main() {
205
205
  .option('--prompt-prefix <path>', 'This prefix is prepended to every prompt', defaultConfig.defaultTest?.options?.prefix)
206
206
  .option('--prompt-suffix <path>', 'This suffix is append to every prompt', defaultConfig.defaultTest?.options?.suffix)
207
207
  .option('--no-write', 'Do not write results to promptfoo directory', defaultConfig?.commandLineOptions?.write)
208
- .option('--no-cache', 'Do not read or write results to disk cache', defaultConfig?.commandLineOptions?.cache)
208
+ .option('--no-cache', 'Do not read or write results to disk cache',
209
+ // TODO(ian): Remove commandLineOptions.cache in v1
210
+ defaultConfig?.commandLineOptions?.cache ?? defaultConfig?.evaluateOptions?.cache)
209
211
  .option('--no-progress-bar', 'Do not show progress bar')
210
212
  .option('--no-table', 'Do not output table in CLI', defaultConfig?.commandLineOptions?.table)
211
213
  .option('--share', 'Create a shareable URL', defaultConfig?.commandLineOptions?.share)
@@ -226,6 +228,9 @@ async function main() {
226
228
  if (configPath) {
227
229
  fileConfig = await (0, util_1.readConfig)(configPath);
228
230
  }
231
+ // Use basepath in cases where path was supplied in the config file
232
+ const basePath = configPath ? (0, path_1.dirname)(configPath) : '';
233
+ const defaultTestRaw = fileConfig.defaultTest || defaultConfig.defaultTest;
229
234
  const config = {
230
235
  prompts: cmdObj.prompts || fileConfig.prompts || defaultConfig.prompts,
231
236
  providers: cmdObj.providers || fileConfig.providers || defaultConfig.providers,
@@ -234,7 +239,9 @@ async function main() {
234
239
  sharing: process.env.PROMPTFOO_DISABLE_SHARING === '1'
235
240
  ? false
236
241
  : fileConfig.sharing ?? defaultConfig.sharing ?? true,
237
- defaultTest: fileConfig.defaultTest || defaultConfig.defaultTest,
242
+ defaultTest: typeof defaultTestRaw === 'string'
243
+ ? await (0, util_1.readTest)(defaultTestRaw, basePath)
244
+ : defaultTestRaw,
238
245
  };
239
246
  // Validation
240
247
  if (!config.prompts || config.prompts.length === 0) {
@@ -246,8 +253,6 @@ async function main() {
246
253
  process.exit(1);
247
254
  }
248
255
  // Parse prompts, providers, and tests
249
- // Use basepath in cases where path was supplied in the config file
250
- const basePath = configPath ? (0, path_1.dirname)(configPath) : '';
251
256
  const parsedPrompts = (0, util_1.readPrompts)(config.prompts, cmdObj.prompts ? undefined : basePath);
252
257
  const parsedProviders = await (0, providers_1.loadApiProviders)(config.providers, { basePath });
253
258
  const parsedTests = await (0, util_1.readTests)(config.tests, cmdObj.tests ? undefined : basePath);