@arizeai/phoenix-evals 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/dist/esm/core/EvaluatorBase.d.ts +19 -0
- package/dist/esm/core/EvaluatorBase.d.ts.map +1 -0
- package/dist/esm/core/EvaluatorBase.js +18 -0
- package/dist/esm/core/EvaluatorBase.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/ClassificationEvaluator.d.ts +20 -3
- package/dist/esm/llm/ClassificationEvaluator.d.ts.map +1 -1
- package/dist/esm/llm/ClassificationEvaluator.js +29 -2
- package/dist/esm/llm/ClassificationEvaluator.js.map +1 -1
- package/dist/esm/llm/LLMEvaluator.d.ts +4 -7
- package/dist/esm/llm/LLMEvaluator.d.ts.map +1 -1
- package/dist/esm/llm/LLMEvaluator.js +4 -7
- package/dist/esm/llm/LLMEvaluator.js.map +1 -1
- package/dist/esm/llm/createClassificationEvaluator.d.ts +1 -1
- package/dist/esm/llm/createClassificationEvaluator.d.ts.map +1 -1
- package/dist/esm/llm/createClassificationEvaluator.js.map +1 -1
- package/dist/esm/llm/createDocumentRelevancyEvaluator.d.ts +8 -7
- package/dist/esm/llm/createDocumentRelevancyEvaluator.d.ts.map +1 -1
- package/dist/esm/llm/createDocumentRelevancyEvaluator.js +1 -2
- package/dist/esm/llm/createDocumentRelevancyEvaluator.js.map +1 -1
- package/dist/esm/llm/createHallucinationEvaluator.d.ts +6 -6
- package/dist/esm/llm/createHallucinationEvaluator.d.ts.map +1 -1
- package/dist/esm/llm/createHallucinationEvaluator.js +1 -2
- package/dist/esm/llm/createHallucinationEvaluator.js.map +1 -1
- package/dist/esm/template/applyTemplate.d.ts +3 -3
- package/dist/esm/template/applyTemplate.d.ts.map +1 -1
- package/dist/esm/template/applyTemplate.js +15 -1
- package/dist/esm/template/applyTemplate.js.map +1 -1
- package/dist/esm/template/createTemplateVariablesProxy.d.ts +1 -1
- package/dist/esm/template/createTemplateVariablesProxy.d.ts.map +1 -1
- package/dist/esm/template/createTemplateVariablesProxy.js.map +1 -1
- package/dist/esm/template/getTemplateVariables.d.ts +2 -2
- package/dist/esm/template/getTemplateVariables.d.ts.map +1 -1
- package/dist/esm/template/getTemplateVariables.js +16 -0
- package/dist/esm/template/getTemplateVariables.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/data.d.ts +194 -0
- package/dist/esm/types/data.d.ts.map +1 -0
- package/dist/esm/types/data.js +2 -0
- package/dist/esm/types/data.js.map +1 -0
- package/dist/esm/types/evals.d.ts +19 -5
- package/dist/esm/types/evals.d.ts.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/otel.d.ts +14 -13
- package/dist/esm/types/otel.d.ts.map +1 -1
- package/dist/esm/types/templating.d.ts +8 -6
- package/dist/esm/types/templating.d.ts.map +1 -1
- package/dist/esm/utils/bindEvaluator.d.ts +219 -0
- package/dist/esm/utils/bindEvaluator.d.ts.map +1 -0
- package/dist/esm/utils/bindEvaluator.js +163 -0
- package/dist/esm/utils/bindEvaluator.js.map +1 -0
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/objectMappingUtils.d.ts +166 -0
- package/dist/esm/utils/objectMappingUtils.d.ts.map +1 -0
- package/dist/esm/utils/objectMappingUtils.js +191 -0
- package/dist/esm/utils/objectMappingUtils.js.map +1 -0
- package/dist/src/core/EvaluatorBase.d.ts +19 -0
- package/dist/src/core/EvaluatorBase.d.ts.map +1 -0
- package/dist/src/core/EvaluatorBase.js +17 -0
- package/dist/src/core/EvaluatorBase.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/ClassificationEvaluator.d.ts +20 -3
- package/dist/src/llm/ClassificationEvaluator.d.ts.map +1 -1
- package/dist/src/llm/ClassificationEvaluator.js +13 -2
- package/dist/src/llm/ClassificationEvaluator.js.map +1 -1
- package/dist/src/llm/LLMEvaluator.d.ts +4 -7
- package/dist/src/llm/LLMEvaluator.d.ts.map +1 -1
- package/dist/src/llm/LLMEvaluator.js +16 -5
- package/dist/src/llm/LLMEvaluator.js.map +1 -1
- package/dist/src/llm/createClassificationEvaluator.d.ts +1 -1
- package/dist/src/llm/createClassificationEvaluator.d.ts.map +1 -1
- package/dist/src/llm/createClassificationEvaluator.js.map +1 -1
- package/dist/src/llm/createDocumentRelevancyEvaluator.d.ts +8 -7
- package/dist/src/llm/createDocumentRelevancyEvaluator.d.ts.map +1 -1
- package/dist/src/llm/createDocumentRelevancyEvaluator.js +2 -2
- package/dist/src/llm/createDocumentRelevancyEvaluator.js.map +1 -1
- package/dist/src/llm/createHallucinationEvaluator.d.ts +6 -6
- package/dist/src/llm/createHallucinationEvaluator.d.ts.map +1 -1
- package/dist/src/llm/createHallucinationEvaluator.js +2 -2
- package/dist/src/llm/createHallucinationEvaluator.js.map +1 -1
- package/dist/src/template/applyTemplate.d.ts +3 -3
- package/dist/src/template/applyTemplate.d.ts.map +1 -1
- package/dist/src/template/applyTemplate.js +12 -1
- package/dist/src/template/applyTemplate.js.map +1 -1
- package/dist/src/template/createTemplateVariablesProxy.d.ts +1 -1
- package/dist/src/template/createTemplateVariablesProxy.d.ts.map +1 -1
- package/dist/src/template/createTemplateVariablesProxy.js.map +1 -1
- package/dist/src/template/getTemplateVariables.d.ts +2 -2
- package/dist/src/template/getTemplateVariables.d.ts.map +1 -1
- package/dist/src/template/getTemplateVariables.js +16 -0
- package/dist/src/template/getTemplateVariables.js.map +1 -1
- package/dist/src/types/data.d.ts +194 -0
- package/dist/src/types/data.d.ts.map +1 -0
- package/dist/src/types/data.js +3 -0
- package/dist/src/types/data.js.map +1 -0
- package/dist/src/types/evals.d.ts +19 -5
- package/dist/src/types/evals.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +1 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/otel.d.ts +14 -13
- package/dist/src/types/otel.d.ts.map +1 -1
- package/dist/src/types/templating.d.ts +8 -6
- package/dist/src/types/templating.d.ts.map +1 -1
- package/dist/src/utils/bindEvaluator.d.ts +219 -0
- package/dist/src/utils/bindEvaluator.d.ts.map +1 -0
- package/dist/src/utils/bindEvaluator.js +166 -0
- package/dist/src/utils/bindEvaluator.js.map +1 -0
- package/dist/src/utils/index.d.ts +2 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +18 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/objectMappingUtils.d.ts +166 -0
- package/dist/src/utils/objectMappingUtils.d.ts.map +1 -0
- package/dist/src/utils/objectMappingUtils.js +191 -0
- package/dist/src/utils/objectMappingUtils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/src/core/EvaluatorBase.ts +43 -0
- package/src/index.ts +1 -0
- package/src/llm/ClassificationEvaluator.ts +41 -5
- package/src/llm/LLMEvaluator.ts +7 -16
- package/src/llm/createClassificationEvaluator.ts +1 -1
- package/src/llm/createDocumentRelevancyEvaluator.ts +17 -12
- package/src/llm/createHallucinationEvaluator.ts +12 -10
- package/src/template/applyTemplate.ts +22 -9
- package/src/template/createTemplateVariablesProxy.ts +3 -3
- package/src/template/getTemplateVariables.ts +18 -2
- package/src/types/data.ts +200 -0
- package/src/types/evals.ts +27 -7
- package/src/types/index.ts +1 -0
- package/src/types/otel.ts +15 -13
- package/src/types/templating.ts +9 -6
- package/src/utils/bindEvaluator.ts +229 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/objectMappingUtils.ts +202 -0
package/README.md
CHANGED
|
@@ -111,6 +111,48 @@ console.log(result);
|
|
|
111
111
|
// Output: { label: "hallucinated", score: 0, explanation: "..." }
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
### Data Mapping
|
|
115
|
+
|
|
116
|
+
When your data structure doesn't match what an evaluator expects, use `bindEvaluator` to map your fields to the evaluator's expected input format:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import {
|
|
120
|
+
bindEvaluator,
|
|
121
|
+
createHallucinationEvaluator,
|
|
122
|
+
} from "@arizeai/phoenix-evals";
|
|
123
|
+
import { openai } from "@ai-sdk/openai";
|
|
124
|
+
|
|
125
|
+
const model = openai("gpt-4o-mini");
|
|
126
|
+
|
|
127
|
+
type ExampleType = {
|
|
128
|
+
question: string;
|
|
129
|
+
context: string;
|
|
130
|
+
answer: string;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const evaluator = bindEvaluator<ExampleType>(
|
|
134
|
+
createHallucinationEvaluator({ model }),
|
|
135
|
+
{
|
|
136
|
+
inputMapping: {
|
|
137
|
+
input: "question", // Map "input" from "question"
|
|
138
|
+
reference: "context", // Map "reference" from "context"
|
|
139
|
+
output: "answer", // Map "output" from "answer"
|
|
140
|
+
},
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
const result = await evaluator.evaluate({
|
|
145
|
+
question: "Is Arize Phoenix Open Source?",
|
|
146
|
+
context:
|
|
147
|
+
"Arize Phoenix is a platform for building and deploying AI applications. It is open source.",
|
|
148
|
+
answer: "Arize is not open source.",
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Mapping supports simple properties (`"fieldName"`), dot notation (`"user.profile.name"`), array access (`"items[0].id"`), JSONPath expressions (`"$.items[*].id"`), and function extractors (`(data) => data.customField`).
|
|
153
|
+
|
|
154
|
+
See the complete example in [`examples/bind_evaluator_example.ts`](examples/bind_evaluator_example.ts).
|
|
155
|
+
|
|
114
156
|
## Experimentation with Phoenix
|
|
115
157
|
|
|
116
158
|
This package works seamlessly with [`@arizeai/phoenix-client`](https://www.npmjs.com/package/@arizeai/phoenix-client) to enable experimentation workflows. You can create datasets, run experiments, and trace evaluation calls for analysis and debugging.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CreateEvaluatorArgs, EvaluationKind, EvaluationResult, EvaluatorInterface, OptimizationDirection, TelemetryConfig } from "../types/index.js";
|
|
2
|
+
import { ObjectMapping } from "../types/data.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base class for all evaluators
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class EvaluatorBase<RecordType extends Record<string, unknown>> implements EvaluatorInterface<RecordType> {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly kind: EvaluationKind;
|
|
9
|
+
readonly optimizationDirection?: OptimizationDirection;
|
|
10
|
+
readonly inputMapping?: ObjectMapping<RecordType>;
|
|
11
|
+
readonly telemetry?: TelemetryConfig;
|
|
12
|
+
constructor({ name, kind, optimizationDirection, inputMapping, telemetry, }: CreateEvaluatorArgs<RecordType>);
|
|
13
|
+
abstract evaluate(_example: RecordType): Promise<EvaluationResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Binds the input mapping to the evaluator. It makes a a copy of the evaluator and returns it.
|
|
16
|
+
*/
|
|
17
|
+
abstract bindInputMapping(inputMapping: ObjectMapping<RecordType>): EvaluatorBase<RecordType>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=EvaluatorBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvaluatorBase.d.ts","sourceRoot":"","sources":["../../../src/core/EvaluatorBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,8BAAsB,aAAa,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC5E,YAAW,kBAAkB,CAAC,UAAU,CAAC;IAEzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;gBACzB,EACV,IAAI,EACJ,IAAI,EACJ,qBAAqB,EACrB,YAAY,EACZ,SAAS,GACV,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAOlC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAElE;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CACvB,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,GACtC,aAAa,CAAC,UAAU,CAAC;CAC7B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all evaluators
|
|
3
|
+
*/
|
|
4
|
+
export class EvaluatorBase {
|
|
5
|
+
name;
|
|
6
|
+
kind;
|
|
7
|
+
optimizationDirection;
|
|
8
|
+
inputMapping;
|
|
9
|
+
telemetry;
|
|
10
|
+
constructor({ name, kind, optimizationDirection, inputMapping, telemetry, }) {
|
|
11
|
+
this.name = name;
|
|
12
|
+
this.kind = kind;
|
|
13
|
+
this.optimizationDirection = optimizationDirection;
|
|
14
|
+
this.inputMapping = inputMapping;
|
|
15
|
+
this.telemetry = telemetry;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=EvaluatorBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvaluatorBase.js","sourceRoot":"","sources":["../../../src/core/EvaluatorBase.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,OAAgB,aAAa;IAGxB,IAAI,CAAS;IACb,IAAI,CAAiB;IACrB,qBAAqB,CAAyB;IAC9C,YAAY,CAA6B;IACzC,SAAS,CAAmB;IACrC,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,qBAAqB,EACrB,YAAY,EACZ,SAAS,GACuB;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CASF"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -1,17 +1,34 @@
|
|
|
1
|
-
import { CreateClassificationEvaluatorArgs, EvaluatorFn,
|
|
1
|
+
import { ClassificationChoicesMap, CreateClassificationEvaluatorArgs, EvaluatorFn, PromptTemplate, WithPromptTemplate } from "../types/index.js";
|
|
2
|
+
import { ObjectMapping } from "../types/data.js";
|
|
2
3
|
import { LLMEvaluator } from "./LLMEvaluator.js";
|
|
4
|
+
import { LanguageModel } from "ai";
|
|
3
5
|
/**
|
|
4
6
|
* An LLM evaluator that performs evaluation via classification
|
|
5
7
|
*/
|
|
6
8
|
export declare class ClassificationEvaluator<RecordType extends Record<string, unknown>> extends LLMEvaluator<RecordType> implements WithPromptTemplate {
|
|
7
9
|
readonly evaluatorFn: EvaluatorFn<RecordType>;
|
|
8
|
-
readonly promptTemplate:
|
|
10
|
+
readonly promptTemplate: PromptTemplate;
|
|
11
|
+
/**
|
|
12
|
+
* A dynamically computed set of prompt template variables
|
|
13
|
+
*/
|
|
9
14
|
private _promptTemplateVariables;
|
|
10
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The model to use for classification
|
|
17
|
+
*/
|
|
18
|
+
readonly model: LanguageModel;
|
|
19
|
+
/**
|
|
20
|
+
* The choices to classify the example into
|
|
21
|
+
*/
|
|
22
|
+
readonly choices: ClassificationChoicesMap;
|
|
23
|
+
constructor(args: CreateClassificationEvaluatorArgs<RecordType>);
|
|
11
24
|
evaluate: (example: RecordType) => Promise<import("../types/index.js").EvaluationResult>;
|
|
12
25
|
/**
|
|
13
26
|
* List out the prompt template variables needed to perform evaluation
|
|
14
27
|
*/
|
|
15
28
|
get promptTemplateVariables(): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Binds the input mapping to the evaluator. It makes a a copy of the evaluator and returns it.
|
|
31
|
+
*/
|
|
32
|
+
bindInputMapping(inputMapping: ObjectMapping<RecordType>): ClassificationEvaluator<RecordType>;
|
|
16
33
|
}
|
|
17
34
|
//# sourceMappingURL=ClassificationEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassificationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/ClassificationEvaluator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iCAAiC,EACjC,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"ClassificationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/ClassificationEvaluator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,iCAAiC,EACjC,WAAW,EACX,cAAc,EACd,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC;;GAEG;AACH,qBAAa,uBAAuB,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7E,SAAQ,YAAY,CAAC,UAAU,CAC/B,YAAW,kBAAkB;IAE7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC;;OAEG;IACH,OAAO,CAAC,wBAAwB,CAAuB;IACvD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAE/B,IAAI,EAAE,iCAAiC,CAAC,UAAU,CAAC;IAS/D,QAAQ,GAAI,SAAS,UAAU,kDAM7B;IACF;;OAEG;IACH,IAAI,uBAAuB,IAAI,MAAM,EAAE,CAStC;IACD;;OAEG;IACH,gBAAgB,CACd,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,GACtC,uBAAuB,CAAC,UAAU,CAAC;CAMvC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getTemplateVariables } from "../template/index.js";
|
|
2
|
+
import { remapObject } from "../utils/objectMappingUtils.js";
|
|
2
3
|
import { createClassifierFn } from "./createClassifierFn.js";
|
|
3
4
|
import { LLMEvaluator } from "./LLMEvaluator.js";
|
|
4
5
|
/**
|
|
@@ -7,14 +8,31 @@ import { LLMEvaluator } from "./LLMEvaluator.js";
|
|
|
7
8
|
export class ClassificationEvaluator extends LLMEvaluator {
|
|
8
9
|
evaluatorFn;
|
|
9
10
|
promptTemplate;
|
|
11
|
+
/**
|
|
12
|
+
* A dynamically computed set of prompt template variables
|
|
13
|
+
*/
|
|
10
14
|
_promptTemplateVariables;
|
|
15
|
+
/**
|
|
16
|
+
* The model to use for classification
|
|
17
|
+
*/
|
|
18
|
+
model;
|
|
19
|
+
/**
|
|
20
|
+
* The choices to classify the example into
|
|
21
|
+
*/
|
|
22
|
+
choices;
|
|
11
23
|
constructor(args) {
|
|
12
24
|
super(args);
|
|
13
25
|
this.promptTemplate = args.promptTemplate;
|
|
14
|
-
this.
|
|
26
|
+
this.model = args.model;
|
|
27
|
+
this.choices = args.choices;
|
|
28
|
+
this.evaluatorFn = createClassifierFn({
|
|
29
|
+
...args,
|
|
30
|
+
});
|
|
15
31
|
}
|
|
16
32
|
evaluate = (example) => {
|
|
17
|
-
return this.evaluatorFn(
|
|
33
|
+
return this.evaluatorFn(this.inputMapping
|
|
34
|
+
? remapObject(example, this.inputMapping)
|
|
35
|
+
: example);
|
|
18
36
|
};
|
|
19
37
|
/**
|
|
20
38
|
* List out the prompt template variables needed to perform evaluation
|
|
@@ -29,5 +47,14 @@ export class ClassificationEvaluator extends LLMEvaluator {
|
|
|
29
47
|
// Give a copy of the variables
|
|
30
48
|
return [...this._promptTemplateVariables];
|
|
31
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Binds the input mapping to the evaluator. It makes a a copy of the evaluator and returns it.
|
|
52
|
+
*/
|
|
53
|
+
bindInputMapping(inputMapping) {
|
|
54
|
+
return new ClassificationEvaluator({
|
|
55
|
+
...this,
|
|
56
|
+
inputMapping,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
32
59
|
}
|
|
33
60
|
//# sourceMappingURL=ClassificationEvaluator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassificationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/ClassificationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ClassificationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/ClassificationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AASnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C;;GAEG;AACH,MAAM,OAAO,uBACX,SAAQ,YAAwB;IAGvB,WAAW,CAA0B;IACrC,cAAc,CAAiB;IACxC;;OAEG;IACK,wBAAwB,CAAuB;IACvD;;OAEG;IACM,KAAK,CAAgB;IAC9B;;OAEG;IACM,OAAO,CAA2B;IAE3C,YAAY,IAAmD;QAC7D,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAa;YAChD,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;IACD,QAAQ,GAAG,CAAC,OAAmB,EAAE,EAAE;QACjC,OAAO,IAAI,CAAC,WAAW,CACrB,IAAI,CAAC,YAAY;YACf,CAAC,CAAC,WAAW,CAAa,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;YACrD,CAAC,CAAC,OAAO,CACZ,CAAC;IACJ,CAAC,CAAC;IACF;;OAEG;IACH,IAAI,uBAAuB;QACzB,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,wBAAwB,GAAG,oBAAoB,CAAC;gBACnD,QAAQ,EAAE,IAAI,CAAC,cAAc;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,+BAA+B;QAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD;;OAEG;IACH,gBAAgB,CACd,YAAuC;QAEvC,OAAO,IAAI,uBAAuB,CAAC;YACjC,GAAG,IAAI;YACP,YAAY;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EvaluatorBase } from "../core/EvaluatorBase.js";
|
|
2
|
+
import { CreateLLMEvaluatorArgs } from "../types/index.js";
|
|
2
3
|
/**
|
|
3
4
|
* Base class for llm evaluation metrics / scores
|
|
4
5
|
*/
|
|
5
|
-
export declare abstract class LLMEvaluator<RecordType extends Record<string, unknown>>
|
|
6
|
-
|
|
7
|
-
readonly kind: "LLM";
|
|
8
|
-
readonly optimizationDirection?: OptimizationDirection;
|
|
9
|
-
constructor({ name, optimizationDirection }: CreateEvaluatorArgs);
|
|
10
|
-
abstract evaluate(_example: RecordType): Promise<EvaluationResult>;
|
|
6
|
+
export declare abstract class LLMEvaluator<RecordType extends Record<string, unknown>> extends EvaluatorBase<RecordType> {
|
|
7
|
+
constructor({ ...args }: CreateLLMEvaluatorArgs<RecordType>);
|
|
11
8
|
}
|
|
12
9
|
//# sourceMappingURL=LLMEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/LLMEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LLMEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/LLMEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,8BAAsB,YAAY,CAChC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC1C,SAAQ,aAAa,CAAC,UAAU,CAAC;gBACrB,EAAE,GAAG,IAAI,EAAE,EAAE,sBAAsB,CAAC,UAAU,CAAC;CAG5D"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
+
import { EvaluatorBase } from "../core/EvaluatorBase.js";
|
|
1
2
|
/**
|
|
2
3
|
* Base class for llm evaluation metrics / scores
|
|
3
4
|
*/
|
|
4
|
-
export class LLMEvaluator {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
optimizationDirection;
|
|
8
|
-
constructor({ name, optimizationDirection }) {
|
|
9
|
-
this.name = name;
|
|
10
|
-
this.optimizationDirection = optimizationDirection;
|
|
5
|
+
export class LLMEvaluator extends EvaluatorBase {
|
|
6
|
+
constructor({ ...args }) {
|
|
7
|
+
super({ kind: "LLM", ...args });
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
10
|
//# sourceMappingURL=LLMEvaluator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LLMEvaluator.js","sourceRoot":"","sources":["../../../src/llm/LLMEvaluator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LLMEvaluator.js","sourceRoot":"","sources":["../../../src/llm/LLMEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,MAAM,OAAgB,YAEpB,SAAQ,aAAyB;IACjC,YAAY,EAAE,GAAG,IAAI,EAAsC;QACzD,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CreateClassificationEvaluatorArgs } from "../types/evals.js";
|
|
2
2
|
import { ClassificationEvaluator } from "./ClassificationEvaluator.js";
|
|
3
|
-
export declare function createClassificationEvaluator<RecordType extends Record<string, unknown>>(args: CreateClassificationEvaluatorArgs): ClassificationEvaluator<RecordType>;
|
|
3
|
+
export declare function createClassificationEvaluator<RecordType extends Record<string, unknown>>(args: CreateClassificationEvaluatorArgs<RecordType>): ClassificationEvaluator<RecordType>;
|
|
4
4
|
//# sourceMappingURL=createClassificationEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClassificationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createClassificationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,6BAA6B,CAC3C,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE1C,IAAI,EAAE,iCAAiC,
|
|
1
|
+
{"version":3,"file":"createClassificationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createClassificationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,6BAA6B,CAC3C,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE1C,IAAI,EAAE,iCAAiC,CAAC,UAAU,CAAC,GAClD,uBAAuB,CAAC,UAAU,CAAC,CAErC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createClassificationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createClassificationEvaluator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,6BAA6B,CAG3C,
|
|
1
|
+
{"version":3,"file":"createClassificationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createClassificationEvaluator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,UAAU,6BAA6B,CAG3C,IAAmD;IAEnD,OAAO,IAAI,uBAAuB,CAAa,IAAI,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CreateClassificationEvaluatorArgs
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { CreateClassificationEvaluatorArgs } from "../types/evals.js";
|
|
2
|
+
import { ClassificationEvaluator } from "./ClassificationEvaluator.js";
|
|
3
|
+
export interface DocumentRelevancyEvaluatorArgs<RecordType extends Record<string, unknown> = DocumentRelevancyEvaluationRecord> extends Omit<CreateClassificationEvaluatorArgs<RecordType>, "promptTemplate" | "choices" | "optimizationDirection" | "name"> {
|
|
4
|
+
optimizationDirection?: CreateClassificationEvaluatorArgs<RecordType>["optimizationDirection"];
|
|
5
|
+
name?: CreateClassificationEvaluatorArgs<RecordType>["name"];
|
|
6
|
+
choices?: CreateClassificationEvaluatorArgs<RecordType>["choices"];
|
|
7
|
+
promptTemplate?: CreateClassificationEvaluatorArgs<RecordType>["promptTemplate"];
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* A record to be evaluated by the document relevancy evaluator.
|
|
@@ -39,5 +40,5 @@ export interface DocumentRelevancyEvaluationRecord {
|
|
|
39
40
|
* console.log(result.label); // "relevant" or "unrelated"
|
|
40
41
|
* ```
|
|
41
42
|
*/
|
|
42
|
-
export declare function createDocumentRelevancyEvaluator<RecordType extends Record<string, unknown> = DocumentRelevancyEvaluationRecord>(args: DocumentRelevancyEvaluatorArgs):
|
|
43
|
+
export declare function createDocumentRelevancyEvaluator<RecordType extends Record<string, unknown> = DocumentRelevancyEvaluationRecord>(args: DocumentRelevancyEvaluatorArgs<RecordType>): ClassificationEvaluator<RecordType>;
|
|
43
44
|
//# sourceMappingURL=createDocumentRelevancyEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDocumentRelevancyEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,
|
|
1
|
+
{"version":3,"file":"createDocumentRelevancyEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,WAAW,8BAA8B,CAC7C,UAAU,SAAS,MAAM,CACvB,MAAM,EACN,OAAO,CACR,GAAG,iCAAiC,CACrC,SAAQ,IAAI,CACV,iCAAiC,CAAC,UAAU,CAAC,EAC7C,gBAAgB,GAAG,SAAS,GAAG,uBAAuB,GAAG,MAAM,CAChE;IACD,qBAAqB,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC/F,IAAI,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,cAAc,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,SAAS,MAAM,CACvB,MAAM,EACN,OAAO,CACR,GAAG,iCAAiC,EAErC,IAAI,EAAE,8BAA8B,CAAC,UAAU,CAAC,GAC/C,uBAAuB,CAAC,UAAU,CAAC,CAerC"}
|
|
@@ -29,12 +29,11 @@ import { createClassificationEvaluator } from "./createClassificationEvaluator.j
|
|
|
29
29
|
export function createDocumentRelevancyEvaluator(args) {
|
|
30
30
|
const { choices = DOCUMENT_RELEVANCY_CHOICES, promptTemplate = DOCUMENT_RELEVANCY_TEMPLATE, optimizationDirection = "MAXIMIZE", name = "document_relevancy", ...rest } = args;
|
|
31
31
|
return createClassificationEvaluator({
|
|
32
|
-
...
|
|
32
|
+
...rest,
|
|
33
33
|
promptTemplate,
|
|
34
34
|
choices,
|
|
35
35
|
optimizationDirection,
|
|
36
36
|
name,
|
|
37
|
-
...rest,
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
39
|
//# sourceMappingURL=createDocumentRelevancyEvaluator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDocumentRelevancyEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"createDocumentRelevancyEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kDAAkD,CAAC;AAI1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AA0BhF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,gCAAgC,CAM9C,IAAgD;IAEhD,MAAM,EACJ,OAAO,GAAG,0BAA0B,EACpC,cAAc,GAAG,2BAA2B,EAC5C,qBAAqB,GAAG,UAAU,EAClC,IAAI,GAAG,oBAAoB,EAC3B,GAAG,IAAI,EACR,GAAG,IAAI,CAAC;IACT,OAAO,6BAA6B,CAAa;QAC/C,GAAG,IAAI;QACP,cAAc;QACd,OAAO;QACP,qBAAqB;QACrB,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CreateClassificationEvaluatorArgs } from "../types/evals.js";
|
|
2
2
|
import { ClassificationEvaluator } from "./ClassificationEvaluator.js";
|
|
3
|
-
export interface HallucinationEvaluatorArgs extends Omit<CreateClassificationEvaluatorArgs
|
|
4
|
-
optimizationDirection?: CreateClassificationEvaluatorArgs["optimizationDirection"];
|
|
5
|
-
name?: CreateClassificationEvaluatorArgs["name"];
|
|
6
|
-
choices?: CreateClassificationEvaluatorArgs["choices"];
|
|
7
|
-
promptTemplate?: CreateClassificationEvaluatorArgs["promptTemplate"];
|
|
3
|
+
export interface HallucinationEvaluatorArgs<RecordType extends Record<string, unknown> = HallucinationEvaluationRecord> extends Omit<CreateClassificationEvaluatorArgs<RecordType>, "promptTemplate" | "choices" | "optimizationDirection" | "name"> {
|
|
4
|
+
optimizationDirection?: CreateClassificationEvaluatorArgs<RecordType>["optimizationDirection"];
|
|
5
|
+
name?: CreateClassificationEvaluatorArgs<RecordType>["name"];
|
|
6
|
+
choices?: CreateClassificationEvaluatorArgs<RecordType>["choices"];
|
|
7
|
+
promptTemplate?: CreateClassificationEvaluatorArgs<RecordType>["promptTemplate"];
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* A record to be evaluated by the hallucination evaluator.
|
|
@@ -21,5 +21,5 @@ export type HallucinationEvaluationRecord = {
|
|
|
21
21
|
* @param args - The arguments for creating the hallucination evaluator.
|
|
22
22
|
* @returns A function that evaluates whether an answer is factual or hallucinated based on a query and reference text.
|
|
23
23
|
*/
|
|
24
|
-
export declare function createHallucinationEvaluator<RecordType extends Record<string, unknown> = HallucinationEvaluationRecord>(args: HallucinationEvaluatorArgs): ClassificationEvaluator<RecordType>;
|
|
24
|
+
export declare function createHallucinationEvaluator<RecordType extends Record<string, unknown> = HallucinationEvaluationRecord>(args: HallucinationEvaluatorArgs<RecordType>): ClassificationEvaluator<RecordType>;
|
|
25
25
|
//# sourceMappingURL=createHallucinationEvaluator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHallucinationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createHallucinationEvaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"createHallucinationEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createHallucinationEvaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,WAAW,0BAA0B,CACzC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,6BAA6B,CAC1E,SAAQ,IAAI,CACV,iCAAiC,CAAC,UAAU,CAAC,EAC7C,gBAAgB,GAAG,SAAS,GAAG,uBAAuB,GAAG,MAAM,CAChE;IACD,qBAAqB,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC/F,IAAI,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,cAAc,CAAC,EAAE,iCAAiC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,6BAA6B,EAE1E,IAAI,EAAE,0BAA0B,CAAC,UAAU,CAAC,GAC3C,uBAAuB,CAAC,UAAU,CAAC,CAerC"}
|
|
@@ -9,12 +9,11 @@ import { createClassificationEvaluator } from "./createClassificationEvaluator.j
|
|
|
9
9
|
export function createHallucinationEvaluator(args) {
|
|
10
10
|
const { choices = HALLUCINATION_CHOICES, promptTemplate = HALLUCINATION_TEMPLATE, optimizationDirection = "MINIMIZE", name = "hallucination", ...rest } = args;
|
|
11
11
|
return createClassificationEvaluator({
|
|
12
|
-
...
|
|
12
|
+
...rest,
|
|
13
13
|
promptTemplate,
|
|
14
14
|
choices,
|
|
15
15
|
optimizationDirection,
|
|
16
16
|
name,
|
|
17
|
-
...rest,
|
|
18
17
|
});
|
|
19
18
|
}
|
|
20
19
|
//# sourceMappingURL=createHallucinationEvaluator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createHallucinationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createHallucinationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"createHallucinationEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createHallucinationEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAuBhF;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAG1C,IAA4C;IAE5C,MAAM,EACJ,OAAO,GAAG,qBAAqB,EAC/B,cAAc,GAAG,sBAAsB,EACvC,qBAAqB,GAAG,UAAU,EAClC,IAAI,GAAG,eAAe,EACtB,GAAG,IAAI,EACR,GAAG,IAAI,CAAC;IACT,OAAO,6BAA6B,CAAa;QAC/C,GAAG,IAAI;QACP,cAAc;QACd,OAAO;QACP,qBAAqB;QACrB,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PromptTemplate, RenderedPrompt } from "../types/templating.js";
|
|
2
2
|
/**
|
|
3
3
|
* A function that applies a set of variables to a template (e.g. a prompt)
|
|
4
4
|
* Uses the Mustache library to apply the variables to the template
|
|
5
5
|
*/
|
|
6
6
|
export declare function formatTemplate(args: {
|
|
7
|
-
template:
|
|
7
|
+
template: PromptTemplate;
|
|
8
8
|
variables: Record<string, unknown>;
|
|
9
|
-
}):
|
|
9
|
+
}): RenderedPrompt;
|
|
10
10
|
//# sourceMappingURL=applyTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyTemplate.d.ts","sourceRoot":"","sources":["../../../src/template/applyTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"applyTemplate.d.ts","sourceRoot":"","sources":["../../../src/template/applyTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,cAAc,CAejB"}
|
|
@@ -7,7 +7,21 @@ import Mustache from "mustache";
|
|
|
7
7
|
export function formatTemplate(args) {
|
|
8
8
|
const { template, variables } = args;
|
|
9
9
|
const variablesProxy = createTemplateVariablesProxy(variables);
|
|
10
|
+
if (typeof template === "string") {
|
|
11
|
+
return renderTemplateString(template, variablesProxy);
|
|
12
|
+
}
|
|
13
|
+
return template.map((message) => {
|
|
14
|
+
if (message.content !== undefined && typeof message.content === "string") {
|
|
15
|
+
return {
|
|
16
|
+
...message,
|
|
17
|
+
content: renderTemplateString(message.content, variablesProxy),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return message;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function renderTemplateString(template, variables) {
|
|
10
24
|
// Disable HTML escaping by providing a custom escape function that returns text as-is
|
|
11
|
-
return Mustache.render(template,
|
|
25
|
+
return Mustache.render(template, variables, {}, { escape: (text) => text });
|
|
12
26
|
}
|
|
13
27
|
//# sourceMappingURL=applyTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyTemplate.js","sourceRoot":"","sources":["../../../src/template/applyTemplate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAG9B;IACC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,cAAc,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAC/D,sFAAsF;IACtF,OAAO,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"applyTemplate.js","sourceRoot":"","sources":["../../../src/template/applyTemplate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAG9B;IACC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,cAAc,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,oBAAoB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO;gBACL,GAAG,OAAO;gBACV,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;aAC/D,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAmB,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,SAAkC;IAElC,sFAAsF;IACtF,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* This allows Mustache to access properties of objects (e.g., {{user.name}}) while
|
|
4
4
|
* stringifying objects that are accessed as leaf values (e.g., {{user.profile}}).
|
|
5
5
|
*/
|
|
6
|
-
export declare function createTemplateVariablesProxy(obj:
|
|
6
|
+
export declare function createTemplateVariablesProxy<T>(obj: T): T;
|
|
7
7
|
//# sourceMappingURL=createTemplateVariablesProxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTemplateVariablesProxy.d.ts","sourceRoot":"","sources":["../../../src/template/createTemplateVariablesProxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"createTemplateVariablesProxy.d.ts","sourceRoot":"","sources":["../../../src/template/createTemplateVariablesProxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA+DzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTemplateVariablesProxy.js","sourceRoot":"","sources":["../../../src/template/createTemplateVariablesProxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,
|
|
1
|
+
{"version":3,"file":"createTemplateVariablesProxy.js","sourceRoot":"","sources":["../../../src/template/createTemplateVariablesProxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAI,GAAM;IACpD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAM,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE;YACpB,GAAG,CAAC,MAAM,EAAE,IAAqB;gBAC/B,6EAA6E;gBAC7E,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;gBAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC;gBAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAExC,sEAAsE;gBACtE,iFAAiF;gBACjF,IACE,KAAK,KAAK,IAAI;oBACd,OAAO,KAAK,KAAK,QAAQ;oBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,CAAC;oBACD,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;YACD,kGAAkG;YAClG,8EAA8E;YAC9E,GAAG,CAAC,MAAM,EAAE,IAAI;gBACd,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9C,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,MAAM;gBACZ,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,wBAAwB,CAAC,MAAM,EAAE,IAAI;gBACnC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,OAAO;wBACL,UAAU,EAAE,KAAK;wBACjB,YAAY,EAAE,IAAI;wBAClB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;qBACpC,CAAC;gBACJ,CAAC;gBACD,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTemplateVariables.d.ts","sourceRoot":"","sources":["../../../src/template/getTemplateVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getTemplateVariables.d.ts","sourceRoot":"","sources":["../../../src/template/getTemplateVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AACF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,EAAE,CAW5E"}
|
|
@@ -6,6 +6,22 @@ import Mustache from "mustache";
|
|
|
6
6
|
*/
|
|
7
7
|
export function getTemplateVariables(args) {
|
|
8
8
|
const { template } = args;
|
|
9
|
+
if (typeof template === "string") {
|
|
10
|
+
return getTemplateVariablesFromString(template);
|
|
11
|
+
}
|
|
12
|
+
return template.reduce((acc, message) => {
|
|
13
|
+
if (message.content !== undefined && typeof message.content === "string") {
|
|
14
|
+
return [...acc, ...getTemplateVariablesFromString(message.content)];
|
|
15
|
+
}
|
|
16
|
+
return acc;
|
|
17
|
+
}, []);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse out the template variables of a string template
|
|
21
|
+
* @param template - The template to get the variables from
|
|
22
|
+
* @returns {string[]} a list of prompt template variables
|
|
23
|
+
*/
|
|
24
|
+
function getTemplateVariablesFromString(template) {
|
|
9
25
|
const templateSpans = Mustache.parse(template);
|
|
10
26
|
return templateSpans.reduce((acc, templateSpan) => {
|
|
11
27
|
const [spanType, value] = templateSpan;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTemplateVariables.js","sourceRoot":"","sources":["../../../src/template/getTemplateVariables.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAKhC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA6B;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;QAChD,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;QACvC,IAAI,QAAQ,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAc,CAAC,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"getTemplateVariables.js","sourceRoot":"","sources":["../../../src/template/getTemplateVariables.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAKhC;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA6B;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACtC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,8BAA8B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAc,CAAC,CAAC;AACrB,CAAC;AACD;;;;GAIG;AACH,SAAS,8BAA8B,CAAC,QAAgB;IACtD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE;QAChD,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC;QACvC,IAAI,QAAQ,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAc,CAAC,CAAC;AACrB,CAAC"}
|