honeyhive 1.0.3 → 1.0.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "honeyhive",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "author": "HoneyHive",
5
5
  "main": "./index.js",
6
6
  "sideEffects": false,
@@ -9,6 +9,8 @@ interface HoneyHiveTracerInput {
9
9
  sessionName: string;
10
10
  source?: string;
11
11
  userProperties?: Record<string, any>;
12
+ metrics?: Record<string, any>;
13
+ config?: Record<string, any>;
12
14
  metadata?: Record<string, any>;
13
15
  apiKey?: string;
14
16
  verbose?: boolean;
@@ -20,15 +22,18 @@ declare class HoneyHiveLangChainTracer extends BaseCallbackHandler {
20
22
  source: string;
21
23
  userProperties?: Record<string, any> | undefined;
22
24
  verbose: boolean;
25
+ private sdk;
23
26
  private headers;
27
+ private metrics?;
24
28
  private sessionMetadata?;
29
+ private config?;
25
30
  private baseUrl;
26
31
  private sessionId;
27
- private logStack;
32
+ private logMap;
33
+ private rootLogs;
28
34
  constructor(input: HoneyHiveTracerInput);
29
35
  private createLog;
30
- private pushLog;
31
- private popLog;
36
+ private addLogToParent;
32
37
  handleLLMStart(llm: Serialized, prompts: string[], runId: string, parentstring?: string, extraParams?: Record<string, unknown>, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
33
38
  handleLLMEnd(output: LLMResult, runId: string, parentstring?: string): Promise<void>;
34
39
  handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentstring?: string, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
@@ -45,6 +50,10 @@ declare class HoneyHiveLangChainTracer extends BaseCallbackHandler {
45
50
  handleRetrieverStart(retriever: Serialized, query: string, runId: string, parentstring?: string, tags?: string[], metadata?: Record<string, unknown>): Promise<void>;
46
51
  handleRetrieverEnd(documents: DocumentInterface[], runId: string, parentstring?: string): Promise<void>;
47
52
  handleRetrieverError(error: Error, runId: string, parentstring?: string): Promise<void>;
53
+ setFeedback(feedback: Record<string, any>): Promise<void>;
54
+ setMetric(metrics: Record<string, any>): Promise<void>;
55
+ setMetadata(metadata: Record<string, any>): Promise<void>;
56
+ setUserProperties(userProperties: Record<string, any>): Promise<void>;
48
57
  startNewSession(): Promise<void>;
49
58
  }
50
59
  export { HoneyHiveLangChainTracer };
@@ -1 +1 @@
1
- {"version":3,"file":"lc_tracer.d.ts","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lc_tracer.d.ts","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
package/sdk/lc_tracer.js CHANGED
@@ -1,16 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HoneyHiveLangChainTracer = void 0;
4
+ const sdk_1 = require("./sdk");
4
5
  const base_1 = require("@langchain/core/callbacks/base");
5
6
  const uuid_1 = require("uuid");
6
7
  class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
7
8
  constructor(input) {
8
9
  super();
9
- this.logStack = [];
10
+ this.logMap = {}; // Store logs by their event_id
11
+ this.rootLogs = []; // Keep track of top-level logs
10
12
  this.project = input.project;
11
13
  this.name = input.sessionName;
12
14
  this.source = input.source || 'langchain';
13
15
  this.userProperties = input.userProperties;
16
+ this.metrics = input.metrics;
17
+ this.config = input.config;
14
18
  this.sessionMetadata = input.metadata;
15
19
  this.verbose = input.verbose || false;
16
20
  this.baseUrl = input.baseUrl || 'https://api.honeyhive.ai';
@@ -23,11 +27,15 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
23
27
  'Content-Type': 'application/json',
24
28
  'Authorization': `Bearer ${apiKey}`,
25
29
  };
30
+ this.sdk = new sdk_1.HoneyHive({
31
+ bearerAuth: apiKey,
32
+ serverURL: this.baseUrl,
33
+ });
26
34
  }
27
- createLog(event_type, event_name, inputs, outputs, config, start_time, end_time, metadata, error, parent_id, user_properties, metrics, feedback) {
35
+ createLog(event_id, event_type, event_name, inputs, outputs, config, start_time, end_time, metadata, error, parent_id, user_properties, metrics, feedback) {
28
36
  return {
29
37
  project: this.project,
30
- event_id: (0, uuid_1.v4)(),
38
+ event_id: event_id,
31
39
  parent_id,
32
40
  event_type,
33
41
  event_name: event_name || "Event",
@@ -40,40 +48,38 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
40
48
  start_time: start_time,
41
49
  end_time: end_time,
42
50
  duration: (end_time - start_time) / 1000,
43
- metadata: metadata,
51
+ metadata: metadata || {},
44
52
  source: this.source,
45
53
  error,
46
54
  children: []
47
55
  };
48
56
  }
49
- pushLog(log) {
57
+ addLogToParent(log) {
50
58
  var _a;
51
- if (this.logStack.length > 0) {
52
- const parentLog = this.logStack[this.logStack.length - 1];
53
- log.parent_id = parentLog === null || parentLog === void 0 ? void 0 : parentLog.event_id;
54
- (_a = parentLog === null || parentLog === void 0 ? void 0 : parentLog.children) === null || _a === void 0 ? void 0 : _a.push(log);
59
+ if (log.parent_id) {
60
+ const parentLog = this.logMap[log.parent_id];
61
+ if (parentLog) {
62
+ (_a = parentLog.children) === null || _a === void 0 ? void 0 : _a.push(log); // Add log as a child of its parent
63
+ }
55
64
  }
56
- this.logStack.push(log);
57
- }
58
- popLog() {
59
- return this.logStack.pop();
65
+ else {
66
+ // If there's no parent, it's a top-level log
67
+ this.rootLogs.push(log);
68
+ }
69
+ this.logMap[log.event_id] = log; // Store in the logMap by event_id
60
70
  }
61
- async handleLLMStart(llm, prompts,
62
- // @ts-expect-error: Not used
63
- runId, parentstring, extraParams,
71
+ async handleLLMStart(llm, prompts, runId, parentstring, extraParams,
64
72
  // @ts-expect-error: Not used
65
73
  tags, metadata) {
66
74
  const startTime = 1000 * Date.now();
67
- const log = this.createLog('model', llm.id[llm.id.length - 1], { prompts }, null, this.convertToModelConfig(llm, extraParams), startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
68
- this.pushLog(log);
75
+ const log = this.createLog(runId, 'model', llm.id[llm.id.length - 1], { prompts }, null, this.convertToModelConfig(llm, extraParams), startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
76
+ this.addLogToParent(log);
69
77
  }
70
- async handleLLMEnd(output,
71
- // @ts-expect-error: Not used
72
- runId,
78
+ async handleLLMEnd(output, runId,
73
79
  // @ts-expect-error: Not used
74
80
  parentstring) {
75
81
  const endTime = 1000 * Date.now();
76
- const log = this.popLog();
82
+ const log = this.logMap[runId];
77
83
  if (log) {
78
84
  log.end_time = endTime;
79
85
  log.duration = (endTime - log.start_time) / 1000;
@@ -94,85 +100,83 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
94
100
  log.metadata['generationInfo'] = metadata;
95
101
  }
96
102
  // If this is the top-level chain, post the entire log structure
97
- if (this.logStack.length === 0) {
98
- await this.postTrace([log]);
103
+ if (log.parent_id === undefined) {
104
+ await this.postTrace(this.rootLogs);
99
105
  }
100
106
  }
101
107
  }
102
- async handleChainStart(chain, inputs,
103
- // @ts-expect-error: Not used
104
- runId, parentstring,
108
+ async handleChainStart(chain, inputs, runId, parentstring,
105
109
  // @ts-expect-error: Not used
106
110
  tags, metadata) {
107
111
  const startTime = 1000 * Date.now();
108
- const log = this.createLog('chain', chain.id[chain.id.length - 1], inputs, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
109
- this.pushLog(log);
112
+ const log = this.createLog(runId, 'chain', chain.id[chain.id.length - 1], inputs, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
113
+ this.addLogToParent(log);
110
114
  }
111
- async handleChainEnd(outputs,
112
- // @ts-expect-error: Not used
113
- runId,
115
+ async handleChainEnd(outputs, runId,
114
116
  // @ts-expect-error: Not used
115
117
  parentstring) {
116
118
  const endTime = 1000 * Date.now();
117
- const log = this.popLog();
119
+ const log = this.logMap[runId];
118
120
  if (log) {
119
121
  log.end_time = endTime;
120
122
  log.duration = (endTime - log.start_time) / 1000;
121
123
  log.outputs = outputs;
122
124
  // If this is the top-level chain, post the entire log structure
123
- if (this.logStack.length === 0) {
124
- await this.postTrace([log]);
125
+ if (log.parent_id === undefined) {
126
+ await this.postTrace(this.rootLogs);
125
127
  }
126
128
  }
127
129
  }
128
- async handleToolStart(tool, input,
129
- // @ts-expect-error: Not used
130
- runId, parentstring,
130
+ async handleToolStart(tool, input, runId, parentstring,
131
131
  // @ts-expect-error: Not used
132
132
  tags, metadata) {
133
133
  const startTime = 1000 * Date.now();
134
- const log = this.createLog('tool', tool.id[tool.id.length - 1], { input }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
135
- this.pushLog(log);
134
+ const log = this.createLog(runId, 'tool', tool.id[tool.id.length - 1], { input }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
135
+ this.addLogToParent(log);
136
136
  }
137
- async handleToolEnd(output,
138
- // @ts-expect-error: Not used
139
- runId,
137
+ async handleToolEnd(output, runId,
140
138
  // @ts-expect-error: Not used
141
139
  parentstring) {
142
140
  const endTime = 1000 * Date.now();
143
- const log = this.popLog();
141
+ const log = this.logMap[runId];
144
142
  if (log) {
145
143
  log.end_time = endTime;
146
144
  log.duration = (endTime - log.start_time) / 1000;
147
145
  log.outputs = { output: output };
148
146
  // If this is the top-level chain, post the entire log structure
149
- if (this.logStack.length === 0) {
150
- await this.postTrace([log]);
147
+ if (log.parent_id === undefined) {
148
+ await this.postTrace(this.rootLogs);
151
149
  }
152
150
  }
153
151
  }
154
- async handleAgentAction(action,
155
- // @ts-expect-error: Not used
156
- runId, parentstring) {
152
+ async handleAgentAction(action, runId, parentstring) {
157
153
  const startTime = 1000 * Date.now();
158
- const log = this.createLog('tool', 'Agent Action', { action: action.tool, input: action.toolInput, log: action.log }, null, {}, startTime, startTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
159
- this.pushLog(log);
160
- this.popLog();
154
+ const log = this.createLog(runId, 'tool', 'Agent Action', { action: action.tool, input: action.toolInput, log: action.log }, null, {}, startTime, startTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
155
+ this.addLogToParent(log);
161
156
  // If this is the top-level chain, post the entire log structure
162
- if (this.logStack.length === 0) {
163
- await this.postTrace([log]);
157
+ if (log.parent_id === undefined) {
158
+ await this.postTrace(this.rootLogs);
164
159
  }
165
160
  }
166
- async handleAgentEnd(finish,
167
- // @ts-expect-error: Not used
168
- runId, parentstring) {
161
+ async handleAgentEnd(finish, runId, parentstring) {
169
162
  const endTime = 1000 * Date.now();
170
- const log = this.createLog('tool', 'Agent Finish', { output: finish.returnValues, log: finish.log }, { output: finish.returnValues, log: finish.log }, {}, endTime, endTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
171
- this.pushLog(log);
172
- this.popLog();
173
- // If this is the top-level chain, post the entire log structure
174
- if (this.logStack.length === 0) {
175
- await this.postTrace([log]);
163
+ const log = this.logMap[runId];
164
+ if (log) {
165
+ log.end_time = endTime;
166
+ log.duration = (endTime - log.start_time) / 1000;
167
+ log.outputs = { output: finish.returnValues, log: finish.log };
168
+ // If this is the top-level chain, post the entire log structure
169
+ if (log.parent_id === undefined) {
170
+ await this.postTrace(this.rootLogs);
171
+ }
172
+ }
173
+ else {
174
+ const log = this.createLog(runId, 'tool', 'Agent Finish', { output: finish.returnValues, log: finish.log }, { output: finish.returnValues, log: finish.log }, {}, endTime, endTime, undefined, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
175
+ this.addLogToParent(log);
176
+ // If this is the top-level chain, post the entire log structure
177
+ if (log.parent_id === undefined) {
178
+ await this.postTrace(this.rootLogs);
179
+ }
176
180
  }
177
181
  }
178
182
  convertToModelConfig(llm, extraParams) {
@@ -193,6 +197,10 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
193
197
  if (!response.ok) {
194
198
  throw new Error(`Failed to post trace: ${response.statusText}`);
195
199
  }
200
+ else {
201
+ this.rootLogs = [];
202
+ this.logMap = {};
203
+ }
196
204
  }
197
205
  catch (error) {
198
206
  console.error('Error posting trace:', error);
@@ -201,99 +209,152 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
201
209
  }
202
210
  }
203
211
  }
204
- async handleChainError(error,
205
- // @ts-expect-error: Not used
206
- runId,
212
+ async handleChainError(error, runId,
207
213
  // @ts-expect-error: Not used
208
214
  parentstring) {
209
215
  const endTime = 1000 * Date.now();
210
- const log = this.popLog();
216
+ const log = this.logMap[runId];
211
217
  if (log) {
212
218
  log.end_time = endTime;
213
219
  log.duration = (endTime - log.start_time) / 1000;
214
220
  log.error = error.message;
215
221
  // If this is the top-level chain, post the entire log structure
216
- if (this.logStack.length === 0) {
217
- await this.postTrace([log]);
222
+ if (log.parent_id === undefined) {
223
+ await this.postTrace(this.rootLogs);
218
224
  }
219
225
  }
220
226
  }
221
- async handleLLMError(error,
222
- // @ts-expect-error: Not used
223
- runId,
227
+ async handleLLMError(error, runId,
224
228
  // @ts-expect-error: Not used
225
229
  parentstring) {
226
230
  const endTime = 1000 * Date.now();
227
- const log = this.popLog();
231
+ const log = this.logMap[runId];
228
232
  if (log) {
229
233
  log.end_time = endTime;
230
234
  log.duration = (endTime - log.start_time) / 1000;
231
235
  log.error = error.message;
232
236
  // If this is the top-level chain, post the entire log structure
233
- if (this.logStack.length === 0) {
234
- await this.postTrace([log]);
237
+ if (log.parent_id === undefined) {
238
+ await this.postTrace(this.rootLogs);
235
239
  }
236
240
  }
237
241
  }
238
- async handleToolError(error,
239
- // @ts-expect-error: Not used
240
- runId,
242
+ async handleToolError(error, runId,
241
243
  // @ts-expect-error: Not used
242
244
  parentstring) {
243
245
  const endTime = 1000 * Date.now();
244
- const log = this.popLog();
246
+ const log = this.logMap[runId];
245
247
  if (log) {
246
248
  log.end_time = endTime;
247
249
  log.duration = (endTime - log.start_time) / 1000;
248
250
  log.error = error.message;
249
251
  // If this is the top-level chain, post the entire log structure
250
- if (this.logStack.length === 0) {
251
- await this.postTrace([log]);
252
+ if (log.parent_id === undefined) {
253
+ await this.postTrace(this.rootLogs);
252
254
  }
253
255
  }
254
256
  }
255
- async handleRetrieverStart(retriever, query,
256
- // @ts-expect-error: Not used
257
- runId, parentstring,
257
+ async handleRetrieverStart(retriever, query, runId, parentstring,
258
258
  // @ts-expect-error: Not used
259
259
  tags, metadata) {
260
260
  const startTime = 1000 * Date.now();
261
- const log = this.createLog('tool', retriever.id[retriever.id.length - 1], { query }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
262
- this.pushLog(log);
261
+ const log = this.createLog(runId, 'tool', retriever.id[retriever.id.length - 1], { query }, null, {}, startTime, startTime, metadata, undefined, parentstring === null || parentstring === void 0 ? void 0 : parentstring.toString());
262
+ this.addLogToParent(log);
263
263
  }
264
- async handleRetrieverEnd(documents,
265
- // @ts-expect-error: Not used
266
- runId,
264
+ async handleRetrieverEnd(documents, runId,
267
265
  // @ts-expect-error: Not used
268
266
  parentstring) {
269
267
  const endTime = 1000 * Date.now();
270
- const log = this.popLog();
268
+ const log = this.logMap[runId];
269
+ // const log = this.popLog();
271
270
  if (log) {
272
271
  log.end_time = endTime;
273
272
  log.duration = (endTime - log.start_time) / 1000;
274
273
  log.outputs = { documents };
275
274
  // If this is the top-level chain, post the entire log structure
276
- if (this.logStack.length === 0) {
277
- await this.postTrace([log]);
275
+ if (log.parent_id === undefined) {
276
+ await this.postTrace(this.rootLogs);
278
277
  }
279
278
  }
280
279
  }
281
- async handleRetrieverError(error,
282
- // @ts-expect-error: Not used
283
- runId,
280
+ async handleRetrieverError(error, runId,
284
281
  // @ts-expect-error: Not used
285
282
  parentstring) {
286
283
  const endTime = 1000 * Date.now();
287
- const log = this.popLog();
284
+ const log = this.logMap[runId];
288
285
  if (log) {
289
286
  log.end_time = endTime;
290
287
  log.duration = (endTime - log.start_time) / 1000;
291
288
  log.error = error.message;
292
289
  // If this is the top-level chain, post the entire log structure
293
- if (this.logStack.length === 0) {
294
- await this.postTrace([log]);
290
+ if (log.parent_id === undefined) {
291
+ await this.postTrace(this.rootLogs);
292
+ }
293
+ }
294
+ }
295
+ async setFeedback(feedback) {
296
+ if (this.sessionId) {
297
+ try {
298
+ await this.sdk.events.updateEvent({
299
+ eventId: this.sessionId,
300
+ feedback: feedback,
301
+ });
302
+ }
303
+ catch (error) {
304
+ console.error("Failed to set feedback:", error);
305
+ }
306
+ }
307
+ else {
308
+ console.error("Session ID is not initialized");
309
+ }
310
+ }
311
+ async setMetric(metrics) {
312
+ if (this.sessionId) {
313
+ try {
314
+ await this.sdk.events.updateEvent({
315
+ eventId: this.sessionId,
316
+ metrics: metrics,
317
+ });
318
+ }
319
+ catch (error) {
320
+ console.error("Failed to set metric:", error);
295
321
  }
296
322
  }
323
+ else {
324
+ console.error("Session ID is not initialized");
325
+ }
326
+ }
327
+ async setMetadata(metadata) {
328
+ if (this.sessionId) {
329
+ try {
330
+ await this.sdk.events.updateEvent({
331
+ eventId: this.sessionId,
332
+ metadata: metadata,
333
+ });
334
+ }
335
+ catch (error) {
336
+ console.error("Failed to set metadata:", error);
337
+ }
338
+ }
339
+ else {
340
+ console.error("Session ID is not initialized");
341
+ }
342
+ }
343
+ async setUserProperties(userProperties) {
344
+ if (this.sessionId) {
345
+ try {
346
+ await this.sdk.events.updateEvent({
347
+ eventId: this.sessionId,
348
+ userProperties: userProperties,
349
+ });
350
+ }
351
+ catch (error) {
352
+ console.error("Failed to set metadata:", error);
353
+ }
354
+ }
355
+ else {
356
+ console.error("Session ID is not initialized");
357
+ }
297
358
  }
298
359
  async startNewSession() {
299
360
  const sessionBody = {
@@ -301,7 +362,9 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
301
362
  source: this.source,
302
363
  session_id: this.sessionId,
303
364
  session_name: this.name,
304
- userProperties: this.userProperties,
365
+ user_properties: this.userProperties,
366
+ metrics: this.metrics,
367
+ config: this.config,
305
368
  metadata: this.sessionMetadata,
306
369
  };
307
370
  try {
@@ -311,9 +374,7 @@ class HoneyHiveLangChainTracer extends base_1.BaseCallbackHandler {
311
374
  body: JSON.stringify(sessionBody),
312
375
  });
313
376
  const text = await response.text();
314
- // Parse the JSON response
315
377
  const jsonResponse = JSON.parse(text);
316
- // Extract the session_id
317
378
  const sessionId = jsonResponse.session_id;
318
379
  this.sessionId = sessionId;
319
380
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"lc_tracer.js","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lc_tracer.js","sourceRoot":"","sources":["../src/sdk/lc_tracer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { HoneyHive } from "./sdk";
1
2
  import { DocumentInterface } from '@langchain/core/documents';
2
3
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
3
4
  import { AgentAction, AgentFinish } from '@langchain/core/agents';
@@ -11,6 +12,8 @@ interface HoneyHiveTracerInput {
11
12
  sessionName: string;
12
13
  source?: string;
13
14
  userProperties?: Record<string, any>;
15
+ metrics?: Record<string, any>;
16
+ config?: Record<string, any>;
14
17
  metadata?: Record<string, any>;
15
18
  apiKey?: string;
16
19
  verbose?: boolean;
@@ -44,11 +47,15 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
44
47
  source: string;
45
48
  userProperties?: Record<string, any> | undefined;
46
49
  verbose: boolean;
50
+ private sdk: HoneyHive;
47
51
  private headers: Record<string, string>;
52
+ private metrics?: Record<string, any> | undefined;
48
53
  private sessionMetadata?: Record<string, any> | undefined;
54
+ private config?: Record<string, any> | undefined;
49
55
  private baseUrl: string;
50
56
  private sessionId: string;
51
- private logStack: Log[] = [];
57
+ private logMap: Record<string, Log> = {}; // Store logs by their event_id
58
+ private rootLogs: Log[] = []; // Keep track of top-level logs
52
59
 
53
60
  constructor(input: HoneyHiveTracerInput) {
54
61
  super();
@@ -56,6 +63,8 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
56
63
  this.name = input.sessionName;
57
64
  this.source = input.source || 'langchain';
58
65
  this.userProperties = input.userProperties;
66
+ this.metrics = input.metrics;
67
+ this.config = input.config;
59
68
  this.sessionMetadata = input.metadata;
60
69
  this.verbose = input.verbose || false;
61
70
  this.baseUrl = input.baseUrl || 'https://api.honeyhive.ai';
@@ -70,9 +79,15 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
70
79
  'Content-Type': 'application/json',
71
80
  'Authorization': `Bearer ${apiKey}`,
72
81
  };
82
+
83
+ this.sdk = new HoneyHive({
84
+ bearerAuth: apiKey,
85
+ serverURL: this.baseUrl,
86
+ });
73
87
  }
74
88
 
75
89
  private createLog(
90
+ event_id: string,
76
91
  event_type: string,
77
92
  event_name: string | undefined,
78
93
  inputs: Record<string, any>,
@@ -89,7 +104,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
89
104
  ): Log {
90
105
  return {
91
106
  project: this.project,
92
- event_id: uuidv4(),
107
+ event_id: event_id,
93
108
  parent_id,
94
109
  event_type,
95
110
  event_name: event_name || "Event",
@@ -102,30 +117,29 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
102
117
  start_time: start_time,
103
118
  end_time: end_time,
104
119
  duration: (end_time - start_time) / 1000,
105
- metadata: metadata,
120
+ metadata: metadata || {},
106
121
  source: this.source,
107
122
  error,
108
123
  children: []
109
124
  };
110
125
  }
111
126
 
112
- private pushLog(log: Log): void {
113
- if (this.logStack.length > 0) {
114
- const parentLog = this.logStack[this.logStack.length - 1];
115
- log.parent_id = parentLog?.event_id;
116
- parentLog?.children?.push(log);
127
+ private addLogToParent(log: Log): void {
128
+ if (log.parent_id) {
129
+ const parentLog = this.logMap[log.parent_id];
130
+ if (parentLog) {
131
+ parentLog.children?.push(log); // Add log as a child of its parent
132
+ }
133
+ } else {
134
+ // If there's no parent, it's a top-level log
135
+ this.rootLogs.push(log);
117
136
  }
118
- this.logStack.push(log);
119
- }
120
-
121
- private popLog(): Log | undefined {
122
- return this.logStack.pop();
137
+ this.logMap[log.event_id] = log; // Store in the logMap by event_id
123
138
  }
124
139
 
125
140
  override async handleLLMStart(
126
141
  llm: Serialized,
127
142
  prompts: string[],
128
- // @ts-expect-error: Not used
129
143
  runId: string,
130
144
  parentstring?: string,
131
145
  extraParams?: Record<string, unknown>,
@@ -135,6 +149,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
135
149
  ): Promise<void> {
136
150
  const startTime = 1000 * Date.now();
137
151
  const log = this.createLog(
152
+ runId,
138
153
  'model',
139
154
  llm.id[llm.id.length - 1],
140
155
  { prompts },
@@ -146,18 +161,17 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
146
161
  undefined,
147
162
  parentstring?.toString()
148
163
  );
149
- this.pushLog(log);
164
+ this.addLogToParent(log);
150
165
  }
151
166
 
152
167
  override async handleLLMEnd(
153
168
  output: LLMResult,
154
- // @ts-expect-error: Not used
155
169
  runId: string,
156
170
  // @ts-expect-error: Not used
157
171
  parentstring?: string
158
172
  ): Promise<void> {
159
173
  const endTime = 1000 * Date.now();
160
- const log = this.popLog();
174
+ const log = this.logMap[runId];
161
175
  if (log) {
162
176
  log.end_time = endTime;
163
177
  log.duration = (endTime - log.start_time) / 1000;
@@ -180,8 +194,8 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
180
194
  log.metadata['generationInfo'] = metadata;
181
195
  }
182
196
  // If this is the top-level chain, post the entire log structure
183
- if (this.logStack.length === 0) {
184
- await this.postTrace([log]);
197
+ if (log.parent_id === undefined) {
198
+ await this.postTrace(this.rootLogs);
185
199
  }
186
200
  }
187
201
  }
@@ -189,7 +203,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
189
203
  override async handleChainStart(
190
204
  chain: Serialized,
191
205
  inputs: ChainValues,
192
- // @ts-expect-error: Not used
193
206
  runId: string,
194
207
  parentstring?: string,
195
208
  // @ts-expect-error: Not used
@@ -198,6 +211,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
198
211
  ): Promise<void> {
199
212
  const startTime = 1000 * Date.now();
200
213
  const log = this.createLog(
214
+ runId,
201
215
  'chain',
202
216
  chain.id[chain.id.length - 1],
203
217
  inputs,
@@ -209,26 +223,25 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
209
223
  undefined,
210
224
  parentstring?.toString()
211
225
  );
212
- this.pushLog(log);
226
+ this.addLogToParent(log);
213
227
  }
214
228
 
215
229
  override async handleChainEnd(
216
230
  outputs: ChainValues,
217
- // @ts-expect-error: Not used
218
231
  runId: string,
219
232
  // @ts-expect-error: Not used
220
233
  parentstring?: string
221
234
  ): Promise<void> {
222
235
  const endTime = 1000 * Date.now();
223
- const log = this.popLog();
236
+ const log = this.logMap[runId];
224
237
  if (log) {
225
238
  log.end_time = endTime;
226
239
  log.duration = (endTime - log.start_time) / 1000;
227
240
  log.outputs = outputs;
228
241
 
229
242
  // If this is the top-level chain, post the entire log structure
230
- if (this.logStack.length === 0) {
231
- await this.postTrace([log]);
243
+ if (log.parent_id === undefined) {
244
+ await this.postTrace(this.rootLogs);
232
245
  }
233
246
  }
234
247
  }
@@ -236,7 +249,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
236
249
  override async handleToolStart(
237
250
  tool: Serialized,
238
251
  input: string,
239
- // @ts-expect-error: Not used
240
252
  runId: string,
241
253
  parentstring?: string,
242
254
  // @ts-expect-error: Not used
@@ -245,6 +257,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
245
257
  ): Promise<void> {
246
258
  const startTime = 1000 * Date.now();
247
259
  const log = this.createLog(
260
+ runId,
248
261
  'tool',
249
262
  tool.id[tool.id.length - 1],
250
263
  { input },
@@ -256,37 +269,36 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
256
269
  undefined,
257
270
  parentstring?.toString()
258
271
  );
259
- this.pushLog(log);
272
+ this.addLogToParent(log);
260
273
  }
261
274
 
262
275
  override async handleToolEnd(
263
276
  output: string,
264
- // @ts-expect-error: Not used
265
277
  runId: string,
266
278
  // @ts-expect-error: Not used
267
279
  parentstring?: string
268
280
  ): Promise<void> {
269
281
  const endTime = 1000 * Date.now();
270
- const log = this.popLog();
282
+ const log = this.logMap[runId];
271
283
  if (log) {
272
284
  log.end_time = endTime;
273
285
  log.duration = (endTime - log.start_time) / 1000;
274
286
  log.outputs = { output: output };
275
287
  // If this is the top-level chain, post the entire log structure
276
- if (this.logStack.length === 0) {
277
- await this.postTrace([log]);
288
+ if (log.parent_id === undefined) {
289
+ await this.postTrace(this.rootLogs);
278
290
  }
279
291
  }
280
292
  }
281
293
 
282
294
  override async handleAgentAction(
283
295
  action: AgentAction,
284
- // @ts-expect-error: Not used
285
296
  runId: string,
286
297
  parentstring?: string
287
298
  ): Promise<void> {
288
299
  const startTime = 1000 * Date.now();
289
300
  const log = this.createLog(
301
+ runId,
290
302
  'tool',
291
303
  'Agent Action',
292
304
  { action: action.tool, input: action.toolInput, log: action.log },
@@ -298,38 +310,47 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
298
310
  undefined,
299
311
  parentstring?.toString()
300
312
  );
301
- this.pushLog(log);
302
- this.popLog();
313
+ this.addLogToParent(log);
303
314
  // If this is the top-level chain, post the entire log structure
304
- if (this.logStack.length === 0) {
305
- await this.postTrace([log]);
315
+ if (log.parent_id === undefined) {
316
+ await this.postTrace(this.rootLogs);
306
317
  }
307
318
  }
308
319
 
309
320
  override async handleAgentEnd(
310
321
  finish: AgentFinish,
311
- // @ts-expect-error: Not used
312
322
  runId: string,
313
323
  parentstring?: string
314
324
  ): Promise<void> {
315
325
  const endTime = 1000 * Date.now();
316
- const log = this.createLog(
317
- 'tool',
318
- 'Agent Finish',
319
- { output: finish.returnValues, log: finish.log },
320
- { output: finish.returnValues, log: finish.log },
321
- {},
322
- endTime,
323
- endTime,
324
- undefined,
325
- undefined,
326
- parentstring?.toString()
327
- );
328
- this.pushLog(log);
329
- this.popLog();
330
- // If this is the top-level chain, post the entire log structure
331
- if (this.logStack.length === 0) {
332
- await this.postTrace([log]);
326
+ const log = this.logMap[runId];
327
+ if (log) {
328
+ log.end_time = endTime;
329
+ log.duration = (endTime - log.start_time) / 1000;
330
+ log.outputs = { output: finish.returnValues, log: finish.log };
331
+ // If this is the top-level chain, post the entire log structure
332
+ if (log.parent_id === undefined) {
333
+ await this.postTrace(this.rootLogs);
334
+ }
335
+ } else {
336
+ const log = this.createLog(
337
+ runId,
338
+ 'tool',
339
+ 'Agent Finish',
340
+ { output: finish.returnValues, log: finish.log },
341
+ { output: finish.returnValues, log: finish.log },
342
+ {},
343
+ endTime,
344
+ endTime,
345
+ undefined,
346
+ undefined,
347
+ parentstring?.toString()
348
+ );
349
+ this.addLogToParent(log);
350
+ // If this is the top-level chain, post the entire log structure
351
+ if (log.parent_id === undefined) {
352
+ await this.postTrace(this.rootLogs);
353
+ }
333
354
  }
334
355
  }
335
356
 
@@ -355,6 +376,9 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
355
376
 
356
377
  if (!response.ok) {
357
378
  throw new Error(`Failed to post trace: ${response.statusText}`);
379
+ } else {
380
+ this.rootLogs = [];
381
+ this.logMap = {};
358
382
  }
359
383
  } catch (error) {
360
384
  console.error('Error posting trace:', error);
@@ -366,61 +390,57 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
366
390
 
367
391
  override async handleChainError(
368
392
  error: Error,
369
- // @ts-expect-error: Not used
370
393
  runId: string,
371
394
  // @ts-expect-error: Not used
372
395
  parentstring?: string
373
396
  ): Promise<void> {
374
397
  const endTime = 1000 * Date.now();
375
- const log = this.popLog();
398
+ const log = this.logMap[runId];
376
399
  if (log) {
377
400
  log.end_time = endTime;
378
401
  log.duration = (endTime - log.start_time) / 1000;
379
402
  log.error = error.message;
380
-
381
403
  // If this is the top-level chain, post the entire log structure
382
- if (this.logStack.length === 0) {
383
- await this.postTrace([log]);
404
+ if (log.parent_id === undefined) {
405
+ await this.postTrace(this.rootLogs);
384
406
  }
385
407
  }
386
408
  }
387
409
 
388
410
  override async handleLLMError(
389
411
  error: Error,
390
- // @ts-expect-error: Not used
391
412
  runId: string,
392
413
  // @ts-expect-error: Not used
393
414
  parentstring?: string
394
415
  ): Promise<void> {
395
416
  const endTime = 1000 * Date.now();
396
- const log = this.popLog();
417
+ const log = this.logMap[runId];
397
418
  if (log) {
398
419
  log.end_time = endTime;
399
420
  log.duration = (endTime - log.start_time) / 1000;
400
421
  log.error = error.message;
401
422
  // If this is the top-level chain, post the entire log structure
402
- if (this.logStack.length === 0) {
403
- await this.postTrace([log]);
423
+ if (log.parent_id === undefined) {
424
+ await this.postTrace(this.rootLogs);
404
425
  }
405
426
  }
406
427
  }
407
428
 
408
429
  override async handleToolError(
409
430
  error: Error,
410
- // @ts-expect-error: Not used
411
431
  runId: string,
412
432
  // @ts-expect-error: Not used
413
433
  parentstring?: string
414
434
  ): Promise<void> {
415
435
  const endTime = 1000 * Date.now();
416
- const log = this.popLog();
436
+ const log = this.logMap[runId];
417
437
  if (log) {
418
438
  log.end_time = endTime;
419
439
  log.duration = (endTime - log.start_time) / 1000;
420
440
  log.error = error.message;
421
441
  // If this is the top-level chain, post the entire log structure
422
- if (this.logStack.length === 0) {
423
- await this.postTrace([log]);
442
+ if (log.parent_id === undefined) {
443
+ await this.postTrace(this.rootLogs);
424
444
  }
425
445
  }
426
446
  }
@@ -428,7 +448,6 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
428
448
  override async handleRetrieverStart(
429
449
  retriever: Serialized,
430
450
  query: string,
431
- // @ts-expect-error: Not used
432
451
  runId: string,
433
452
  parentstring?: string,
434
453
  // @ts-expect-error: Not used
@@ -437,6 +456,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
437
456
  ): Promise<void> {
438
457
  const startTime = 1000 * Date.now();
439
458
  const log = this.createLog(
459
+ runId,
440
460
  'tool',
441
461
  retriever.id[retriever.id.length - 1],
442
462
  { query },
@@ -448,49 +468,107 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
448
468
  undefined,
449
469
  parentstring?.toString()
450
470
  );
451
- this.pushLog(log);
471
+ this.addLogToParent(log);
452
472
  }
453
473
 
454
474
  override async handleRetrieverEnd(
455
475
  documents: DocumentInterface[],
456
- // @ts-expect-error: Not used
457
476
  runId: string,
458
477
  // @ts-expect-error: Not used
459
478
  parentstring?: string
460
479
  ): Promise<void> {
461
480
  const endTime = 1000 * Date.now();
462
- const log = this.popLog();
481
+ const log = this.logMap[runId];
482
+ // const log = this.popLog();
463
483
  if (log) {
464
484
  log.end_time = endTime;
465
485
  log.duration = (endTime - log.start_time) / 1000;
466
486
  log.outputs = { documents };
467
487
  // If this is the top-level chain, post the entire log structure
468
- if (this.logStack.length === 0) {
469
- await this.postTrace([log]);
488
+ if (log.parent_id === undefined) {
489
+ await this.postTrace(this.rootLogs);
470
490
  }
471
491
  }
472
492
  }
473
493
 
474
494
  override async handleRetrieverError(
475
495
  error: Error,
476
- // @ts-expect-error: Not used
477
496
  runId: string,
478
497
  // @ts-expect-error: Not used
479
498
  parentstring?: string
480
499
  ): Promise<void> {
481
500
  const endTime = 1000 * Date.now();
482
- const log = this.popLog();
501
+ const log = this.logMap[runId];
483
502
  if (log) {
484
503
  log.end_time = endTime;
485
504
  log.duration = (endTime - log.start_time) / 1000;
486
505
  log.error = error.message;
487
506
  // If this is the top-level chain, post the entire log structure
488
- if (this.logStack.length === 0) {
489
- await this.postTrace([log]);
507
+ if (log.parent_id === undefined) {
508
+ await this.postTrace(this.rootLogs);
490
509
  }
491
510
  }
492
511
  }
493
512
 
513
+ public async setFeedback(feedback: Record<string, any>): Promise<void> {
514
+ if (this.sessionId) {
515
+ try {
516
+ await this.sdk.events.updateEvent({
517
+ eventId: this.sessionId,
518
+ feedback: feedback,
519
+ });
520
+ } catch (error) {
521
+ console.error("Failed to set feedback:", error);
522
+ }
523
+ } else {
524
+ console.error("Session ID is not initialized");
525
+ }
526
+ }
527
+
528
+ public async setMetric(metrics: Record<string, any>): Promise<void> {
529
+ if (this.sessionId) {
530
+ try {
531
+ await this.sdk.events.updateEvent({
532
+ eventId: this.sessionId,
533
+ metrics: metrics,
534
+ });
535
+ } catch (error) {
536
+ console.error("Failed to set metric:", error);
537
+ }
538
+ } else {
539
+ console.error("Session ID is not initialized");
540
+ }
541
+ }
542
+
543
+ public async setMetadata(metadata: Record<string, any>): Promise<void> {
544
+ if (this.sessionId) {
545
+ try {
546
+ await this.sdk.events.updateEvent({
547
+ eventId: this.sessionId,
548
+ metadata: metadata,
549
+ });
550
+ } catch (error) {
551
+ console.error("Failed to set metadata:", error);
552
+ }
553
+ } else {
554
+ console.error("Session ID is not initialized");
555
+ }
556
+ }
557
+
558
+ public async setUserProperties(userProperties: Record<string, any>): Promise<void> {
559
+ if (this.sessionId) {
560
+ try {
561
+ await this.sdk.events.updateEvent({
562
+ eventId: this.sessionId,
563
+ userProperties: userProperties,
564
+ });
565
+ } catch (error) {
566
+ console.error("Failed to set metadata:", error);
567
+ }
568
+ } else {
569
+ console.error("Session ID is not initialized");
570
+ }
571
+ }
494
572
 
495
573
  async startNewSession(): Promise<void> {
496
574
  const sessionBody = {
@@ -498,7 +576,9 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
498
576
  source: this.source,
499
577
  session_id: this.sessionId,
500
578
  session_name: this.name,
501
- userProperties: this.userProperties,
579
+ user_properties: this.userProperties,
580
+ metrics: this.metrics,
581
+ config: this.config,
502
582
  metadata: this.sessionMetadata,
503
583
  };
504
584
 
@@ -510,10 +590,7 @@ class HoneyHiveLangChainTracer extends BaseCallbackHandler {
510
590
  });
511
591
 
512
592
  const text = await response.text();
513
- // Parse the JSON response
514
593
  const jsonResponse = JSON.parse(text);
515
-
516
- // Extract the session_id
517
594
  const sessionId = jsonResponse.session_id;
518
595
  this.sessionId = sessionId;
519
596