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.
- package/docs/sdks/configurations/README.md +4 -4
- package/docs/sdks/datapoints/README.md +4 -4
- package/docs/sdks/datasets/README.md +4 -4
- package/docs/sdks/runs/README.md +2 -2
- package/funcs/configurationsCreateConfiguration.d.ts.map +1 -1
- package/funcs/configurationsCreateConfiguration.js +1 -2
- package/funcs/configurationsCreateConfiguration.js.map +1 -1
- package/funcs/configurationsUpdateConfiguration.d.ts +1 -1
- package/funcs/configurationsUpdateConfiguration.d.ts.map +1 -1
- package/funcs/configurationsUpdateConfiguration.js +2 -2
- package/funcs/configurationsUpdateConfiguration.js.map +1 -1
- package/funcs/datapointsCreateDatapoint.d.ts.map +1 -1
- package/funcs/datapointsCreateDatapoint.js +1 -2
- package/funcs/datapointsCreateDatapoint.js.map +1 -1
- package/funcs/datapointsUpdateDatapoint.d.ts +1 -1
- package/funcs/datapointsUpdateDatapoint.d.ts.map +1 -1
- package/funcs/datapointsUpdateDatapoint.js +2 -2
- package/funcs/datapointsUpdateDatapoint.js.map +1 -1
- package/funcs/datasetsAddDatapoints.d.ts +1 -1
- package/funcs/datasetsAddDatapoints.d.ts.map +1 -1
- package/funcs/datasetsAddDatapoints.js +2 -2
- package/funcs/datasetsAddDatapoints.js.map +1 -1
- package/funcs/datasetsCreateDataset.d.ts.map +1 -1
- package/funcs/datasetsCreateDataset.js +1 -2
- package/funcs/datasetsCreateDataset.js.map +1 -1
- package/funcs/datasetsUpdateDataset.d.ts.map +1 -1
- package/funcs/datasetsUpdateDataset.js +1 -2
- package/funcs/datasetsUpdateDataset.js.map +1 -1
- package/funcs/eventsCreateEvent.d.ts.map +1 -1
- package/funcs/eventsCreateEvent.js +1 -2
- package/funcs/eventsCreateEvent.js.map +1 -1
- package/funcs/eventsCreateEventBatch.d.ts.map +1 -1
- package/funcs/eventsCreateEventBatch.js +1 -2
- package/funcs/eventsCreateEventBatch.js.map +1 -1
- package/funcs/eventsCreateModelEvent.d.ts.map +1 -1
- package/funcs/eventsCreateModelEvent.js +1 -2
- package/funcs/eventsCreateModelEvent.js.map +1 -1
- package/funcs/eventsCreateModelEventBatch.d.ts.map +1 -1
- package/funcs/eventsCreateModelEventBatch.js +1 -2
- package/funcs/eventsCreateModelEventBatch.js.map +1 -1
- package/funcs/eventsGetEvents.d.ts.map +1 -1
- package/funcs/eventsGetEvents.js +1 -2
- package/funcs/eventsGetEvents.js.map +1 -1
- package/funcs/eventsUpdateEvent.d.ts.map +1 -1
- package/funcs/eventsUpdateEvent.js +1 -2
- package/funcs/eventsUpdateEvent.js.map +1 -1
- package/funcs/metricsCreateMetric.d.ts.map +1 -1
- package/funcs/metricsCreateMetric.js +1 -2
- package/funcs/metricsCreateMetric.js.map +1 -1
- package/funcs/metricsUpdateMetric.d.ts.map +1 -1
- package/funcs/metricsUpdateMetric.js +1 -2
- package/funcs/metricsUpdateMetric.js.map +1 -1
- package/funcs/projectsCreateProject.d.ts.map +1 -1
- package/funcs/projectsCreateProject.js +1 -2
- package/funcs/projectsCreateProject.js.map +1 -1
- package/funcs/projectsUpdateProject.d.ts.map +1 -1
- package/funcs/projectsUpdateProject.js +1 -2
- package/funcs/projectsUpdateProject.js.map +1 -1
- package/funcs/runsCreateRun.d.ts.map +1 -1
- package/funcs/runsCreateRun.js +1 -2
- package/funcs/runsCreateRun.js.map +1 -1
- package/funcs/runsUpdateRun.d.ts +1 -1
- package/funcs/runsUpdateRun.d.ts.map +1 -1
- package/funcs/runsUpdateRun.js +2 -2
- package/funcs/runsUpdateRun.js.map +1 -1
- package/funcs/sessionStartSession.d.ts.map +1 -1
- package/funcs/sessionStartSession.js +1 -2
- package/funcs/sessionStartSession.js.map +1 -1
- package/funcs/toolsCreateTool.d.ts.map +1 -1
- package/funcs/toolsCreateTool.js +1 -2
- package/funcs/toolsCreateTool.js.map +1 -1
- package/funcs/toolsUpdateTool.d.ts.map +1 -1
- package/funcs/toolsUpdateTool.js +1 -2
- package/funcs/toolsUpdateTool.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/lib/config.d.ts +4 -4
- package/lib/config.js +4 -4
- package/models/components/datapoint.d.ts +2 -2
- package/models/components/datapoint.d.ts.map +1 -1
- package/models/components/datapoint.js +4 -6
- package/models/components/datapoint.js.map +1 -1
- package/models/components/dataset.d.ts +2 -2
- package/models/components/dataset.d.ts.map +1 -1
- package/models/components/dataset.js +4 -4
- package/models/components/dataset.js.map +1 -1
- package/package.json +1 -2
- package/sdk/configurations.d.ts +1 -1
- package/sdk/configurations.d.ts.map +1 -1
- package/sdk/configurations.js +2 -2
- package/sdk/configurations.js.map +1 -1
- package/sdk/datapoints.d.ts +1 -1
- package/sdk/datapoints.d.ts.map +1 -1
- package/sdk/datapoints.js +2 -2
- package/sdk/datapoints.js.map +1 -1
- package/sdk/datasets.d.ts +1 -1
- package/sdk/datasets.d.ts.map +1 -1
- package/sdk/datasets.js +2 -2
- package/sdk/datasets.js.map +1 -1
- package/sdk/evaluation.d.ts +16 -0
- package/sdk/evaluation.d.ts.map +1 -0
- package/sdk/evaluation.js +164 -0
- package/sdk/evaluation.js.map +1 -0
- package/sdk/index.d.ts +1 -0
- package/sdk/index.d.ts.map +1 -1
- package/sdk/index.js +1 -0
- package/sdk/index.js.map +1 -1
- package/sdk/runs.d.ts +1 -1
- package/sdk/runs.d.ts.map +1 -1
- package/sdk/runs.js +2 -2
- package/sdk/runs.js.map +1 -1
- package/sdk/tracer.d.ts.map +1 -1
- package/sdk/tracer.js +0 -3
- package/sdk/tracer.js.map +1 -1
- package/src/funcs/configurationsCreateConfiguration.ts +1 -3
- package/src/funcs/configurationsUpdateConfiguration.ts +2 -2
- package/src/funcs/datapointsCreateDatapoint.ts +1 -3
- package/src/funcs/datapointsUpdateDatapoint.ts +2 -2
- package/src/funcs/datasetsAddDatapoints.ts +2 -2
- package/src/funcs/datasetsCreateDataset.ts +1 -3
- package/src/funcs/datasetsUpdateDataset.ts +1 -3
- package/src/funcs/eventsCreateEvent.ts +1 -3
- package/src/funcs/eventsCreateEventBatch.ts +1 -3
- package/src/funcs/eventsCreateModelEvent.ts +1 -3
- package/src/funcs/eventsCreateModelEventBatch.ts +1 -3
- package/src/funcs/eventsGetEvents.ts +1 -3
- package/src/funcs/eventsUpdateEvent.ts +1 -3
- package/src/funcs/metricsCreateMetric.ts +1 -3
- package/src/funcs/metricsUpdateMetric.ts +1 -3
- package/src/funcs/projectsCreateProject.ts +1 -3
- package/src/funcs/projectsUpdateProject.ts +1 -3
- package/src/funcs/runsCreateRun.ts +1 -3
- package/src/funcs/runsUpdateRun.ts +2 -2
- package/src/funcs/sessionStartSession.ts +1 -3
- package/src/funcs/toolsCreateTool.ts +1 -3
- package/src/funcs/toolsUpdateTool.ts +1 -3
- package/src/index.ts +1 -0
- package/src/lib/config.ts +4 -4
- package/src/models/components/datapoint.ts +6 -8
- package/src/models/components/dataset.ts +6 -10
- package/src/sdk/configurations.ts +2 -2
- package/src/sdk/datapoints.ts +2 -2
- package/src/sdk/datasets.ts +2 -2
- package/src/sdk/evaluation.ts +205 -0
- package/src/sdk/index.ts +1 -0
- package/src/sdk/runs.ts +2 -2
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
45
|
+
request,
|
|
48
46
|
(value) => components.UpdateToolRequest$outboundSchema.parse(value),
|
|
49
47
|
"Input validation failed",
|
|
50
48
|
);
|
package/src/index.ts
CHANGED
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.
|
|
57
|
-
sdkVersion: "1.
|
|
58
|
-
genVersion: "2.
|
|
59
|
-
userAgent: "speakeasy-sdk/typescript 1.
|
|
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?:
|
|
19
|
-
updatedAt?:
|
|
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().
|
|
59
|
-
|
|
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.
|
|
112
|
-
updatedAt: z.
|
|
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?:
|
|
70
|
+
createdAt?: string | undefined;
|
|
71
71
|
/**
|
|
72
72
|
* Timestamp of when the dataset was last updated
|
|
73
73
|
*/
|
|
74
|
-
updatedAt?:
|
|
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().
|
|
128
|
-
|
|
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.
|
|
174
|
-
updatedAt: z.
|
|
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
|
}
|
package/src/sdk/datapoints.ts
CHANGED
|
@@ -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
|
}
|
package/src/sdk/datasets.ts
CHANGED
|
@@ -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
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,
|