judgeval 0.2.9 → 0.3.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 (408) hide show
  1. package/dist/constants.d.ts +2 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/constants.js +2 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/data/example-params.d.ts +13 -0
  6. package/dist/data/example-params.d.ts.map +1 -0
  7. package/dist/data/example-params.js +12 -0
  8. package/dist/data/example-params.js.map +1 -0
  9. package/dist/data/example.d.ts +4 -0
  10. package/dist/data/example.d.ts.map +1 -0
  11. package/dist/data/example.js +10 -0
  12. package/dist/data/example.js.map +1 -0
  13. package/dist/data/index.d.ts +3 -0
  14. package/dist/data/index.d.ts.map +1 -0
  15. package/dist/data/index.js +3 -0
  16. package/dist/data/index.js.map +1 -0
  17. package/dist/env.d.ts +6 -0
  18. package/dist/env.d.ts.map +1 -0
  19. package/dist/env.js +13 -0
  20. package/dist/env.js.map +1 -0
  21. package/dist/index.d.ts +9 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +2 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/index.mjs +2 -0
  26. package/dist/index.mjs.map +1 -0
  27. package/dist/index.umd.js +2 -0
  28. package/dist/index.umd.js.map +1 -0
  29. package/dist/internal/api/index.d.ts +23 -0
  30. package/dist/internal/api/index.d.ts.map +1 -0
  31. package/dist/internal/api/index.js +132 -0
  32. package/dist/internal/api/index.js.map +1 -0
  33. package/dist/internal/api/models/BaseScorer.d.ts +23 -0
  34. package/dist/internal/api/models/BaseScorer.d.ts.map +1 -0
  35. package/dist/internal/api/models/BaseScorer.js +6 -0
  36. package/dist/internal/api/models/BaseScorer.js.map +1 -0
  37. package/dist/internal/api/models/EvalResults.d.ts +12 -0
  38. package/dist/internal/api/models/EvalResults.d.ts.map +1 -0
  39. package/dist/internal/api/models/EvalResults.js +6 -0
  40. package/dist/internal/api/models/EvalResults.js.map +1 -0
  41. package/dist/internal/api/models/EvalResultsFetch.d.ts +9 -0
  42. package/dist/internal/api/models/EvalResultsFetch.d.ts.map +1 -0
  43. package/dist/internal/api/models/EvalResultsFetch.js +6 -0
  44. package/dist/internal/api/models/EvalResultsFetch.js.map +1 -0
  45. package/dist/internal/api/models/Example.d.ts +10 -0
  46. package/dist/internal/api/models/Example.d.ts.map +1 -0
  47. package/dist/internal/api/models/Example.js +6 -0
  48. package/dist/internal/api/models/Example.js.map +1 -0
  49. package/dist/internal/api/models/ExampleEvaluationRun.d.ts +20 -0
  50. package/dist/internal/api/models/ExampleEvaluationRun.d.ts.map +1 -0
  51. package/dist/internal/api/models/ExampleEvaluationRun.js +6 -0
  52. package/dist/internal/api/models/ExampleEvaluationRun.js.map +1 -0
  53. package/dist/internal/api/models/FetchPromptScorersRequest.d.ts +8 -0
  54. package/dist/internal/api/models/FetchPromptScorersRequest.d.ts.map +1 -0
  55. package/dist/internal/api/models/FetchPromptScorersRequest.js +6 -0
  56. package/dist/internal/api/models/FetchPromptScorersRequest.js.map +1 -0
  57. package/dist/internal/api/models/FetchPromptScorersResponse.d.ts +9 -0
  58. package/dist/internal/api/models/FetchPromptScorersResponse.d.ts.map +1 -0
  59. package/dist/internal/api/models/FetchPromptScorersResponse.js +6 -0
  60. package/dist/internal/api/models/FetchPromptScorersResponse.js.map +1 -0
  61. package/dist/internal/api/models/OtelTraceSpan.d.ts +33 -0
  62. package/dist/internal/api/models/OtelTraceSpan.d.ts.map +1 -0
  63. package/dist/internal/api/models/OtelTraceSpan.js +6 -0
  64. package/dist/internal/api/models/OtelTraceSpan.js.map +1 -0
  65. package/dist/internal/api/models/PromptScorer.d.ts +14 -0
  66. package/dist/internal/api/models/PromptScorer.d.ts.map +1 -0
  67. package/dist/internal/api/models/PromptScorer.js +6 -0
  68. package/dist/internal/api/models/PromptScorer.js.map +1 -0
  69. package/dist/internal/api/models/ResolveProjectNameRequest.d.ts +8 -0
  70. package/dist/internal/api/models/ResolveProjectNameRequest.d.ts.map +1 -0
  71. package/dist/internal/api/models/ResolveProjectNameRequest.js +6 -0
  72. package/dist/internal/api/models/ResolveProjectNameRequest.js.map +1 -0
  73. package/dist/internal/api/models/ResolveProjectNameResponse.d.ts +8 -0
  74. package/dist/internal/api/models/ResolveProjectNameResponse.d.ts.map +1 -0
  75. package/dist/internal/api/models/ResolveProjectNameResponse.js +6 -0
  76. package/dist/internal/api/models/ResolveProjectNameResponse.js.map +1 -0
  77. package/dist/internal/api/models/SavePromptScorerRequest.d.ts +12 -0
  78. package/dist/internal/api/models/SavePromptScorerRequest.d.ts.map +1 -0
  79. package/dist/internal/api/models/SavePromptScorerRequest.js +6 -0
  80. package/dist/internal/api/models/SavePromptScorerRequest.js.map +1 -0
  81. package/dist/internal/api/models/SavePromptScorerResponse.d.ts +9 -0
  82. package/dist/internal/api/models/SavePromptScorerResponse.d.ts.map +1 -0
  83. package/dist/internal/api/models/SavePromptScorerResponse.js +6 -0
  84. package/dist/internal/api/models/SavePromptScorerResponse.js.map +1 -0
  85. package/dist/internal/api/models/ScorerConfig.d.ts +13 -0
  86. package/dist/internal/api/models/ScorerConfig.d.ts.map +1 -0
  87. package/dist/internal/api/models/ScorerConfig.js +6 -0
  88. package/dist/internal/api/models/ScorerConfig.js.map +1 -0
  89. package/dist/internal/api/models/ScorerData.d.ts +17 -0
  90. package/dist/internal/api/models/ScorerData.d.ts.map +1 -0
  91. package/dist/internal/api/models/ScorerData.js +6 -0
  92. package/dist/internal/api/models/ScorerData.js.map +1 -0
  93. package/dist/internal/api/models/ScorerExistsRequest.d.ts +8 -0
  94. package/dist/internal/api/models/ScorerExistsRequest.d.ts.map +1 -0
  95. package/dist/internal/api/models/ScorerExistsRequest.js +6 -0
  96. package/dist/internal/api/models/ScorerExistsRequest.js.map +1 -0
  97. package/dist/internal/api/models/ScorerExistsResponse.d.ts +8 -0
  98. package/dist/internal/api/models/ScorerExistsResponse.d.ts.map +1 -0
  99. package/dist/internal/api/models/ScorerExistsResponse.js +6 -0
  100. package/dist/internal/api/models/ScorerExistsResponse.js.map +1 -0
  101. package/dist/internal/api/models/ScoringResult.d.ts +17 -0
  102. package/dist/internal/api/models/ScoringResult.d.ts.map +1 -0
  103. package/dist/internal/api/models/ScoringResult.js +6 -0
  104. package/dist/internal/api/models/ScoringResult.js.map +1 -0
  105. package/dist/internal/api/models/TraceEvaluationRun.d.ts +18 -0
  106. package/dist/internal/api/models/TraceEvaluationRun.d.ts.map +1 -0
  107. package/dist/internal/api/models/TraceEvaluationRun.js +6 -0
  108. package/dist/internal/api/models/TraceEvaluationRun.js.map +1 -0
  109. package/dist/internal/api/models.d.ts +24 -0
  110. package/dist/internal/api/models.d.ts.map +1 -0
  111. package/dist/internal/api/models.js +24 -0
  112. package/dist/internal/api/models.js.map +1 -0
  113. package/dist/scorers/api-scorer.d.ts +23 -0
  114. package/dist/scorers/api-scorer.d.ts.map +1 -0
  115. package/dist/scorers/api-scorer.js +36 -0
  116. package/dist/scorers/api-scorer.js.map +1 -0
  117. package/dist/scorers/api_scorers/answer-correctness-scorer.d.ts +11 -0
  118. package/dist/scorers/api_scorers/answer-correctness-scorer.d.ts.map +1 -0
  119. package/dist/scorers/api_scorers/answer-correctness-scorer.js +20 -0
  120. package/dist/scorers/api_scorers/answer-correctness-scorer.js.map +1 -0
  121. package/dist/scorers/api_scorers/answer-relevancy-scorer.d.ts +11 -0
  122. package/dist/scorers/api_scorers/answer-relevancy-scorer.d.ts.map +1 -0
  123. package/dist/scorers/api_scorers/answer-relevancy-scorer.js +19 -0
  124. package/dist/scorers/api_scorers/answer-relevancy-scorer.js.map +1 -0
  125. package/dist/scorers/api_scorers/faithfulness-scorer.d.ts +11 -0
  126. package/dist/scorers/api_scorers/faithfulness-scorer.d.ts.map +1 -0
  127. package/dist/scorers/api_scorers/faithfulness-scorer.js +20 -0
  128. package/dist/scorers/api_scorers/faithfulness-scorer.js.map +1 -0
  129. package/dist/scorers/api_scorers/index.d.ts +2 -0
  130. package/dist/scorers/api_scorers/index.d.ts.map +1 -0
  131. package/dist/scorers/api_scorers/index.js +2 -0
  132. package/dist/scorers/api_scorers/index.js.map +1 -0
  133. package/dist/scorers/api_scorers/instruction-adherence-scorer.d.ts +11 -0
  134. package/dist/scorers/api_scorers/instruction-adherence-scorer.d.ts.map +1 -0
  135. package/dist/scorers/api_scorers/instruction-adherence-scorer.js +20 -0
  136. package/dist/scorers/api_scorers/instruction-adherence-scorer.js.map +1 -0
  137. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.d.ts +48 -0
  138. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.d.ts.map +1 -0
  139. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.js +133 -0
  140. package/dist/scorers/api_scorers/prompt_scorer/base-prompt-scorer.js.map +1 -0
  141. package/dist/scorers/api_scorers/prompt_scorer/index.d.ts +5 -0
  142. package/dist/scorers/api_scorers/prompt_scorer/index.d.ts.map +1 -0
  143. package/dist/scorers/api_scorers/prompt_scorer/index.js +5 -0
  144. package/dist/scorers/api_scorers/prompt_scorer/index.js.map +1 -0
  145. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.d.ts +14 -0
  146. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.d.ts.map +1 -0
  147. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.js +44 -0
  148. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer-utils.js.map +1 -0
  149. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.d.ts +7 -0
  150. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.d.ts.map +1 -0
  151. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.js +9 -0
  152. package/dist/scorers/api_scorers/prompt_scorer/prompt-scorer.js.map +1 -0
  153. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.d.ts +6 -0
  154. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.d.ts.map +1 -0
  155. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.js +8 -0
  156. package/dist/scorers/api_scorers/prompt_scorer/trace-prompt-scorer.js.map +1 -0
  157. package/dist/scorers/base-scorer.d.ts +10 -0
  158. package/dist/scorers/base-scorer.d.ts.map +1 -0
  159. package/dist/scorers/base-scorer.js +41 -0
  160. package/dist/scorers/base-scorer.js.map +1 -0
  161. package/dist/scorers/index.d.ts +4 -0
  162. package/dist/scorers/index.d.ts.map +1 -0
  163. package/dist/scorers/index.js +4 -0
  164. package/dist/scorers/index.js.map +1 -0
  165. package/dist/tracer/OpenTelemetryKeys.d.ts +12 -0
  166. package/dist/tracer/OpenTelemetryKeys.d.ts.map +1 -0
  167. package/dist/tracer/OpenTelemetryKeys.js +12 -0
  168. package/dist/tracer/OpenTelemetryKeys.js.map +1 -0
  169. package/dist/tracer/Tracer.d.ts +47 -0
  170. package/dist/tracer/Tracer.d.ts.map +1 -0
  171. package/dist/tracer/Tracer.js +235 -0
  172. package/dist/tracer/Tracer.js.map +1 -0
  173. package/dist/tracer/TracerConfiguration.d.ts +71 -0
  174. package/dist/tracer/TracerConfiguration.d.ts.map +1 -0
  175. package/dist/tracer/TracerConfiguration.js +111 -0
  176. package/dist/tracer/TracerConfiguration.js.map +1 -0
  177. package/dist/tracer/exporters/JudgmentSpanExporter.d.ts +36 -0
  178. package/dist/tracer/exporters/JudgmentSpanExporter.d.ts.map +1 -0
  179. package/dist/tracer/exporters/JudgmentSpanExporter.js +72 -0
  180. package/dist/tracer/exporters/JudgmentSpanExporter.js.map +1 -0
  181. package/dist/tracer/exporters/NoOpSpanExporter.d.ts +12 -0
  182. package/dist/tracer/exporters/NoOpSpanExporter.d.ts.map +1 -0
  183. package/dist/tracer/exporters/NoOpSpanExporter.js +16 -0
  184. package/dist/tracer/exporters/NoOpSpanExporter.js.map +1 -0
  185. package/dist/tracer/exporters/index.d.ts +3 -0
  186. package/dist/tracer/exporters/index.d.ts.map +1 -0
  187. package/dist/tracer/exporters/index.js +3 -0
  188. package/dist/tracer/exporters/index.js.map +1 -0
  189. package/dist/tracer/index.d.ts +5 -0
  190. package/dist/tracer/index.d.ts.map +1 -0
  191. package/dist/tracer/index.js +5 -0
  192. package/dist/tracer/index.js.map +1 -0
  193. package/dist/umd.d.ts +2 -0
  194. package/dist/umd.d.ts.map +1 -0
  195. package/dist/umd.js +2 -0
  196. package/dist/umd.js.map +1 -0
  197. package/dist/utils/annotate.d.ts +2 -0
  198. package/dist/utils/annotate.d.ts.map +1 -0
  199. package/dist/utils/annotate.js +27 -0
  200. package/dist/utils/annotate.js.map +1 -0
  201. package/dist/utils/index.d.ts +5 -0
  202. package/dist/utils/index.d.ts.map +1 -0
  203. package/dist/utils/index.js +5 -0
  204. package/dist/utils/index.js.map +1 -0
  205. package/dist/utils/logger.d.ts +27 -0
  206. package/dist/utils/logger.d.ts.map +1 -0
  207. package/dist/utils/logger.js +70 -0
  208. package/dist/utils/logger.js.map +1 -0
  209. package/dist/utils/types.d.ts +4 -0
  210. package/dist/utils/types.d.ts.map +1 -0
  211. package/dist/utils/types.js +2 -0
  212. package/dist/utils/types.js.map +1 -0
  213. package/dist/utils/validation.d.ts +11 -0
  214. package/dist/utils/validation.d.ts.map +1 -0
  215. package/dist/utils/validation.js +16 -0
  216. package/dist/utils/validation.js.map +1 -0
  217. package/dist/version.d.ts +2 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/version.js +2 -0
  220. package/dist/version.js.map +1 -0
  221. package/package.json +57 -108
  222. package/LICENSE.md +0 -202
  223. package/README.md +0 -372
  224. package/dist/cjs/clients.js +0 -78
  225. package/dist/cjs/clients.js.map +0 -1
  226. package/dist/cjs/common/integrations/langgraph.js +0 -471
  227. package/dist/cjs/common/integrations/langgraph.js.map +0 -1
  228. package/dist/cjs/common/logger-instance.js +0 -64
  229. package/dist/cjs/common/logger-instance.js.map +0 -1
  230. package/dist/cjs/common/logger.js +0 -225
  231. package/dist/cjs/common/logger.js.map +0 -1
  232. package/dist/cjs/common/token-costs.js +0 -95
  233. package/dist/cjs/common/token-costs.js.map +0 -1
  234. package/dist/cjs/common/tracer.js +0 -1099
  235. package/dist/cjs/common/tracer.js.map +0 -1
  236. package/dist/cjs/constants.js +0 -347
  237. package/dist/cjs/constants.js.map +0 -1
  238. package/dist/cjs/data/datasets/eval-dataset-client.js +0 -394
  239. package/dist/cjs/data/datasets/eval-dataset-client.js.map +0 -1
  240. package/dist/cjs/data/datasets/eval-dataset.js +0 -405
  241. package/dist/cjs/data/datasets/eval-dataset.js.map +0 -1
  242. package/dist/cjs/data/example.js +0 -159
  243. package/dist/cjs/data/example.js.map +0 -1
  244. package/dist/cjs/data/result.js +0 -83
  245. package/dist/cjs/data/result.js.map +0 -1
  246. package/dist/cjs/e2etests/eval-operations.test.js +0 -282
  247. package/dist/cjs/e2etests/eval-operations.test.js.map +0 -1
  248. package/dist/cjs/e2etests/judgee-traces.test.js +0 -278
  249. package/dist/cjs/e2etests/judgee-traces.test.js.map +0 -1
  250. package/dist/cjs/evaluation-run.js +0 -136
  251. package/dist/cjs/evaluation-run.js.map +0 -1
  252. package/dist/cjs/exporters/otel-exporter.js +0 -352
  253. package/dist/cjs/exporters/otel-exporter.js.map +0 -1
  254. package/dist/cjs/index.js +0 -78
  255. package/dist/cjs/index.js.map +0 -1
  256. package/dist/cjs/judges/index.js +0 -237
  257. package/dist/cjs/judges/index.js.map +0 -1
  258. package/dist/cjs/judgment-client.js +0 -798
  259. package/dist/cjs/judgment-client.js.map +0 -1
  260. package/dist/cjs/rules.js +0 -322
  261. package/dist/cjs/rules.js.map +0 -1
  262. package/dist/cjs/run-evaluation.js +0 -700
  263. package/dist/cjs/run-evaluation.js.map +0 -1
  264. package/dist/cjs/scorers/api-scorer.js +0 -304
  265. package/dist/cjs/scorers/api-scorer.js.map +0 -1
  266. package/dist/cjs/scorers/base-scorer.js +0 -293
  267. package/dist/cjs/scorers/base-scorer.js.map +0 -1
  268. package/dist/cjs/scorers/metrics/answer-correctness/answer-correctness.js +0 -562
  269. package/dist/cjs/scorers/metrics/answer-correctness/answer-correctness.js.map +0 -1
  270. package/dist/cjs/scorers/metrics/answer-correctness/index.js +0 -19
  271. package/dist/cjs/scorers/metrics/answer-correctness/index.js.map +0 -1
  272. package/dist/cjs/scorers/metrics/answer-correctness/prompts.js +0 -175
  273. package/dist/cjs/scorers/metrics/answer-correctness/prompts.js.map +0 -1
  274. package/dist/cjs/scorers/metrics/answer-relevancy/answer-relevancy.js +0 -514
  275. package/dist/cjs/scorers/metrics/answer-relevancy/answer-relevancy.js.map +0 -1
  276. package/dist/cjs/scorers/metrics/answer-relevancy/index.js +0 -19
  277. package/dist/cjs/scorers/metrics/answer-relevancy/index.js.map +0 -1
  278. package/dist/cjs/scorers/metrics/answer-relevancy/prompts.js +0 -179
  279. package/dist/cjs/scorers/metrics/answer-relevancy/prompts.js.map +0 -1
  280. package/dist/cjs/scorers/metrics/faithfulness/faithfulness.js +0 -512
  281. package/dist/cjs/scorers/metrics/faithfulness/faithfulness.js.map +0 -1
  282. package/dist/cjs/scorers/metrics/faithfulness/index.js +0 -19
  283. package/dist/cjs/scorers/metrics/faithfulness/index.js.map +0 -1
  284. package/dist/cjs/scorers/metrics/faithfulness/prompts.js +0 -232
  285. package/dist/cjs/scorers/metrics/faithfulness/prompts.js.map +0 -1
  286. package/dist/cjs/scorers/metrics/hallucination/hallucination.js +0 -386
  287. package/dist/cjs/scorers/metrics/hallucination/hallucination.js.map +0 -1
  288. package/dist/cjs/scorers/metrics/hallucination/index.js +0 -11
  289. package/dist/cjs/scorers/metrics/hallucination/index.js.map +0 -1
  290. package/dist/cjs/scorers/metrics/hallucination/prompts.js +0 -106
  291. package/dist/cjs/scorers/metrics/hallucination/prompts.js.map +0 -1
  292. package/dist/cjs/scorers/metrics/instruction-adherence/index.js +0 -19
  293. package/dist/cjs/scorers/metrics/instruction-adherence/index.js.map +0 -1
  294. package/dist/cjs/scorers/metrics/instruction-adherence/instruction-adherence.js +0 -378
  295. package/dist/cjs/scorers/metrics/instruction-adherence/instruction-adherence.js.map +0 -1
  296. package/dist/cjs/scorers/metrics/instruction-adherence/prompts.js +0 -124
  297. package/dist/cjs/scorers/metrics/instruction-adherence/prompts.js.map +0 -1
  298. package/dist/esm/clients.js +0 -47
  299. package/dist/esm/clients.js.map +0 -1
  300. package/dist/esm/common/integrations/langgraph.js +0 -444
  301. package/dist/esm/common/integrations/langgraph.js.map +0 -1
  302. package/dist/esm/common/logger-instance.js +0 -59
  303. package/dist/esm/common/logger-instance.js.map +0 -1
  304. package/dist/esm/common/logger.js +0 -208
  305. package/dist/esm/common/logger.js.map +0 -1
  306. package/dist/esm/common/token-costs.js +0 -91
  307. package/dist/esm/common/token-costs.js.map +0 -1
  308. package/dist/esm/common/tracer.js +0 -1093
  309. package/dist/esm/common/tracer.js.map +0 -1
  310. package/dist/esm/constants.js +0 -341
  311. package/dist/esm/constants.js.map +0 -1
  312. package/dist/esm/data/datasets/eval-dataset-client.js +0 -387
  313. package/dist/esm/data/datasets/eval-dataset-client.js.map +0 -1
  314. package/dist/esm/data/datasets/eval-dataset.js +0 -375
  315. package/dist/esm/data/datasets/eval-dataset.js.map +0 -1
  316. package/dist/esm/data/example.js +0 -154
  317. package/dist/esm/data/example.js.map +0 -1
  318. package/dist/esm/data/result.js +0 -78
  319. package/dist/esm/data/result.js.map +0 -1
  320. package/dist/esm/e2etests/eval-operations.test.js +0 -254
  321. package/dist/esm/e2etests/eval-operations.test.js.map +0 -1
  322. package/dist/esm/e2etests/judgee-traces.test.js +0 -253
  323. package/dist/esm/e2etests/judgee-traces.test.js.map +0 -1
  324. package/dist/esm/evaluation-run.js +0 -132
  325. package/dist/esm/evaluation-run.js.map +0 -1
  326. package/dist/esm/exporters/otel-exporter.js +0 -348
  327. package/dist/esm/exporters/otel-exporter.js.map +0 -1
  328. package/dist/esm/index.js +0 -20
  329. package/dist/esm/index.js.map +0 -1
  330. package/dist/esm/judges/index.js +0 -205
  331. package/dist/esm/judges/index.js.map +0 -1
  332. package/dist/esm/judgment-client.js +0 -768
  333. package/dist/esm/judgment-client.js.map +0 -1
  334. package/dist/esm/rules.js +0 -314
  335. package/dist/esm/rules.js.map +0 -1
  336. package/dist/esm/run-evaluation.js +0 -681
  337. package/dist/esm/run-evaluation.js.map +0 -1
  338. package/dist/esm/scorers/api-scorer.js +0 -286
  339. package/dist/esm/scorers/api-scorer.js.map +0 -1
  340. package/dist/esm/scorers/base-scorer.js +0 -287
  341. package/dist/esm/scorers/base-scorer.js.map +0 -1
  342. package/dist/esm/scorers/metrics/answer-correctness/answer-correctness.js +0 -558
  343. package/dist/esm/scorers/metrics/answer-correctness/answer-correctness.js.map +0 -1
  344. package/dist/esm/scorers/metrics/answer-correctness/index.js +0 -3
  345. package/dist/esm/scorers/metrics/answer-correctness/index.js.map +0 -1
  346. package/dist/esm/scorers/metrics/answer-correctness/prompts.js +0 -171
  347. package/dist/esm/scorers/metrics/answer-correctness/prompts.js.map +0 -1
  348. package/dist/esm/scorers/metrics/answer-relevancy/answer-relevancy.js +0 -510
  349. package/dist/esm/scorers/metrics/answer-relevancy/answer-relevancy.js.map +0 -1
  350. package/dist/esm/scorers/metrics/answer-relevancy/index.js +0 -3
  351. package/dist/esm/scorers/metrics/answer-relevancy/index.js.map +0 -1
  352. package/dist/esm/scorers/metrics/answer-relevancy/prompts.js +0 -175
  353. package/dist/esm/scorers/metrics/answer-relevancy/prompts.js.map +0 -1
  354. package/dist/esm/scorers/metrics/faithfulness/faithfulness.js +0 -508
  355. package/dist/esm/scorers/metrics/faithfulness/faithfulness.js.map +0 -1
  356. package/dist/esm/scorers/metrics/faithfulness/index.js +0 -3
  357. package/dist/esm/scorers/metrics/faithfulness/index.js.map +0 -1
  358. package/dist/esm/scorers/metrics/faithfulness/prompts.js +0 -228
  359. package/dist/esm/scorers/metrics/faithfulness/prompts.js.map +0 -1
  360. package/dist/esm/scorers/metrics/hallucination/hallucination.js +0 -382
  361. package/dist/esm/scorers/metrics/hallucination/hallucination.js.map +0 -1
  362. package/dist/esm/scorers/metrics/hallucination/index.js +0 -3
  363. package/dist/esm/scorers/metrics/hallucination/index.js.map +0 -1
  364. package/dist/esm/scorers/metrics/hallucination/prompts.js +0 -102
  365. package/dist/esm/scorers/metrics/hallucination/prompts.js.map +0 -1
  366. package/dist/esm/scorers/metrics/instruction-adherence/index.js +0 -3
  367. package/dist/esm/scorers/metrics/instruction-adherence/index.js.map +0 -1
  368. package/dist/esm/scorers/metrics/instruction-adherence/instruction-adherence.js +0 -374
  369. package/dist/esm/scorers/metrics/instruction-adherence/instruction-adherence.js.map +0 -1
  370. package/dist/esm/scorers/metrics/instruction-adherence/prompts.js +0 -120
  371. package/dist/esm/scorers/metrics/instruction-adherence/prompts.js.map +0 -1
  372. package/dist/types/clients.d.ts +0 -6
  373. package/dist/types/common/integrations/langgraph.d.ts +0 -39
  374. package/dist/types/common/logger-instance.d.ts +0 -3
  375. package/dist/types/common/logger.d.ts +0 -54
  376. package/dist/types/common/token-costs.d.ts +0 -36
  377. package/dist/types/common/tracer.d.ts +0 -249
  378. package/dist/types/constants.d.ts +0 -51
  379. package/dist/types/data/datasets/eval-dataset-client.d.ts +0 -44
  380. package/dist/types/data/datasets/eval-dataset.d.ts +0 -45
  381. package/dist/types/data/example.d.ts +0 -82
  382. package/dist/types/data/result.d.ts +0 -51
  383. package/dist/types/e2etests/eval-operations.test.d.ts +0 -5
  384. package/dist/types/e2etests/judgee-traces.test.d.ts +0 -5
  385. package/dist/types/evaluation-run.d.ts +0 -44
  386. package/dist/types/exporters/otel-exporter.d.ts +0 -16
  387. package/dist/types/index.d.ts +0 -11
  388. package/dist/types/judges/index.d.ts +0 -50
  389. package/dist/types/judgment-client.d.ts +0 -149
  390. package/dist/types/rules.d.ts +0 -120
  391. package/dist/types/run-evaluation.d.ts +0 -78
  392. package/dist/types/scorers/api-scorer.d.ts +0 -84
  393. package/dist/types/scorers/base-scorer.d.ts +0 -162
  394. package/dist/types/scorers/metrics/answer-correctness/answer-correctness.d.ts +0 -80
  395. package/dist/types/scorers/metrics/answer-correctness/index.d.ts +0 -2
  396. package/dist/types/scorers/metrics/answer-correctness/prompts.d.ts +0 -71
  397. package/dist/types/scorers/metrics/answer-relevancy/answer-relevancy.d.ts +0 -74
  398. package/dist/types/scorers/metrics/answer-relevancy/index.d.ts +0 -2
  399. package/dist/types/scorers/metrics/answer-relevancy/prompts.d.ts +0 -71
  400. package/dist/types/scorers/metrics/faithfulness/faithfulness.d.ts +0 -73
  401. package/dist/types/scorers/metrics/faithfulness/index.d.ts +0 -2
  402. package/dist/types/scorers/metrics/faithfulness/prompts.d.ts +0 -94
  403. package/dist/types/scorers/metrics/hallucination/hallucination.d.ts +0 -63
  404. package/dist/types/scorers/metrics/hallucination/index.d.ts +0 -3
  405. package/dist/types/scorers/metrics/hallucination/prompts.d.ts +0 -63
  406. package/dist/types/scorers/metrics/instruction-adherence/index.d.ts +0 -2
  407. package/dist/types/scorers/metrics/instruction-adherence/instruction-adherence.d.ts +0 -63
  408. package/dist/types/scorers/metrics/instruction-adherence/prompts.d.ts +0 -78
@@ -1,171 +0,0 @@
1
- /**
2
- * Utility prompts for AnswerCorrectnessScorer
3
- */
4
- import { z } from 'zod';
5
- // Schema definitions for LLM responses
6
- export const StatementsSchema = z.object({
7
- statements: z.array(z.string())
8
- });
9
- export const ACVerdictSchema = z.object({
10
- verdict: z.string(),
11
- reason: z.string()
12
- });
13
- export const VerdictsSchema = z.object({
14
- verdicts: z.array(ACVerdictSchema)
15
- });
16
- export const ReasonSchema = z.object({
17
- reason: z.string()
18
- });
19
- /**
20
- * Template prompts for the AnswerCorrectnessScorer
21
- */
22
- export class AnswerCorrectnessTemplate {
23
- /**
24
- * Generate a prompt to extract statements from the expected output
25
- */
26
- static deduceStatements(expectedOutput) {
27
- return `You will be presented with a piece of text. Your task is to break down the text and generate a list of statements contained within the text. Single words and ambiguous phrases should be considered statements.
28
-
29
- ===== START OF EXAMPLES =====
30
- Example 1:
31
- Example text: The weather is sunny today. Temperature is 75 degrees. Don't forget your sunscreen!
32
-
33
- Output:
34
- {
35
- "statements": ["The weather is sunny today", "Temperature is 75 degrees", "Don't forget your sunscreen!"]
36
- }
37
-
38
- Example 2:
39
- Example text: I love pizza. It has cheese and tomato sauce and the crust is crispy.
40
-
41
- Output:
42
- {
43
- "statements": ["I love pizza", "It has cheese and tomato sauce", "The crust is crispy"]
44
- }
45
- ===== END OF EXAMPLES =====
46
-
47
-
48
- **
49
- IMPORTANT: Please return your answer in valid JSON format, with the "statements" key mapping to a list of strings. No words or explanation is needed.
50
- **
51
-
52
- ==== START OF INPUT ====
53
- Text:
54
- ${expectedOutput}
55
- ==== END OF INPUT ====
56
-
57
- ==== YOUR ANSWER ====
58
- JSON:`;
59
- }
60
- /**
61
- * Generate a prompt to evaluate statements against the actual output
62
- */
63
- static generateVerdicts(statements, actualOutput) {
64
- return `You will be provided with:
65
-
66
- - a list of statements from a text that we will refer to as expected output
67
- - a text that we will refer to as actual output
68
-
69
- Your task is to determine whether each statement from the expected output is correct/consistent with the actual output text.
70
- More specifically, you should generate a JSON object with the key "verdicts". "verdicts" will map to a list of nested JSON objects with two keys: \`verdict\` and \`reason\`.
71
- The "reason" key should provide an explanation for your choice, regardless of which verdict you select. Try providing quotes from the text(s) to justify your answer where possible.
72
- The "verdict" key be EXACTLY EITHER "yes" or "no". You should select "yes" if the statement is correct/consistent based on the actual output and "no" otherwise.
73
-
74
- ==== OUTPUT FORMATTING ====
75
- IMPORTANT: Please make sure to only return in JSON format, with the "verdicts" key mapping to a list of JSON objects. Each JSON object should contain keys "verdict" (one of "yes" or "no") and "reason" (str).
76
-
77
- ==== START OF EXAMPLES ====
78
- Example input 1: What's the capital of France?
79
- Example expected output statements 1: ["Paris is the capital of France", "It is located in northern France", "The city has a population of over 2 million"]
80
- Example actual output 1: "Paris is the capital city of France. It is situated in the northern part of the country and has over 2 million residents."
81
- Example JSON 1:
82
- {
83
- "verdicts": [
84
- {
85
- "verdict": "yes",
86
- "reason": "The actual output directly states 'Paris is the capital city of France', which matches the statement"
87
- },
88
- {
89
- "verdict": "yes",
90
- "reason": "The actual output confirms this by saying it is 'situated in the northern part of the country'"
91
- },
92
- {
93
- "verdict": "yes",
94
- "reason": "The actual output mentions the city 'has over 2 million residents', matching the population statement"
95
- }
96
- ]
97
- }
98
-
99
- Example input 2: What is the largest planet in our solar system?
100
- Example expected output statements 2: ["Jupiter is the largest planet", "It is a gas giant", "Jupiter has 79 known moons", "The Great Red Spot is a storm on Jupiter"]
101
- Example actual output 2: "Jupiter is the biggest planet in the solar system. It is made mostly of gas. The planet has many moons orbiting it."
102
- Example JSON 2:
103
- {
104
- "verdicts": [
105
- {
106
- "verdict": "yes",
107
- "reason": "The actual output confirms 'Jupiter is the biggest planet', which is equivalent to it being the largest"
108
- },
109
- {
110
- "verdict": "yes",
111
- "reason": "The actual output states it is 'made mostly of gas', indicating it is a gas giant"
112
- },
113
- {
114
- "verdict": "no",
115
- "reason": "While the actual output mentions Jupiter has 'many moons', it does not specify the exact number of 79 known moons"
116
- },
117
- {
118
- "verdict": "no",
119
- "reason": "The actual output makes no mention of the Great Red Spot or any storms on Jupiter"
120
- }
121
- ]
122
- }
123
- ==== END OF EXAMPLES ====
124
-
125
- ** LASTLY **
126
- Since you are tasked to choose a verdict for each statement, the number of "verdicts" SHOULD BE EXACTLY EQUAL to the number of "statements".
127
-
128
-
129
- ==== YOUR TURN =====
130
-
131
- Statements:
132
- ${statements}
133
-
134
- Actual output:
135
- ${actualOutput}
136
-
137
- JSON:`;
138
- }
139
- /**
140
- * Generate a prompt to explain the score based on incorrect statements
141
- */
142
- static generateReason(incorrectStatements, score) {
143
- const incorrectStatementsText = incorrectStatements.map(([statement, reason]) => `statement: ${statement}\nreason: ${reason}\n------`).join('\n');
144
- return `==== TASK INSTRUCTIONS ====
145
- You will provided with two inputs: an answer correctness score and a list of inconsistent/incorrect statements made in a model's output (with the reason why it's irrelevant). Your task is to provide a CLEAR and CONCISE reason for the answer correctness score.
146
- For context, there were a list of statements generated from an expected output. The model's actual output was then compared to the expected output, and we collected a list of claims made in the expected output that were either incorrect or inconsistent with the actual output.
147
- The score represents how well the model's output matches the expected output.
148
- You should explain why the score is not higher, but also include why its current score is fair.
149
- The incorrect statements represent parts of the model output that are incorrect or inconsistent with the expected output. The incorrect statement will be paired with the reason why it's incorrect.
150
- If there are no incorrect statements, instead respond with a positive remark with an upbeat encouraging tone (but don't overblow the kind attitude).
151
-
152
-
153
- ==== FORMATTING YOUR ANSWER ====
154
- IMPORTANT: Please make sure to only return in JSON format, with the 'reason' key providing the reason.
155
- Example JSON:
156
- {
157
- "reason": "The score is <answer_relevancy_score> because <your_reason>."
158
- }
159
-
160
- ==== YOUR TURN ====
161
- ---- ANSWER CORRECTNESS SCORE ----
162
- ${score}
163
-
164
- ---- INCORRECT STATEMENTS ----
165
- ${incorrectStatementsText}
166
-
167
- ---- YOUR RESPONSE ----
168
- JSON:`;
169
- }
170
- }
171
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../../src/scorers/metrics/answer-correctness/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uCAAuC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACnC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,cAAsB;QAC5C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BT,cAAc;;;;MAIV,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAoB,EAAE,YAAoB;QAChE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoET,UAAU;;;EAGV,YAAY;;MAER,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,mBAAuC,EAAE,KAAa;QAC1E,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAC9E,cAAc,SAAS,aAAa,MAAM,UAAU,CACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;;;;;;;;;;;;;;;;;;EAkBT,KAAK;;;EAGL,uBAAuB;;;MAGnB,CAAC;IACL,CAAC;CACF"}
@@ -1,510 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { JudgevalScorer } from '../../base-scorer.js';
11
- import { APIScorer } from '../../../constants.js';
12
- import { log, info, warn, error } from '../../../common/logger.js';
13
- import { AnswerRelevancyTemplate, StatementsSchema, VerdictsSchema, ReasonSchema } from './prompts.js';
14
- // Import the Judge interface and createJudge from the judges module
15
- import { createJudge } from '../../../judges/index.js';
16
- /**
17
- * AnswerRelevancyScorer evaluates how relevant the actual output is to the input
18
- * by breaking down the actual output into statements and checking if each statement
19
- * is relevant to the input.
20
- */
21
- export class AnswerRelevancyScorer extends JudgevalScorer {
22
- /**
23
- * Constructor for AnswerRelevancyScorer
24
- * @param threshold Minimum score to consider the evaluation successful (default: 0.5)
25
- * @param model LLM to use for evaluation (string or Judge instance)
26
- * @param include_reason Whether to generate a reason for the score
27
- * @param async_mode Whether to use asynchronous evaluation
28
- * @param strict_mode If true, sets threshold to 1.0 (requiring perfect match)
29
- * @param verbose_mode Enables detailed logging
30
- * @param user Optional user identifier for the LLM
31
- * @param additional_metadata Additional metadata to include in the result
32
- */
33
- constructor(threshold = 0.5, model, include_reason = true, async_mode = true, strict_mode = false, verbose_mode = true, user, additional_metadata) {
34
- super(APIScorer.ANSWER_RELEVANCY, strict_mode ? 1.0 : threshold, additional_metadata, include_reason, async_mode, strict_mode, verbose_mode);
35
- info(`Initializing AnswerRelevancyScorer with threshold=${this.threshold}, model=${model}, strict_mode=${strict_mode}`);
36
- const { judge, usingNativeModel } = createJudge(model, user);
37
- this.model = judge;
38
- this.usingNativeModel = usingNativeModel;
39
- this.evaluation_model = this.model.getModelName();
40
- log(`Using model: ${this.evaluation_model}`);
41
- // Set required fields for this scorer
42
- this.requiredFields = ['input', 'actualOutput'];
43
- }
44
- /**
45
- * Get statements from actual output asynchronously
46
- */
47
- _aGetStatements(actualOutput) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- log("Getting statements asynchronously");
50
- // Handle string array
51
- const actualOutputStr = Array.isArray(actualOutput) ? actualOutput.join('\n') : actualOutput;
52
- const prompt = AnswerRelevancyTemplate.deduceStatements(actualOutputStr);
53
- try {
54
- const response = yield this.model.aGenerate(prompt);
55
- // Parse the response
56
- try {
57
- const jsonResponse = JSON.parse(response);
58
- const parsed = StatementsSchema.safeParse(jsonResponse);
59
- if (parsed.success) {
60
- return parsed.data.statements;
61
- }
62
- else {
63
- // Fallback to direct access if schema validation fails
64
- warn("Schema validation failed, falling back to raw response parsing");
65
- if (jsonResponse.statements && Array.isArray(jsonResponse.statements)) {
66
- return jsonResponse.statements;
67
- }
68
- }
69
- }
70
- catch (parseError) {
71
- warn(`Error parsing JSON response: ${parseError}`);
72
- // Try to extract JSON from the response text
73
- const jsonMatch = response.match(/\{[\s\S]*\}/);
74
- if (jsonMatch) {
75
- try {
76
- const extractedJson = JSON.parse(jsonMatch[0]);
77
- if (extractedJson.statements && Array.isArray(extractedJson.statements)) {
78
- return extractedJson.statements;
79
- }
80
- }
81
- catch (e) {
82
- error(`Failed to extract JSON from response: ${e}`);
83
- }
84
- }
85
- }
86
- // If all parsing attempts fail, return empty array
87
- error("Failed to parse statements from model response");
88
- return [];
89
- }
90
- catch (e) {
91
- error(`Error getting statements: ${e}`);
92
- return [];
93
- }
94
- });
95
- }
96
- /**
97
- * Get statements from actual output synchronously
98
- */
99
- _getStatements(actualOutput) {
100
- // Handle string array
101
- const actualOutputStr = Array.isArray(actualOutput) ? actualOutput.join('\n') : actualOutput;
102
- const prompt = AnswerRelevancyTemplate.deduceStatements(actualOutputStr);
103
- try {
104
- const response = this.model.generate(prompt);
105
- // Parse the response
106
- try {
107
- const jsonResponse = JSON.parse(response);
108
- const parsed = StatementsSchema.safeParse(jsonResponse);
109
- if (parsed.success) {
110
- return parsed.data.statements;
111
- }
112
- else {
113
- // Fallback to direct access if schema validation fails
114
- warn("Schema validation failed, falling back to raw response parsing");
115
- if (jsonResponse.statements && Array.isArray(jsonResponse.statements)) {
116
- return jsonResponse.statements;
117
- }
118
- }
119
- }
120
- catch (parseError) {
121
- warn(`Error parsing JSON response: ${parseError}`);
122
- // Try to extract JSON from the response text
123
- const jsonMatch = response.match(/\{[\s\S]*\}/);
124
- if (jsonMatch) {
125
- try {
126
- const extractedJson = JSON.parse(jsonMatch[0]);
127
- if (extractedJson.statements && Array.isArray(extractedJson.statements)) {
128
- return extractedJson.statements;
129
- }
130
- }
131
- catch (e) {
132
- error(`Failed to extract JSON from response: ${e}`);
133
- }
134
- }
135
- }
136
- // If all parsing attempts fail, return empty array
137
- error("Failed to parse statements from model response");
138
- return [];
139
- }
140
- catch (e) {
141
- error(`Error getting statements: ${e}`);
142
- return [];
143
- }
144
- }
145
- /**
146
- * Get verdicts for statements against input asynchronously
147
- */
148
- _aGetVerdicts(input) {
149
- return __awaiter(this, void 0, void 0, function* () {
150
- log("Getting verdicts asynchronously");
151
- if (!this.statements || this.statements.length === 0) {
152
- warn("No statements to evaluate");
153
- return [];
154
- }
155
- // Handle string array
156
- const inputStr = Array.isArray(input) ? input.join('\n') : input;
157
- const prompt = AnswerRelevancyTemplate.generateVerdicts(inputStr, this.statements);
158
- try {
159
- const response = yield this.model.aGenerate(prompt);
160
- // Parse the response
161
- try {
162
- const jsonResponse = JSON.parse(response);
163
- const parsed = VerdictsSchema.safeParse(jsonResponse);
164
- if (parsed.success) {
165
- return parsed.data.verdicts;
166
- }
167
- else {
168
- // Fallback to direct access if schema validation fails
169
- warn("Schema validation failed, falling back to raw response parsing");
170
- if (jsonResponse.verdicts && Array.isArray(jsonResponse.verdicts)) {
171
- return jsonResponse.verdicts.map((v) => ({
172
- verdict: v.verdict,
173
- reason: v.reason
174
- }));
175
- }
176
- }
177
- }
178
- catch (parseError) {
179
- warn(`Error parsing JSON response: ${parseError}`);
180
- // Try to extract JSON from the response text
181
- const jsonMatch = response.match(/\{[\s\S]*\}/);
182
- if (jsonMatch) {
183
- try {
184
- const extractedJson = JSON.parse(jsonMatch[0]);
185
- if (extractedJson.verdicts && Array.isArray(extractedJson.verdicts)) {
186
- return extractedJson.verdicts.map((v) => ({
187
- verdict: v.verdict,
188
- reason: v.reason
189
- }));
190
- }
191
- }
192
- catch (e) {
193
- error(`Failed to extract JSON from response: ${e}`);
194
- }
195
- }
196
- }
197
- // If all parsing attempts fail, return empty array
198
- error("Failed to parse verdicts from model response");
199
- return [];
200
- }
201
- catch (e) {
202
- error(`Error getting verdicts: ${e}`);
203
- return [];
204
- }
205
- });
206
- }
207
- /**
208
- * Get verdicts for statements against input synchronously
209
- */
210
- _getVerdicts(input) {
211
- if (!this.statements || this.statements.length === 0) {
212
- warn("No statements to evaluate");
213
- return [];
214
- }
215
- // Handle string array
216
- const inputStr = Array.isArray(input) ? input.join('\n') : input;
217
- const prompt = AnswerRelevancyTemplate.generateVerdicts(inputStr, this.statements);
218
- try {
219
- const response = this.model.generate(prompt);
220
- // Parse the response
221
- try {
222
- const jsonResponse = JSON.parse(response);
223
- const parsed = VerdictsSchema.safeParse(jsonResponse);
224
- if (parsed.success) {
225
- return parsed.data.verdicts;
226
- }
227
- else {
228
- // Fallback to direct access if schema validation fails
229
- warn("Schema validation failed, falling back to raw response parsing");
230
- if (jsonResponse.verdicts && Array.isArray(jsonResponse.verdicts)) {
231
- return jsonResponse.verdicts.map((v) => ({
232
- verdict: v.verdict,
233
- reason: v.reason
234
- }));
235
- }
236
- }
237
- }
238
- catch (parseError) {
239
- warn(`Error parsing JSON response: ${parseError}`);
240
- // Try to extract JSON from the response text
241
- const jsonMatch = response.match(/\{[\s\S]*\}/);
242
- if (jsonMatch) {
243
- try {
244
- const extractedJson = JSON.parse(jsonMatch[0]);
245
- if (extractedJson.verdicts && Array.isArray(extractedJson.verdicts)) {
246
- return extractedJson.verdicts.map((v) => ({
247
- verdict: v.verdict,
248
- reason: v.reason
249
- }));
250
- }
251
- }
252
- catch (e) {
253
- error(`Failed to extract JSON from response: ${e}`);
254
- }
255
- }
256
- }
257
- // If all parsing attempts fail, return empty array
258
- error("Failed to parse verdicts from model response");
259
- return [];
260
- }
261
- catch (e) {
262
- error(`Error getting verdicts: ${e}`);
263
- return [];
264
- }
265
- }
266
- /**
267
- * Get reason for the score asynchronously
268
- */
269
- _aGetReason(input) {
270
- return __awaiter(this, void 0, void 0, function* () {
271
- var _a;
272
- if (!this.include_reason) {
273
- return undefined;
274
- }
275
- if (!this.verdicts || this.verdicts.length === 0) {
276
- return undefined;
277
- }
278
- try {
279
- // Handle string array
280
- const inputStr = Array.isArray(input) ? input.join('\n') : input;
281
- // Get irrelevant statements with their verdicts
282
- const irrelevantStatements = [];
283
- for (let i = 0; i < this.statements.length; i++) {
284
- if (i < this.verdicts.length && this.verdicts[i].verdict.toLowerCase() === "no") {
285
- irrelevantStatements.push([this.statements[i], this.verdicts[i].reason]);
286
- }
287
- }
288
- if (irrelevantStatements.length === 0) {
289
- return "All statements in the actual output are relevant to the input.";
290
- }
291
- // Generate reason
292
- const prompt = AnswerRelevancyTemplate.generateReason(irrelevantStatements, inputStr, ((_a = this.score) === null || _a === void 0 ? void 0 : _a.toString()) || "0");
293
- const reasonText = yield this.model.aGenerate(prompt);
294
- const parsedReason = ReasonSchema.safeParse(JSON.parse(reasonText));
295
- if (!parsedReason.success) {
296
- error(`Failed to parse reason: ${parsedReason.error}`);
297
- return undefined;
298
- }
299
- return parsedReason.data.reason;
300
- }
301
- catch (err) {
302
- error(`Error getting reason: ${err}`);
303
- return undefined;
304
- }
305
- });
306
- }
307
- /**
308
- * Get reason for the score synchronously
309
- */
310
- _getReason(input) {
311
- var _a;
312
- if (!this.include_reason) {
313
- return undefined;
314
- }
315
- if (!this.verdicts || this.verdicts.length === 0) {
316
- return undefined;
317
- }
318
- try {
319
- // Handle string array
320
- const inputStr = Array.isArray(input) ? input.join('\n') : input;
321
- // Get irrelevant statements with their verdicts
322
- const irrelevantStatements = [];
323
- for (let i = 0; i < this.statements.length; i++) {
324
- if (i < this.verdicts.length && this.verdicts[i].verdict.toLowerCase() === "no") {
325
- irrelevantStatements.push([this.statements[i], this.verdicts[i].reason]);
326
- }
327
- }
328
- if (irrelevantStatements.length === 0) {
329
- return "All statements in the actual output are relevant to the input.";
330
- }
331
- // Generate reason
332
- const prompt = AnswerRelevancyTemplate.generateReason(irrelevantStatements, inputStr, ((_a = this.score) === null || _a === void 0 ? void 0 : _a.toString()) || "0");
333
- const reasonText = this.model.generate(prompt);
334
- const parsedReason = ReasonSchema.safeParse(JSON.parse(reasonText));
335
- if (!parsedReason.success) {
336
- error(`Failed to parse reason: ${parsedReason.error}`);
337
- return undefined;
338
- }
339
- return parsedReason.data.reason;
340
- }
341
- catch (err) {
342
- error(`Error getting reason: ${err}`);
343
- return undefined;
344
- }
345
- }
346
- /**
347
- * Compute score based on verdicts
348
- */
349
- _computeScore() {
350
- log("Computing score");
351
- // If we have no statements or verdicts due to API errors, return 0 instead of 1
352
- // This ensures that when API calls fail, we don't incorrectly return a perfect score
353
- if (!this.statements || this.statements.length === 0) {
354
- return 0;
355
- }
356
- if (!this.verdicts || this.verdicts.length === 0) {
357
- return 0;
358
- }
359
- let relevantCount = 0;
360
- for (const verdict of this.verdicts) {
361
- if (verdict.verdict.trim().toLowerCase() !== "no") {
362
- relevantCount++;
363
- }
364
- }
365
- const score = relevantCount / this.verdicts.length;
366
- // Match Python implementation's handling of strict_mode
367
- return this.strict_mode && score < this.threshold ? 0 : score;
368
- }
369
- /**
370
- * Create verbose logs for debugging
371
- */
372
- _createVerboseLogs() {
373
- if (!this.verbose_mode) {
374
- return '';
375
- }
376
- const steps = [
377
- `Verdict:\n${JSON.stringify(this.verdicts, null, 2)}`,
378
- `Score: ${this.score}\nReason: ${this.reason}`
379
- ];
380
- return steps.join('\n\n');
381
- }
382
- /**
383
- * Score an example synchronously - this is for compatibility with the Python SDK
384
- */
385
- syncScoreExample(example) {
386
- info("Starting example scoring (sync mode)");
387
- try {
388
- // Check required parameters
389
- this._checkExampleParams(example);
390
- // Process example
391
- if (this.async_mode) {
392
- throw new Error("Cannot use synchronous scoreExample with async_mode=true. Use async scoreExample instead.");
393
- }
394
- this.statements = this._getStatements(example.actualOutput);
395
- this.verdicts = this._getVerdicts(example.input);
396
- this.score = this._computeScore();
397
- this.reason = this._getReason(example.input);
398
- this.success = this._successCheck();
399
- this.verbose_logs = this._createVerboseLogs();
400
- // Calculate evaluation cost
401
- // Track tokens used in LLM calls
402
- const promptTokens = 500; // Estimate - in a real implementation, track actual tokens
403
- const completionTokens = 200; // Estimate - in a real implementation, track actual tokens
404
- this.evaluation_cost = this._calculateTokenCosts(this.evaluation_model || 'gpt-3.5-turbo', promptTokens, completionTokens);
405
- info(`Scoring completed with score: ${this.score}`);
406
- // Ensure all fields match the ScorerData interface
407
- return {
408
- name: this.type,
409
- threshold: this.threshold,
410
- success: this.success || false,
411
- score: this.score || 0,
412
- reason: this.reason !== undefined ? this.reason : null,
413
- strict_mode: this.strict_mode || false,
414
- evaluation_model: this.evaluation_model || null,
415
- error: null,
416
- evaluation_cost: this.evaluation_cost || null,
417
- verbose_logs: this.verbose_logs ? this.verbose_logs : null,
418
- additional_metadata: this.additional_metadata || {}
419
- };
420
- }
421
- catch (error) {
422
- // Handle errors
423
- const errorMessage = error instanceof Error ? error.message : String(error);
424
- this.error = errorMessage;
425
- this.success = false;
426
- return {
427
- name: this.type,
428
- threshold: this.threshold,
429
- success: false,
430
- score: 0,
431
- reason: `Error during scoring: ${errorMessage}`,
432
- strict_mode: this.strict_mode || false,
433
- evaluation_model: this.evaluation_model || null,
434
- error: errorMessage,
435
- evaluation_cost: null,
436
- verbose_logs: null,
437
- additional_metadata: this.additional_metadata || {}
438
- };
439
- }
440
- }
441
- /**
442
- * Score an example - this is the main method that should be called
443
- * It will use async or sync methods based on the async_mode setting
444
- */
445
- scoreExample(example) {
446
- return __awaiter(this, void 0, void 0, function* () {
447
- if (!this.async_mode) {
448
- return this.syncScoreExample(example);
449
- }
450
- info("Starting example scoring (async mode)");
451
- try {
452
- // Check required parameters
453
- this._checkExampleParams(example);
454
- // Process example
455
- this.statements = yield this._aGetStatements(example.actualOutput);
456
- this.verdicts = yield this._aGetVerdicts(example.input);
457
- this.score = this._computeScore();
458
- this.reason = yield this._aGetReason(example.input);
459
- this.success = this._successCheck();
460
- this.verbose_logs = this._createVerboseLogs();
461
- // Calculate evaluation cost
462
- // Track tokens used in LLM calls
463
- const promptTokens = 500; // Estimate - in a real implementation, track actual tokens
464
- const completionTokens = 200; // Estimate - in a real implementation, track actual tokens
465
- this.evaluation_cost = this._calculateTokenCosts(this.evaluation_model || 'gpt-3.5-turbo', promptTokens, completionTokens);
466
- info(`Scoring completed with score: ${this.score}`);
467
- // Ensure all fields match the ScorerData interface
468
- return {
469
- name: this.type,
470
- threshold: this.threshold,
471
- success: this.success || false,
472
- score: this.score || 0,
473
- reason: this.reason !== undefined ? this.reason : null,
474
- strict_mode: this.strict_mode || false,
475
- evaluation_model: this.evaluation_model || null,
476
- error: null,
477
- evaluation_cost: this.evaluation_cost || null,
478
- verbose_logs: this.verbose_logs ? this.verbose_logs : null,
479
- additional_metadata: this.additional_metadata || {}
480
- };
481
- }
482
- catch (error) {
483
- // Handle errors
484
- const errorMessage = error instanceof Error ? error.message : String(error);
485
- this.error = errorMessage;
486
- this.success = false;
487
- return {
488
- name: this.type,
489
- threshold: this.threshold,
490
- success: false,
491
- score: 0,
492
- reason: `Error during scoring: ${errorMessage}`,
493
- strict_mode: this.strict_mode || false,
494
- evaluation_model: this.evaluation_model || null,
495
- error: errorMessage,
496
- evaluation_cost: null,
497
- verbose_logs: null,
498
- additional_metadata: this.additional_metadata || {}
499
- };
500
- }
501
- });
502
- }
503
- /**
504
- * Get the name of the scorer
505
- */
506
- get name() {
507
- return "Answer Relevancy";
508
- }
509
- }
510
- //# sourceMappingURL=answer-relevancy.js.map