@arizeai/phoenix-evals 0.5.1 → 0.6.1

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 (194) hide show
  1. package/README.md +42 -0
  2. package/dist/esm/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.d.ts +3 -0
  3. package/dist/esm/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.d.ts.map +1 -0
  4. package/dist/esm/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.js +37 -0
  5. package/dist/esm/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.js.map +1 -0
  6. package/dist/esm/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.d.ts +3 -0
  7. package/dist/esm/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.d.ts.map +1 -0
  8. package/dist/esm/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.js +43 -0
  9. package/dist/esm/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.js.map +1 -0
  10. package/dist/esm/__generated__/default_templates/index.d.ts +3 -0
  11. package/dist/esm/__generated__/default_templates/index.d.ts.map +1 -0
  12. package/dist/esm/__generated__/default_templates/index.js +4 -0
  13. package/dist/esm/__generated__/default_templates/index.js.map +1 -0
  14. package/dist/esm/__generated__/types.d.ts +9 -0
  15. package/dist/esm/__generated__/types.d.ts.map +1 -0
  16. package/dist/esm/__generated__/types.js +3 -0
  17. package/dist/esm/__generated__/types.js.map +1 -0
  18. package/dist/esm/core/EvaluatorBase.d.ts +19 -0
  19. package/dist/esm/core/EvaluatorBase.d.ts.map +1 -0
  20. package/dist/esm/core/EvaluatorBase.js +18 -0
  21. package/dist/esm/core/EvaluatorBase.js.map +1 -0
  22. package/dist/esm/index.d.ts +1 -0
  23. package/dist/esm/index.d.ts.map +1 -1
  24. package/dist/esm/index.js +1 -0
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/llm/ClassificationEvaluator.d.ts +19 -2
  27. package/dist/esm/llm/ClassificationEvaluator.d.ts.map +1 -1
  28. package/dist/esm/llm/ClassificationEvaluator.js +29 -2
  29. package/dist/esm/llm/ClassificationEvaluator.js.map +1 -1
  30. package/dist/esm/llm/LLMEvaluator.d.ts +4 -7
  31. package/dist/esm/llm/LLMEvaluator.d.ts.map +1 -1
  32. package/dist/esm/llm/LLMEvaluator.js +4 -7
  33. package/dist/esm/llm/LLMEvaluator.js.map +1 -1
  34. package/dist/esm/llm/createClassificationEvaluator.d.ts +1 -1
  35. package/dist/esm/llm/createClassificationEvaluator.d.ts.map +1 -1
  36. package/dist/esm/llm/createClassificationEvaluator.js.map +1 -1
  37. package/dist/esm/llm/createDocumentRelevanceEvaluator.d.ts +44 -0
  38. package/dist/esm/llm/createDocumentRelevanceEvaluator.d.ts.map +1 -0
  39. package/dist/esm/llm/{createDocumentRelevancyEvaluator.js → createDocumentRelevanceEvaluator.js} +11 -12
  40. package/dist/esm/llm/createDocumentRelevanceEvaluator.js.map +1 -0
  41. package/dist/esm/llm/createHallucinationEvaluator.d.ts +6 -7
  42. package/dist/esm/llm/createHallucinationEvaluator.d.ts.map +1 -1
  43. package/dist/esm/llm/createHallucinationEvaluator.js +3 -4
  44. package/dist/esm/llm/createHallucinationEvaluator.js.map +1 -1
  45. package/dist/esm/llm/index.d.ts +1 -1
  46. package/dist/esm/llm/index.js +1 -1
  47. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  48. package/dist/esm/types/data.d.ts +194 -0
  49. package/dist/esm/types/data.d.ts.map +1 -0
  50. package/dist/esm/types/data.js +2 -0
  51. package/dist/esm/types/data.js.map +1 -0
  52. package/dist/esm/types/evals.d.ts +17 -3
  53. package/dist/esm/types/evals.d.ts.map +1 -1
  54. package/dist/esm/types/index.d.ts +1 -0
  55. package/dist/esm/types/index.d.ts.map +1 -1
  56. package/dist/esm/types/index.js +1 -0
  57. package/dist/esm/types/index.js.map +1 -1
  58. package/dist/esm/types/otel.d.ts +14 -13
  59. package/dist/esm/types/otel.d.ts.map +1 -1
  60. package/dist/esm/utils/bindEvaluator.d.ts +219 -0
  61. package/dist/esm/utils/bindEvaluator.d.ts.map +1 -0
  62. package/dist/esm/utils/bindEvaluator.js +163 -0
  63. package/dist/esm/utils/bindEvaluator.js.map +1 -0
  64. package/dist/esm/utils/index.d.ts +2 -0
  65. package/dist/esm/utils/index.d.ts.map +1 -0
  66. package/dist/esm/utils/index.js +2 -0
  67. package/dist/esm/utils/index.js.map +1 -0
  68. package/dist/esm/utils/objectMappingUtils.d.ts +166 -0
  69. package/dist/esm/utils/objectMappingUtils.d.ts.map +1 -0
  70. package/dist/esm/utils/objectMappingUtils.js +191 -0
  71. package/dist/esm/utils/objectMappingUtils.js.map +1 -0
  72. package/dist/src/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.d.ts +3 -0
  73. package/dist/src/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.d.ts.map +1 -0
  74. package/dist/src/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.js +40 -0
  75. package/dist/src/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.js.map +1 -0
  76. package/dist/src/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.d.ts +3 -0
  77. package/dist/src/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.d.ts.map +1 -0
  78. package/dist/src/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.js +46 -0
  79. package/dist/src/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.js.map +1 -0
  80. package/dist/src/__generated__/default_templates/index.d.ts +3 -0
  81. package/dist/src/__generated__/default_templates/index.d.ts.map +1 -0
  82. package/dist/src/__generated__/default_templates/index.js +9 -0
  83. package/dist/src/__generated__/default_templates/index.js.map +1 -0
  84. package/dist/src/__generated__/types.d.ts +9 -0
  85. package/dist/src/__generated__/types.d.ts.map +1 -0
  86. package/dist/src/__generated__/types.js +4 -0
  87. package/dist/src/__generated__/types.js.map +1 -0
  88. package/dist/src/core/EvaluatorBase.d.ts +19 -0
  89. package/dist/src/core/EvaluatorBase.d.ts.map +1 -0
  90. package/dist/src/core/EvaluatorBase.js +17 -0
  91. package/dist/src/core/EvaluatorBase.js.map +1 -0
  92. package/dist/src/index.d.ts +1 -0
  93. package/dist/src/index.d.ts.map +1 -1
  94. package/dist/src/index.js +1 -0
  95. package/dist/src/index.js.map +1 -1
  96. package/dist/src/llm/ClassificationEvaluator.d.ts +19 -2
  97. package/dist/src/llm/ClassificationEvaluator.d.ts.map +1 -1
  98. package/dist/src/llm/ClassificationEvaluator.js +13 -2
  99. package/dist/src/llm/ClassificationEvaluator.js.map +1 -1
  100. package/dist/src/llm/LLMEvaluator.d.ts +4 -7
  101. package/dist/src/llm/LLMEvaluator.d.ts.map +1 -1
  102. package/dist/src/llm/LLMEvaluator.js +16 -5
  103. package/dist/src/llm/LLMEvaluator.js.map +1 -1
  104. package/dist/src/llm/createClassificationEvaluator.d.ts +1 -1
  105. package/dist/src/llm/createClassificationEvaluator.d.ts.map +1 -1
  106. package/dist/src/llm/createClassificationEvaluator.js.map +1 -1
  107. package/dist/src/llm/createDocumentRelevanceEvaluator.d.ts +44 -0
  108. package/dist/src/llm/createDocumentRelevanceEvaluator.d.ts.map +1 -0
  109. package/dist/src/llm/{createDocumentRelevancyEvaluator.js → createDocumentRelevanceEvaluator.js} +13 -13
  110. package/dist/src/llm/createDocumentRelevanceEvaluator.js.map +1 -0
  111. package/dist/src/llm/createHallucinationEvaluator.d.ts +6 -7
  112. package/dist/src/llm/createHallucinationEvaluator.d.ts.map +1 -1
  113. package/dist/src/llm/createHallucinationEvaluator.js +4 -4
  114. package/dist/src/llm/createHallucinationEvaluator.js.map +1 -1
  115. package/dist/src/llm/index.d.ts +1 -1
  116. package/dist/src/llm/index.js +1 -1
  117. package/dist/src/types/data.d.ts +194 -0
  118. package/dist/src/types/data.d.ts.map +1 -0
  119. package/dist/src/types/data.js +3 -0
  120. package/dist/src/types/data.js.map +1 -0
  121. package/dist/src/types/evals.d.ts +17 -3
  122. package/dist/src/types/evals.d.ts.map +1 -1
  123. package/dist/src/types/index.d.ts +1 -0
  124. package/dist/src/types/index.d.ts.map +1 -1
  125. package/dist/src/types/index.js +1 -0
  126. package/dist/src/types/index.js.map +1 -1
  127. package/dist/src/types/otel.d.ts +14 -13
  128. package/dist/src/types/otel.d.ts.map +1 -1
  129. package/dist/src/utils/bindEvaluator.d.ts +219 -0
  130. package/dist/src/utils/bindEvaluator.d.ts.map +1 -0
  131. package/dist/src/utils/bindEvaluator.js +166 -0
  132. package/dist/src/utils/bindEvaluator.js.map +1 -0
  133. package/dist/src/utils/index.d.ts +2 -0
  134. package/dist/src/utils/index.d.ts.map +1 -0
  135. package/dist/src/{default_templates → utils}/index.js +1 -2
  136. package/dist/src/utils/index.js.map +1 -0
  137. package/dist/src/utils/objectMappingUtils.d.ts +166 -0
  138. package/dist/src/utils/objectMappingUtils.d.ts.map +1 -0
  139. package/dist/src/utils/objectMappingUtils.js +191 -0
  140. package/dist/src/utils/objectMappingUtils.js.map +1 -0
  141. package/dist/tsconfig.tsbuildinfo +1 -1
  142. package/package.json +2 -1
  143. package/src/__generated__/default_templates/DOCUMENT_RELEVANCE_CLASSIFICATION_EVALUATOR_CONFIG.ts +39 -0
  144. package/src/__generated__/default_templates/HALLUCINATION_CLASSIFICATION_EVALUATOR_CONFIG.ts +45 -0
  145. package/src/__generated__/default_templates/index.ts +4 -0
  146. package/src/__generated__/types.ts +11 -0
  147. package/src/core/EvaluatorBase.ts +43 -0
  148. package/src/index.ts +1 -0
  149. package/src/llm/ClassificationEvaluator.ts +39 -3
  150. package/src/llm/LLMEvaluator.ts +7 -16
  151. package/src/llm/createClassificationEvaluator.ts +1 -1
  152. package/src/llm/createDocumentRelevanceEvaluator.ts +79 -0
  153. package/src/llm/createHallucinationEvaluator.ts +17 -19
  154. package/src/llm/index.ts +1 -1
  155. package/src/types/data.ts +200 -0
  156. package/src/types/evals.ts +25 -5
  157. package/src/types/index.ts +1 -0
  158. package/src/types/otel.ts +15 -13
  159. package/src/utils/bindEvaluator.ts +229 -0
  160. package/src/utils/index.ts +1 -0
  161. package/src/utils/objectMappingUtils.ts +202 -0
  162. package/dist/esm/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.d.ts +0 -6
  163. package/dist/esm/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.d.ts.map +0 -1
  164. package/dist/esm/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.js +0 -25
  165. package/dist/esm/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.js.map +0 -1
  166. package/dist/esm/default_templates/HALLUCINATION_TEMPLATE.d.ts +0 -6
  167. package/dist/esm/default_templates/HALLUCINATION_TEMPLATE.d.ts.map +0 -1
  168. package/dist/esm/default_templates/HALLUCINATION_TEMPLATE.js +0 -31
  169. package/dist/esm/default_templates/HALLUCINATION_TEMPLATE.js.map +0 -1
  170. package/dist/esm/default_templates/index.d.ts +0 -3
  171. package/dist/esm/default_templates/index.d.ts.map +0 -1
  172. package/dist/esm/default_templates/index.js +0 -3
  173. package/dist/esm/default_templates/index.js.map +0 -1
  174. package/dist/esm/llm/createDocumentRelevancyEvaluator.d.ts +0 -43
  175. package/dist/esm/llm/createDocumentRelevancyEvaluator.d.ts.map +0 -1
  176. package/dist/esm/llm/createDocumentRelevancyEvaluator.js.map +0 -1
  177. package/dist/src/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.d.ts +0 -6
  178. package/dist/src/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.d.ts.map +0 -1
  179. package/dist/src/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.js +0 -28
  180. package/dist/src/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.js.map +0 -1
  181. package/dist/src/default_templates/HALLUCINATION_TEMPLATE.d.ts +0 -6
  182. package/dist/src/default_templates/HALLUCINATION_TEMPLATE.d.ts.map +0 -1
  183. package/dist/src/default_templates/HALLUCINATION_TEMPLATE.js +0 -34
  184. package/dist/src/default_templates/HALLUCINATION_TEMPLATE.js.map +0 -1
  185. package/dist/src/default_templates/index.d.ts +0 -3
  186. package/dist/src/default_templates/index.d.ts.map +0 -1
  187. package/dist/src/default_templates/index.js.map +0 -1
  188. package/dist/src/llm/createDocumentRelevancyEvaluator.d.ts +0 -43
  189. package/dist/src/llm/createDocumentRelevancyEvaluator.d.ts.map +0 -1
  190. package/dist/src/llm/createDocumentRelevancyEvaluator.js.map +0 -1
  191. package/src/default_templates/DOCUMENT_RELEVANCY_TEMPLATE.ts +0 -25
  192. package/src/default_templates/HALLUCINATION_TEMPLATE.ts +0 -31
  193. package/src/default_templates/index.ts +0 -2
  194. package/src/llm/createDocumentRelevancyEvaluator.ts +0 -77
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HALLUCINATION_CHOICES = exports.HALLUCINATION_TEMPLATE = void 0;
4
- exports.HALLUCINATION_TEMPLATE = `
5
- In this task, you will be presented with a query, a reference text and an answer. The answer is
6
- generated to the question based on the reference text. The answer may contain false information. You
7
- must use the reference text to determine if the answer to the question contains false information,
8
- if the answer is a hallucination of facts. Your objective is to determine whether the answer text
9
- contains factual information and is not a hallucination. A 'hallucination' refers to
10
- an answer that is not based on the reference text or assumes information that is not available in
11
- the reference text. Your response should be a single word: either "factual" or "hallucinated", and
12
- it should not include any other text or characters. "hallucinated" indicates that the answer
13
- provides factually inaccurate information to the query based on the reference text. "factual"
14
- indicates that the answer to the question is correct relative to the reference text, and does not
15
- contain made up information. Please read the query and reference text carefully before determining
16
- your response.
17
-
18
- [BEGIN DATA]
19
- ************
20
- [Query]: {{input}}
21
- ************
22
- [Reference text]: {{reference}}
23
- ************
24
- [Answer]: {{output}}
25
- ************
26
- [END DATA]
27
-
28
- Is the answer above factual or hallucinated based on the query and reference text?
29
- `;
30
- exports.HALLUCINATION_CHOICES = {
31
- hallucinated: 1,
32
- factual: 0,
33
- };
34
- //# sourceMappingURL=HALLUCINATION_TEMPLATE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HALLUCINATION_TEMPLATE.js","sourceRoot":"","sources":["../../../src/default_templates/HALLUCINATION_TEMPLATE.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBrC,CAAC;AAEW,QAAA,qBAAqB,GAAG;IACnC,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;CACX,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from "./HALLUCINATION_TEMPLATE";
2
- export * from "./DOCUMENT_RELEVANCY_TEMPLATE";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/default_templates/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/default_templates/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,gEAA8C"}
@@ -1,43 +0,0 @@
1
- import { CreateClassificationEvaluatorArgs, Evaluator } from "../types/evals";
2
- export interface DocumentRelevancyEvaluatorArgs extends Omit<CreateClassificationEvaluatorArgs, "promptTemplate" | "choices" | "optimizationDirection" | "name"> {
3
- optimizationDirection?: CreateClassificationEvaluatorArgs["optimizationDirection"];
4
- name?: CreateClassificationEvaluatorArgs["name"];
5
- choices?: CreateClassificationEvaluatorArgs["choices"];
6
- promptTemplate?: CreateClassificationEvaluatorArgs["promptTemplate"];
7
- }
8
- /**
9
- * A record to be evaluated by the document relevancy evaluator.
10
- */
11
- export interface DocumentRelevancyEvaluationRecord {
12
- input: string;
13
- documentText: string;
14
- [key: string]: unknown;
15
- }
16
- /**
17
- * Creates a document relevancy evaluator function.
18
- *
19
- * This function returns an evaluator that determines whether a given document text
20
- * is relevant to a provided input question. The evaluator uses a classification model
21
- * and a prompt template to make its determination.
22
- *
23
- * @param args - The arguments for creating the document relevancy evaluator.
24
- * @param args.model - The model to use for classification.
25
- * @param args.choices - The possible classification choices (defaults to DOCUMENT_RELEVANCY_CHOICES).
26
- * @param args.promptTemplate - The prompt template to use (defaults to DOCUMENT_RELEVANCY_TEMPLATE).
27
- * @param args.telemetry - The telemetry to use for the evaluator.
28
- *
29
- * @returns An evaluator function that takes a {@link DocumentRelevancyExample} and returns a classification result
30
- * indicating whether the document is relevant to the input question.
31
- *
32
- * @example
33
- * ```ts
34
- * const evaluator = createDocumentRelevancyEvaluator({ model: openai("gpt-4o-mini") });
35
- * const result = await evaluator.evaluate({
36
- * input: "What is the capital of France?",
37
- * documentText: "Paris is the capital and most populous city of France.",
38
- * });
39
- * console.log(result.label); // "relevant" or "unrelated"
40
- * ```
41
- */
42
- export declare function createDocumentRelevancyEvaluator<RecordType extends Record<string, unknown> = DocumentRelevancyEvaluationRecord>(args: DocumentRelevancyEvaluatorArgs): Evaluator<RecordType>;
43
- //# sourceMappingURL=createDocumentRelevancyEvaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createDocumentRelevancyEvaluator.d.ts","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iCAAiC,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI9E,MAAM,WAAW,8BACf,SAAQ,IAAI,CACV,iCAAiC,EACjC,gBAAgB,GAAG,SAAS,GAAG,uBAAuB,GAAG,MAAM,CAChE;IACD,qBAAqB,CAAC,EAAE,iCAAiC,CAAC,uBAAuB,CAAC,CAAC;IACnF,IAAI,CAAC,EAAE,iCAAiC,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,iCAAiC,CAAC,SAAS,CAAC,CAAC;IACvD,cAAc,CAAC,EAAE,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;CACtE;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,EACrC,IAAI,EAAE,8BAA8B,GAAG,SAAS,CAAC,UAAU,CAAC,CAiB7D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createDocumentRelevancyEvaluator.js","sourceRoot":"","sources":["../../../src/llm/createDocumentRelevancyEvaluator.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAsDA,4EAsBC;AA5ED,kGAG0D;AAG1D,mFAAgF;AAsBhF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,gCAAgC,CAK9C,IAAoC;IACpC,MAAM,EACJ,OAAO,GAAG,wDAA0B,EACpC,cAAc,GAAG,yDAA2B,EAC5C,qBAAqB,GAAG,UAAU,EAClC,IAAI,GAAG,oBAAoB,KAEzB,IAAI,EADH,IAAI,UACL,IAAI,EANF,8DAML,CAAO,CAAC;IAET,OAAO,IAAA,6DAA6B,gDAC/B,IAAI,KACP,cAAc;QACd,OAAO;QACP,qBAAqB;QACrB,IAAI,KACD,IAAI,EACP,CAAC;AACL,CAAC"}
@@ -1,25 +0,0 @@
1
- export const DOCUMENT_RELEVANCY_TEMPLATE = `
2
- You are comparing a document to a question and trying to determine if the document text
3
- contains information relevant to answering the question. Here is the data:
4
-
5
- [BEGIN DATA]
6
- ************
7
- [Question]: {{input}}
8
- ************
9
- [Document text]: {{documentText}}
10
- ************
11
- [END DATA]
12
-
13
- Compare the Question above to the Document text. You must determine whether the Document text
14
- contains information that can answer the Question. Please focus on whether the very specific
15
- question can be answered by the information in the Document text.
16
- Your response must be single word, either "relevant" or "unrelated",
17
- and should not contain any text or characters aside from that word.
18
- "unrelated" means that the document text does not contain an answer to the Question.
19
- "relevant" means the document text contains an answer to the Question.
20
- `;
21
-
22
- export const DOCUMENT_RELEVANCY_CHOICES = {
23
- relevant: 1,
24
- unrelated: 0,
25
- };
@@ -1,31 +0,0 @@
1
- export const HALLUCINATION_TEMPLATE = `
2
- In this task, you will be presented with a query, a reference text and an answer. The answer is
3
- generated to the question based on the reference text. The answer may contain false information. You
4
- must use the reference text to determine if the answer to the question contains false information,
5
- if the answer is a hallucination of facts. Your objective is to determine whether the answer text
6
- contains factual information and is not a hallucination. A 'hallucination' refers to
7
- an answer that is not based on the reference text or assumes information that is not available in
8
- the reference text. Your response should be a single word: either "factual" or "hallucinated", and
9
- it should not include any other text or characters. "hallucinated" indicates that the answer
10
- provides factually inaccurate information to the query based on the reference text. "factual"
11
- indicates that the answer to the question is correct relative to the reference text, and does not
12
- contain made up information. Please read the query and reference text carefully before determining
13
- your response.
14
-
15
- [BEGIN DATA]
16
- ************
17
- [Query]: {{input}}
18
- ************
19
- [Reference text]: {{reference}}
20
- ************
21
- [Answer]: {{output}}
22
- ************
23
- [END DATA]
24
-
25
- Is the answer above factual or hallucinated based on the query and reference text?
26
- `;
27
-
28
- export const HALLUCINATION_CHOICES = {
29
- hallucinated: 1,
30
- factual: 0,
31
- };
@@ -1,2 +0,0 @@
1
- export * from "./HALLUCINATION_TEMPLATE";
2
- export * from "./DOCUMENT_RELEVANCY_TEMPLATE";
@@ -1,77 +0,0 @@
1
- import {
2
- DOCUMENT_RELEVANCY_CHOICES,
3
- DOCUMENT_RELEVANCY_TEMPLATE,
4
- } from "../default_templates/DOCUMENT_RELEVANCY_TEMPLATE";
5
- import { CreateClassificationEvaluatorArgs, Evaluator } from "../types/evals";
6
-
7
- import { createClassificationEvaluator } from "./createClassificationEvaluator";
8
-
9
- export interface DocumentRelevancyEvaluatorArgs
10
- extends Omit<
11
- CreateClassificationEvaluatorArgs,
12
- "promptTemplate" | "choices" | "optimizationDirection" | "name"
13
- > {
14
- optimizationDirection?: CreateClassificationEvaluatorArgs["optimizationDirection"];
15
- name?: CreateClassificationEvaluatorArgs["name"];
16
- choices?: CreateClassificationEvaluatorArgs["choices"];
17
- promptTemplate?: CreateClassificationEvaluatorArgs["promptTemplate"];
18
- }
19
-
20
- /**
21
- * A record to be evaluated by the document relevancy evaluator.
22
- */
23
- export interface DocumentRelevancyEvaluationRecord {
24
- input: string;
25
- documentText: string;
26
- [key: string]: unknown;
27
- }
28
-
29
- /**
30
- * Creates a document relevancy evaluator function.
31
- *
32
- * This function returns an evaluator that determines whether a given document text
33
- * is relevant to a provided input question. The evaluator uses a classification model
34
- * and a prompt template to make its determination.
35
- *
36
- * @param args - The arguments for creating the document relevancy evaluator.
37
- * @param args.model - The model to use for classification.
38
- * @param args.choices - The possible classification choices (defaults to DOCUMENT_RELEVANCY_CHOICES).
39
- * @param args.promptTemplate - The prompt template to use (defaults to DOCUMENT_RELEVANCY_TEMPLATE).
40
- * @param args.telemetry - The telemetry to use for the evaluator.
41
- *
42
- * @returns An evaluator function that takes a {@link DocumentRelevancyExample} and returns a classification result
43
- * indicating whether the document is relevant to the input question.
44
- *
45
- * @example
46
- * ```ts
47
- * const evaluator = createDocumentRelevancyEvaluator({ model: openai("gpt-4o-mini") });
48
- * const result = await evaluator.evaluate({
49
- * input: "What is the capital of France?",
50
- * documentText: "Paris is the capital and most populous city of France.",
51
- * });
52
- * console.log(result.label); // "relevant" or "unrelated"
53
- * ```
54
- */
55
- export function createDocumentRelevancyEvaluator<
56
- RecordType extends Record<
57
- string,
58
- unknown
59
- > = DocumentRelevancyEvaluationRecord,
60
- >(args: DocumentRelevancyEvaluatorArgs): Evaluator<RecordType> {
61
- const {
62
- choices = DOCUMENT_RELEVANCY_CHOICES,
63
- promptTemplate = DOCUMENT_RELEVANCY_TEMPLATE,
64
- optimizationDirection = "MAXIMIZE",
65
- name = "document_relevancy",
66
- ...rest
67
- } = args;
68
-
69
- return createClassificationEvaluator<RecordType>({
70
- ...args,
71
- promptTemplate,
72
- choices,
73
- optimizationDirection,
74
- name,
75
- ...rest,
76
- });
77
- }