@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 +142 -7
- package/dist/integrations/auto-langchain.d.ts +4 -4
- package/dist/integrations/auto-langchain.d.ts.map +1 -1
- package/dist/integrations/auto-langchain.js +2 -2
- package/dist/integrations/auto-langchain.js.map +1 -1
- package/dist/integrations/index.d.ts +1 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +2 -2
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/langchain-callback.d.ts +30 -11
- package/dist/integrations/langchain-callback.d.ts.map +1 -1
- package/dist/integrations/langchain-callback.js +111 -19
- package/dist/integrations/langchain-callback.js.map +1 -1
- package/package.json +6 -1
- package/src/__tests__/integrations-langchain.test.ts +28 -28
- package/src/integrations/auto-langchain.ts +6 -6
- package/src/integrations/index.ts +1 -1
- package/src/integrations/langchain-callback.ts +145 -17
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 `
|
|
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,
|
|
339
|
-
import {
|
|
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
|
|
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: [
|
|
358
|
+
callbacks: [tracciaHandler],
|
|
356
359
|
});
|
|
357
360
|
|
|
358
361
|
const agent = await createOpenAIToolsAgent({
|
|
359
362
|
llmWithTools: model,
|
|
360
363
|
tools: [yourTools],
|
|
361
|
-
callbacks: [
|
|
364
|
+
callbacks: [tracciaHandler],
|
|
362
365
|
});
|
|
363
366
|
|
|
364
367
|
const executor = new AgentExecutor({
|
|
365
368
|
agent,
|
|
366
369
|
tools: [yourTools],
|
|
367
|
-
callbacks: [
|
|
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 {
|
|
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
|
|
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():
|
|
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:
|
|
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,
|
|
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
|
|
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.
|
|
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":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,4CAKC;AAYD,kCAkBC;AASD,gDAWC;AAcD,8DAuBC;AAaD,oDAqBC;AAgBD,wBA8BC;AAcD,8DAuEC;AAnRD,
|
|
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 {
|
|
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,
|
|
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.
|
|
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, "
|
|
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,
|
|
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/
|
|
12
|
-
* import {
|
|
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
|
|
16
|
-
* const
|
|
17
|
-
* llm: new ChatOpenAI(),
|
|
18
|
-
* callbacks: [handler],
|
|
19
|
-
* });
|
|
18
|
+
* const handler = new TracciaCallbackHandler();
|
|
19
|
+
* const model = new ChatOpenAI({ callbacks: [handler] });
|
|
20
20
|
*
|
|
21
|
-
* await
|
|
22
|
-
* // Automatically traced with spans for LLM
|
|
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
|
|
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;
|
|
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.
|
|
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/
|
|
16
|
-
* import {
|
|
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
|
|
20
|
-
* const
|
|
21
|
-
* llm: new ChatOpenAI(),
|
|
22
|
-
* callbacks: [handler],
|
|
23
|
-
* });
|
|
22
|
+
* const handler = new TracciaCallbackHandler();
|
|
23
|
+
* const model = new ChatOpenAI({ callbacks: [handler] });
|
|
24
24
|
*
|
|
25
|
-
* await
|
|
26
|
-
* // Automatically traced with spans for LLM
|
|
25
|
+
* const response = await model.invoke({ input: 'Hello!' });
|
|
26
|
+
* // Automatically traced with spans for LLM calls, tokens, latency, etc.
|
|
27
27
|
*/
|
|
28
|
-
class
|
|
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
|
-
|
|
101
|
-
|
|
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 (
|
|
104
|
-
span.setAttribute('llm.tokens.completion',
|
|
112
|
+
if (completionTokens !== undefined) {
|
|
113
|
+
span.setAttribute('llm.tokens.completion', completionTokens);
|
|
105
114
|
}
|
|
106
|
-
|
|
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.
|
|
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":";AAAA;;;;GAIG;;;AAGH,kCAAoC;AACpC,yDAAqE;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,sBAAuB,SAAQ,0BAAmB;IAA/D;;QACE,SAAI,GAAG,wBAAwB,CAAC;QACxB,WAAM,GAAG,IAAA,gBAAS,EAAC,WAAW,CAAC,CAAC;QAChC,cAAS,GAAuB,IAAI,GAAG,EAAE,CAAC;QAC1C,wBAAmB,GAAyB,EAAE,CAAC;IAqZzD,CAAC;IAnZC;;;OAGG;IACK,gBAAgB,CAAC,GAAQ;QAC/B,qCAAqC;QACrC,IAAI,GAAG,CAAC,SAAS;YAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAW,kCAAkC;QACrF,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAmB,eAAe;QAClE,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAE,eAAe;QACpF,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC,UAAU,CAAC,CAAS,mBAAmB;QACtE,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAI,wBAAwB;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,GAAQ,EACR,OAAiB,EACjB,KAAa,EACb,YAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAwB;YACtC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC;SAC7C,CAAC;QAEF,mCAAmC;QACnC,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAC3C,CAAC;QAED,kCAAkC;QAClC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC;QACxC,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACjC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QACzC,CAAC;QAED,6BAA6B;QAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,6BAA6B;QAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QAC9B,CAAC;QAED,mDAAmD;QACnD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,MAAW,EAAE,KAAa;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,uCAAuC;gBACvC,+CAA+C;gBAC/C,MAAM,UAAU,GACd,MAAM,EAAE,SAAS,EAAE,WAAW;oBAC9B,MAAM,EAAE,SAAS,EAAE,UAAU;oBAC7B,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;gBAEhC,IAAI,UAAU,EAAE,CAAC;oBACf,+BAA+B;oBAC/B,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,YAAY,CAAC;oBACzE,MAAM,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,IAAI,UAAU,CAAC,gBAAgB,CAAC;oBACrF,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,WAAW,CAAC;oBAEtE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC/B,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;oBACvD,CAAC;oBACD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;wBACnC,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;oBAC/D,CAAC;oBACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;wBAC9B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;oBACrD,CAAC;oBAED,gEAAgE;oBAChE,+DAA+D;oBAC/D,IAAI,UAAU,CAAC,mBAAmB,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,QAAQ,EAAE,CAAC;wBACzF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;4BAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gCAC9B,IAAI,CAAC,YAAY,CAAC,oBAAoB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;4BACtD,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,oEAAoE;oBACpE,IAAI,UAAU,CAAC,oBAAoB,IAAI,OAAO,UAAU,CAAC,oBAAoB,KAAK,QAAQ,EAAE,CAAC;wBAC3F,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;4BAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gCAC9B,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;4BACvD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;oBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,MAAM,EAAE,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpE,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC9C,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;wBAC/B,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;oBACpC,uCAAuC;oBACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;oBACvC,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACnF,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC;qBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACtC,uBAAuB;oBACvB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpD,CAAC;gBAED,qCAAqC;gBACrC,IAAI,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;oBACrC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qCAAqC;YACvC,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,KAAY,EAAE,KAAa;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAC5B,MAAc,EACd,IAAU,EACV,KAAc;QAEd,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAClD,+CAA+C;YAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC;oBACH,IAAI,CAAC,YAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;gBAC1D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,gBAAgB;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,KAAU,EACV,MAAW,EACX,KAAa,EACb,YAAqB;QAErB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC;QAE5D,MAAM,UAAU,GAAwB;YACtC,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM;SAC9C,CAAC;QAEF,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,UAAU,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,MAAW,EAAE,KAAa;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC/E,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB;YAClB,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAY,EAAE,KAAa;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAC1B,IAAS,EACT,KAAa,EACb,KAAa,EACb,YAAqB;QAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC;QAE7C,MAAM,UAAU,GAAwB;YACtC,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,QAAQ;YACnB,gBAAgB,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACxC,YAAY,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACxH,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC;YACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,KAAa;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB;YAClB,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,KAAY,EAAE,KAAa;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,MAAW,EAAE,KAAa;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,MAAW,EAAE,KAAa;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gBAAgB;YAClB,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,oCAAoC;IAC7B,KAAK,CAAC,UAAU,CACrB,GAAQ,EACR,OAAiB,EACjB,KAAa,EACb,WAAoB;QAEpB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,MAAW,EAAE,KAAa;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAY,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,MAAc,EACd,GAAS,EACT,KAAc;QAEd,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,KAAU,EACV,MAAW,EACX,KAAa,EACb,WAAoB;QAEpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAW,EAAE,KAAa;QAChD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAY,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,IAAS,EACT,KAAa,EACb,KAAa,EACb,WAAoB;QAEpB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,KAAa;QAClD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,KAAY,EAAE,KAAa;QAClD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAW,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAW,EAAE,KAAa;QACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;CACF;AAzZD,wDAyZC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traccia2/sdk",
|
|
3
|
-
"version": "0.0.
|
|
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 {
|
|
5
|
+
import { TracciaCallbackHandler } from '../integrations/langchain-callback';
|
|
6
6
|
import { startTracing, stopTracing } from '../auto';
|
|
7
7
|
|
|
8
|
-
describe('
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 {
|
|
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:
|
|
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
|
|
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():
|
|
26
|
+
export function getTraciaHandler(): TracciaCallbackHandler {
|
|
27
27
|
if (!globalTraciaHandler) {
|
|
28
|
-
globalTraciaHandler = new
|
|
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:
|
|
220
|
+
handler: TracciaCallbackHandler;
|
|
221
221
|
}> {
|
|
222
222
|
try {
|
|
223
223
|
const {
|
|
@@ -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/
|
|
16
|
-
* import {
|
|
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
|
|
20
|
-
* const
|
|
21
|
-
* llm: new ChatOpenAI(),
|
|
22
|
-
* callbacks: [handler],
|
|
23
|
-
* });
|
|
22
|
+
* const handler = new TracciaCallbackHandler();
|
|
23
|
+
* const model = new ChatOpenAI({ callbacks: [handler] });
|
|
24
24
|
*
|
|
25
|
-
* await
|
|
26
|
-
* // Automatically traced with spans for LLM
|
|
25
|
+
* const response = await model.invoke({ input: 'Hello!' });
|
|
26
|
+
* // Automatically traced with spans for LLM calls, tokens, latency, etc.
|
|
27
27
|
*/
|
|
28
|
-
export class
|
|
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
|
-
|
|
111
|
-
|
|
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 (
|
|
114
|
-
span.setAttribute('llm.tokens.completion',
|
|
122
|
+
if (completionTokens !== undefined) {
|
|
123
|
+
span.setAttribute('llm.tokens.completion', completionTokens);
|
|
115
124
|
}
|
|
116
|
-
|
|
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
|
+
|