@fastpaca/cria 1.2.0 → 1.4.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 (51) hide show
  1. package/README.md +29 -7
  2. package/dist/components/summary.d.ts +12 -13
  3. package/dist/components/summary.d.ts.map +1 -1
  4. package/dist/components/summary.js +26 -26
  5. package/dist/components/summary.js.map +1 -1
  6. package/dist/components/vector-search.d.ts +8 -3
  7. package/dist/components/vector-search.d.ts.map +1 -1
  8. package/dist/components/vector-search.js.map +1 -1
  9. package/dist/dsl.d.ts +117 -85
  10. package/dist/dsl.d.ts.map +1 -1
  11. package/dist/dsl.js +232 -124
  12. package/dist/dsl.js.map +1 -1
  13. package/dist/eval/index.d.ts +38 -0
  14. package/dist/eval/index.d.ts.map +1 -0
  15. package/dist/eval/index.js +34 -0
  16. package/dist/eval/index.js.map +1 -0
  17. package/dist/eval/judge.d.ts +19 -0
  18. package/dist/eval/judge.d.ts.map +1 -0
  19. package/dist/eval/judge.js +46 -0
  20. package/dist/eval/judge.js.map +1 -0
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +1 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/integrations/ai-sdk.d.ts +22 -0
  26. package/dist/integrations/ai-sdk.d.ts.map +1 -0
  27. package/dist/integrations/ai-sdk.js +172 -0
  28. package/dist/integrations/ai-sdk.js.map +1 -0
  29. package/dist/integrations/anthropic.d.ts +50 -0
  30. package/dist/integrations/anthropic.d.ts.map +1 -0
  31. package/dist/{anthropic/index.js → integrations/anthropic.js} +28 -89
  32. package/dist/integrations/anthropic.js.map +1 -0
  33. package/dist/{openai/index.d.ts → integrations/openai.d.ts} +8 -33
  34. package/dist/integrations/openai.d.ts.map +1 -0
  35. package/dist/{openai/index.js → integrations/openai.js} +20 -61
  36. package/dist/integrations/openai.js.map +1 -0
  37. package/dist/render.js +1 -1
  38. package/dist/render.js.map +1 -1
  39. package/dist/types.d.ts +17 -30
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/package.json +11 -7
  43. package/dist/ai-sdk/index.d.ts +0 -68
  44. package/dist/ai-sdk/index.d.ts.map +0 -1
  45. package/dist/ai-sdk/index.js +0 -375
  46. package/dist/ai-sdk/index.js.map +0 -1
  47. package/dist/anthropic/index.d.ts +0 -102
  48. package/dist/anthropic/index.d.ts.map +0 -1
  49. package/dist/anthropic/index.js.map +0 -1
  50. package/dist/openai/index.d.ts.map +0 -1
  51. package/dist/openai/index.js.map +0 -1
package/dist/dsl.js CHANGED
@@ -16,79 +16,35 @@
16
16
  */
17
17
  import { Examples, Message, Omit, Region, Summary, Truncate, VectorSearch, } from "./components";
18
18
  import { render as renderPrompt } from "./render";
19
+ const TEMPLATE_INDENT_RE = /^[ \t]*/;
19
20
  /**
20
- * Fluent builder for constructing prompt trees without JSX.
21
- *
22
- * Every method returns a new immutable builder instance.
23
- * Call `.build()` to get the final `PromptElement`.
21
+ * Shared fluent API for prompt-level and message-level builders.
22
+ * Keeps component helpers available inside nested scopes.
24
23
  */
25
- export class PromptBuilder {
24
+ export class BuilderBase {
26
25
  children;
27
26
  context;
28
27
  constructor(children = [], context = undefined) {
29
28
  this.children = children;
30
29
  this.context = context;
31
30
  }
32
- /**
33
- * Create a new empty prompt builder.
34
- */
35
- static create() {
36
- return new PromptBuilder();
37
- }
38
- /**
39
- * Add a system message.
40
- */
41
- system(text, opts) {
42
- const priority = opts?.priority;
43
- return this.addChild(Message({
44
- messageRole: "system",
45
- children: [text],
46
- ...(priority !== undefined ? { priority } : {}),
47
- ...(opts?.id ? { id: opts.id } : {}),
48
- }));
49
- }
50
- /**
51
- * Add a user message.
52
- */
53
- user(text, opts) {
54
- const priority = opts?.priority;
55
- return this.addChild(Message({
56
- messageRole: "user",
57
- children: [text],
58
- ...(priority !== undefined ? { priority } : {}),
59
- ...(opts?.id ? { id: opts.id } : {}),
60
- }));
61
- }
62
- /**
63
- * Add an assistant message.
64
- */
65
- assistant(text, opts) {
66
- const priority = opts?.priority;
67
- return this.addChild(Message({
68
- messageRole: "assistant",
69
- children: [text],
70
- ...(priority !== undefined ? { priority } : {}),
71
- ...(opts?.id ? { id: opts.id } : {}),
72
- }));
73
- }
74
- /**
75
- * Add a message with a custom role.
76
- */
77
- message(role, text, opts) {
78
- const priority = opts?.priority;
79
- return this.addChild(Message({
80
- messageRole: role,
81
- children: [text],
82
- ...(priority !== undefined ? { priority } : {}),
31
+ scope(fn, opts) {
32
+ if (typeof fn !== "function") {
33
+ throw new Error(`scope() requires a callback function. Received: ${typeof fn}`);
34
+ }
35
+ const inner = fn(this.create([], this.context));
36
+ const element = createPromptElement(() => inner.buildChildren(), (children) => Region({
37
+ priority: 0,
38
+ children,
83
39
  ...(opts?.id ? { id: opts.id } : {}),
84
40
  }));
41
+ return this.addChild(element);
85
42
  }
86
43
  /**
87
44
  * Add content that will be truncated when over budget.
88
45
  */
89
46
  truncate(content, opts) {
90
- const node = (async () => {
91
- const children = await normalizeChild(content);
47
+ const node = createPromptElement(() => resolveBuilderChildren(content), (children) => {
92
48
  const props = {
93
49
  children,
94
50
  budget: opts.budget,
@@ -99,50 +55,23 @@ export class PromptBuilder {
99
55
  return Truncate({
100
56
  ...props,
101
57
  });
102
- })();
58
+ });
103
59
  return this.addChild(node);
104
60
  }
105
61
  /**
106
62
  * Add content that will be entirely removed when over budget.
107
63
  */
108
64
  omit(content, opts) {
109
- const node = (async () => {
110
- const children = await normalizeChild(content);
65
+ const node = createPromptElement(() => resolveBuilderChildren(content), (children) => {
111
66
  const props = {
112
67
  children,
113
68
  ...(opts?.priority !== undefined ? { priority: opts.priority } : {}),
114
69
  ...(opts?.id ? { id: opts.id } : {}),
115
70
  };
116
71
  return Omit(props);
117
- })();
72
+ });
118
73
  return this.addChild(node);
119
74
  }
120
- region(nameOrFn, maybeFn) {
121
- if (typeof nameOrFn === "string") {
122
- if (!maybeFn) {
123
- throw new Error("region() requires a callback function");
124
- }
125
- return this.section(nameOrFn, maybeFn);
126
- }
127
- return this.section(nameOrFn);
128
- }
129
- section(nameOrFn, maybeFn) {
130
- const name = typeof nameOrFn === "string" ? nameOrFn : undefined;
131
- const fn = typeof nameOrFn === "string" ? maybeFn : nameOrFn;
132
- if (!fn) {
133
- const received = typeof nameOrFn === "string" ? typeof maybeFn : typeof nameOrFn;
134
- throw new Error(`section() requires a callback function (e.g. cria.prompt().section("name", (s) => ...)). Received: ${received}`);
135
- }
136
- const inner = fn(new PromptBuilder([], this.context));
137
- const element = (async () => {
138
- const built = await inner.build();
139
- return {
140
- ...built,
141
- ...(name ? { id: name } : {}),
142
- };
143
- })();
144
- return this.addChild(element);
145
- }
146
75
  /**
147
76
  * Merge another builder's contents into this one (zod-like merge).
148
77
  * Contexts must be compatible (either identical or undefined).
@@ -166,32 +95,31 @@ export class PromptBuilder {
166
95
  }
167
96
  }
168
97
  mergedChildren.length = writeIndex;
169
- return new PromptBuilder(mergedChildren, nextContext);
98
+ return this.create(mergedChildren, nextContext);
170
99
  }
171
100
  /**
172
101
  * Create a provider scope for AI-powered operations like Summary.
173
102
  *
174
103
  * @example
175
104
  * ```typescript
176
- * import { Provider } from "@fastpaca/cria/ai-sdk";
105
+ * import { createProvider } from "@fastpaca/cria/ai-sdk";
106
+ * import { openai } from "@ai-sdk/openai";
177
107
  *
178
- * const provider = new Provider(openai("gpt-4o"));
179
- * .provider(provider, (p) =>
180
- * p.summary(content, { id: "conv", store })
181
- * )
108
+ * const provider = createProvider(openai("gpt-4o"));
109
+ * cria.prompt()
110
+ * .provider(provider, (p) =>
111
+ * p.summary(content, { id: "conv", store })
112
+ * )
182
113
  * ```
183
114
  */
184
115
  provider(modelProvider, fn) {
185
116
  const context = { provider: modelProvider };
186
- const inner = fn(new PromptBuilder([], context));
187
- const element = (async () => {
188
- const built = await inner.build();
189
- return {
190
- priority: 0,
191
- children: built.children,
192
- context,
193
- };
194
- })();
117
+ const inner = fn(this.create([], context));
118
+ const element = createPromptElement(() => inner.buildChildren(), (children) => ({
119
+ priority: 0,
120
+ children,
121
+ context,
122
+ }));
195
123
  return this.addChild(element);
196
124
  }
197
125
  /**
@@ -214,8 +142,7 @@ export class PromptBuilder {
214
142
  * Add content that will be summarized when over budget.
215
143
  */
216
144
  summary(content, opts) {
217
- const element = (async () => {
218
- const children = await normalizeChild(content);
145
+ const element = createPromptElement(() => resolveBuilderChildren(content), (children) => {
219
146
  const props = {
220
147
  id: opts.id,
221
148
  store: opts.store,
@@ -224,7 +151,7 @@ export class PromptBuilder {
224
151
  ...(opts.priority !== undefined ? { priority: opts.priority } : {}),
225
152
  };
226
153
  return Summary(props);
227
- })();
154
+ });
228
155
  return this.addChild(element);
229
156
  }
230
157
  /**
@@ -244,13 +171,82 @@ export class PromptBuilder {
244
171
  raw(element) {
245
172
  return this.addChild(element);
246
173
  }
174
+ async buildChildren() {
175
+ return await resolveBuilderChildren(this.children);
176
+ }
177
+ addChild(child) {
178
+ return this.create([...this.children, child], this.context);
179
+ }
180
+ addChildren(children) {
181
+ return this.create([...this.children, ...children], this.context);
182
+ }
183
+ }
184
+ export class MessageBuilder extends BuilderBase {
185
+ constructor(children = [], context = undefined) {
186
+ super(children, context);
187
+ }
188
+ create(children, context) {
189
+ return new MessageBuilder(children, context);
190
+ }
191
+ append(content) {
192
+ if (content instanceof PromptBuilder || content instanceof Promise) {
193
+ return this.addChild(content);
194
+ }
195
+ const normalized = normalizeTextInput(content);
196
+ return this.addChildren(normalized);
197
+ }
198
+ }
199
+ /**
200
+ * Fluent builder for constructing prompt trees without JSX.
201
+ *
202
+ * Every method returns a new immutable builder instance; large chains will copy
203
+ * child arrays, so keep prompts reasonably sized.
204
+ * Call `.build()` to get the final `PromptElement`.
205
+ */
206
+ export class PromptBuilder extends BuilderBase {
207
+ constructor(children = [], context = undefined) {
208
+ super(children, context);
209
+ }
210
+ /**
211
+ * Create a new empty prompt builder.
212
+ */
213
+ static create() {
214
+ return new PromptBuilder();
215
+ }
216
+ create(children, context) {
217
+ return new PromptBuilder(children, context);
218
+ }
219
+ /**
220
+ * Add a system message.
221
+ */
222
+ system(content, opts) {
223
+ return this.addMessage("system", content, opts);
224
+ }
225
+ /**
226
+ * Add a user message.
227
+ */
228
+ user(content, opts) {
229
+ return this.addMessage("user", content, opts);
230
+ }
231
+ /**
232
+ * Add an assistant message.
233
+ */
234
+ assistant(content, opts) {
235
+ return this.addMessage("assistant", content, opts);
236
+ }
237
+ /**
238
+ * Add a message with a custom role.
239
+ */
240
+ message(role, content, opts) {
241
+ return this.addMessage(role, content, opts);
242
+ }
247
243
  /**
248
244
  * Build the final PromptElement tree.
249
245
  */
250
246
  async build() {
251
247
  return Region({
252
248
  priority: 0,
253
- children: await normalizeChildren(this.children),
249
+ children: await this.buildChildren(),
254
250
  ...(this.context && { context: this.context }),
255
251
  });
256
252
  }
@@ -262,12 +258,21 @@ export class PromptBuilder {
262
258
  const element = await this.build();
263
259
  return (await renderPrompt(element, options));
264
260
  }
265
- addChild(child) {
266
- return new PromptBuilder([...this.children, child], this.context);
261
+ addMessage(role, content, opts) {
262
+ const priority = opts?.priority;
263
+ const element = createPromptElement(() => typeof content === "function"
264
+ ? content(new MessageBuilder([], this.context)).buildChildren()
265
+ : normalizeTextInput(content), (children) => Message({
266
+ messageRole: role,
267
+ children,
268
+ ...(priority !== undefined ? { priority } : {}),
269
+ ...(opts?.id ? { id: opts.id } : {}),
270
+ }));
271
+ return this.addChild(element);
267
272
  }
268
273
  }
269
274
  /**
270
- * Namespace for building prompts without JSX.
275
+ * Namespace for building prompts as code.
271
276
  *
272
277
  * @example
273
278
  * ```typescript
@@ -282,6 +287,7 @@ export class PromptBuilder {
282
287
  */
283
288
  export const cria = {
284
289
  prompt: () => PromptBuilder.create(),
290
+ c,
285
291
  merge: (...builders) => {
286
292
  const [first, ...rest] = builders;
287
293
  if (!first) {
@@ -298,23 +304,125 @@ export const prompt = () => PromptBuilder.create();
298
304
  * Merge multiple builders into one (zod-like merge).
299
305
  */
300
306
  export const merge = (...builders) => cria.merge(...builders);
301
- // Utility to recursively build and expand / resolve children
302
- async function normalizeChild(child) {
303
- if (typeof child === "string") {
304
- return [child];
307
+ /**
308
+ * Tagged template literal function for building prompt children with automatic indentation normalization.
309
+ *
310
+ * Interpolates values into template strings and normalizes indentation by stripping
311
+ * common leading whitespace. Useful for writing multi-line prompt content with clean formatting.
312
+ *
313
+ * @param strings - Template string segments
314
+ * @param values - Interpolated values (strings, numbers, booleans, PromptElements, arrays, etc.)
315
+ * @returns Array of prompt children (strings and PromptElements)
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * import { c } from "@fastpaca/cria";
320
+ *
321
+ * const children = c`
322
+ * System: You are a helpful assistant.
323
+ * User: ${userMessage}
324
+ * Assistant: ${assistantResponse}
325
+ * `;
326
+ * ```
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * const name = "Alice";
331
+ * const age = 30;
332
+ * const children = c`Name: ${name}, Age: ${age}`;
333
+ * ```
334
+ */
335
+ export function c(strings, ...values) {
336
+ const normalizedStrings = normalizeTemplateStrings(strings);
337
+ const children = [];
338
+ for (let index = 0; index < normalizedStrings.length; index += 1) {
339
+ const segment = normalizedStrings[index];
340
+ if (segment !== undefined && segment.length > 0) {
341
+ children.push(segment);
342
+ }
343
+ if (index < values.length) {
344
+ const normalized = normalizeTextInput(values[index]);
345
+ if (normalized.length > 0) {
346
+ children.push(...normalized);
347
+ }
348
+ }
305
349
  }
306
- if (child instanceof Promise) {
307
- const resolved = await child;
308
- return [resolved];
350
+ return children;
351
+ }
352
+ function createPromptElement(buildChildren, buildElement) {
353
+ const result = buildChildren();
354
+ if (result instanceof Promise) {
355
+ return result.then((children) => buildElement(children));
356
+ }
357
+ return Promise.resolve(buildElement(result));
358
+ }
359
+ // Normalize text-like inputs into prompt children.
360
+ function normalizeTextInput(content) {
361
+ if (content === null || content === undefined) {
362
+ return [];
363
+ }
364
+ if (Array.isArray(content)) {
365
+ const flattened = [];
366
+ for (const item of content) {
367
+ flattened.push(...normalizeTextInput(item));
368
+ }
369
+ return flattened;
309
370
  }
310
- if (child instanceof PromptBuilder) {
311
- const built = await child.build();
312
- return [built];
371
+ if (typeof content === "string") {
372
+ return [content];
313
373
  }
314
- return [child];
374
+ if (typeof content === "number" || typeof content === "boolean") {
375
+ return [String(content)];
376
+ }
377
+ // At this point, content must be PromptElement (PromptChild minus string/number/boolean)
378
+ return [content];
315
379
  }
316
- async function normalizeChildren(children) {
317
- const normalized = await Promise.all(children.map((child) => normalizeChild(child)));
318
- return normalized.flat();
380
+ function normalizeTemplateStrings(strings) {
381
+ if (strings.length === 0) {
382
+ return strings;
383
+ }
384
+ const normalized = [...strings];
385
+ if (normalized[0]?.startsWith("\n")) {
386
+ normalized[0] = normalized[0].slice(1);
387
+ }
388
+ const lastIndex = normalized.length - 1;
389
+ if (normalized[lastIndex]?.endsWith("\n")) {
390
+ normalized[lastIndex] = normalized[lastIndex].slice(0, -1);
391
+ }
392
+ const lines = normalized.flatMap((segment) => segment.split("\n"));
393
+ const indents = lines
394
+ .filter((line) => line.trim().length > 0)
395
+ .map((line) => line.match(TEMPLATE_INDENT_RE)?.[0].length ?? 0);
396
+ const minIndent = indents.length > 0 ? Math.min(...indents) : 0;
397
+ if (minIndent === 0) {
398
+ return normalized;
399
+ }
400
+ return normalized.map((segment) => segment
401
+ .split("\n")
402
+ .map((line) => {
403
+ if (line.trim().length === 0) {
404
+ return "";
405
+ }
406
+ return line.slice(Math.min(minIndent, line.length));
407
+ })
408
+ .join("\n"));
409
+ }
410
+ // Utility to recursively build and expand / resolve children
411
+ async function resolveBuilderChildren(children) {
412
+ const list = Array.isArray(children) ? children : [children];
413
+ const resolved = await Promise.all(list.map(async (child) => {
414
+ if (typeof child === "string") {
415
+ return [child];
416
+ }
417
+ if (child instanceof Promise) {
418
+ const value = await child;
419
+ return [value];
420
+ }
421
+ if (child instanceof PromptBuilder) {
422
+ return [await child.build()];
423
+ }
424
+ return [child];
425
+ }));
426
+ return resolved.flat();
319
427
  }
320
428
  //# sourceMappingURL=dsl.js.map
package/dist/dsl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Prompt evaluation utilities for testing Cria prompts with LLM-as-a-judge.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { c, cria } from "@fastpaca/cria";
7
+ * import { createProvider } from "@fastpaca/cria/ai-sdk";
8
+ * import { createJudge } from "@fastpaca/cria/eval";
9
+ * import { openai } from "@ai-sdk/openai";
10
+ *
11
+ * // Create a configured judge
12
+ * const judge = createJudge({
13
+ * target: createProvider(openai("gpt-4o")),
14
+ * evaluator: createProvider(openai("gpt-4o-mini")),
15
+ * });
16
+ *
17
+ * // Build the prompt to test
18
+ * const prompt = await cria.prompt()
19
+ * .system("You are a helpful customer support agent.")
20
+ * .user("How do I update my payment method?")
21
+ * .build();
22
+ *
23
+ * // Assert with simple criterion description
24
+ * await judge(prompt).toPass(c`Helpfulness in addressing the user's question`);
25
+ * ```
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ import { createJudge } from "./judge";
30
+ export type { EvalResult, Judge, JudgeConfig, Judgment } from "./judge";
31
+ export { createJudge } from "./judge";
32
+ export declare const cria: {
33
+ readonly judge: typeof createJudge;
34
+ readonly prompt: () => import("..").PromptBuilder;
35
+ readonly c: typeof import("..").c;
36
+ readonly merge: (...builders: import("..").PromptBuilder[]) => import("..").PromptBuilder;
37
+ };
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;CAA+C,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Prompt evaluation utilities for testing Cria prompts with LLM-as-a-judge.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { c, cria } from "@fastpaca/cria";
7
+ * import { createProvider } from "@fastpaca/cria/ai-sdk";
8
+ * import { createJudge } from "@fastpaca/cria/eval";
9
+ * import { openai } from "@ai-sdk/openai";
10
+ *
11
+ * // Create a configured judge
12
+ * const judge = createJudge({
13
+ * target: createProvider(openai("gpt-4o")),
14
+ * evaluator: createProvider(openai("gpt-4o-mini")),
15
+ * });
16
+ *
17
+ * // Build the prompt to test
18
+ * const prompt = await cria.prompt()
19
+ * .system("You are a helpful customer support agent.")
20
+ * .user("How do I update my payment method?")
21
+ * .build();
22
+ *
23
+ * // Assert with simple criterion description
24
+ * await judge(prompt).toPass(c`Helpfulness in addressing the user's question`);
25
+ * ```
26
+ *
27
+ * @packageDocumentation
28
+ */
29
+ import { cria as baseCria } from "../dsl";
30
+ import { createJudge } from "./judge";
31
+ // biome-ignore lint/performance/noBarrelFile: Intentional package entrypoint
32
+ export { createJudge } from "./judge";
33
+ export const cria = { ...baseCria, judge: createJudge };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,6EAA6E;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ModelProvider, PromptChildren, PromptElement } from "../types";
2
+ export declare const DEFAULT_THRESHOLD = 0.8;
3
+ export interface JudgeConfig {
4
+ target: ModelProvider<unknown>;
5
+ evaluator: ModelProvider<unknown>;
6
+ threshold?: number;
7
+ }
8
+ export interface EvalResult {
9
+ score: number;
10
+ reasoning: string;
11
+ passed: boolean;
12
+ response: string;
13
+ }
14
+ export interface Judgment {
15
+ toPass(criterion: PromptChildren): Promise<void>;
16
+ }
17
+ export type Judge = (prompt: PromptElement) => Judgment;
18
+ export declare function createJudge(config: JudgeConfig): Judge;
19
+ //# sourceMappingURL=judge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/eval/judge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,QAAQ,CAAC;AAOxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CA+CtD"}
@@ -0,0 +1,46 @@
1
+ import { z } from "zod";
2
+ import { c, cria } from "../dsl";
3
+ import { render } from "../render";
4
+ export const DEFAULT_THRESHOLD = 0.8;
5
+ const EvalResultSchema = z.object({
6
+ score: z.number().min(0).max(1),
7
+ reasoning: z.string(),
8
+ });
9
+ export function createJudge(config) {
10
+ const { target, evaluator, threshold = DEFAULT_THRESHOLD } = config;
11
+ return (prompt) => {
12
+ const evaluate = async (criterion) => {
13
+ const response = await target.completion(await render(prompt, { renderer: target.renderer }));
14
+ const evalPrompt = await cria
15
+ .prompt()
16
+ .system(c `You are an evaluator.
17
+ Score the response from 0 to 1 based on ALL criteria below.
18
+
19
+ Criteria: ${criterion}
20
+
21
+ Return JSON: { "score": <0-1>, "reasoning": "<brief explanation>" }
22
+ `)
23
+ .user(response)
24
+ .build();
25
+ const result = await evaluator.object(await render(evalPrompt, { renderer: evaluator.renderer }), EvalResultSchema);
26
+ return {
27
+ response,
28
+ score: result.score,
29
+ reasoning: result.reasoning,
30
+ passed: result.score >= threshold,
31
+ };
32
+ };
33
+ return {
34
+ async toPass(criterion) {
35
+ const result = await evaluate(criterion);
36
+ if (!result.passed) {
37
+ throw new Error("Expected prompt to pass criterion.\n\n" +
38
+ `Score: ${result.score} (threshold: ${threshold})\n` +
39
+ `Reasoning: ${result.reasoning}\n\n` +
40
+ `Response:\n${result.response}`);
41
+ }
42
+ },
43
+ };
44
+ };
45
+ }
46
+ //# sourceMappingURL=judge.js.map