@traccia2/sdk 0.0.4 → 0.0.6

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/README.md CHANGED
@@ -332,11 +332,11 @@ await stopTracing();
332
332
 
333
333
  #### LangChain with Callback Handler
334
334
 
335
- The SDK provides a `TraciaCallbackHandler` for seamless integration with LangChain:
335
+ The SDK provides a `TracciaCallbackHandler` for seamless integration with LangChain. It extends LangChain's `BaseCallbackHandler` for proper type safety and interface compliance:
336
336
 
337
337
  ```typescript
338
- import { startTracing, getTracer } from '@traccia/sdk';
339
- import { TraciaCallbackHandler } from '@traccia/sdk/integrations';
338
+ import { startTracing, getTracerProvider } from '@traccia/sdk';
339
+ import { TracciaCallbackHandler } from '@traccia/sdk/integrations';
340
340
  import { ChatOpenAI } from '@langchain/openai';
341
341
  import { AgentExecutor, createOpenAIToolsAgent } from 'langchain/agents';
342
342
 
@@ -344,35 +344,170 @@ import { AgentExecutor, createOpenAIToolsAgent } from 'langchain/agents';
344
344
  await startTracing({
345
345
  apiKey: 'your-api-key',
346
346
  enableConsoleExporter: true,
347
+ enableSpanLogging: true, // Log spans immediately as they complete
348
+ maxExportBatchSize: 1, // Export every span immediately
349
+ scheduleDelayMs: 100, // Quick flush interval
347
350
  });
348
351
 
349
352
  // Create callback handler for tracing
350
- const traciaHandler = new TraciaCallbackHandler();
353
+ const tracciaHandler = new TracciaCallbackHandler();
351
354
 
352
355
  // Use with LangChain models and agents
353
356
  const model = new ChatOpenAI({
354
357
  modelName: 'gpt-4',
355
- callbacks: [traciaHandler],
358
+ callbacks: [tracciaHandler],
356
359
  });
357
360
 
358
361
  const agent = await createOpenAIToolsAgent({
359
362
  llmWithTools: model,
360
363
  tools: [yourTools],
361
- callbacks: [traciaHandler],
364
+ callbacks: [tracciaHandler],
362
365
  });
363
366
 
364
367
  const executor = new AgentExecutor({
365
368
  agent,
366
369
  tools: [yourTools],
367
- callbacks: [traciaHandler],
370
+ callbacks: [tracciaHandler],
368
371
  });
369
372
 
370
373
  // Run with automatic tracing
371
374
  const result = await executor.invoke({
372
375
  input: 'Your prompt here',
373
376
  });
377
+
378
+ // Flush pending spans to ensure they're exported/logged
379
+ const provider = getTracerProvider();
380
+ await provider.forceFlush();
374
381
  ```
375
382
 
383
+ **Using with ChatOllama (Local Models):**
384
+
385
+ If you're using ChatOllama instead of ChatOpenAI for local LLM inference:
386
+
387
+ ```typescript
388
+ import { startTracing, getTracerProvider } from '@traccia/sdk';
389
+ import { TracciaCallbackHandler } from '@traccia/sdk/integrations';
390
+ import { ChatOllama } from '@langchain/ollama';
391
+
392
+ // Initialize tracing
393
+ await startTracing({
394
+ enableConsoleExporter: true,
395
+ enableSpanLogging: true,
396
+ maxExportBatchSize: 1,
397
+ scheduleDelayMs: 100,
398
+ });
399
+
400
+ // Create callback handler
401
+ const tracciaHandler = new TracciaCallbackHandler();
402
+
403
+ // Use with ChatOllama (local model)
404
+ const model = new ChatOllama({
405
+ model: 'mistral', // or 'llama2', 'neural-chat', etc.
406
+ baseUrl: 'http://localhost:11434', // Ollama server
407
+ callbacks: [tracciaHandler], // Enable tracing
408
+ });
409
+
410
+ // Use the model - fully traced!
411
+ const response = await model.invoke({ input: 'Hello, how are you?' });
412
+ console.log(response);
413
+
414
+ // Flush spans
415
+ const provider = getTracerProvider();
416
+ await provider.forceFlush();
417
+ ```
418
+
419
+ **Seeing Traces in Console:**
420
+
421
+ To see traces printed to the console immediately, use these configuration options:
422
+
423
+ ```typescript
424
+ await startTracing({
425
+ enableConsoleExporter: true, // Export to console
426
+ enableSpanLogging: true, // Log each completed span
427
+ maxExportBatchSize: 1, // Export immediately (don't batch)
428
+ scheduleDelayMs: 100, // Flush frequently
429
+ });
430
+ ```
431
+
432
+ Without these options, spans are batched and exported on a delay (default 5 seconds).
433
+
434
+ **Troubleshooting - No Traces in Console:**
435
+
436
+ If you don't see traces in the console, check:
437
+
438
+ 1. **LangChain Version Compatibility:**
439
+ - TraciaCallbackHandler is compatible with LangChain 0.0.x, 0.1.x, 0.2.x, and 1.x
440
+ - Verified to work with LangChain 0.2.20
441
+ - Works with both `ChatOpenAI` and `ChatOllama`
442
+ - Check your installed version: `npm list @langchain/core`
443
+
444
+ **For ChatOllama (Ollama local models):**
445
+ ```typescript
446
+ // Install Ollama integration
447
+ npm install @langchain/ollama
448
+
449
+ // Use with ChatOllama
450
+ import { ChatOllama } from '@langchain/ollama';
451
+
452
+ const handler = new TraciaCallbackHandler();
453
+ const model = new ChatOllama({
454
+ model: 'mistral',
455
+ baseUrl: 'http://localhost:11434',
456
+ callbacks: [handler], // Enable tracing
457
+ });
458
+
459
+ const response = await model.invoke({ input: 'Hello!' });
460
+
461
+ // Don't forget to flush!
462
+ const provider = getTracerProvider();
463
+ await provider.forceFlush();
464
+ ```
465
+
466
+ 2. **Callback Handler Configuration:**
467
+ ```typescript
468
+ // Make sure the handler is passed to ALL components
469
+ const handler = new TraciaCallbackHandler();
470
+
471
+ const model = new ChatOpenAI({
472
+ callbacks: [handler], // Required for LLM
473
+ });
474
+
475
+ const executor = new AgentExecutor({
476
+ callbacks: [handler], // Required for executor
477
+ // ... other options
478
+ });
479
+ ```
480
+
481
+ 3. **Force Flush is Critical:**
482
+ ```typescript
483
+ // Without this, spans may not be exported!
484
+ const provider = getTracerProvider();
485
+ await provider.forceFlush(); // Wait for all spans to flush
486
+ ```
487
+
488
+ 4. **Check Configuration:**
489
+ ```typescript
490
+ // Verify these are set correctly
491
+ await startTracing({
492
+ enableSpanLogging: true, // Logs each span immediately
493
+ enableConsoleExporter: true, // Exports to console
494
+ maxExportBatchSize: 1, // Export immediately (don't batch)
495
+ scheduleDelayMs: 100, // Quick flush
496
+ });
497
+ ```
498
+
499
+ 5. **Verify Callbacks Are Being Called:**
500
+ - Add a console.log in your code to confirm model is being invoked
501
+ - Check that the handler instance is the same object passed to all components
502
+ - Ensure no errors are being silently caught
503
+
504
+ 6. **Check Node.js Event Loop:**
505
+ - Spans are processed asynchronously
506
+ - Make sure you're not exiting the process immediately
507
+ - Use `await provider.forceFlush()` before process.exit()
508
+
509
+ **What Gets Traced:**
510
+
376
511
  The `TraciaCallbackHandler` automatically traces:
377
512
 
378
513
  - **LLM Calls**: Model name, temperature, max tokens, top-p/k, token counts, latency
@@ -4,19 +4,19 @@
4
4
  * Instead of manually passing callbacks to every component, use these
5
5
  * convenience functions for automatic instrumentation with zero boilerplate.
6
6
  */
7
- import { TraciaCallbackHandler } from './langchain-callback';
7
+ import { TracciaCallbackHandler } from './langchain-callback';
8
8
  /**
9
9
  * Get or create the global Traccia callback handler.
10
10
  *
11
11
  * @example
12
12
  * // Instead of:
13
- * const handler = new TraciaCallbackHandler();
13
+ * const handler = new TracciaCallbackHandler();
14
14
  * const model = new ChatOpenAI({ callbacks: [handler] });
15
15
  *
16
16
  * // Just do:
17
17
  * const model = new ChatOpenAI({ callbacks: [getTraciaHandler()] });
18
18
  */
19
- export declare function getTraciaHandler(): TraciaCallbackHandler;
19
+ export declare function getTraciaHandler(): TracciaCallbackHandler;
20
20
  /**
21
21
  * Wrap any LangChain model/chain/agent with automatic tracing.
22
22
  *
@@ -103,6 +103,6 @@ export declare function setupLangChainWithTracing(options: {
103
103
  }): Promise<{
104
104
  model: any;
105
105
  executor: any;
106
- handler: TraciaCallbackHandler;
106
+ handler: TracciaCallbackHandler;
107
107
  }>;
108
108
  //# sourceMappingURL=auto-langchain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-langchain.d.ts","sourceRoot":"","sources":["../../src/integrations/auto-langchain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAO7D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAKxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAkB1D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAWlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5C,GAAG,OAAO,CAAC,GAAG,CAAC,CAmBf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,GAAG,CAAC;CACb,GAAG,OAAO,CAAC,GAAG,CAAC,CAkBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAEnC,SAAS,GAAG,EACZ,aAAa,MAAM,EACnB,YAAY,kBAAkB,wBA0BjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC,CA8DD"}
1
+ {"version":3,"file":"auto-langchain.d.ts","sourceRoot":"","sources":["../../src/integrations/auto-langchain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAO9D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAKzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAkB1D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAWlE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5C,GAAG,OAAO,CAAC,GAAG,CAAC,CAmBf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,GAAG,CAAC;CACb,GAAG,OAAO,CAAC,GAAG,CAAC,CAkBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,IAEnC,SAAS,GAAG,EACZ,aAAa,MAAM,EACnB,YAAY,kBAAkB,wBA0BjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,sBAAsB,CAAC;CACjC,CAAC,CA8DD"}
@@ -56,7 +56,7 @@ let globalTraciaHandler = null;
56
56
  *
57
57
  * @example
58
58
  * // Instead of:
59
- * const handler = new TraciaCallbackHandler();
59
+ * const handler = new TracciaCallbackHandler();
60
60
  * const model = new ChatOpenAI({ callbacks: [handler] });
61
61
  *
62
62
  * // Just do:
@@ -64,7 +64,7 @@ let globalTraciaHandler = null;
64
64
  */
65
65
  function getTraciaHandler() {
66
66
  if (!globalTraciaHandler) {
67
- globalTraciaHandler = new langchain_callback_1.TraciaCallbackHandler();
67
+ globalTraciaHandler = new langchain_callback_1.TracciaCallbackHandler();
68
68
  }
69
69
  return globalTraciaHandler;
70
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-langchain.js","sourceRoot":"","sources":["../../src/integrations/auto-langchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-langchain.js","sourceRoot":"","sources":["../../src/integrations/auto-langchain.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * @module integrations
6
6
  */
7
- export { TraciaCallbackHandler } from './langchain-callback';
7
+ export { TracciaCallbackHandler } from './langchain-callback';
8
8
  export { getTraciaHandler, withTracing, createTracedOpenAI, createTracedAgentExecutor, createTracedLLMChain, traced, setupLangChainWithTracing, } from './auto-langchain';
9
9
  export { instrumentLangGraph, createTracedNode, createTracedConditional, } from './langgraph-instrumentation';
10
10
  export { wrapGraphWithTracing, tracedNode, tracedConditional, createSimpleTracedGraph, traceableFunction, createAgentWorkflow, } from './auto-langgraph';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,MAAM,EACN,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,MAAM,EACN,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sBAAsB,CAAC"}
@@ -6,10 +6,10 @@
6
6
  * @module integrations
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.POPULAR_OLLAMA_MODELS = exports.getOllamaSetupInstructions = exports.createOllamaStreamingChatbot = exports.createOllamaChatbot = exports.setupOllamaWithTracing = exports.createOllamaWithTracing = exports.createAgentWorkflow = exports.traceableFunction = exports.createSimpleTracedGraph = exports.tracedConditional = exports.tracedNode = exports.wrapGraphWithTracing = exports.createTracedConditional = exports.createTracedNode = exports.instrumentLangGraph = exports.setupLangChainWithTracing = exports.traced = exports.createTracedLLMChain = exports.createTracedAgentExecutor = exports.createTracedOpenAI = exports.withTracing = exports.getTraciaHandler = exports.TraciaCallbackHandler = void 0;
9
+ exports.POPULAR_OLLAMA_MODELS = exports.getOllamaSetupInstructions = exports.createOllamaStreamingChatbot = exports.createOllamaChatbot = exports.setupOllamaWithTracing = exports.createOllamaWithTracing = exports.createAgentWorkflow = exports.traceableFunction = exports.createSimpleTracedGraph = exports.tracedConditional = exports.tracedNode = exports.wrapGraphWithTracing = exports.createTracedConditional = exports.createTracedNode = exports.instrumentLangGraph = exports.setupLangChainWithTracing = exports.traced = exports.createTracedLLMChain = exports.createTracedAgentExecutor = exports.createTracedOpenAI = exports.withTracing = exports.getTraciaHandler = exports.TracciaCallbackHandler = void 0;
10
10
  // LangChain integrations
11
11
  var langchain_callback_1 = require("./langchain-callback");
12
- Object.defineProperty(exports, "TraciaCallbackHandler", { enumerable: true, get: function () { return langchain_callback_1.TraciaCallbackHandler; } });
12
+ Object.defineProperty(exports, "TracciaCallbackHandler", { enumerable: true, get: function () { return langchain_callback_1.TracciaCallbackHandler; } });
13
13
  var auto_langchain_1 = require("./auto-langchain");
14
14
  Object.defineProperty(exports, "getTraciaHandler", { enumerable: true, get: function () { return auto_langchain_1.getTraciaHandler; } });
15
15
  Object.defineProperty(exports, "withTracing", { enumerable: true, get: function () { return auto_langchain_1.withTracing; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,yBAAyB;AACzB,2DAA6D;AAApD,2HAAA,qBAAqB,OAAA;AAC9B,mDAQ0B;AAPxB,kHAAA,gBAAgB,OAAA;AAChB,6GAAA,WAAW,OAAA;AACX,oHAAA,kBAAkB,OAAA;AAClB,2HAAA,yBAAyB,OAAA;AACzB,sHAAA,oBAAoB,OAAA;AACpB,wGAAA,MAAM,OAAA;AACN,2HAAA,yBAAyB,OAAA;AAG3B,yBAAyB;AACzB,yEAIqC;AAHnC,gIAAA,mBAAmB,OAAA;AACnB,6HAAA,gBAAgB,OAAA;AAChB,oIAAA,uBAAuB,OAAA;AAEzB,mDAO0B;AANxB,sHAAA,oBAAoB,OAAA;AACpB,4GAAA,UAAU,OAAA;AACV,mHAAA,iBAAiB,OAAA;AACjB,yHAAA,uBAAuB,OAAA;AACvB,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AAGrB,sBAAsB;AACtB,2DAO8B;AAN5B,6HAAA,uBAAuB,OAAA;AACvB,4HAAA,sBAAsB,OAAA;AACtB,yHAAA,mBAAmB,OAAA;AACnB,kIAAA,4BAA4B,OAAA;AAC5B,gIAAA,0BAA0B,OAAA;AAC1B,2HAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,yBAAyB;AACzB,2DAA8D;AAArD,4HAAA,sBAAsB,OAAA;AAC/B,mDAQ0B;AAPxB,kHAAA,gBAAgB,OAAA;AAChB,6GAAA,WAAW,OAAA;AACX,oHAAA,kBAAkB,OAAA;AAClB,2HAAA,yBAAyB,OAAA;AACzB,sHAAA,oBAAoB,OAAA;AACpB,wGAAA,MAAM,OAAA;AACN,2HAAA,yBAAyB,OAAA;AAG3B,yBAAyB;AACzB,yEAIqC;AAHnC,gIAAA,mBAAmB,OAAA;AACnB,6HAAA,gBAAgB,OAAA;AAChB,oIAAA,uBAAuB,OAAA;AAEzB,mDAO0B;AANxB,sHAAA,oBAAoB,OAAA;AACpB,4GAAA,UAAU,OAAA;AACV,mHAAA,iBAAiB,OAAA;AACjB,yHAAA,uBAAuB,OAAA;AACvB,mHAAA,iBAAiB,OAAA;AACjB,qHAAA,mBAAmB,OAAA;AAGrB,sBAAsB;AACtB,2DAO8B;AAN5B,6HAAA,uBAAuB,OAAA;AACvB,4HAAA,sBAAsB,OAAA;AACtB,yHAAA,mBAAmB,OAAA;AACnB,kIAAA,4BAA4B,OAAA;AAC5B,gIAAA,0BAA0B,OAAA;AAC1B,2HAAA,qBAAqB,OAAA"}
@@ -3,27 +3,29 @@
3
3
  * Integrates with LangChain's callback system to automatically instrument
4
4
  * LLM calls, chains, agents, and tools.
5
5
  */
6
+ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
6
7
  /**
7
8
  * LangChain Callback Handler for Traccia SDK.
8
9
  * Automatically traces LLM calls, chains, agents, and tools.
9
10
  *
11
+ * Extends LangChain's BaseCallbackHandler for proper interface compliance.
12
+ * Compatible with LangChain 0.0.x, 0.1.x, 0.2.x, and 1.x versions.
13
+ *
10
14
  * @example
11
- * import { ChatOpenAI } from 'langchain/chat_models/openai';
12
- * import { LLMChain } from 'langchain/chains';
13
- * import { TraciaCallbackHandler } from '@traccia/sdk/integrations/langchain';
15
+ * import { ChatOpenAI } from '@langchain/openai';
16
+ * import { TracciaCallbackHandler } from '@traccia/sdk/integrations';
14
17
  *
15
- * const handler = new TraciaCallbackHandler();
16
- * const chain = new LLMChain({
17
- * llm: new ChatOpenAI(),
18
- * callbacks: [handler],
19
- * });
18
+ * const handler = new TracciaCallbackHandler();
19
+ * const model = new ChatOpenAI({ callbacks: [handler] });
20
20
  *
21
- * await chain.run({ input: 'What is 2+2?' });
22
- * // Automatically traced with spans for LLM, chain execution, tokens, etc.
21
+ * const response = await model.invoke({ input: 'Hello!' });
22
+ * // Automatically traced with spans for LLM calls, tokens, latency, etc.
23
23
  */
24
- export declare class TraciaCallbackHandler {
24
+ export declare class TracciaCallbackHandler extends BaseCallbackHandler {
25
+ name: string;
25
26
  private tracer;
26
27
  private spanStack;
28
+ private streamingStartTimes;
27
29
  /**
28
30
  * Extract model name from LLM instance, checking multiple property locations.
29
31
  * Different LLM implementations store the model name in different properties.
@@ -41,6 +43,11 @@ export declare class TraciaCallbackHandler {
41
43
  * Handle LLM error.
42
44
  */
43
45
  handleLLMError(error: Error, runId: string): Promise<void>;
46
+ /**
47
+ * Handle LLM new token - called when a new token is generated during streaming.
48
+ * Tracks first token latency and token count for streaming scenarios.
49
+ */
50
+ handleLLMNewToken(_token: string, _idx?: any, runId?: string): Promise<void>;
44
51
  /**
45
52
  * Handle chain start - called when a chain begins execution.
46
53
  */
@@ -73,5 +80,17 @@ export declare class TraciaCallbackHandler {
73
80
  * Handle agent finish.
74
81
  */
75
82
  handleAgentFinish(finish: any, runId: string): Promise<void>;
83
+ onLLMStart(llm: any, prompts: string[], runId: string, parentRunId?: string): Promise<void>;
84
+ onLLMEnd(output: any, runId: string): Promise<void>;
85
+ onLLMError(error: Error, runId: string): Promise<void>;
86
+ onLLMNewToken(_token: string, idx?: any, runId?: string): Promise<void>;
87
+ onChainStart(chain: any, inputs: any, runId: string, parentRunId?: string): Promise<void>;
88
+ onChainEnd(output: any, runId: string): Promise<void>;
89
+ onChainError(error: Error, runId: string): Promise<void>;
90
+ onToolStart(tool: any, input: string, runId: string, parentRunId?: string): Promise<void>;
91
+ onToolEnd(output: string, runId: string): Promise<void>;
92
+ onToolError(error: Error, runId: string): Promise<void>;
93
+ onAgentAction(action: any, runId: string): Promise<void>;
94
+ onAgentFinish(finish: any, runId: string): Promise<void>;
76
95
  }
77
96
  //# sourceMappingURL=langchain-callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-callback.d.ts","sourceRoot":"","sources":["../../src/integrations/langchain-callback.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAiC;IAElD;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACU,cAAc,CACzB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IA0ChB;;OAEG;IACU,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CpE;;OAEG;IACU,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvE;;OAEG;IACU,gBAAgB,CAC3B,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAuBhB;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtE;;OAEG;IACU,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzE;;OAEG;IACU,eAAe,CAC1B,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAuBhB;;OAEG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE;;OAEG;IACU,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE;;OAEG;IACU,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa1E"}
1
+ {"version":3,"file":"langchain-callback.d.ts","sourceRoot":"","sources":["../../src/integrations/langchain-callback.ts"],"names":[],"mappings":"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"}
@@ -5,30 +5,33 @@
5
5
  * LLM calls, chains, agents, and tools.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.TraciaCallbackHandler = void 0;
8
+ exports.TracciaCallbackHandler = void 0;
9
9
  const auto_1 = require("../auto");
10
+ const base_1 = require("@langchain/core/callbacks/base");
10
11
  /**
11
12
  * LangChain Callback Handler for Traccia SDK.
12
13
  * Automatically traces LLM calls, chains, agents, and tools.
13
14
  *
15
+ * Extends LangChain's BaseCallbackHandler for proper interface compliance.
16
+ * Compatible with LangChain 0.0.x, 0.1.x, 0.2.x, and 1.x versions.
17
+ *
14
18
  * @example
15
- * import { ChatOpenAI } from 'langchain/chat_models/openai';
16
- * import { LLMChain } from 'langchain/chains';
17
- * import { TraciaCallbackHandler } from '@traccia/sdk/integrations/langchain';
19
+ * import { ChatOpenAI } from '@langchain/openai';
20
+ * import { TracciaCallbackHandler } from '@traccia/sdk/integrations';
18
21
  *
19
- * const handler = new TraciaCallbackHandler();
20
- * const chain = new LLMChain({
21
- * llm: new ChatOpenAI(),
22
- * callbacks: [handler],
23
- * });
22
+ * const handler = new TracciaCallbackHandler();
23
+ * const model = new ChatOpenAI({ callbacks: [handler] });
24
24
  *
25
- * await chain.run({ input: 'What is 2+2?' });
26
- * // Automatically traced with spans for LLM, chain execution, tokens, etc.
25
+ * const response = await model.invoke({ input: 'Hello!' });
26
+ * // Automatically traced with spans for LLM calls, tokens, latency, etc.
27
27
  */
28
- class TraciaCallbackHandler {
28
+ class TracciaCallbackHandler extends base_1.BaseCallbackHandler {
29
29
  constructor() {
30
+ super(...arguments);
31
+ this.name = 'TracciaCallbackHandler';
30
32
  this.tracer = (0, auto_1.getTracer)('langchain');
31
33
  this.spanStack = new Map();
34
+ this.streamingStartTimes = {};
32
35
  }
33
36
  /**
34
37
  * Extract model name from LLM instance, checking multiple property locations.
@@ -93,20 +96,42 @@ class TraciaCallbackHandler {
93
96
  if (span) {
94
97
  try {
95
98
  // Try multiple ways to get token usage
99
+ // OpenAI format and new @langchain/core format
96
100
  const tokenUsage = output?.llmOutput?.token_usage ||
101
+ output?.llmOutput?.tokenUsage ||
97
102
  output?.token_usage ||
98
103
  output?.metadata?.token_usage;
99
104
  if (tokenUsage) {
100
- if (tokenUsage.prompt_tokens !== undefined) {
101
- span.setAttribute('llm.tokens.prompt', tokenUsage.prompt_tokens);
105
+ // Handle standard token counts
106
+ const promptTokens = tokenUsage.prompt_tokens ?? tokenUsage.promptTokens;
107
+ const completionTokens = tokenUsage.completion_tokens ?? tokenUsage.completionTokens;
108
+ const totalTokens = tokenUsage.total_tokens ?? tokenUsage.totalTokens;
109
+ if (promptTokens !== undefined) {
110
+ span.setAttribute('llm.tokens.prompt', promptTokens);
102
111
  }
103
- if (tokenUsage.completion_tokens !== undefined) {
104
- span.setAttribute('llm.tokens.completion', tokenUsage.completion_tokens);
112
+ if (completionTokens !== undefined) {
113
+ span.setAttribute('llm.tokens.completion', completionTokens);
105
114
  }
106
- const totalTokens = (tokenUsage.prompt_tokens || 0) + (tokenUsage.completion_tokens || 0);
107
- if (totalTokens > 0) {
115
+ if (totalTokens !== undefined) {
108
116
  span.setAttribute('llm.tokens.total', totalTokens);
109
117
  }
118
+ // Handle detailed token breakdown for models like GPT-4o vision
119
+ // input_token_details contains breakdown of prompt token usage
120
+ if (tokenUsage.input_token_details && typeof tokenUsage.input_token_details === 'object') {
121
+ for (const [key, value] of Object.entries(tokenUsage.input_token_details)) {
122
+ if (typeof value === 'number') {
123
+ span.setAttribute(`llm.tokens.input_${key}`, value);
124
+ }
125
+ }
126
+ }
127
+ // output_token_details contains breakdown of completion token usage
128
+ if (tokenUsage.output_token_details && typeof tokenUsage.output_token_details === 'object') {
129
+ for (const [key, value] of Object.entries(tokenUsage.output_token_details)) {
130
+ if (typeof value === 'number') {
131
+ span.setAttribute(`llm.tokens.output_${key}`, value);
132
+ }
133
+ }
134
+ }
110
135
  }
111
136
  // Capture output text length
112
137
  if (output?.text) {
@@ -118,6 +143,16 @@ class TraciaCallbackHandler {
118
143
  span.setAttribute('output_length', firstGeneration[0].text.length);
119
144
  }
120
145
  }
146
+ else if (output?.message?.content) {
147
+ // Ollama format (uses message.content)
148
+ const content = output.message.content;
149
+ const contentStr = typeof content === 'string' ? content : JSON.stringify(content);
150
+ span.setAttribute('output_length', contentStr.length);
151
+ }
152
+ else if (typeof output === 'string') {
153
+ // Direct string output
154
+ span.setAttribute('output_length', output.length);
155
+ }
121
156
  // Capture finish reason if available
122
157
  if (output?.llmOutput?.finish_reason) {
123
158
  span.setAttribute('finish_reason', output.llmOutput.finish_reason);
@@ -141,6 +176,25 @@ class TraciaCallbackHandler {
141
176
  this.spanStack.delete(runId);
142
177
  }
143
178
  }
179
+ /**
180
+ * Handle LLM new token - called when a new token is generated during streaming.
181
+ * Tracks first token latency and token count for streaming scenarios.
182
+ */
183
+ async handleLLMNewToken(_token, _idx, runId) {
184
+ if (runId && !(runId in this.streamingStartTimes)) {
185
+ // Record the time of the first streaming token
186
+ this.streamingStartTimes[runId] = new Date();
187
+ const span = this.spanStack.get(runId);
188
+ if (span) {
189
+ try {
190
+ span.setAttribute('stream.first_token_generated', true);
191
+ }
192
+ catch (error) {
193
+ // Silently fail
194
+ }
195
+ }
196
+ }
197
+ }
144
198
  /**
145
199
  * Handle chain start - called when a chain begins execution.
146
200
  */
@@ -274,6 +328,44 @@ class TraciaCallbackHandler {
274
328
  this.spanStack.delete(runId);
275
329
  }
276
330
  }
331
+ // LangChain uses 'on*' prefix for callback methods
332
+ // Provide aliases for compatibility
333
+ async onLLMStart(llm, prompts, runId, parentRunId) {
334
+ return this.handleLLMStart(llm, prompts, runId, parentRunId);
335
+ }
336
+ async onLLMEnd(output, runId) {
337
+ return this.handleLLMEnd(output, runId);
338
+ }
339
+ async onLLMError(error, runId) {
340
+ return this.handleLLMError(error, runId);
341
+ }
342
+ async onLLMNewToken(_token, idx, runId) {
343
+ return this.handleLLMNewToken(_token, idx, runId);
344
+ }
345
+ async onChainStart(chain, inputs, runId, parentRunId) {
346
+ return this.handleChainStart(chain, inputs, runId, parentRunId);
347
+ }
348
+ async onChainEnd(output, runId) {
349
+ return this.handleChainEnd(output, runId);
350
+ }
351
+ async onChainError(error, runId) {
352
+ return this.handleChainError(error, runId);
353
+ }
354
+ async onToolStart(tool, input, runId, parentRunId) {
355
+ return this.handleToolStart(tool, input, runId, parentRunId);
356
+ }
357
+ async onToolEnd(output, runId) {
358
+ return this.handleToolEnd(output, runId);
359
+ }
360
+ async onToolError(error, runId) {
361
+ return this.handleToolError(error, runId);
362
+ }
363
+ async onAgentAction(action, runId) {
364
+ return this.handleAgentAction(action, runId);
365
+ }
366
+ async onAgentFinish(finish, runId) {
367
+ return this.handleAgentFinish(finish, runId);
368
+ }
277
369
  }
278
- exports.TraciaCallbackHandler = TraciaCallbackHandler;
370
+ exports.TracciaCallbackHandler = TracciaCallbackHandler;
279
371
  //# sourceMappingURL=langchain-callback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"langchain-callback.js","sourceRoot":"","sources":["../../src/integrations/langchain-callback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"langchain-callback.js","sourceRoot":"","sources":["../../src/integrations/langchain-callback.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traccia2/sdk",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Tracing SDK for agent applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -67,6 +67,7 @@
67
67
  "prepare": "npm run build"
68
68
  },
69
69
  "devDependencies": {
70
+ "@langchain/core": ">=0.3.8",
70
71
  "@types/jest": "^29.5.11",
71
72
  "@types/node": "^20.10.6",
72
73
  "@typescript-eslint/eslint-plugin": "^6.17.0",
@@ -80,5 +81,9 @@
80
81
  "publishConfig": {
81
82
  "access": "public"
82
83
  },
84
+ "peerDependencies": {
85
+ "@langchain/core": ">=0.3.8",
86
+ "@opentelemetry/api": "^1.9.0"
87
+ },
83
88
  "dependencies": {}
84
89
  }
@@ -2,10 +2,10 @@
2
2
  * Tests for LangChain integration (TraciaCallbackHandler)
3
3
  */
4
4
 
5
- import { TraciaCallbackHandler } from '../integrations/langchain-callback';
5
+ import { TracciaCallbackHandler } from '../integrations/langchain-callback';
6
6
  import { startTracing, stopTracing } from '../auto';
7
7
 
8
- describe('TraciaCallbackHandler', () => {
8
+ describe('TracciaCallbackHandler', () => {
9
9
  beforeEach(() => {
10
10
  startTracing({
11
11
  enableTokenCounting: false,
@@ -19,7 +19,7 @@ describe('TraciaCallbackHandler', () => {
19
19
 
20
20
  describe('handleLLMStart', () => {
21
21
  it('should create a span for LLM invocation', async () => {
22
- const handler = new TraciaCallbackHandler();
22
+ const handler = new TracciaCallbackHandler();
23
23
  const mockLLM = {
24
24
  name: 'gpt-4',
25
25
  _modelType: 'openai',
@@ -32,7 +32,7 @@ describe('TraciaCallbackHandler', () => {
32
32
  });
33
33
 
34
34
  it('should capture LLM model name in attributes', async () => {
35
- const handler = new TraciaCallbackHandler();
35
+ const handler = new TracciaCallbackHandler();
36
36
  const mockLLM = {
37
37
  name: 'claude-3',
38
38
  _modelType: 'anthropic',
@@ -45,7 +45,7 @@ describe('TraciaCallbackHandler', () => {
45
45
  });
46
46
 
47
47
  it('should capture prompt count', async () => {
48
- const handler = new TraciaCallbackHandler();
48
+ const handler = new TracciaCallbackHandler();
49
49
  const mockLLM = { name: 'test-model' };
50
50
  const prompts = ['p1', 'p2', 'p3'];
51
51
 
@@ -56,7 +56,7 @@ describe('TraciaCallbackHandler', () => {
56
56
  });
57
57
 
58
58
  it('should handle missing model name gracefully', async () => {
59
- const handler = new TraciaCallbackHandler();
59
+ const handler = new TracciaCallbackHandler();
60
60
  const mockLLM = {}; // No name or _modelType
61
61
 
62
62
  await handler.handleLLMStart(mockLLM, ['prompt'], 'run-4');
@@ -68,7 +68,7 @@ describe('TraciaCallbackHandler', () => {
68
68
 
69
69
  describe('handleLLMEnd', () => {
70
70
  it('should end LLM span and record token counts', async () => {
71
- const handler = new TraciaCallbackHandler();
71
+ const handler = new TracciaCallbackHandler();
72
72
  const mockLLM = { name: 'gpt-4' };
73
73
 
74
74
  // Start span
@@ -85,7 +85,7 @@ describe('TraciaCallbackHandler', () => {
85
85
  });
86
86
 
87
87
  it('should record output length', async () => {
88
- const handler = new TraciaCallbackHandler();
88
+ const handler = new TracciaCallbackHandler();
89
89
  const mockLLM = { name: 'test' };
90
90
 
91
91
  await handler.handleLLMStart(mockLLM, ['prompt'], 'run-6');
@@ -102,7 +102,7 @@ describe('TraciaCallbackHandler', () => {
102
102
 
103
103
  describe('handleChainStart', () => {
104
104
  it('should create a span for chain execution', async () => {
105
- const handler = new TraciaCallbackHandler();
105
+ const handler = new TracciaCallbackHandler();
106
106
  const mockChain = {
107
107
  name: 'test-chain',
108
108
  _chainType: 'stuff',
@@ -114,7 +114,7 @@ describe('TraciaCallbackHandler', () => {
114
114
  });
115
115
 
116
116
  it('should capture chain name and type', async () => {
117
- const handler = new TraciaCallbackHandler();
117
+ const handler = new TracciaCallbackHandler();
118
118
  const mockChain = {
119
119
  name: 'qa-chain',
120
120
  _chainType: 'retrieval_qa',
@@ -128,7 +128,7 @@ describe('TraciaCallbackHandler', () => {
128
128
  });
129
129
 
130
130
  it('should record input keys', async () => {
131
- const handler = new TraciaCallbackHandler();
131
+ const handler = new TracciaCallbackHandler();
132
132
  const mockChain = { name: 'chain' };
133
133
  const inputs = { key1: 'value1', key2: 'value2' };
134
134
 
@@ -142,7 +142,7 @@ describe('TraciaCallbackHandler', () => {
142
142
 
143
143
  describe('handleChainEnd', () => {
144
144
  it('should end chain span and record output', async () => {
145
- const handler = new TraciaCallbackHandler();
145
+ const handler = new TracciaCallbackHandler();
146
146
  const mockChain = { name: 'chain' };
147
147
 
148
148
  await handler.handleChainStart(mockChain, { input: 'test' }, 'chain-4');
@@ -156,7 +156,7 @@ describe('TraciaCallbackHandler', () => {
156
156
 
157
157
  describe('handleToolStart', () => {
158
158
  it('should create a span for tool invocation', async () => {
159
- const handler = new TraciaCallbackHandler();
159
+ const handler = new TracciaCallbackHandler();
160
160
  const mockTool = {
161
161
  name: 'search-api',
162
162
  };
@@ -167,7 +167,7 @@ describe('TraciaCallbackHandler', () => {
167
167
  });
168
168
 
169
169
  it('should capture tool name', async () => {
170
- const handler = new TraciaCallbackHandler();
170
+ const handler = new TracciaCallbackHandler();
171
171
  const mockTool = { name: 'calculator' };
172
172
 
173
173
  await handler.handleToolStart(mockTool, '2+2', 'tool-2');
@@ -177,7 +177,7 @@ describe('TraciaCallbackHandler', () => {
177
177
  });
178
178
 
179
179
  it('should record input length', async () => {
180
- const handler = new TraciaCallbackHandler();
180
+ const handler = new TracciaCallbackHandler();
181
181
  const mockTool = { name: 'tool' };
182
182
  const input = 'test input with some length';
183
183
 
@@ -190,7 +190,7 @@ describe('TraciaCallbackHandler', () => {
190
190
 
191
191
  describe('handleToolEnd', () => {
192
192
  it('should end tool span', async () => {
193
- const handler = new TraciaCallbackHandler();
193
+ const handler = new TracciaCallbackHandler();
194
194
  const mockTool = { name: 'tool' };
195
195
 
196
196
  await handler.handleToolStart(mockTool, 'input', 'tool-4');
@@ -200,7 +200,7 @@ describe('TraciaCallbackHandler', () => {
200
200
  });
201
201
 
202
202
  it('should record output length', async () => {
203
- const handler = new TraciaCallbackHandler();
203
+ const handler = new TracciaCallbackHandler();
204
204
  const mockTool = { name: 'tool' };
205
205
 
206
206
  await handler.handleToolStart(mockTool, 'input', 'tool-5');
@@ -213,7 +213,7 @@ describe('TraciaCallbackHandler', () => {
213
213
 
214
214
  describe('handleAgentAction', () => {
215
215
  it('should update existing span on agent action', async () => {
216
- const handler = new TraciaCallbackHandler();
216
+ const handler = new TracciaCallbackHandler();
217
217
  const mockChain = { name: 'chain' };
218
218
 
219
219
  // Start a span first
@@ -231,7 +231,7 @@ describe('TraciaCallbackHandler', () => {
231
231
  });
232
232
 
233
233
  it('should record agent action details', async () => {
234
- const handler = new TraciaCallbackHandler();
234
+ const handler = new TracciaCallbackHandler();
235
235
  const mockChain = { name: 'chain' };
236
236
 
237
237
  // Start a span first
@@ -252,7 +252,7 @@ describe('TraciaCallbackHandler', () => {
252
252
 
253
253
  describe('handleAgentFinish', () => {
254
254
  it('should end agent span on finish', async () => {
255
- const handler = new TraciaCallbackHandler();
255
+ const handler = new TracciaCallbackHandler();
256
256
 
257
257
  // Create a span first
258
258
  const mockAction = { tool: 'test', toolInput: 'input' };
@@ -266,7 +266,7 @@ describe('TraciaCallbackHandler', () => {
266
266
  });
267
267
 
268
268
  it('should record final output', async () => {
269
- const handler = new TraciaCallbackHandler();
269
+ const handler = new TracciaCallbackHandler();
270
270
  const mockAction = { tool: 'test', toolInput: 'input' };
271
271
 
272
272
  await handler.handleAgentAction(mockAction, 'agent-4');
@@ -280,7 +280,7 @@ describe('TraciaCallbackHandler', () => {
280
280
 
281
281
  describe('Error Handling', () => {
282
282
  it('should handle LLM errors gracefully', async () => {
283
- const handler = new TraciaCallbackHandler();
283
+ const handler = new TracciaCallbackHandler();
284
284
  const mockLLM = { name: 'llm' };
285
285
 
286
286
  await handler.handleLLMStart(mockLLM, ['prompt'], 'error-1');
@@ -293,7 +293,7 @@ describe('TraciaCallbackHandler', () => {
293
293
  });
294
294
 
295
295
  it('should handle chain errors gracefully', async () => {
296
- const handler = new TraciaCallbackHandler();
296
+ const handler = new TracciaCallbackHandler();
297
297
  const mockChain = { name: 'chain' };
298
298
 
299
299
  await handler.handleChainStart(mockChain, {}, 'error-2');
@@ -305,7 +305,7 @@ describe('TraciaCallbackHandler', () => {
305
305
  });
306
306
 
307
307
  it('should handle tool errors gracefully', async () => {
308
- const handler = new TraciaCallbackHandler();
308
+ const handler = new TracciaCallbackHandler();
309
309
  const mockTool = { name: 'tool' };
310
310
 
311
311
  await handler.handleToolStart(mockTool, 'input', 'error-3');
@@ -319,7 +319,7 @@ describe('TraciaCallbackHandler', () => {
319
319
 
320
320
  describe('Span Nesting', () => {
321
321
  it('should handle nested spans (chain containing LLM)', async () => {
322
- const handler = new TraciaCallbackHandler();
322
+ const handler = new TracciaCallbackHandler();
323
323
 
324
324
  // Start chain
325
325
  const chain = { name: 'chain' };
@@ -346,7 +346,7 @@ describe('TraciaCallbackHandler', () => {
346
346
  });
347
347
 
348
348
  it('should handle multiple concurrent spans', async () => {
349
- const handler = new TraciaCallbackHandler();
349
+ const handler = new TracciaCallbackHandler();
350
350
 
351
351
  // Start multiple spans
352
352
  const chain1 = { name: 'chain1' };
@@ -369,12 +369,12 @@ describe('TraciaCallbackHandler', () => {
369
369
 
370
370
  describe('Integration with Tracer', () => {
371
371
  it('should use the SDK tracer', () => {
372
- const handler = new TraciaCallbackHandler();
372
+ const handler = new TracciaCallbackHandler();
373
373
  expect(handler['tracer']).toBeDefined();
374
374
  });
375
375
 
376
376
  it('should handle unavailable tracer gracefully', async () => {
377
- const handler = new TraciaCallbackHandler();
377
+ const handler = new TracciaCallbackHandler();
378
378
 
379
379
  // Should not throw even if operations fail
380
380
  const mockLLM = { name: 'llm' };
@@ -5,27 +5,27 @@
5
5
  * convenience functions for automatic instrumentation with zero boilerplate.
6
6
  */
7
7
 
8
- import { TraciaCallbackHandler } from './langchain-callback';
8
+ import { TracciaCallbackHandler } from './langchain-callback';
9
9
 
10
10
  /**
11
11
  * Global handler instance to avoid creating multiple handlers
12
12
  */
13
- let globalTraciaHandler: TraciaCallbackHandler | null = null;
13
+ let globalTraciaHandler: TracciaCallbackHandler | null = null;
14
14
 
15
15
  /**
16
16
  * Get or create the global Traccia callback handler.
17
17
  *
18
18
  * @example
19
19
  * // Instead of:
20
- * const handler = new TraciaCallbackHandler();
20
+ * const handler = new TracciaCallbackHandler();
21
21
  * const model = new ChatOpenAI({ callbacks: [handler] });
22
22
  *
23
23
  * // Just do:
24
24
  * const model = new ChatOpenAI({ callbacks: [getTraciaHandler()] });
25
25
  */
26
- export function getTraciaHandler(): TraciaCallbackHandler {
26
+ export function getTraciaHandler(): TracciaCallbackHandler {
27
27
  if (!globalTraciaHandler) {
28
- globalTraciaHandler = new TraciaCallbackHandler();
28
+ globalTraciaHandler = new TracciaCallbackHandler();
29
29
  }
30
30
  return globalTraciaHandler;
31
31
  }
@@ -217,7 +217,7 @@ export async function setupLangChainWithTracing(options: {
217
217
  }): Promise<{
218
218
  model: any;
219
219
  executor: any;
220
- handler: TraciaCallbackHandler;
220
+ handler: TracciaCallbackHandler;
221
221
  }> {
222
222
  try {
223
223
  const {
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  // LangChain integrations
9
- export { TraciaCallbackHandler } from './langchain-callback';
9
+ export { TracciaCallbackHandler } from './langchain-callback';
10
10
  export {
11
11
  getTraciaHandler,
12
12
  withTracing,
@@ -6,28 +6,30 @@
6
6
 
7
7
  import { ISpan } from '../types';
8
8
  import { getTracer } from '../auto';
9
+ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
9
10
 
10
11
  /**
11
12
  * LangChain Callback Handler for Traccia SDK.
12
13
  * Automatically traces LLM calls, chains, agents, and tools.
13
14
  *
15
+ * Extends LangChain's BaseCallbackHandler for proper interface compliance.
16
+ * Compatible with LangChain 0.0.x, 0.1.x, 0.2.x, and 1.x versions.
17
+ *
14
18
  * @example
15
- * import { ChatOpenAI } from 'langchain/chat_models/openai';
16
- * import { LLMChain } from 'langchain/chains';
17
- * import { TraciaCallbackHandler } from '@traccia/sdk/integrations/langchain';
19
+ * import { ChatOpenAI } from '@langchain/openai';
20
+ * import { TracciaCallbackHandler } from '@traccia/sdk/integrations';
18
21
  *
19
- * const handler = new TraciaCallbackHandler();
20
- * const chain = new LLMChain({
21
- * llm: new ChatOpenAI(),
22
- * callbacks: [handler],
23
- * });
22
+ * const handler = new TracciaCallbackHandler();
23
+ * const model = new ChatOpenAI({ callbacks: [handler] });
24
24
  *
25
- * await chain.run({ input: 'What is 2+2?' });
26
- * // Automatically traced with spans for LLM, chain execution, tokens, etc.
25
+ * const response = await model.invoke({ input: 'Hello!' });
26
+ * // Automatically traced with spans for LLM calls, tokens, latency, etc.
27
27
  */
28
- export class TraciaCallbackHandler {
28
+ export class TracciaCallbackHandler extends BaseCallbackHandler {
29
+ name = 'TracciaCallbackHandler';
29
30
  private tracer = getTracer('langchain');
30
31
  private spanStack: Map<string, ISpan> = new Map();
32
+ private streamingStartTimes: Record<string, Date> = {};
31
33
 
32
34
  /**
33
35
  * Extract model name from LLM instance, checking multiple property locations.
@@ -101,22 +103,47 @@ export class TraciaCallbackHandler {
101
103
  if (span) {
102
104
  try {
103
105
  // Try multiple ways to get token usage
106
+ // OpenAI format and new @langchain/core format
104
107
  const tokenUsage =
105
108
  output?.llmOutput?.token_usage ||
109
+ output?.llmOutput?.tokenUsage ||
106
110
  output?.token_usage ||
107
111
  output?.metadata?.token_usage;
108
112
 
109
113
  if (tokenUsage) {
110
- if (tokenUsage.prompt_tokens !== undefined) {
111
- span.setAttribute('llm.tokens.prompt', tokenUsage.prompt_tokens);
114
+ // Handle standard token counts
115
+ const promptTokens = tokenUsage.prompt_tokens ?? tokenUsage.promptTokens;
116
+ const completionTokens = tokenUsage.completion_tokens ?? tokenUsage.completionTokens;
117
+ const totalTokens = tokenUsage.total_tokens ?? tokenUsage.totalTokens;
118
+
119
+ if (promptTokens !== undefined) {
120
+ span.setAttribute('llm.tokens.prompt', promptTokens);
112
121
  }
113
- if (tokenUsage.completion_tokens !== undefined) {
114
- span.setAttribute('llm.tokens.completion', tokenUsage.completion_tokens);
122
+ if (completionTokens !== undefined) {
123
+ span.setAttribute('llm.tokens.completion', completionTokens);
115
124
  }
116
- const totalTokens = (tokenUsage.prompt_tokens || 0) + (tokenUsage.completion_tokens || 0);
117
- if (totalTokens > 0) {
125
+ if (totalTokens !== undefined) {
118
126
  span.setAttribute('llm.tokens.total', totalTokens);
119
127
  }
128
+
129
+ // Handle detailed token breakdown for models like GPT-4o vision
130
+ // input_token_details contains breakdown of prompt token usage
131
+ if (tokenUsage.input_token_details && typeof tokenUsage.input_token_details === 'object') {
132
+ for (const [key, value] of Object.entries(tokenUsage.input_token_details)) {
133
+ if (typeof value === 'number') {
134
+ span.setAttribute(`llm.tokens.input_${key}`, value);
135
+ }
136
+ }
137
+ }
138
+
139
+ // output_token_details contains breakdown of completion token usage
140
+ if (tokenUsage.output_token_details && typeof tokenUsage.output_token_details === 'object') {
141
+ for (const [key, value] of Object.entries(tokenUsage.output_token_details)) {
142
+ if (typeof value === 'number') {
143
+ span.setAttribute(`llm.tokens.output_${key}`, value);
144
+ }
145
+ }
146
+ }
120
147
  }
121
148
 
122
149
  // Capture output text length
@@ -127,6 +154,14 @@ export class TraciaCallbackHandler {
127
154
  if (firstGeneration?.[0]?.text) {
128
155
  span.setAttribute('output_length', firstGeneration[0].text.length);
129
156
  }
157
+ } else if (output?.message?.content) {
158
+ // Ollama format (uses message.content)
159
+ const content = output.message.content;
160
+ const contentStr = typeof content === 'string' ? content : JSON.stringify(content);
161
+ span.setAttribute('output_length', contentStr.length);
162
+ } else if (typeof output === 'string') {
163
+ // Direct string output
164
+ span.setAttribute('output_length', output.length);
130
165
  }
131
166
 
132
167
  // Capture finish reason if available
@@ -154,6 +189,29 @@ export class TraciaCallbackHandler {
154
189
  }
155
190
  }
156
191
 
192
+ /**
193
+ * Handle LLM new token - called when a new token is generated during streaming.
194
+ * Tracks first token latency and token count for streaming scenarios.
195
+ */
196
+ public async handleLLMNewToken(
197
+ _token: string,
198
+ _idx?: any,
199
+ runId?: string
200
+ ): Promise<void> {
201
+ if (runId && !(runId in this.streamingStartTimes)) {
202
+ // Record the time of the first streaming token
203
+ this.streamingStartTimes[runId] = new Date();
204
+ const span = this.spanStack.get(runId);
205
+ if (span) {
206
+ try {
207
+ span.setAttribute('stream.first_token_generated', true);
208
+ } catch (error) {
209
+ // Silently fail
210
+ }
211
+ }
212
+ }
213
+ }
214
+
157
215
  /**
158
216
  * Handle chain start - called when a chain begins execution.
159
217
  */
@@ -307,4 +365,74 @@ export class TraciaCallbackHandler {
307
365
  this.spanStack.delete(runId);
308
366
  }
309
367
  }
368
+
369
+ // LangChain uses 'on*' prefix for callback methods
370
+ // Provide aliases for compatibility
371
+ public async onLLMStart(
372
+ llm: any,
373
+ prompts: string[],
374
+ runId: string,
375
+ parentRunId?: string
376
+ ): Promise<void> {
377
+ return this.handleLLMStart(llm, prompts, runId, parentRunId);
378
+ }
379
+
380
+ public async onLLMEnd(output: any, runId: string): Promise<void> {
381
+ return this.handleLLMEnd(output, runId);
382
+ }
383
+
384
+ public async onLLMError(error: Error, runId: string): Promise<void> {
385
+ return this.handleLLMError(error, runId);
386
+ }
387
+
388
+ public async onLLMNewToken(
389
+ _token: string,
390
+ idx?: any,
391
+ runId?: string
392
+ ): Promise<void> {
393
+ return this.handleLLMNewToken(_token, idx, runId);
394
+ }
395
+
396
+ public async onChainStart(
397
+ chain: any,
398
+ inputs: any,
399
+ runId: string,
400
+ parentRunId?: string
401
+ ): Promise<void> {
402
+ return this.handleChainStart(chain, inputs, runId, parentRunId);
403
+ }
404
+
405
+ public async onChainEnd(output: any, runId: string): Promise<void> {
406
+ return this.handleChainEnd(output, runId);
407
+ }
408
+
409
+ public async onChainError(error: Error, runId: string): Promise<void> {
410
+ return this.handleChainError(error, runId);
411
+ }
412
+
413
+ public async onToolStart(
414
+ tool: any,
415
+ input: string,
416
+ runId: string,
417
+ parentRunId?: string
418
+ ): Promise<void> {
419
+ return this.handleToolStart(tool, input, runId, parentRunId);
420
+ }
421
+
422
+ public async onToolEnd(output: string, runId: string): Promise<void> {
423
+ return this.handleToolEnd(output, runId);
424
+ }
425
+
426
+ public async onToolError(error: Error, runId: string): Promise<void> {
427
+ return this.handleToolError(error, runId);
428
+ }
429
+
430
+ public async onAgentAction(action: any, runId: string): Promise<void> {
431
+ return this.handleAgentAction(action, runId);
432
+ }
433
+
434
+ public async onAgentFinish(finish: any, runId: string): Promise<void> {
435
+ return this.handleAgentFinish(finish, runId);
436
+ }
310
437
  }
438
+