honeyhive 1.0.13 → 1.0.16

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 (149) hide show
  1. package/docs/sdks/configurations/README.md +4 -4
  2. package/docs/sdks/datapoints/README.md +4 -4
  3. package/docs/sdks/datasets/README.md +4 -4
  4. package/docs/sdks/runs/README.md +2 -2
  5. package/funcs/configurationsCreateConfiguration.d.ts.map +1 -1
  6. package/funcs/configurationsCreateConfiguration.js +1 -2
  7. package/funcs/configurationsCreateConfiguration.js.map +1 -1
  8. package/funcs/configurationsUpdateConfiguration.d.ts +1 -1
  9. package/funcs/configurationsUpdateConfiguration.d.ts.map +1 -1
  10. package/funcs/configurationsUpdateConfiguration.js +2 -2
  11. package/funcs/configurationsUpdateConfiguration.js.map +1 -1
  12. package/funcs/datapointsCreateDatapoint.d.ts.map +1 -1
  13. package/funcs/datapointsCreateDatapoint.js +1 -2
  14. package/funcs/datapointsCreateDatapoint.js.map +1 -1
  15. package/funcs/datapointsUpdateDatapoint.d.ts +1 -1
  16. package/funcs/datapointsUpdateDatapoint.d.ts.map +1 -1
  17. package/funcs/datapointsUpdateDatapoint.js +2 -2
  18. package/funcs/datapointsUpdateDatapoint.js.map +1 -1
  19. package/funcs/datasetsAddDatapoints.d.ts +1 -1
  20. package/funcs/datasetsAddDatapoints.d.ts.map +1 -1
  21. package/funcs/datasetsAddDatapoints.js +2 -2
  22. package/funcs/datasetsAddDatapoints.js.map +1 -1
  23. package/funcs/datasetsCreateDataset.d.ts.map +1 -1
  24. package/funcs/datasetsCreateDataset.js +1 -2
  25. package/funcs/datasetsCreateDataset.js.map +1 -1
  26. package/funcs/datasetsUpdateDataset.d.ts.map +1 -1
  27. package/funcs/datasetsUpdateDataset.js +1 -2
  28. package/funcs/datasetsUpdateDataset.js.map +1 -1
  29. package/funcs/eventsCreateEvent.d.ts.map +1 -1
  30. package/funcs/eventsCreateEvent.js +1 -2
  31. package/funcs/eventsCreateEvent.js.map +1 -1
  32. package/funcs/eventsCreateEventBatch.d.ts.map +1 -1
  33. package/funcs/eventsCreateEventBatch.js +1 -2
  34. package/funcs/eventsCreateEventBatch.js.map +1 -1
  35. package/funcs/eventsCreateModelEvent.d.ts.map +1 -1
  36. package/funcs/eventsCreateModelEvent.js +1 -2
  37. package/funcs/eventsCreateModelEvent.js.map +1 -1
  38. package/funcs/eventsCreateModelEventBatch.d.ts.map +1 -1
  39. package/funcs/eventsCreateModelEventBatch.js +1 -2
  40. package/funcs/eventsCreateModelEventBatch.js.map +1 -1
  41. package/funcs/eventsGetEvents.d.ts.map +1 -1
  42. package/funcs/eventsGetEvents.js +1 -2
  43. package/funcs/eventsGetEvents.js.map +1 -1
  44. package/funcs/eventsUpdateEvent.d.ts.map +1 -1
  45. package/funcs/eventsUpdateEvent.js +1 -2
  46. package/funcs/eventsUpdateEvent.js.map +1 -1
  47. package/funcs/metricsCreateMetric.d.ts.map +1 -1
  48. package/funcs/metricsCreateMetric.js +1 -2
  49. package/funcs/metricsCreateMetric.js.map +1 -1
  50. package/funcs/metricsUpdateMetric.d.ts.map +1 -1
  51. package/funcs/metricsUpdateMetric.js +1 -2
  52. package/funcs/metricsUpdateMetric.js.map +1 -1
  53. package/funcs/projectsCreateProject.d.ts.map +1 -1
  54. package/funcs/projectsCreateProject.js +1 -2
  55. package/funcs/projectsCreateProject.js.map +1 -1
  56. package/funcs/projectsUpdateProject.d.ts.map +1 -1
  57. package/funcs/projectsUpdateProject.js +1 -2
  58. package/funcs/projectsUpdateProject.js.map +1 -1
  59. package/funcs/runsCreateRun.d.ts.map +1 -1
  60. package/funcs/runsCreateRun.js +1 -2
  61. package/funcs/runsCreateRun.js.map +1 -1
  62. package/funcs/runsUpdateRun.d.ts +1 -1
  63. package/funcs/runsUpdateRun.d.ts.map +1 -1
  64. package/funcs/runsUpdateRun.js +2 -2
  65. package/funcs/runsUpdateRun.js.map +1 -1
  66. package/funcs/sessionStartSession.d.ts.map +1 -1
  67. package/funcs/sessionStartSession.js +1 -2
  68. package/funcs/sessionStartSession.js.map +1 -1
  69. package/funcs/toolsCreateTool.d.ts.map +1 -1
  70. package/funcs/toolsCreateTool.js +1 -2
  71. package/funcs/toolsCreateTool.js.map +1 -1
  72. package/funcs/toolsUpdateTool.d.ts.map +1 -1
  73. package/funcs/toolsUpdateTool.js +1 -2
  74. package/funcs/toolsUpdateTool.js.map +1 -1
  75. package/index.d.ts +1 -0
  76. package/index.d.ts.map +1 -1
  77. package/index.js +1 -0
  78. package/index.js.map +1 -1
  79. package/lib/config.d.ts +4 -4
  80. package/lib/config.js +4 -4
  81. package/models/components/datapoint.d.ts +2 -2
  82. package/models/components/datapoint.d.ts.map +1 -1
  83. package/models/components/datapoint.js +4 -6
  84. package/models/components/datapoint.js.map +1 -1
  85. package/models/components/dataset.d.ts +2 -2
  86. package/models/components/dataset.d.ts.map +1 -1
  87. package/models/components/dataset.js +4 -4
  88. package/models/components/dataset.js.map +1 -1
  89. package/package.json +1 -2
  90. package/sdk/configurations.d.ts +1 -1
  91. package/sdk/configurations.d.ts.map +1 -1
  92. package/sdk/configurations.js +2 -2
  93. package/sdk/configurations.js.map +1 -1
  94. package/sdk/datapoints.d.ts +1 -1
  95. package/sdk/datapoints.d.ts.map +1 -1
  96. package/sdk/datapoints.js +2 -2
  97. package/sdk/datapoints.js.map +1 -1
  98. package/sdk/datasets.d.ts +1 -1
  99. package/sdk/datasets.d.ts.map +1 -1
  100. package/sdk/datasets.js +2 -2
  101. package/sdk/datasets.js.map +1 -1
  102. package/sdk/evaluation.d.ts +16 -0
  103. package/sdk/evaluation.d.ts.map +1 -0
  104. package/sdk/evaluation.js +164 -0
  105. package/sdk/evaluation.js.map +1 -0
  106. package/sdk/index.d.ts +1 -0
  107. package/sdk/index.d.ts.map +1 -1
  108. package/sdk/index.js +1 -0
  109. package/sdk/index.js.map +1 -1
  110. package/sdk/runs.d.ts +1 -1
  111. package/sdk/runs.d.ts.map +1 -1
  112. package/sdk/runs.js +2 -2
  113. package/sdk/runs.js.map +1 -1
  114. package/sdk/tracer.d.ts.map +1 -1
  115. package/sdk/tracer.js +0 -3
  116. package/sdk/tracer.js.map +1 -1
  117. package/src/funcs/configurationsCreateConfiguration.ts +1 -3
  118. package/src/funcs/configurationsUpdateConfiguration.ts +2 -2
  119. package/src/funcs/datapointsCreateDatapoint.ts +1 -3
  120. package/src/funcs/datapointsUpdateDatapoint.ts +2 -2
  121. package/src/funcs/datasetsAddDatapoints.ts +2 -2
  122. package/src/funcs/datasetsCreateDataset.ts +1 -3
  123. package/src/funcs/datasetsUpdateDataset.ts +1 -3
  124. package/src/funcs/eventsCreateEvent.ts +1 -3
  125. package/src/funcs/eventsCreateEventBatch.ts +1 -3
  126. package/src/funcs/eventsCreateModelEvent.ts +1 -3
  127. package/src/funcs/eventsCreateModelEventBatch.ts +1 -3
  128. package/src/funcs/eventsGetEvents.ts +1 -3
  129. package/src/funcs/eventsUpdateEvent.ts +1 -3
  130. package/src/funcs/metricsCreateMetric.ts +1 -3
  131. package/src/funcs/metricsUpdateMetric.ts +1 -3
  132. package/src/funcs/projectsCreateProject.ts +1 -3
  133. package/src/funcs/projectsUpdateProject.ts +1 -3
  134. package/src/funcs/runsCreateRun.ts +1 -3
  135. package/src/funcs/runsUpdateRun.ts +2 -2
  136. package/src/funcs/sessionStartSession.ts +1 -3
  137. package/src/funcs/toolsCreateTool.ts +1 -3
  138. package/src/funcs/toolsUpdateTool.ts +1 -3
  139. package/src/index.ts +1 -0
  140. package/src/lib/config.ts +4 -4
  141. package/src/models/components/datapoint.ts +6 -8
  142. package/src/models/components/dataset.ts +6 -10
  143. package/src/sdk/configurations.ts +2 -2
  144. package/src/sdk/datapoints.ts +2 -2
  145. package/src/sdk/datasets.ts +2 -2
  146. package/src/sdk/evaluation.ts +205 -0
  147. package/src/sdk/index.ts +1 -0
  148. package/src/sdk/runs.ts +2 -2
  149. package/src/sdk/tracer.ts +0 -3
@@ -44,10 +44,8 @@ export async function metricsUpdateMetric(
44
44
  | ConnectionError
45
45
  >
46
46
  > {
47
- const input = request;
48
-
49
47
  const parsed = safeParse(
50
- input,
48
+ request,
51
49
  (value) => components.MetricEdit$outboundSchema.parse(value),
52
50
  "Input validation failed",
53
51
  );
@@ -40,10 +40,8 @@ export async function projectsCreateProject(
40
40
  | ConnectionError
41
41
  >
42
42
  > {
43
- const input = request;
44
-
45
43
  const parsed = safeParse(
46
- input,
44
+ request,
47
45
  (value) => components.CreateProjectRequest$outboundSchema.parse(value),
48
46
  "Input validation failed",
49
47
  );
@@ -41,10 +41,8 @@ export async function projectsUpdateProject(
41
41
  | ConnectionError
42
42
  >
43
43
  > {
44
- const input = request;
45
-
46
44
  const parsed = safeParse(
47
- input,
45
+ request,
48
46
  (value) => components.UpdateProjectRequest$outboundSchema.parse(value),
49
47
  "Input validation failed",
50
48
  );
@@ -40,10 +40,8 @@ export async function runsCreateRun(
40
40
  | ConnectionError
41
41
  >
42
42
  > {
43
- const input = request;
44
-
45
43
  const parsed = safeParse(
46
- input,
44
+ request,
47
45
  (value) => components.CreateRunRequest$outboundSchema.parse(value),
48
46
  "Input validation failed",
49
47
  );
@@ -27,8 +27,8 @@ import { Result } from "../types/fp.js";
27
27
  */
28
28
  export async function runsUpdateRun(
29
29
  client: HoneyHiveCore,
30
- runId: string,
31
30
  updateRunRequest: components.UpdateRunRequest,
31
+ runId: string,
32
32
  options?: RequestOptions,
33
33
  ): Promise<
34
34
  Result<
@@ -43,8 +43,8 @@ export async function runsUpdateRun(
43
43
  >
44
44
  > {
45
45
  const input: operations.UpdateRunRequest = {
46
- runId: runId,
47
46
  updateRunRequest: updateRunRequest,
47
+ runId: runId,
48
48
  };
49
49
 
50
50
  const parsed = safeParse(
@@ -40,10 +40,8 @@ export async function sessionStartSession(
40
40
  | ConnectionError
41
41
  >
42
42
  > {
43
- const input = request;
44
-
45
43
  const parsed = safeParse(
46
- input,
44
+ request,
47
45
  (value) => operations.StartSessionRequestBody$outboundSchema.parse(value),
48
46
  "Input validation failed",
49
47
  );
@@ -41,10 +41,8 @@ export async function toolsCreateTool(
41
41
  | ConnectionError
42
42
  >
43
43
  > {
44
- const input = request;
45
-
46
44
  const parsed = safeParse(
47
- input,
45
+ request,
48
46
  (value) => components.CreateToolRequest$outboundSchema.parse(value),
49
47
  "Input validation failed",
50
48
  );
@@ -41,10 +41,8 @@ export async function toolsUpdateTool(
41
41
  | ConnectionError
42
42
  >
43
43
  > {
44
- const input = request;
45
-
46
44
  const parsed = safeParse(
47
- input,
45
+ request,
48
46
  (value) => components.UpdateToolRequest$outboundSchema.parse(value),
49
47
  "Input validation failed",
50
48
  );
package/src/index.ts CHANGED
@@ -7,3 +7,4 @@ export * as files from "./lib/files.js";
7
7
  export * from "./sdk/sdk.js";
8
8
  export * from "./sdk/tracer.js";
9
9
  export * from "./sdk/lc_tracer.js";
10
+ export * from "./sdk/evaluation.js";
package/src/lib/config.ts CHANGED
@@ -53,8 +53,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
53
53
 
54
54
  export const SDK_METADATA = {
55
55
  language: "typescript",
56
- openapiDocVersion: "1.0.2",
57
- sdkVersion: "1.1.1",
58
- genVersion: "2.428.1",
59
- userAgent: "speakeasy-sdk/typescript 1.1.1 2.428.1 1.0.2 honeyhive",
56
+ openapiDocVersion: "1.0.4",
57
+ sdkVersion: "1.2.1",
58
+ genVersion: "2.429.0",
59
+ userAgent: "speakeasy-sdk/typescript 1.2.1 2.429.0 1.0.4 honeyhive",
60
60
  } as const;
@@ -15,8 +15,8 @@ export type Datapoint = {
15
15
  * UUID for the project where the datapoint is stored
16
16
  */
17
17
  projectId?: string | undefined;
18
- createdAt?: Date | undefined;
19
- updatedAt?: Date | undefined;
18
+ createdAt?: string | undefined;
19
+ updatedAt?: string | undefined;
20
20
  /**
21
21
  * Arbitrary JSON object containing the inputs for the datapoint
22
22
  */
@@ -55,10 +55,8 @@ export const Datapoint$inboundSchema: z.ZodType<
55
55
  _id: z.string().optional(),
56
56
  tenant: z.string().optional(),
57
57
  project_id: z.string().optional(),
58
- created_at: z.string().datetime({ offset: true }).transform(v => new Date(v))
59
- .optional(),
60
- updated_at: z.string().datetime({ offset: true }).transform(v => new Date(v))
61
- .optional(),
58
+ created_at: z.string().optional(),
59
+ updated_at: z.string().optional(),
62
60
  inputs: z.record(z.any()).optional(),
63
61
  history: z.array(z.record(z.any())).optional(),
64
62
  ground_truth: z.record(z.any()).optional(),
@@ -108,8 +106,8 @@ export const Datapoint$outboundSchema: z.ZodType<
108
106
  id: z.string().optional(),
109
107
  tenant: z.string().optional(),
110
108
  projectId: z.string().optional(),
111
- createdAt: z.date().transform(v => v.toISOString()).optional(),
112
- updatedAt: z.date().transform(v => v.toISOString()).optional(),
109
+ createdAt: z.string().optional(),
110
+ updatedAt: z.string().optional(),
113
111
  inputs: z.record(z.any()).optional(),
114
112
  history: z.array(z.record(z.any())).optional(),
115
113
  groundTruth: z.record(z.any()).optional(),
@@ -67,11 +67,11 @@ export type Dataset = {
67
67
  /**
68
68
  * Timestamp of when the dataset was created
69
69
  */
70
- createdAt?: Date | undefined;
70
+ createdAt?: string | undefined;
71
71
  /**
72
72
  * Timestamp of when the dataset was last updated
73
73
  */
74
- updatedAt?: Date | undefined;
74
+ updatedAt?: string | undefined;
75
75
  };
76
76
 
77
77
  /** @internal */
@@ -124,12 +124,8 @@ export const Dataset$inboundSchema: z.ZodType<Dataset, z.ZodTypeDef, unknown> =
124
124
  linked_evals: z.array(z.string()).optional(),
125
125
  saved: z.boolean().optional(),
126
126
  pipeline_type: PipelineType$inboundSchema.optional(),
127
- created_at: z.string().datetime({ offset: true }).transform(v =>
128
- new Date(v)
129
- ).optional(),
130
- updated_at: z.string().datetime({ offset: true }).transform(v =>
131
- new Date(v)
132
- ).optional(),
127
+ created_at: z.string().optional(),
128
+ updated_at: z.string().optional(),
133
129
  }).transform((v) => {
134
130
  return remap$(v, {
135
131
  "num_points": "numPoints",
@@ -170,8 +166,8 @@ export const Dataset$outboundSchema: z.ZodType<
170
166
  linkedEvals: z.array(z.string()).optional(),
171
167
  saved: z.boolean().optional(),
172
168
  pipelineType: PipelineType$outboundSchema.optional(),
173
- createdAt: z.date().transform(v => v.toISOString()).optional(),
174
- updatedAt: z.date().transform(v => v.toISOString()).optional(),
169
+ createdAt: z.string().optional(),
170
+ updatedAt: z.string().optional(),
175
171
  }).transform((v) => {
176
172
  return remap$(v, {
177
173
  numPoints: "num_points",
@@ -48,14 +48,14 @@ export class Configurations extends ClientSDK {
48
48
  * Update an existing configuration
49
49
  */
50
50
  async updateConfiguration(
51
- id: string,
52
51
  putConfigurationRequest: components.PutConfigurationRequest,
52
+ id: string,
53
53
  options?: RequestOptions,
54
54
  ): Promise<void> {
55
55
  return unwrapAsync(configurationsUpdateConfiguration(
56
56
  this,
57
- id,
58
57
  putConfigurationRequest,
58
+ id,
59
59
  options,
60
60
  ));
61
61
  }
@@ -63,14 +63,14 @@ export class Datapoints extends ClientSDK {
63
63
  * Update a specific datapoint
64
64
  */
65
65
  async updateDatapoint(
66
- id: string,
67
66
  updateDatapointRequest: components.UpdateDatapointRequest,
67
+ id: string,
68
68
  options?: RequestOptions,
69
69
  ): Promise<void> {
70
70
  return unwrapAsync(datapointsUpdateDatapoint(
71
71
  this,
72
- id,
73
72
  updateDatapointRequest,
73
+ id,
74
74
  options,
75
75
  ));
76
76
  }
@@ -77,14 +77,14 @@ export class Datasets extends ClientSDK {
77
77
  * Add datapoints to a dataset
78
78
  */
79
79
  async addDatapoints(
80
- datasetId: string,
81
80
  requestBody: operations.AddDatapointsRequestBody,
81
+ datasetId: string,
82
82
  options?: RequestOptions,
83
83
  ): Promise<operations.AddDatapointsResponseBody> {
84
84
  return unwrapAsync(datasetsAddDatapoints(
85
85
  this,
86
- datasetId,
87
86
  requestBody,
87
+ datasetId,
88
88
  options,
89
89
  ));
90
90
  }
@@ -0,0 +1,205 @@
1
+ import { HoneyHive } from "./sdk";
2
+ import { CreateRunResponse, } from '../models/components';
3
+ import { HoneyHiveTracer } from './tracer';
4
+
5
+ type Dict<T> = { [key: string]: T };
6
+ type Any = any;
7
+
8
+ interface EvaluationConfig {
9
+ evaluationFunction: Function,
10
+ hh_api_key: string;
11
+ hh_project: string;
12
+ name: string;
13
+ dataset_id?: string;
14
+ query_list?: Dict<Any>[];
15
+ runs?: number;
16
+ }
17
+
18
+ interface EvaluationState {
19
+ hhai: HoneyHive;
20
+ hh_dataset: Any;
21
+ evaluation_session_ids: string[];
22
+ eval_run: CreateRunResponse | null;
23
+ }
24
+
25
+ function validateRequirements(config: EvaluationConfig): void {
26
+ if (!config.hh_api_key) {
27
+ throw new Error("Honeyhive API key not found. Please set 'hh_api_key' to initiate Honeyhive Tracer. Cannot run Evaluation");
28
+ }
29
+ if (!config.hh_project) {
30
+ throw new Error("Honeyhive Project not found. Please set 'hh_project' to initiate Honeyhive Tracer. Cannot run Evaluation");
31
+ }
32
+ if (!config.name) {
33
+ throw new Error("Evaluation name not found. Please set 'name' to initiate Honeyhive Evaluation.");
34
+ }
35
+ if (!config.dataset_id && !config.query_list) {
36
+ throw new Error("No valid 'dataset_id' or 'query_list' found. Please provide one to iterate the evaluation over.");
37
+ }
38
+ }
39
+
40
+ async function loadDataset(hhai: HoneyHive, config: EvaluationConfig): Promise<any> {
41
+ if (!config.dataset_id) {
42
+ return null;
43
+ }
44
+ try {
45
+ const dataset = await hhai.datasets.getDatasets(
46
+ config.hh_project,
47
+ undefined,
48
+ config.dataset_id
49
+ );
50
+ if (dataset && dataset.testcases && dataset.testcases.length > 0) {
51
+ return dataset.testcases[0];
52
+ }
53
+ } catch (error) {
54
+ throw new Error(`No dataset found with id - ${config.dataset_id} for project - ${config.hh_project}`);
55
+ }
56
+ return null;
57
+ }
58
+
59
+ async function getInputs(state: EvaluationState, config: EvaluationConfig, run_id: number): Promise<any> {
60
+ if (state.hh_dataset && state.hh_dataset.datapoints && state.hh_dataset.datapoints.length > 0) {
61
+ try {
62
+ const datapoint_id = state.hh_dataset.datapoints[run_id];
63
+ const datapoint_response = await state.hhai.datapoints.getDatapoint(datapoint_id);
64
+ const datapointList = datapoint_response.datapoint;
65
+ if (datapointList && datapointList[0])
66
+ return datapointList[0].inputs;
67
+ } catch (error) {
68
+ console.error(`Error getting datapoint: ${error}`);
69
+ }
70
+ } else if (config.query_list) {
71
+ return config.query_list[run_id];
72
+ }
73
+ return null;
74
+ }
75
+
76
+ async function initializeTracer(config: EvaluationConfig): Promise<HoneyHiveTracer> {
77
+ try {
78
+ return await HoneyHiveTracer.init({
79
+ apiKey: config.hh_api_key,
80
+ project: config.hh_project,
81
+ source: 'evaluation',
82
+ sessionName: config.name
83
+ });
84
+ } catch (error) {
85
+ throw new Error("Unable to initiate Honeyhive Tracer. Cannot run Evaluation");
86
+ }
87
+ }
88
+
89
+ async function runEvaluation(tracer: HoneyHiveTracer, evalconfig: EvaluationConfig, inputs: any): Promise<Any> {
90
+ try {
91
+ let output = {};
92
+ let promiseResolve: () => void;
93
+ const promise = new Promise<void>((resolve) => {
94
+ promiseResolve = resolve;
95
+ });
96
+
97
+ tracer.trace(() => {
98
+ (async () => {
99
+ try {
100
+ const agentResponse = await evalconfig.evaluationFunction(inputs);
101
+ if (agentResponse && typeof agentResponse === 'object')
102
+ output = agentResponse;
103
+ console.log(agentResponse);
104
+ } finally {
105
+ promiseResolve();
106
+ }
107
+ })();
108
+ });
109
+
110
+ await promise;
111
+ await tracer.flush();
112
+
113
+ return output;
114
+ } catch (error) {
115
+ console.error(`Error in evaluation function: ${error}`);
116
+ return null;
117
+ }
118
+ }
119
+
120
+ async function addTraceMetadata(tracer: HoneyHiveTracer, state: EvaluationState, config: EvaluationConfig, inputs: any, evaluation_output: any, run_id: number): Promise<void> {
121
+ try {
122
+ if (state.eval_run && state.eval_run?.runId) {
123
+ const tracing_metadata: Dict<Any> = {
124
+ run_id: state.eval_run.runId,
125
+ inputs: inputs
126
+ };
127
+ if (state.hh_dataset) {
128
+ tracing_metadata['datapoint_id'] = state.hh_dataset.datapoints[run_id];
129
+ tracing_metadata['dataset_id'] = config.dataset_id;
130
+ }
131
+ if (evaluation_output) {
132
+ tracing_metadata['outputs'] = evaluation_output;
133
+ }
134
+ await tracer.enrichSession({
135
+ metadata: tracing_metadata,
136
+ outputs: evaluation_output
137
+ });
138
+ }
139
+
140
+ } catch (error) {
141
+ console.error(`Error adding trace metadata: ${error}`);
142
+ }
143
+ }
144
+
145
+ async function setupEvaluation(state: EvaluationState, config: EvaluationConfig): Promise<void> {
146
+ const eval_run = await state.hhai.runs.createRun({
147
+ project: config.hh_project,
148
+ name: config.name,
149
+ datasetId: config.dataset_id,
150
+ eventIds: [],
151
+
152
+ });
153
+ state.eval_run = eval_run;
154
+ }
155
+
156
+ async function windupEvaluation(state: EvaluationState): Promise<void> {
157
+ try {
158
+ if (state.eval_run && state.eval_run.runId) {
159
+ await state.hhai.runs.updateRun(
160
+ {
161
+ eventIds: state.evaluation_session_ids,
162
+ status: "completed"
163
+ },
164
+ state.eval_run.runId,
165
+ );
166
+ }
167
+ } catch (error) {
168
+ console.warn("Warning: Unable to mark evaluation as `Completed`");
169
+ }
170
+ }
171
+
172
+ async function evaluate(
173
+ config: EvaluationConfig
174
+ ): Promise<void> {
175
+ validateRequirements(config);
176
+
177
+ const state: EvaluationState = {
178
+ hhai: new HoneyHive({ bearerAuth: config.hh_api_key }),
179
+ hh_dataset: null,
180
+ evaluation_session_ids: [],
181
+ eval_run: null
182
+ };
183
+
184
+ state.hh_dataset = await loadDataset(state.hhai, config);
185
+ const runs = config.runs || (state.hh_dataset ? state.hh_dataset.datapoints.length : (config.query_list ? config.query_list.length : 0));
186
+
187
+ await setupEvaluation(state, config);
188
+
189
+ for (let run_id = 0; run_id < runs; run_id++) {
190
+ console.log(`---------- RUN ${run_id +1} ----------`)
191
+ const inputs = await getInputs(state, config, run_id);
192
+ const tracer = await initializeTracer(config);
193
+
194
+ const output = await runEvaluation(tracer, config, inputs);
195
+
196
+ await addTraceMetadata(tracer, state, config, inputs, output, run_id);
197
+
198
+ if (tracer.sessionId)
199
+ state.evaluation_session_ids.push(tracer.sessionId);
200
+ }
201
+
202
+ await windupEvaluation(state);
203
+ }
204
+
205
+ export { evaluate };
package/src/sdk/index.ts CHANGED
@@ -5,3 +5,4 @@
5
5
  export * from "./sdk.js";
6
6
  export * from "./tracer.js";
7
7
  export * from "./lc_tracer.js";
8
+ export * from "./evaluation.js";
package/src/sdk/runs.ts CHANGED
@@ -58,14 +58,14 @@ export class Runs extends ClientSDK {
58
58
  * Update an evaluation run
59
59
  */
60
60
  async updateRun(
61
- runId: string,
62
61
  updateRunRequest: components.UpdateRunRequest,
62
+ runId: string,
63
63
  options?: RequestOptions,
64
64
  ): Promise<components.UpdateRunResponse> {
65
65
  return unwrapAsync(runsUpdateRun(
66
66
  this,
67
- runId,
68
67
  updateRunRequest,
68
+ runId,
69
69
  options,
70
70
  ));
71
71
  }
package/src/sdk/tracer.ts CHANGED
@@ -11,7 +11,6 @@ import OpenAI from "openai";
11
11
  import * as anthropic from "@anthropic-ai/sdk";
12
12
  import * as cohere from "cohere-ai";
13
13
  import * as bedrock from "@aws-sdk/client-bedrock-runtime";
14
- import * as google_aiplatform from "@google-cloud/aiplatform";
15
14
  import * as pinecone from "@pinecone-database/pinecone";
16
15
  import * as ChainsModule from "langchain/chains";
17
16
  import * as AgentsModule from "langchain/agents";
@@ -114,7 +113,6 @@ export class HoneyHiveTracer {
114
113
  azureOpenAI: azureOpenAI,
115
114
  cohere: cohere,
116
115
  bedrock: bedrock,
117
- google_aiplatform: google_aiplatform,
118
116
  pinecone: pinecone,
119
117
  langchain: {
120
118
  chainsModule: ChainsModule,
@@ -146,7 +144,6 @@ export class HoneyHiveTracer {
146
144
  azureOpenAI: azureOpenAI,
147
145
  cohere: cohere,
148
146
  bedrock: bedrock,
149
- google_aiplatform: google_aiplatform,
150
147
  pinecone: pinecone,
151
148
  langchain: {
152
149
  chainsModule: ChainsModule,