promptfoo 0.93.2 → 0.94.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 (267) hide show
  1. package/dist/drizzle/0008_broad_boomer.sql +2 -0
  2. package/dist/drizzle/0009_strong_marten_broadcloak.sql +19 -0
  3. package/dist/drizzle/meta/0008_snapshot.json +732 -0
  4. package/dist/drizzle/meta/0009_snapshot.json +622 -0
  5. package/dist/drizzle/meta/_journal.json +14 -0
  6. package/dist/package.json +16 -19
  7. package/dist/src/app/assets/index-CKeaKcHn.css +1 -0
  8. package/dist/src/app/assets/index-D0jdLrEN.js +769 -0
  9. package/dist/src/app/assets/{index.es-C_NMLMrz.js → index.es-BExeKHIA.js} +1 -1
  10. package/dist/src/app/assets/{sync-C0Slgwbm.js → sync-B6HKT-pd.js} +1 -1
  11. package/dist/src/app/index.html +3 -3
  12. package/dist/src/{assertions.d.ts → assertions/index.d.ts} +4 -4
  13. package/dist/src/assertions/index.d.ts.map +1 -0
  14. package/dist/src/{assertions.js → assertions/index.js} +33 -45
  15. package/dist/src/assertions/index.js.map +1 -0
  16. package/dist/src/assertions/utils.d.ts +4 -0
  17. package/dist/src/assertions/utils.d.ts.map +1 -0
  18. package/dist/src/assertions/utils.js +39 -0
  19. package/dist/src/assertions/utils.js.map +1 -0
  20. package/dist/src/cache.d.ts +0 -1
  21. package/dist/src/cache.d.ts.map +1 -1
  22. package/dist/src/cache.js.map +1 -1
  23. package/dist/src/commands/auth.d.ts.map +1 -1
  24. package/dist/src/commands/auth.js +25 -18
  25. package/dist/src/commands/auth.js.map +1 -1
  26. package/dist/src/commands/config.d.ts.map +1 -1
  27. package/dist/src/commands/config.js +41 -8
  28. package/dist/src/commands/config.js.map +1 -1
  29. package/dist/src/commands/eval.d.ts.map +1 -1
  30. package/dist/src/commands/eval.js +37 -19
  31. package/dist/src/commands/eval.js.map +1 -1
  32. package/dist/src/commands/init.d.ts.map +1 -1
  33. package/dist/src/commands/init.js +3 -4
  34. package/dist/src/commands/init.js.map +1 -1
  35. package/dist/src/database/index.d.ts.map +1 -1
  36. package/dist/src/database/index.js +4 -1
  37. package/dist/src/database/index.js.map +1 -1
  38. package/dist/src/database/tables.d.ts +0 -114
  39. package/dist/src/database/tables.d.ts.map +1 -1
  40. package/dist/src/database/tables.js +7 -34
  41. package/dist/src/database/tables.js.map +1 -1
  42. package/dist/src/envars.d.ts +8 -5
  43. package/dist/src/envars.d.ts.map +1 -1
  44. package/dist/src/envars.js.map +1 -1
  45. package/dist/src/evaluator.d.ts.map +1 -1
  46. package/dist/src/evaluator.js +0 -5
  47. package/dist/src/evaluator.js.map +1 -1
  48. package/dist/src/fetch.d.ts +0 -1
  49. package/dist/src/fetch.d.ts.map +1 -1
  50. package/dist/src/fetch.js +3 -4
  51. package/dist/src/fetch.js.map +1 -1
  52. package/dist/src/globalConfig/cloud.d.ts +22 -1
  53. package/dist/src/globalConfig/cloud.d.ts.map +1 -1
  54. package/dist/src/globalConfig/cloud.js +5 -0
  55. package/dist/src/globalConfig/cloud.js.map +1 -1
  56. package/dist/src/googleSheets.d.ts.map +1 -1
  57. package/dist/src/googleSheets.js +13 -2
  58. package/dist/src/googleSheets.js.map +1 -1
  59. package/dist/src/integrations/portkey.d.ts.map +1 -1
  60. package/dist/src/integrations/portkey.js +1 -2
  61. package/dist/src/integrations/portkey.js.map +1 -1
  62. package/dist/src/models/eval.d.ts +1 -3
  63. package/dist/src/models/eval.d.ts.map +1 -1
  64. package/dist/src/models/eval.js +5 -21
  65. package/dist/src/models/eval.js.map +1 -1
  66. package/dist/src/models/evalResult.d.ts +2 -0
  67. package/dist/src/models/evalResult.d.ts.map +1 -1
  68. package/dist/src/models/evalResult.js +4 -1
  69. package/dist/src/models/evalResult.js.map +1 -1
  70. package/dist/src/onboarding.d.ts +1 -1
  71. package/dist/src/onboarding.d.ts.map +1 -1
  72. package/dist/src/onboarding.js +8 -2
  73. package/dist/src/onboarding.js.map +1 -1
  74. package/dist/src/prompts/processors/javascript.d.ts +1 -0
  75. package/dist/src/prompts/processors/javascript.d.ts.map +1 -1
  76. package/dist/src/prompts/processors/javascript.js +6 -2
  77. package/dist/src/prompts/processors/javascript.js.map +1 -1
  78. package/dist/src/prompts/processors/python.d.ts +2 -0
  79. package/dist/src/prompts/processors/python.d.ts.map +1 -1
  80. package/dist/src/prompts/processors/python.js +4 -2
  81. package/dist/src/prompts/processors/python.js.map +1 -1
  82. package/dist/src/providers/anthropic.js +1 -1
  83. package/dist/src/providers/anthropic.js.map +1 -1
  84. package/dist/src/providers/bedrock.d.ts +4 -0
  85. package/dist/src/providers/bedrock.d.ts.map +1 -1
  86. package/dist/src/providers/bedrock.js +12 -0
  87. package/dist/src/providers/bedrock.js.map +1 -1
  88. package/dist/src/providers/fal.d.ts.map +1 -1
  89. package/dist/src/providers/fal.js +1 -2
  90. package/dist/src/providers/fal.js.map +1 -1
  91. package/dist/src/providers/http.d.ts +6 -2
  92. package/dist/src/providers/http.d.ts.map +1 -1
  93. package/dist/src/providers/http.js +70 -29
  94. package/dist/src/providers/http.js.map +1 -1
  95. package/dist/src/providers/openai.d.ts.map +1 -1
  96. package/dist/src/providers/openai.js +39 -30
  97. package/dist/src/providers/openai.js.map +1 -1
  98. package/dist/src/providers/palm.d.ts.map +1 -1
  99. package/dist/src/providers/palm.js +3 -1
  100. package/dist/src/providers/palm.js.map +1 -1
  101. package/dist/src/providers/replicate.d.ts.map +1 -1
  102. package/dist/src/providers/replicate.js +2 -3
  103. package/dist/src/providers/replicate.js.map +1 -1
  104. package/dist/src/providers/togetherai.d.ts +7 -0
  105. package/dist/src/providers/togetherai.d.ts.map +1 -0
  106. package/dist/src/providers/togetherai.js +33 -0
  107. package/dist/src/providers/togetherai.js.map +1 -0
  108. package/dist/src/providers/vertex.d.ts.map +1 -1
  109. package/dist/src/providers/vertex.js +4 -4
  110. package/dist/src/providers/vertex.js.map +1 -1
  111. package/dist/src/providers/vertexUtil.d.ts +78 -1
  112. package/dist/src/providers/vertexUtil.d.ts.map +1 -1
  113. package/dist/src/providers/vertexUtil.js +57 -15
  114. package/dist/src/providers/vertexUtil.js.map +1 -1
  115. package/dist/src/providers/watsonx.d.ts +39 -4
  116. package/dist/src/providers/watsonx.d.ts.map +1 -1
  117. package/dist/src/providers/watsonx.js +293 -22
  118. package/dist/src/providers/watsonx.js.map +1 -1
  119. package/dist/src/providers/xai.d.ts +7 -0
  120. package/dist/src/providers/xai.d.ts.map +1 -0
  121. package/dist/src/providers/xai.js +23 -0
  122. package/dist/src/providers/xai.js.map +1 -0
  123. package/dist/src/providers.d.ts.map +1 -1
  124. package/dist/src/providers.js +26 -0
  125. package/dist/src/providers.js.map +1 -1
  126. package/dist/src/python/pythonUtils.js +2 -2
  127. package/dist/src/python/pythonUtils.js.map +1 -1
  128. package/dist/src/redteam/commands/init.d.ts.map +1 -1
  129. package/dist/src/redteam/commands/init.js +8 -3
  130. package/dist/src/redteam/commands/init.js.map +1 -1
  131. package/dist/src/redteam/constants.d.ts +25 -2
  132. package/dist/src/redteam/constants.d.ts.map +1 -1
  133. package/dist/src/redteam/constants.js +361 -27
  134. package/dist/src/redteam/constants.js.map +1 -1
  135. package/dist/src/redteam/strategies/index.d.ts.map +1 -1
  136. package/dist/src/redteam/strategies/index.js +10 -0
  137. package/dist/src/redteam/strategies/index.js.map +1 -1
  138. package/dist/src/redteam/strategies/mathPrompt.d.ts +5 -0
  139. package/dist/src/redteam/strategies/mathPrompt.d.ts.map +1 -0
  140. package/dist/src/redteam/strategies/mathPrompt.js +140 -0
  141. package/dist/src/redteam/strategies/mathPrompt.js.map +1 -0
  142. package/dist/src/server/apiSchemas.d.ts +59 -0
  143. package/dist/src/server/apiSchemas.d.ts.map +1 -0
  144. package/dist/src/server/apiSchemas.js +37 -0
  145. package/dist/src/server/apiSchemas.js.map +1 -0
  146. package/dist/src/server/routes/eval.d.ts +2 -0
  147. package/dist/src/server/routes/eval.d.ts.map +1 -0
  148. package/dist/src/server/routes/eval.js +160 -0
  149. package/dist/src/server/routes/eval.js.map +1 -0
  150. package/dist/src/server/routes/providers.d.ts.map +1 -1
  151. package/dist/src/server/routes/providers.js.map +1 -1
  152. package/dist/src/server/routes/redteam.d.ts +2 -0
  153. package/dist/src/server/routes/redteam.d.ts.map +1 -0
  154. package/dist/src/server/routes/redteam.js +43 -0
  155. package/dist/src/server/routes/redteam.js.map +1 -0
  156. package/dist/src/server/routes/user.d.ts +2 -0
  157. package/dist/src/server/routes/user.d.ts.map +1 -0
  158. package/dist/src/server/routes/user.js +60 -0
  159. package/dist/src/server/routes/user.js.map +1 -0
  160. package/dist/src/server/server.d.ts.map +1 -1
  161. package/dist/src/server/server.js +25 -141
  162. package/dist/src/server/server.js.map +1 -1
  163. package/dist/src/share.d.ts.map +1 -1
  164. package/dist/src/share.js.map +1 -1
  165. package/dist/src/telemetry.d.ts +21 -6
  166. package/dist/src/telemetry.d.ts.map +1 -1
  167. package/dist/src/telemetry.js +28 -11
  168. package/dist/src/telemetry.js.map +1 -1
  169. package/dist/src/testCases.d.ts.map +1 -1
  170. package/dist/src/testCases.js +9 -0
  171. package/dist/src/testCases.js.map +1 -1
  172. package/dist/src/types/index.d.ts.map +1 -1
  173. package/dist/src/types/index.js +1 -0
  174. package/dist/src/types/index.js.map +1 -1
  175. package/dist/src/types/prompts.d.ts +1 -0
  176. package/dist/src/types/prompts.d.ts.map +1 -1
  177. package/dist/src/types/providers.d.ts +3 -2
  178. package/dist/src/types/providers.d.ts.map +1 -1
  179. package/dist/src/types/providers.js.map +1 -1
  180. package/dist/src/util/config/default.d.ts +1 -0
  181. package/dist/src/util/config/default.d.ts.map +1 -1
  182. package/dist/src/util/config/default.js +4 -0
  183. package/dist/src/util/config/default.js.map +1 -1
  184. package/dist/src/util/index.d.ts +0 -1
  185. package/dist/src/util/index.d.ts.map +1 -1
  186. package/dist/src/util/index.js +1 -10
  187. package/dist/src/util/index.js.map +1 -1
  188. package/dist/src/validators/redteam.d.ts +6 -3
  189. package/dist/src/validators/redteam.d.ts.map +1 -1
  190. package/dist/src/validators/redteam.js +15 -14
  191. package/dist/src/validators/redteam.js.map +1 -1
  192. package/dist/test/assertions.test.js +191 -113
  193. package/dist/test/assertions.test.js.map +1 -1
  194. package/dist/test/assertions.utils.test.d.ts +2 -0
  195. package/dist/test/assertions.utils.test.d.ts.map +1 -0
  196. package/dist/test/assertions.utils.test.js +124 -0
  197. package/dist/test/assertions.utils.test.js.map +1 -0
  198. package/dist/test/cache.test.js +10 -16
  199. package/dist/test/cache.test.js.map +1 -1
  200. package/dist/test/commands/init.test.js +14 -11
  201. package/dist/test/commands/init.test.js.map +1 -1
  202. package/dist/test/evaluator.test.js +0 -1
  203. package/dist/test/evaluator.test.js.map +1 -1
  204. package/dist/test/evaluatorHelpers.test.js +0 -1
  205. package/dist/test/evaluatorHelpers.test.js.map +1 -1
  206. package/dist/test/models/eval.test.js +30 -1
  207. package/dist/test/models/eval.test.js.map +1 -1
  208. package/dist/test/onboarding.test.js +1 -1
  209. package/dist/test/prompts.processors.javascript.test.js +54 -1
  210. package/dist/test/prompts.processors.javascript.test.js.map +1 -1
  211. package/dist/test/prompts.processors.python.test.js +15 -0
  212. package/dist/test/prompts.processors.python.test.js.map +1 -1
  213. package/dist/test/prompts.processors.python.utils.test.js +2 -0
  214. package/dist/test/prompts.processors.python.utils.test.js.map +1 -1
  215. package/dist/test/prompts.test.js +2 -0
  216. package/dist/test/prompts.test.js.map +1 -1
  217. package/dist/test/providers.bedrock.test.js +58 -6
  218. package/dist/test/providers.bedrock.test.js.map +1 -1
  219. package/dist/test/providers.http.test.js +127 -31
  220. package/dist/test/providers.http.test.js.map +1 -1
  221. package/dist/test/providers.palm.test.d.ts +2 -0
  222. package/dist/test/providers.palm.test.d.ts.map +1 -0
  223. package/dist/test/providers.palm.test.js +131 -0
  224. package/dist/test/providers.palm.test.js.map +1 -0
  225. package/dist/test/providers.test.js +165 -73
  226. package/dist/test/providers.test.js.map +1 -1
  227. package/dist/test/providers.togetherai.test.d.ts +2 -0
  228. package/dist/test/providers.togetherai.test.d.ts.map +1 -0
  229. package/dist/test/providers.togetherai.test.js +53 -0
  230. package/dist/test/providers.togetherai.test.js.map +1 -0
  231. package/dist/test/providers.vertex.test.js +103 -1
  232. package/dist/test/providers.vertex.test.js.map +1 -1
  233. package/dist/test/providers.watsonx.test.js +81 -10
  234. package/dist/test/providers.watsonx.test.js.map +1 -1
  235. package/dist/test/providers.xai.test.d.ts +2 -0
  236. package/dist/test/providers.xai.test.d.ts.map +1 -0
  237. package/dist/test/providers.xai.test.js +47 -0
  238. package/dist/test/providers.xai.test.js.map +1 -0
  239. package/dist/test/rateLimit.test.js +18 -28
  240. package/dist/test/rateLimit.test.js.map +1 -1
  241. package/dist/test/redteam/plugins/pluginDocumentation.test.d.ts +2 -0
  242. package/dist/test/redteam/plugins/pluginDocumentation.test.d.ts.map +1 -0
  243. package/dist/test/redteam/plugins/pluginDocumentation.test.js +38 -0
  244. package/dist/test/redteam/plugins/pluginDocumentation.test.js.map +1 -0
  245. package/dist/test/redteam/validators.test.js +1 -0
  246. package/dist/test/redteam/validators.test.js.map +1 -1
  247. package/dist/test/server/providers.test.js +13 -1
  248. package/dist/test/server/providers.test.js.map +1 -1
  249. package/dist/test/testCases.test.js +8 -1
  250. package/dist/test/testCases.test.js.map +1 -1
  251. package/dist/test/util.config.load.test.d.ts +2 -0
  252. package/dist/test/util.config.load.test.d.ts.map +1 -0
  253. package/dist/test/{util.config.load.test.ts.js → util.config.load.test.js} +1 -26
  254. package/dist/test/util.config.load.test.js.map +1 -0
  255. package/dist/tsconfig.tsbuildinfo +1 -1
  256. package/package.json +16 -19
  257. package/dist/src/app/assets/index-CkOXAWT6.js +0 -767
  258. package/dist/src/app/assets/index-DSMggY6i.css +0 -1
  259. package/dist/src/assertions.d.ts.map +0 -1
  260. package/dist/src/assertions.js.map +0 -1
  261. package/dist/src/models/provider.d.ts +0 -11
  262. package/dist/src/models/provider.d.ts.map +0 -1
  263. package/dist/src/models/provider.js +0 -52
  264. package/dist/src/models/provider.js.map +0 -1
  265. package/dist/test/util.config.load.test.ts.d.ts +0 -2
  266. package/dist/test/util.config.load.test.ts.d.ts.map +0 -1
  267. package/dist/test/util.config.load.test.ts.js.map +0 -1
@@ -28,7 +28,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const dedent_1 = __importDefault(require("dedent"));
30
30
  const fs = __importStar(require("fs"));
31
- const node_fetch_1 = require("node-fetch");
32
31
  const path = __importStar(require("path"));
33
32
  const assertions_1 = require("../src/assertions");
34
33
  const fetch_1 = require("../src/fetch");
@@ -74,8 +73,13 @@ jest.mock('../src/esm');
74
73
  jest.mock('../src/database', () => ({
75
74
  getDb: jest.fn(),
76
75
  }));
76
+ jest.mock('path', () => ({
77
+ ...jest.requireActual('path'),
78
+ resolve: jest.fn(jest.requireActual('path').resolve),
79
+ extname: jest.fn(jest.requireActual('path').extname),
80
+ }));
77
81
  jest.mock('../src/cliState', () => ({
78
- basePath: '/config_path',
82
+ basePath: '/base/path',
79
83
  }));
80
84
  jest.mock('../src/matchers', () => {
81
85
  const actual = jest.requireActual('../src/matchers');
@@ -133,7 +137,7 @@ describe('runAssertions', () => {
133
137
  const output = 'Expected output';
134
138
  const result = await (0, assertions_1.runAssertions)({
135
139
  prompt: 'Some prompt',
136
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
140
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
137
141
  test,
138
142
  providerResponse: { output },
139
143
  });
@@ -146,7 +150,7 @@ describe('runAssertions', () => {
146
150
  const output = 'Actual output';
147
151
  const result = await (0, assertions_1.runAssertions)({
148
152
  prompt: 'Some prompt',
149
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
153
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
150
154
  test,
151
155
  providerResponse: { output },
152
156
  });
@@ -159,7 +163,7 @@ describe('runAssertions', () => {
159
163
  const output = { key: 'value' };
160
164
  const result = await (0, assertions_1.runAssertions)({
161
165
  prompt: 'Some prompt',
162
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
166
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
163
167
  test,
164
168
  providerResponse: { output },
165
169
  });
@@ -171,7 +175,7 @@ describe('runAssertions', () => {
171
175
  it('should fail when combined score is less than threshold', async () => {
172
176
  const result = await (0, assertions_1.runAssertions)({
173
177
  prompt: 'Some prompt',
174
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
178
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
175
179
  test: {
176
180
  threshold: 0.5,
177
181
  assert: [
@@ -197,7 +201,7 @@ describe('runAssertions', () => {
197
201
  it('should pass when combined score is greater than threshold', async () => {
198
202
  const result = await (0, assertions_1.runAssertions)({
199
203
  prompt: 'Some prompt',
200
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
204
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
201
205
  test: {
202
206
  threshold: 0.25,
203
207
  assert: [
@@ -222,7 +226,7 @@ describe('runAssertions', () => {
222
226
  });
223
227
  describe('assert-set', () => {
224
228
  const prompt = 'Some prompt';
225
- const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4');
229
+ const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
226
230
  it('assert-set success', async () => {
227
231
  const output = 'Expected output';
228
232
  const test = {
@@ -602,7 +606,7 @@ describe('runAssertion', () => {
602
606
  const output = 'Expected output';
603
607
  const result = await (0, assertions_1.runAssertion)({
604
608
  prompt: 'Some prompt',
605
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
609
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
606
610
  assertion: equalityAssertion,
607
611
  test: {},
608
612
  providerResponse: { output },
@@ -616,7 +620,7 @@ describe('runAssertion', () => {
616
620
  const output = 'Actual output';
617
621
  const result = await (0, assertions_1.runAssertion)({
618
622
  prompt: 'Some prompt',
619
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
623
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
620
624
  assertion: equalityAssertion,
621
625
  test: {},
622
626
  providerResponse: { output },
@@ -637,7 +641,7 @@ describe('runAssertion', () => {
637
641
  assertion: notEqualsAssertion,
638
642
  test: {},
639
643
  providerResponse: { output },
640
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
644
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
641
645
  });
642
646
  expect(result).toMatchObject({
643
647
  pass: true,
@@ -651,7 +655,7 @@ describe('runAssertion', () => {
651
655
  assertion: notEqualsAssertion,
652
656
  test: {},
653
657
  providerResponse: { output },
654
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
658
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
655
659
  });
656
660
  expect(result).toMatchObject({
657
661
  pass: false,
@@ -662,7 +666,7 @@ describe('runAssertion', () => {
662
666
  const output = { key: 'value' };
663
667
  const result = await (0, assertions_1.runAssertion)({
664
668
  prompt: 'Some prompt',
665
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
669
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
666
670
  assertion: equalityAssertion,
667
671
  test: {},
668
672
  providerResponse: { output },
@@ -676,7 +680,7 @@ describe('runAssertion', () => {
676
680
  const output = { key: 'value' };
677
681
  const result = await (0, assertions_1.runAssertion)({
678
682
  prompt: 'Some prompt',
679
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
683
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
680
684
  assertion: equalityAssertionWithObject,
681
685
  test: {},
682
686
  providerResponse: { output },
@@ -690,7 +694,7 @@ describe('runAssertion', () => {
690
694
  const output = { key: 'not value' };
691
695
  const result = await (0, assertions_1.runAssertion)({
692
696
  prompt: 'Some prompt',
693
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
697
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
694
698
  assertion: equalityAssertionWithObject,
695
699
  test: {},
696
700
  providerResponse: { output },
@@ -709,7 +713,7 @@ describe('runAssertion', () => {
709
713
  const output = '{"key":"value"}';
710
714
  const result = await (0, assertions_1.runAssertion)({
711
715
  prompt: 'Some prompt',
712
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
716
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
713
717
  assertion,
714
718
  test: {},
715
719
  providerResponse: { output },
@@ -729,7 +733,7 @@ describe('runAssertion', () => {
729
733
  const output = '{"key":"not value"}';
730
734
  const result = await (0, assertions_1.runAssertion)({
731
735
  prompt: 'Some prompt',
732
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
736
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
733
737
  assertion,
734
738
  test: {},
735
739
  providerResponse: { output },
@@ -744,7 +748,7 @@ describe('runAssertion', () => {
744
748
  const output = '{"key":"value"}';
745
749
  const result = await (0, assertions_1.runAssertion)({
746
750
  prompt: 'Some prompt',
747
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
751
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
748
752
  assertion: isJsonAssertion,
749
753
  test: {},
750
754
  providerResponse: { output },
@@ -758,7 +762,7 @@ describe('runAssertion', () => {
758
762
  const output = 'Not valid JSON';
759
763
  const result = await (0, assertions_1.runAssertion)({
760
764
  prompt: 'Some prompt',
761
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
765
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
762
766
  assertion: isJsonAssertion,
763
767
  test: {},
764
768
  providerResponse: { output },
@@ -772,7 +776,7 @@ describe('runAssertion', () => {
772
776
  const output = '{"latitude": 80.123, "longitude": -1}';
773
777
  const result = await (0, assertions_1.runAssertion)({
774
778
  prompt: 'Some prompt',
775
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
779
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
776
780
  assertion: isJsonAssertionWithSchema,
777
781
  test: {},
778
782
  providerResponse: { output },
@@ -786,7 +790,7 @@ describe('runAssertion', () => {
786
790
  const output = '{"latitude": "high", "longitude": [-1]}';
787
791
  const result = await (0, assertions_1.runAssertion)({
788
792
  prompt: 'Some prompt',
789
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
793
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
790
794
  assertion: isJsonAssertionWithSchema,
791
795
  test: {},
792
796
  providerResponse: { output },
@@ -800,7 +804,7 @@ describe('runAssertion', () => {
800
804
  const output = '{"latitude": 80.123, "longitude": -1}';
801
805
  const result = await (0, assertions_1.runAssertion)({
802
806
  prompt: 'Some prompt',
803
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
807
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
804
808
  assertion: isJsonAssertionWithSchemaYamlString,
805
809
  test: {},
806
810
  providerResponse: { output },
@@ -814,7 +818,7 @@ describe('runAssertion', () => {
814
818
  const output = '{"latitude": "high", "longitude": [-1]}';
815
819
  const result = await (0, assertions_1.runAssertion)({
816
820
  prompt: 'Some prompt',
817
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
821
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
818
822
  assertion: isJsonAssertionWithSchemaYamlString,
819
823
  test: {},
820
824
  providerResponse: { output },
@@ -838,7 +842,7 @@ describe('runAssertion', () => {
838
842
  };
839
843
  const result = await (0, assertions_1.runAssertion)({
840
844
  prompt: 'Some prompt',
841
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
845
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
842
846
  assertion: { type: 'is-json', value: schemaWithFormat },
843
847
  test: {},
844
848
  providerResponse: { output },
@@ -862,7 +866,7 @@ describe('runAssertion', () => {
862
866
  };
863
867
  const result = await (0, assertions_1.runAssertion)({
864
868
  prompt: 'Some prompt',
865
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
869
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
866
870
  assertion: { type: 'is-json', value: schemaWithFormat },
867
871
  test: {},
868
872
  providerResponse: { output },
@@ -896,7 +900,7 @@ describe('runAssertion', () => {
896
900
  const output = '{"latitude": 80.123, "longitude": -1}';
897
901
  const result = await (0, assertions_1.runAssertion)({
898
902
  prompt: 'Some prompt',
899
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
903
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
900
904
  assertion,
901
905
  test: {},
902
906
  providerResponse: { output },
@@ -931,7 +935,7 @@ describe('runAssertion', () => {
931
935
  const output = '{"latitude": "high", "longitude": [-1]}';
932
936
  const result = await (0, assertions_1.runAssertion)({
933
937
  prompt: 'Some prompt',
934
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
938
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
935
939
  assertion,
936
940
  test: {},
937
941
  providerResponse: { output },
@@ -946,7 +950,7 @@ describe('runAssertion', () => {
946
950
  const output = 'SELECT id, name FROM users';
947
951
  const result = await (0, assertions_1.runAssertion)({
948
952
  prompt: 'Some prompt',
949
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
953
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
950
954
  assertion: isSqlAssertion,
951
955
  test: {},
952
956
  providerResponse: { output },
@@ -960,7 +964,7 @@ describe('runAssertion', () => {
960
964
  const output = 'SELECT * FROM orders ORDERY BY order_date';
961
965
  const result = await (0, assertions_1.runAssertion)({
962
966
  prompt: 'Some prompt',
963
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
967
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
964
968
  assertion: isSqlAssertion,
965
969
  test: {},
966
970
  providerResponse: { output },
@@ -974,7 +978,7 @@ describe('runAssertion', () => {
974
978
  const output = 'SELECT * FROM orders ORDERY BY order_date';
975
979
  const result = await (0, assertions_1.runAssertion)({
976
980
  prompt: 'Some prompt',
977
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
981
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
978
982
  assertion: notIsSqlAssertion,
979
983
  test: {},
980
984
  providerResponse: { output },
@@ -988,7 +992,7 @@ describe('runAssertion', () => {
988
992
  const output = 'SELECT id, name FROM users';
989
993
  const result = await (0, assertions_1.runAssertion)({
990
994
  prompt: 'Some prompt',
991
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
995
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
992
996
  assertion: notIsSqlAssertion,
993
997
  test: {},
994
998
  providerResponse: { output },
@@ -1002,7 +1006,7 @@ describe('runAssertion', () => {
1002
1006
  const output = 'SELECT id, name FROM users';
1003
1007
  const result = await (0, assertions_1.runAssertion)({
1004
1008
  prompt: 'Some prompt',
1005
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1009
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1006
1010
  assertion: isSqlAssertionWithDatabase,
1007
1011
  test: {},
1008
1012
  providerResponse: { output },
@@ -1016,7 +1020,7 @@ describe('runAssertion', () => {
1016
1020
  const output = `SELECT first_name, last_name FROM employees WHERE first_name ILIKE 'john%'`;
1017
1021
  const result = await (0, assertions_1.runAssertion)({
1018
1022
  prompt: 'Some prompt',
1019
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1023
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1020
1024
  assertion: isSqlAssertionWithDatabase,
1021
1025
  test: {},
1022
1026
  providerResponse: { output },
@@ -1030,7 +1034,7 @@ describe('runAssertion', () => {
1030
1034
  const output = 'SELECT * FROM departments WHERE department_id = 1';
1031
1035
  const result = await (0, assertions_1.runAssertion)({
1032
1036
  prompt: 'Some prompt',
1033
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1037
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1034
1038
  assertion: isSqlAssertionWithDatabaseAndWhiteTableList,
1035
1039
  test: {},
1036
1040
  providerResponse: { output },
@@ -1044,7 +1048,7 @@ describe('runAssertion', () => {
1044
1048
  const output = 'UPDATE employees SET department_id = 2 WHERE employee_id = 1';
1045
1049
  const result = await (0, assertions_1.runAssertion)({
1046
1050
  prompt: 'Some prompt',
1047
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1051
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1048
1052
  assertion: isSqlAssertionWithDatabaseAndWhiteTableList,
1049
1053
  test: {},
1050
1054
  providerResponse: { output },
@@ -1058,7 +1062,7 @@ describe('runAssertion', () => {
1058
1062
  const output = 'SELECT name FROM t';
1059
1063
  const result = await (0, assertions_1.runAssertion)({
1060
1064
  prompt: 'Some prompt',
1061
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1065
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1062
1066
  assertion: isSqlAssertionWithDatabaseAndWhiteColumnList,
1063
1067
  test: {},
1064
1068
  providerResponse: { output },
@@ -1072,7 +1076,7 @@ describe('runAssertion', () => {
1072
1076
  const output = 'SELECT age FROM a WHERE id = 1';
1073
1077
  const result = await (0, assertions_1.runAssertion)({
1074
1078
  prompt: 'Some prompt',
1075
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1079
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1076
1080
  assertion: isSqlAssertionWithDatabaseAndWhiteColumnList,
1077
1081
  test: {},
1078
1082
  providerResponse: { output },
@@ -1086,7 +1090,7 @@ describe('runAssertion', () => {
1086
1090
  const output = 'SELECT name FROM departments';
1087
1091
  const result = await (0, assertions_1.runAssertion)({
1088
1092
  prompt: 'Some prompt',
1089
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1093
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1090
1094
  assertion: isSqlAssertionWithDatabaseAndBothList,
1091
1095
  test: {},
1092
1096
  providerResponse: { output },
@@ -1100,7 +1104,7 @@ describe('runAssertion', () => {
1100
1104
  const output = `INSERT INTO departments (name) VALUES ('HR')`;
1101
1105
  const result = await (0, assertions_1.runAssertion)({
1102
1106
  prompt: 'Some prompt',
1103
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1107
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1104
1108
  assertion: isSqlAssertionWithDatabaseAndBothList,
1105
1109
  test: {},
1106
1110
  providerResponse: { output },
@@ -1114,7 +1118,7 @@ describe('runAssertion', () => {
1114
1118
  const output = 'UPDATE a SET id = 1';
1115
1119
  const result = await (0, assertions_1.runAssertion)({
1116
1120
  prompt: 'Some prompt',
1117
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1121
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1118
1122
  assertion: isSqlAssertionWithDatabaseAndBothList,
1119
1123
  test: {},
1120
1124
  providerResponse: { output },
@@ -1128,7 +1132,7 @@ describe('runAssertion', () => {
1128
1132
  const output = `DELETE FROM employees;`;
1129
1133
  const result = await (0, assertions_1.runAssertion)({
1130
1134
  prompt: 'Some prompt',
1131
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1135
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1132
1136
  assertion: isSqlAssertionWithDatabaseAndBothList,
1133
1137
  test: {},
1134
1138
  providerResponse: { output },
@@ -1142,7 +1146,7 @@ describe('runAssertion', () => {
1142
1146
  const output = 'wassup\n```\nSELECT id, name FROM users\n```\nyolo';
1143
1147
  const result = await (0, assertions_1.runAssertion)({
1144
1148
  prompt: 'Some prompt',
1145
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1149
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1146
1150
  assertion: {
1147
1151
  type: 'contains-sql',
1148
1152
  },
@@ -1158,7 +1162,7 @@ describe('runAssertion', () => {
1158
1162
  const output = 'wassup\n```sql\nSELECT id, name FROM users\n```\nyolo';
1159
1163
  const result = await (0, assertions_1.runAssertion)({
1160
1164
  prompt: 'Some prompt',
1161
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1165
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1162
1166
  assertion: {
1163
1167
  type: 'contains-sql',
1164
1168
  },
@@ -1174,7 +1178,7 @@ describe('runAssertion', () => {
1174
1178
  const output = 'SELECT id, name FROM users';
1175
1179
  const result = await (0, assertions_1.runAssertion)({
1176
1180
  prompt: 'Some prompt',
1177
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1181
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1178
1182
  assertion: {
1179
1183
  type: 'contains-sql',
1180
1184
  },
@@ -1190,7 +1194,7 @@ describe('runAssertion', () => {
1190
1194
  const output = 'nothin';
1191
1195
  const result = await (0, assertions_1.runAssertion)({
1192
1196
  prompt: 'Some prompt',
1193
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1197
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1194
1198
  assertion: {
1195
1199
  type: 'contains-sql',
1196
1200
  },
@@ -1205,7 +1209,7 @@ describe('runAssertion', () => {
1205
1209
  const output = '```python\nprint("Hello, World!")\n```';
1206
1210
  const result = await (0, assertions_1.runAssertion)({
1207
1211
  prompt: 'Some prompt',
1208
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1212
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1209
1213
  assertion: {
1210
1214
  type: 'contains-sql',
1211
1215
  },
@@ -1220,7 +1224,7 @@ describe('runAssertion', () => {
1220
1224
  const output = 'this is some other stuff \n\n {"key": "value", "key2": {"key3": "value2", "key4": ["value3", "value4"]}} \n\n blah blah';
1221
1225
  const result = await (0, assertions_1.runAssertion)({
1222
1226
  prompt: 'Some prompt',
1223
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1227
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1224
1228
  assertion: containsJsonAssertion,
1225
1229
  test: {},
1226
1230
  providerResponse: { output },
@@ -1234,7 +1238,7 @@ describe('runAssertion', () => {
1234
1238
  const output = 'this is some other stuff \n\n {"key": "value", "key2": {"key3": "value2", "key4": ["value3", "value4"]}} another {"key": "value", "key2": {"key3": "value2", "key4": ["value3", "value4"]}}\n\n blah blah';
1235
1239
  const result = await (0, assertions_1.runAssertion)({
1236
1240
  prompt: 'Some prompt',
1237
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1241
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1238
1242
  assertion: containsJsonAssertion,
1239
1243
  test: {},
1240
1244
  providerResponse: { output },
@@ -1248,7 +1252,7 @@ describe('runAssertion', () => {
1248
1252
  const output = 'Not valid JSON';
1249
1253
  const result = await (0, assertions_1.runAssertion)({
1250
1254
  prompt: 'Some prompt',
1251
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1255
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1252
1256
  assertion: containsJsonAssertion,
1253
1257
  test: {},
1254
1258
  providerResponse: { output },
@@ -1262,7 +1266,7 @@ describe('runAssertion', () => {
1262
1266
  const output = 'here is the answer\n\n```{"latitude": 80.123, "longitude": -1}```';
1263
1267
  const result = await (0, assertions_1.runAssertion)({
1264
1268
  prompt: 'Some prompt',
1265
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1269
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1266
1270
  assertion: containsJsonAssertionWithSchema,
1267
1271
  test: {},
1268
1272
  providerResponse: { output },
@@ -1276,7 +1280,7 @@ describe('runAssertion', () => {
1276
1280
  const output = 'here is the answer\n\n```{"latitude": 80.123, "longitude": -1}```';
1277
1281
  const result = await (0, assertions_1.runAssertion)({
1278
1282
  prompt: 'Some prompt',
1279
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1283
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1280
1284
  assertion: containsJsonAssertionWithSchema,
1281
1285
  test: {},
1282
1286
  providerResponse: { output },
@@ -1310,7 +1314,7 @@ describe('runAssertion', () => {
1310
1314
  const output = 'here is the answer\n\n```{"latitude": 80.123, "longitude": -1}```';
1311
1315
  const result = await (0, assertions_1.runAssertion)({
1312
1316
  prompt: 'Some prompt',
1313
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1317
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1314
1318
  assertion,
1315
1319
  test: {},
1316
1320
  providerResponse: { output },
@@ -1345,7 +1349,7 @@ describe('runAssertion', () => {
1345
1349
  const output = 'here is the answer\n\n```{"latitude": "medium", "longitude": -1}```';
1346
1350
  const result = await (0, assertions_1.runAssertion)({
1347
1351
  prompt: 'Some prompt',
1348
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1352
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1349
1353
  assertion,
1350
1354
  test: {},
1351
1355
  providerResponse: { output },
@@ -1360,7 +1364,7 @@ describe('runAssertion', () => {
1360
1364
  const output = 'here is the answer\n\n```{"latitude": "medium", "longitude": -1}```';
1361
1365
  const result = await (0, assertions_1.runAssertion)({
1362
1366
  prompt: 'Some prompt',
1363
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1367
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1364
1368
  assertion: containsJsonAssertionWithSchema,
1365
1369
  test: {},
1366
1370
  providerResponse: { output },
@@ -1374,7 +1378,7 @@ describe('runAssertion', () => {
1374
1378
  const output = 'Expected output';
1375
1379
  const result = await (0, assertions_1.runAssertion)({
1376
1380
  prompt: 'Some prompt',
1377
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1381
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1378
1382
  assertion: javascriptStringAssertion,
1379
1383
  test: {},
1380
1384
  providerResponse: { output },
@@ -1388,7 +1392,7 @@ describe('runAssertion', () => {
1388
1392
  const output = 'Expected output';
1389
1393
  const result = await (0, assertions_1.runAssertion)({
1390
1394
  prompt: 'Some prompt',
1391
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1395
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1392
1396
  assertion: javascriptStringAssertionWithNumber,
1393
1397
  test: {},
1394
1398
  providerResponse: { output },
@@ -1403,7 +1407,7 @@ describe('runAssertion', () => {
1403
1407
  const output = 'Expected output';
1404
1408
  const result = await (0, assertions_1.runAssertion)({
1405
1409
  prompt: 'Some prompt',
1406
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1410
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1407
1411
  assertion: javascriptBooleanAssertionWithConfig,
1408
1412
  test: {},
1409
1413
  providerResponse: { output },
@@ -1418,7 +1422,7 @@ describe('runAssertion', () => {
1418
1422
  const output = 'Expected output with some extra characters';
1419
1423
  const result = await (0, assertions_1.runAssertion)({
1420
1424
  prompt: 'Some prompt',
1421
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1425
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1422
1426
  assertion: javascriptBooleanAssertionWithConfig,
1423
1427
  test: {},
1424
1428
  providerResponse: { output },
@@ -1433,7 +1437,7 @@ describe('runAssertion', () => {
1433
1437
  const output = 'Expected output';
1434
1438
  const result = await (0, assertions_1.runAssertion)({
1435
1439
  prompt: 'Some prompt',
1436
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1440
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1437
1441
  assertion: javascriptStringAssertionWithNumberAndThreshold,
1438
1442
  test: {},
1439
1443
  providerResponse: { output },
@@ -1448,7 +1452,7 @@ describe('runAssertion', () => {
1448
1452
  const output = '';
1449
1453
  const result = await (0, assertions_1.runAssertion)({
1450
1454
  prompt: 'Some prompt',
1451
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1455
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1452
1456
  assertion: javascriptStringAssertionWithNumberAndThreshold,
1453
1457
  test: {},
1454
1458
  providerResponse: { output },
@@ -1467,7 +1471,7 @@ describe('runAssertion', () => {
1467
1471
  };
1468
1472
  const result = await (0, assertions_1.runAssertion)({
1469
1473
  prompt: 'Some prompt',
1470
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1474
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1471
1475
  assertion,
1472
1476
  test: {},
1473
1477
  providerResponse: { output },
@@ -1482,7 +1486,7 @@ describe('runAssertion', () => {
1482
1486
  const output = 'Different output';
1483
1487
  const result = await (0, assertions_1.runAssertion)({
1484
1488
  prompt: 'Some prompt',
1485
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1489
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1486
1490
  assertion: javascriptStringAssertion,
1487
1491
  test: {},
1488
1492
  providerResponse: { output },
@@ -1500,7 +1504,7 @@ describe('runAssertion', () => {
1500
1504
  };
1501
1505
  const result = await (0, assertions_1.runAssertion)({
1502
1506
  prompt: 'variable value',
1503
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1507
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1504
1508
  assertion,
1505
1509
  test: { vars: { foo: 'Expected output' } },
1506
1510
  providerResponse: { output },
@@ -1518,7 +1522,7 @@ describe('runAssertion', () => {
1518
1522
  };
1519
1523
  const result = await (0, assertions_1.runAssertion)({
1520
1524
  prompt: 'Some prompt',
1521
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1525
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1522
1526
  assertion: javascriptStringAssertionWithVars,
1523
1527
  test: { vars: { foo: 'bar' } },
1524
1528
  providerResponse: { output },
@@ -1536,7 +1540,7 @@ describe('runAssertion', () => {
1536
1540
  };
1537
1541
  const result = await (0, assertions_1.runAssertion)({
1538
1542
  prompt: 'Some prompt',
1539
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1543
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1540
1544
  assertion: javascriptStringAssertionWithVars,
1541
1545
  test: { vars: { foo: 'bar' } },
1542
1546
  providerResponse: { output },
@@ -1550,7 +1554,7 @@ describe('runAssertion', () => {
1550
1554
  const output = 'Expected output';
1551
1555
  const result = await (0, assertions_1.runAssertion)({
1552
1556
  prompt: 'Some prompt',
1553
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1557
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1554
1558
  assertion: javascriptFunctionAssertion,
1555
1559
  test: {},
1556
1560
  providerResponse: { output },
@@ -1565,7 +1569,7 @@ describe('runAssertion', () => {
1565
1569
  const output = 'Expected output';
1566
1570
  const result = await (0, assertions_1.runAssertion)({
1567
1571
  prompt: 'Some prompt',
1568
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1572
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1569
1573
  assertion: javascriptFunctionFailAssertion,
1570
1574
  test: {},
1571
1575
  providerResponse: { output },
@@ -1583,7 +1587,7 @@ describe('runAssertion', () => {
1583
1587
  assertion: javascriptMultilineStringAssertion,
1584
1588
  test: {},
1585
1589
  providerResponse: { output },
1586
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1590
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1587
1591
  });
1588
1592
  expect(result).toMatchObject({
1589
1593
  pass: true,
@@ -1597,7 +1601,7 @@ describe('runAssertion', () => {
1597
1601
  assertion: javascriptMultilineStringAssertion,
1598
1602
  test: {},
1599
1603
  providerResponse: { output },
1600
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1604
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1601
1605
  });
1602
1606
  expect(result).toMatchObject({
1603
1607
  pass: false,
@@ -1615,7 +1619,7 @@ describe('runAssertion', () => {
1615
1619
  assertion: notContainsAssertion,
1616
1620
  test: {},
1617
1621
  providerResponse: { output },
1618
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1622
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1619
1623
  });
1620
1624
  expect(result).toMatchObject({
1621
1625
  pass: true,
@@ -1629,7 +1633,7 @@ describe('runAssertion', () => {
1629
1633
  assertion: notContainsAssertion,
1630
1634
  test: {},
1631
1635
  providerResponse: { output },
1632
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1636
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1633
1637
  });
1634
1638
  expect(result).toMatchObject({
1635
1639
  pass: false,
@@ -1648,7 +1652,7 @@ describe('runAssertion', () => {
1648
1652
  assertion: containsLowerAssertion,
1649
1653
  test: {},
1650
1654
  providerResponse: { output },
1651
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1655
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1652
1656
  });
1653
1657
  expect(result).toMatchObject({
1654
1658
  pass: true,
@@ -1662,7 +1666,7 @@ describe('runAssertion', () => {
1662
1666
  assertion: containsLowerAssertion,
1663
1667
  test: {},
1664
1668
  providerResponse: { output },
1665
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1669
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1666
1670
  });
1667
1671
  expect(result).toMatchObject({
1668
1672
  pass: false,
@@ -1681,7 +1685,7 @@ describe('runAssertion', () => {
1681
1685
  assertion: notContainsLowerAssertion,
1682
1686
  test: {},
1683
1687
  providerResponse: { output },
1684
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1688
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1685
1689
  });
1686
1690
  expect(result).toMatchObject({
1687
1691
  pass: true,
@@ -1695,7 +1699,7 @@ describe('runAssertion', () => {
1695
1699
  assertion: notContainsLowerAssertion,
1696
1700
  test: {},
1697
1701
  providerResponse: { output },
1698
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1702
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1699
1703
  });
1700
1704
  expect(result).toMatchObject({
1701
1705
  pass: false,
@@ -1714,7 +1718,7 @@ describe('runAssertion', () => {
1714
1718
  assertion: containsAnyAssertion,
1715
1719
  test: {},
1716
1720
  providerResponse: { output },
1717
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1721
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1718
1722
  });
1719
1723
  expect(result).toMatchObject({
1720
1724
  pass: true,
@@ -1728,7 +1732,7 @@ describe('runAssertion', () => {
1728
1732
  assertion: containsAnyAssertion,
1729
1733
  test: {},
1730
1734
  providerResponse: { output },
1731
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1735
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1732
1736
  });
1733
1737
  expect(result).toMatchObject({
1734
1738
  pass: false,
@@ -1745,7 +1749,7 @@ describe('runAssertion', () => {
1745
1749
  },
1746
1750
  test: {},
1747
1751
  providerResponse: { output },
1748
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1752
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1749
1753
  });
1750
1754
  expect(result).toMatchObject({
1751
1755
  pass: true,
@@ -1762,7 +1766,7 @@ describe('runAssertion', () => {
1762
1766
  },
1763
1767
  test: {},
1764
1768
  providerResponse: { output },
1765
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1769
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1766
1770
  });
1767
1771
  expect(result).toMatchObject({
1768
1772
  pass: false,
@@ -1781,7 +1785,7 @@ describe('runAssertion', () => {
1781
1785
  assertion: containsAllAssertion,
1782
1786
  test: {},
1783
1787
  providerResponse: { output },
1784
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1788
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1785
1789
  });
1786
1790
  expect(result).toMatchObject({
1787
1791
  pass: true,
@@ -1795,7 +1799,7 @@ describe('runAssertion', () => {
1795
1799
  assertion: containsAllAssertion,
1796
1800
  test: {},
1797
1801
  providerResponse: { output },
1798
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1802
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1799
1803
  });
1800
1804
  expect(result).toMatchObject({
1801
1805
  pass: false,
@@ -1812,7 +1816,7 @@ describe('runAssertion', () => {
1812
1816
  },
1813
1817
  test: {},
1814
1818
  providerResponse: { output },
1815
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1819
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1816
1820
  });
1817
1821
  expect(result).toMatchObject({
1818
1822
  pass: true,
@@ -1829,7 +1833,7 @@ describe('runAssertion', () => {
1829
1833
  },
1830
1834
  test: {},
1831
1835
  providerResponse: { output },
1832
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1836
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1833
1837
  });
1834
1838
  expect(result).toMatchObject({
1835
1839
  pass: false,
@@ -1848,7 +1852,7 @@ describe('runAssertion', () => {
1848
1852
  assertion: containsRegexAssertion,
1849
1853
  test: {},
1850
1854
  providerResponse: { output },
1851
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1855
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1852
1856
  });
1853
1857
  expect(result).toMatchObject({
1854
1858
  pass: true,
@@ -1862,7 +1866,7 @@ describe('runAssertion', () => {
1862
1866
  assertion: containsRegexAssertion,
1863
1867
  test: {},
1864
1868
  providerResponse: { output },
1865
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1869
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1866
1870
  });
1867
1871
  expect(result).toMatchObject({
1868
1872
  pass: false,
@@ -1881,7 +1885,7 @@ describe('runAssertion', () => {
1881
1885
  assertion: notContainsRegexAssertion,
1882
1886
  test: {},
1883
1887
  providerResponse: { output },
1884
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1888
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1885
1889
  });
1886
1890
  expect(result).toMatchObject({
1887
1891
  pass: true,
@@ -1895,7 +1899,7 @@ describe('runAssertion', () => {
1895
1899
  assertion: notContainsRegexAssertion,
1896
1900
  test: {},
1897
1901
  providerResponse: { output },
1898
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1902
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1899
1903
  });
1900
1904
  expect(result).toMatchObject({
1901
1905
  pass: false,
@@ -1909,7 +1913,7 @@ describe('runAssertion', () => {
1909
1913
  };
1910
1914
  it('should pass when the webhook assertion passes', async () => {
1911
1915
  const output = 'Expected output';
1912
- jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new node_fetch_1.Response(JSON.stringify({ pass: true }), {
1916
+ jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new Response(JSON.stringify({ pass: true }), {
1913
1917
  status: 200,
1914
1918
  headers: { 'Content-Type': 'application/json' },
1915
1919
  })));
@@ -1918,7 +1922,7 @@ describe('runAssertion', () => {
1918
1922
  assertion: webhookAssertion,
1919
1923
  test: {},
1920
1924
  providerResponse: { output },
1921
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1925
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1922
1926
  });
1923
1927
  expect(result).toMatchObject({
1924
1928
  pass: true,
@@ -1927,7 +1931,7 @@ describe('runAssertion', () => {
1927
1931
  });
1928
1932
  it('should fail when the webhook assertion fails', async () => {
1929
1933
  const output = 'Different output';
1930
- jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new node_fetch_1.Response(JSON.stringify({ pass: false }), {
1934
+ jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new Response(JSON.stringify({ pass: false }), {
1931
1935
  status: 200,
1932
1936
  headers: { 'Content-Type': 'application/json' },
1933
1937
  })));
@@ -1936,7 +1940,7 @@ describe('runAssertion', () => {
1936
1940
  assertion: webhookAssertion,
1937
1941
  test: {},
1938
1942
  providerResponse: { output },
1939
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1943
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1940
1944
  });
1941
1945
  expect(result).toMatchObject({
1942
1946
  pass: false,
@@ -1945,7 +1949,7 @@ describe('runAssertion', () => {
1945
1949
  });
1946
1950
  it('should fail when the webhook returns an error', async () => {
1947
1951
  const output = 'Expected output';
1948
- jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new node_fetch_1.Response('', {
1952
+ jest.mocked(fetch_1.fetchWithRetries).mockImplementation(() => Promise.resolve(new Response('', {
1949
1953
  status: 500,
1950
1954
  headers: { 'Content-Type': 'application/json' },
1951
1955
  })));
@@ -1954,7 +1958,7 @@ describe('runAssertion', () => {
1954
1958
  assertion: webhookAssertion,
1955
1959
  test: {},
1956
1960
  providerResponse: { output },
1957
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1961
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1958
1962
  });
1959
1963
  expect(result).toMatchObject({
1960
1964
  pass: false,
@@ -1974,7 +1978,7 @@ describe('runAssertion', () => {
1974
1978
  assertion: rougeNAssertion,
1975
1979
  test: {},
1976
1980
  providerResponse: { output },
1977
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1981
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1978
1982
  });
1979
1983
  expect(result).toMatchObject({
1980
1984
  pass: true,
@@ -1988,7 +1992,7 @@ describe('runAssertion', () => {
1988
1992
  assertion: rougeNAssertion,
1989
1993
  test: {},
1990
1994
  providerResponse: { output },
1991
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
1995
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
1992
1996
  });
1993
1997
  expect(result).toMatchObject({
1994
1998
  pass: false,
@@ -2007,7 +2011,7 @@ describe('runAssertion', () => {
2007
2011
  assertion: startsWithAssertion,
2008
2012
  test: {},
2009
2013
  providerResponse: { output },
2010
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2014
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2011
2015
  });
2012
2016
  expect(result).toMatchObject({
2013
2017
  pass: true,
@@ -2021,7 +2025,7 @@ describe('runAssertion', () => {
2021
2025
  assertion: startsWithAssertion,
2022
2026
  test: {},
2023
2027
  providerResponse: { output },
2024
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2028
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2025
2029
  });
2026
2030
  expect(result).toMatchObject({
2027
2031
  pass: false,
@@ -2057,7 +2061,7 @@ describe('runAssertion', () => {
2057
2061
  assertion,
2058
2062
  test,
2059
2063
  providerResponse: { output },
2060
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2064
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2061
2065
  });
2062
2066
  expect(result).toMatchObject({
2063
2067
  pass: true,
@@ -2074,7 +2078,7 @@ describe('runAssertion', () => {
2074
2078
  const output = 'Expected output';
2075
2079
  const result = await (0, assertions_1.runAssertion)({
2076
2080
  prompt: 'Some prompt',
2077
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2081
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2078
2082
  assertion: levenshteinAssertion,
2079
2083
  test: {},
2080
2084
  providerResponse: { output },
@@ -2088,7 +2092,7 @@ describe('runAssertion', () => {
2088
2092
  const output = 'Different output';
2089
2093
  const result = await (0, assertions_1.runAssertion)({
2090
2094
  prompt: 'Some prompt',
2091
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2095
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2092
2096
  assertion: levenshteinAssertion,
2093
2097
  test: {},
2094
2098
  providerResponse: { output },
@@ -2140,7 +2144,7 @@ describe('runAssertion', () => {
2140
2144
  };
2141
2145
  const result = await (0, assertions_1.runAssertion)({
2142
2146
  prompt: 'Some prompt',
2143
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2147
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2144
2148
  assertion: fileAssertion,
2145
2149
  test: {},
2146
2150
  providerResponse: { output },
@@ -2158,14 +2162,14 @@ describe('runAssertion', () => {
2158
2162
  it('should resolve js paths relative to the configuration file', async () => {
2159
2163
  const output = 'Expected output';
2160
2164
  const mockFn = jest.fn((output) => output === 'Expected output');
2161
- jest.doMock(path.resolve('/config_path/path/to/assert.js'), () => mockFn, { virtual: true });
2165
+ jest.doMock(path.resolve('/base/path/path/to/assert.js'), () => mockFn, { virtual: true });
2162
2166
  const fileAssertion = {
2163
2167
  type: 'javascript',
2164
2168
  value: 'file://./path/to/assert.js',
2165
2169
  };
2166
2170
  const result = await (0, assertions_1.runAssertion)({
2167
2171
  prompt: 'Some prompt',
2168
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2172
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2169
2173
  assertion: fileAssertion,
2170
2174
  test: {},
2171
2175
  providerResponse: { output },
@@ -2190,7 +2194,7 @@ describe('runAssertion', () => {
2190
2194
  };
2191
2195
  const result = await (0, assertions_1.runAssertion)({
2192
2196
  prompt: 'Some prompt',
2193
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2197
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2194
2198
  assertion: pythonAssertion,
2195
2199
  test: {},
2196
2200
  providerResponse: { output },
@@ -2253,7 +2257,7 @@ describe('runAssertion', () => {
2253
2257
  jest.mocked(wrapper_1.runPythonCode).mockResolvedValueOnce(resolvedValue);
2254
2258
  const result = await (0, assertions_1.runAssertion)({
2255
2259
  prompt: 'Some prompt',
2256
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2260
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2257
2261
  assertion: pythonAssertion,
2258
2262
  test: {},
2259
2263
  providerResponse: { output },
@@ -2297,7 +2301,7 @@ describe('runAssertion', () => {
2297
2301
  };
2298
2302
  const result = await (0, assertions_1.runAssertion)({
2299
2303
  prompt: 'Some prompt that includes "double quotes" and \'single quotes\'',
2300
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2304
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2301
2305
  assertion: fileAssertion,
2302
2306
  test: {},
2303
2307
  providerResponse: { output },
@@ -2327,7 +2331,7 @@ describe('runAssertion', () => {
2327
2331
  };
2328
2332
  const result = await (0, assertions_1.runAssertion)({
2329
2333
  prompt: 'Some prompt that includes "double quotes" and \'single quotes\'',
2330
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2334
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2331
2335
  assertion: fileAssertion,
2332
2336
  test: {},
2333
2337
  providerResponse: { output },
@@ -2348,7 +2352,7 @@ describe('runAssertion', () => {
2348
2352
  const output = 'Expected output';
2349
2353
  const result = await (0, assertions_1.runAssertion)({
2350
2354
  prompt: 'Some prompt',
2351
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2355
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2352
2356
  assertion: {
2353
2357
  type: 'latency',
2354
2358
  threshold: 100,
@@ -2366,7 +2370,7 @@ describe('runAssertion', () => {
2366
2370
  const output = 'Expected output';
2367
2371
  const result = await (0, assertions_1.runAssertion)({
2368
2372
  prompt: 'Some prompt',
2369
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2373
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2370
2374
  assertion: {
2371
2375
  type: 'latency',
2372
2376
  threshold: 100,
@@ -2384,7 +2388,7 @@ describe('runAssertion', () => {
2384
2388
  const output = 'Expected output';
2385
2389
  await expect((0, assertions_1.runAssertion)({
2386
2390
  prompt: 'Some prompt',
2387
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2391
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2388
2392
  assertion: {
2389
2393
  type: 'latency',
2390
2394
  threshold: 100,
@@ -2397,7 +2401,7 @@ describe('runAssertion', () => {
2397
2401
  const output = 'Expected output';
2398
2402
  const result = await (0, assertions_1.runAssertion)({
2399
2403
  prompt: 'Some prompt',
2400
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2404
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2401
2405
  assertion: {
2402
2406
  type: 'latency',
2403
2407
  threshold: 100,
@@ -2415,7 +2419,7 @@ describe('runAssertion', () => {
2415
2419
  const output = 'Expected output';
2416
2420
  await expect((0, assertions_1.runAssertion)({
2417
2421
  prompt: 'Some prompt',
2418
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2422
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2419
2423
  assertion: {
2420
2424
  type: 'latency',
2421
2425
  },
@@ -2428,7 +2432,7 @@ describe('runAssertion', () => {
2428
2432
  const output = 'Expected output';
2429
2433
  const result = await (0, assertions_1.runAssertion)({
2430
2434
  prompt: 'Some prompt',
2431
- provider: new openai_1.OpenAiChatCompletionProvider('gpt-4'),
2435
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
2432
2436
  assertion: {
2433
2437
  type: 'latency',
2434
2438
  threshold: 100,
@@ -3277,6 +3281,80 @@ describe('runAssertion', () => {
3277
3281
  })).rejects.toThrow('context-faithfulness assertion type must have a string output');
3278
3282
  });
3279
3283
  });
3284
+ describe('file references', () => {
3285
+ it('should handle file reference in string value', async () => {
3286
+ const assertion = {
3287
+ type: 'equals',
3288
+ value: 'file://expected_output.txt',
3289
+ };
3290
+ const expectedContent = 'Expected output';
3291
+ jest.mocked(fs.readFileSync).mockReturnValue(expectedContent);
3292
+ jest.mocked(path.resolve).mockReturnValue('/base/path/expected_output.txt');
3293
+ jest.mocked(path.extname).mockReturnValue('.txt');
3294
+ const result = await (0, assertions_1.runAssertion)({
3295
+ prompt: 'Some prompt',
3296
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
3297
+ assertion,
3298
+ test: {},
3299
+ providerResponse: { output: 'Expected output' },
3300
+ });
3301
+ expect(fs.readFileSync).toHaveBeenCalledWith('/base/path/expected_output.txt', 'utf8');
3302
+ expect(result.pass).toBe(true);
3303
+ });
3304
+ it('should handle file references in array values', async () => {
3305
+ const assertion = {
3306
+ type: 'contains-any',
3307
+ value: ['The expected output', 'string output', 'file://my_expected_output.txt'],
3308
+ };
3309
+ const fileContent = 'file content';
3310
+ jest.mocked(fs.readFileSync).mockReturnValue(fileContent);
3311
+ jest.mocked(path.resolve).mockReturnValue('/base/path/my_expected_output.txt');
3312
+ jest.mocked(path.extname).mockReturnValue('.txt');
3313
+ await expect((0, assertions_1.runAssertion)({
3314
+ prompt: 'Some prompt',
3315
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
3316
+ assertion,
3317
+ test: {},
3318
+ providerResponse: { output: 'file content' },
3319
+ })).resolves.toEqual(expect.objectContaining({
3320
+ pass: true,
3321
+ }));
3322
+ expect(fs.readFileSync).toHaveBeenCalledWith('/base/path/my_expected_output.txt', 'utf8');
3323
+ await expect((0, assertions_1.runAssertion)({
3324
+ prompt: 'Some prompt',
3325
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
3326
+ assertion,
3327
+ test: {},
3328
+ providerResponse: { output: 'string output' },
3329
+ })).resolves.toEqual(expect.objectContaining({
3330
+ pass: true,
3331
+ }));
3332
+ });
3333
+ it('should handle file reference in object value', async () => {
3334
+ const assertion = {
3335
+ type: 'is-json',
3336
+ value: 'file://schema.json',
3337
+ };
3338
+ const schemaContent = JSON.stringify({
3339
+ type: 'object',
3340
+ properties: {
3341
+ key: { type: 'string' },
3342
+ },
3343
+ });
3344
+ jest.mocked(fs.readFileSync).mockReturnValue(schemaContent);
3345
+ jest.mocked(path.resolve).mockReturnValue('/base/path/schema.json');
3346
+ jest.mocked(path.extname).mockReturnValue('.json');
3347
+ const result = await (0, assertions_1.runAssertion)({
3348
+ prompt: 'Some prompt',
3349
+ provider: new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini'),
3350
+ assertion,
3351
+ test: {},
3352
+ providerResponse: { output: '{"key": "value"}' },
3353
+ });
3354
+ expect(fs.readFileSync).toHaveBeenCalledWith('/base/path/schema.json', 'utf8');
3355
+ expect(result.pass).toBe(true);
3356
+ });
3357
+ });
3280
3358
  });
3281
3359
  describe('validateXml', () => {
3282
3360
  it('should validate a simple valid XML string', () => {