@illuma-ai/observability-langchain 0.1.0 → 0.2.0
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/dist/__tests__/callback-handler.test.d.ts +2 -0
- package/dist/__tests__/callback-handler.test.d.ts.map +1 -0
- package/dist/__tests__/callback-handler.test.js +415 -0
- package/dist/__tests__/callback-handler.test.js.map +1 -0
- package/dist/callback-handler.d.ts +41 -19
- package/dist/callback-handler.d.ts.map +1 -1
- package/dist/callback-handler.js +55 -45
- package/dist/callback-handler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/package.json +35 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback-handler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/callback-handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import { ObservabilityCallbackHandler, } from '../callback-handler.js';
|
|
3
|
+
function createMockClient() {
|
|
4
|
+
const events = [];
|
|
5
|
+
return {
|
|
6
|
+
events,
|
|
7
|
+
enqueue: (event) => events.push(event),
|
|
8
|
+
flush: vi.fn().mockResolvedValue(undefined),
|
|
9
|
+
shutdown: vi.fn().mockResolvedValue(undefined),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Helpers
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/** Create a minimal Serialized descriptor that LangChain passes to callbacks. */
|
|
16
|
+
function serialized(name) {
|
|
17
|
+
return { lc: 1, type: 'not_implemented', id: ['langchain', name] };
|
|
18
|
+
}
|
|
19
|
+
/** Find all events of a given type from the mock client's event log. */
|
|
20
|
+
function eventsOfType(client, type) {
|
|
21
|
+
return client.events.filter((e) => e.type === type);
|
|
22
|
+
}
|
|
23
|
+
/** Return the body of the first event of the given type, or undefined. */
|
|
24
|
+
function firstBody(client, type) {
|
|
25
|
+
return eventsOfType(client, type)[0]?.body;
|
|
26
|
+
}
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Tests
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
describe('ObservabilityCallbackHandler', () => {
|
|
31
|
+
let client;
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
client = createMockClient();
|
|
34
|
+
});
|
|
35
|
+
// =========================================================================
|
|
36
|
+
// Constructor & Initialization
|
|
37
|
+
// =========================================================================
|
|
38
|
+
describe('Constructor & Initialization', () => {
|
|
39
|
+
it('1. creates handler with a client instance', () => {
|
|
40
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
41
|
+
expect(handler).toBeInstanceOf(ObservabilityCallbackHandler);
|
|
42
|
+
});
|
|
43
|
+
it('2. creates handler with clientOptions (lazy construction)', () => {
|
|
44
|
+
// We can't actually construct because @illuma-ai/observability-node
|
|
45
|
+
// may not be installed, so we expect the error about the missing package
|
|
46
|
+
// (which proves it attempted the dynamic require path).
|
|
47
|
+
expect(() => new ObservabilityCallbackHandler({
|
|
48
|
+
clientOptions: { publicKey: 'pk-test', secretKey: 'sk-test' },
|
|
49
|
+
})).toThrow('@illuma-ai/observability-node');
|
|
50
|
+
});
|
|
51
|
+
it('3. throws if neither client nor clientOptions provided', () => {
|
|
52
|
+
expect(() => new ObservabilityCallbackHandler({})).toThrow('requires either a `client` or `clientOptions`');
|
|
53
|
+
});
|
|
54
|
+
it('4. uses custom traceName when provided', async () => {
|
|
55
|
+
const handler = new ObservabilityCallbackHandler({
|
|
56
|
+
client,
|
|
57
|
+
traceName: 'my-custom-trace',
|
|
58
|
+
});
|
|
59
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
60
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
61
|
+
expect(traceBody?.name).toBe('my-custom-trace');
|
|
62
|
+
});
|
|
63
|
+
it('5. uses default traceName when not provided', async () => {
|
|
64
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
65
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
66
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
67
|
+
expect(traceBody?.name).toBe('langchain-run');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
// =========================================================================
|
|
71
|
+
// Trace Creation
|
|
72
|
+
// =========================================================================
|
|
73
|
+
describe('Trace Creation', () => {
|
|
74
|
+
it('6. first LLM call creates a trace-create event', async () => {
|
|
75
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
76
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
77
|
+
const traceEvents = eventsOfType(client, 'trace-create');
|
|
78
|
+
expect(traceEvents).toHaveLength(1);
|
|
79
|
+
});
|
|
80
|
+
it('7. trace includes userId when set in options', async () => {
|
|
81
|
+
const handler = new ObservabilityCallbackHandler({
|
|
82
|
+
client,
|
|
83
|
+
userId: 'user-42',
|
|
84
|
+
});
|
|
85
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
86
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
87
|
+
expect(traceBody?.userId).toBe('user-42');
|
|
88
|
+
});
|
|
89
|
+
it('8. trace includes sessionId when set in options', async () => {
|
|
90
|
+
const handler = new ObservabilityCallbackHandler({
|
|
91
|
+
client,
|
|
92
|
+
sessionId: 'sess-99',
|
|
93
|
+
});
|
|
94
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
95
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
96
|
+
expect(traceBody?.sessionId).toBe('sess-99');
|
|
97
|
+
});
|
|
98
|
+
it('9. trace includes environment when set in options', async () => {
|
|
99
|
+
const handler = new ObservabilityCallbackHandler({
|
|
100
|
+
client,
|
|
101
|
+
environment: 'staging',
|
|
102
|
+
});
|
|
103
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
104
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
105
|
+
expect(traceBody?.environment).toBe('staging');
|
|
106
|
+
});
|
|
107
|
+
it('10. trace includes metadata when set in options', async () => {
|
|
108
|
+
const handler = new ObservabilityCallbackHandler({
|
|
109
|
+
client,
|
|
110
|
+
metadata: { team: 'platform', version: '2.1' },
|
|
111
|
+
});
|
|
112
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['hello'], 'run-1');
|
|
113
|
+
const traceBody = firstBody(client, 'trace-create');
|
|
114
|
+
expect(traceBody?.metadata).toEqual({ team: 'platform', version: '2.1' });
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
// =========================================================================
|
|
118
|
+
// LLM Handling
|
|
119
|
+
// =========================================================================
|
|
120
|
+
describe('LLM Handling', () => {
|
|
121
|
+
it('11. handleLLMStart creates a generation-create event', async () => {
|
|
122
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
123
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
124
|
+
const genEvents = eventsOfType(client, 'generation-create');
|
|
125
|
+
expect(genEvents).toHaveLength(1);
|
|
126
|
+
expect(genEvents[0].body.input).toEqual(['prompt']);
|
|
127
|
+
});
|
|
128
|
+
it('12. handleLLMStart extracts model from invocationParams (via metadata)', async () => {
|
|
129
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
130
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_model_name: 'gpt-4o' });
|
|
131
|
+
const genBody = firstBody(client, 'generation-create');
|
|
132
|
+
expect(genBody?.model).toBe('gpt-4o');
|
|
133
|
+
});
|
|
134
|
+
it('13. handleLLMStart extracts model from metadata.ls_model_name', async () => {
|
|
135
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
136
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_model_name: 'claude-sonnet-4-20250514' });
|
|
137
|
+
const genBody = firstBody(client, 'generation-create');
|
|
138
|
+
expect(genBody?.model).toBe('claude-sonnet-4-20250514');
|
|
139
|
+
});
|
|
140
|
+
it('14. handleLLMStart extracts provider from metadata.ls_provider', async () => {
|
|
141
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
142
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1', undefined, undefined, undefined, { ls_provider: 'openai' });
|
|
143
|
+
const genBody = firstBody(client, 'generation-create');
|
|
144
|
+
expect(genBody?.provider).toBe('openai');
|
|
145
|
+
});
|
|
146
|
+
it('15. handleLLMEnd creates a generation-update event with output', async () => {
|
|
147
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
148
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
149
|
+
const llmResult = {
|
|
150
|
+
generations: [[{ text: 'Hello world', generationInfo: {} }]],
|
|
151
|
+
llmOutput: {},
|
|
152
|
+
};
|
|
153
|
+
await handler.handleLLMEnd(llmResult, 'run-1');
|
|
154
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
155
|
+
expect(updateBody).toBeDefined();
|
|
156
|
+
expect(updateBody?.output).toBe('Hello world');
|
|
157
|
+
});
|
|
158
|
+
it('16. handleLLMEnd extracts token usage (tokenUsage field)', async () => {
|
|
159
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
160
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
161
|
+
const llmResult = {
|
|
162
|
+
generations: [[{ text: 'response', generationInfo: {} }]],
|
|
163
|
+
llmOutput: {
|
|
164
|
+
tokenUsage: {
|
|
165
|
+
promptTokens: 10,
|
|
166
|
+
completionTokens: 20,
|
|
167
|
+
totalTokens: 30,
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
await handler.handleLLMEnd(llmResult, 'run-1');
|
|
172
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
173
|
+
const usage = updateBody?.usage;
|
|
174
|
+
expect(usage.promptTokens).toBe(10);
|
|
175
|
+
expect(usage.completionTokens).toBe(20);
|
|
176
|
+
expect(usage.totalTokens).toBe(30);
|
|
177
|
+
});
|
|
178
|
+
it('17. handleLLMEnd maps snake_case tokenUsage fields correctly', async () => {
|
|
179
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
180
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
181
|
+
// Some providers use snake_case token usage
|
|
182
|
+
const llmResult = {
|
|
183
|
+
generations: [[{ text: 'response', generationInfo: {} }]],
|
|
184
|
+
llmOutput: {
|
|
185
|
+
tokenUsage: {
|
|
186
|
+
prompt_tokens: 15,
|
|
187
|
+
completion_tokens: 25,
|
|
188
|
+
total_tokens: 40,
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
await handler.handleLLMEnd(llmResult, 'run-1');
|
|
193
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
194
|
+
const usage = updateBody?.usage;
|
|
195
|
+
// The handler maps both camelCase and snake_case variants
|
|
196
|
+
expect(usage.promptTokens).toBe(15);
|
|
197
|
+
expect(usage.completionTokens).toBe(25);
|
|
198
|
+
expect(usage.totalTokens).toBe(40);
|
|
199
|
+
});
|
|
200
|
+
it('18. handleLLMError creates a generation-update with ERROR level', async () => {
|
|
201
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
202
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
203
|
+
await handler.handleLLMError(new Error('Rate limited'), 'run-1');
|
|
204
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
205
|
+
expect(updateBody).toBeDefined();
|
|
206
|
+
expect(updateBody?.level).toBe('ERROR');
|
|
207
|
+
});
|
|
208
|
+
it('19. handleLLMError includes error message in statusMessage', async () => {
|
|
209
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
210
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
211
|
+
await handler.handleLLMError(new Error('Rate limited'), 'run-1');
|
|
212
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
213
|
+
expect(updateBody?.statusMessage).toBe('Rate limited');
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
// =========================================================================
|
|
217
|
+
// Chain Handling
|
|
218
|
+
// =========================================================================
|
|
219
|
+
describe('Chain Handling', () => {
|
|
220
|
+
it('20. handleChainStart creates a chain-create event (not span-create)', async () => {
|
|
221
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
222
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
223
|
+
expect(eventsOfType(client, 'chain-create')).toHaveLength(1);
|
|
224
|
+
expect(eventsOfType(client, 'span-create')).toHaveLength(0);
|
|
225
|
+
});
|
|
226
|
+
it('21. handleChainEnd creates a span-update event', async () => {
|
|
227
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
228
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
229
|
+
await handler.handleChainEnd({ result: 'done' }, 'chain-1');
|
|
230
|
+
const updateBody = firstBody(client, 'span-update');
|
|
231
|
+
expect(updateBody).toBeDefined();
|
|
232
|
+
expect(updateBody?.output).toEqual({ result: 'done' });
|
|
233
|
+
});
|
|
234
|
+
it('22. handleChainError creates a span-update with ERROR level', async () => {
|
|
235
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
236
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
237
|
+
await handler.handleChainError(new Error('Chain failed'), 'chain-1');
|
|
238
|
+
const updateBody = firstBody(client, 'span-update');
|
|
239
|
+
expect(updateBody?.level).toBe('ERROR');
|
|
240
|
+
expect(updateBody?.statusMessage).toBe('Chain failed');
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
// =========================================================================
|
|
244
|
+
// Tool Handling
|
|
245
|
+
// =========================================================================
|
|
246
|
+
describe('Tool Handling', () => {
|
|
247
|
+
it('23. handleToolStart creates a tool-create event (not span-create)', async () => {
|
|
248
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
249
|
+
await handler.handleToolStart(serialized('Calculator'), 'input', 'tool-1');
|
|
250
|
+
expect(eventsOfType(client, 'tool-create')).toHaveLength(1);
|
|
251
|
+
expect(eventsOfType(client, 'span-create')).toHaveLength(0);
|
|
252
|
+
});
|
|
253
|
+
it('24. handleToolEnd creates a span-update event with output', async () => {
|
|
254
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
255
|
+
await handler.handleToolStart(serialized('Calculator'), '2+2', 'tool-1');
|
|
256
|
+
await handler.handleToolEnd('4', 'tool-1');
|
|
257
|
+
const updateBody = firstBody(client, 'span-update');
|
|
258
|
+
expect(updateBody).toBeDefined();
|
|
259
|
+
expect(updateBody?.output).toBe('4');
|
|
260
|
+
});
|
|
261
|
+
it('25. handleToolError creates a span-update with ERROR level', async () => {
|
|
262
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
263
|
+
await handler.handleToolStart(serialized('Calculator'), 'invalid', 'tool-1');
|
|
264
|
+
await handler.handleToolError(new Error('Parse error'), 'tool-1');
|
|
265
|
+
const updateBody = firstBody(client, 'span-update');
|
|
266
|
+
expect(updateBody?.level).toBe('ERROR');
|
|
267
|
+
expect(updateBody?.statusMessage).toBe('Parse error');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
// =========================================================================
|
|
271
|
+
// Retriever Handling
|
|
272
|
+
// =========================================================================
|
|
273
|
+
describe('Retriever Handling', () => {
|
|
274
|
+
it('26. handleRetrieverStart creates a retriever-create event (not span-create)', async () => {
|
|
275
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
276
|
+
await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
|
|
277
|
+
expect(eventsOfType(client, 'retriever-create')).toHaveLength(1);
|
|
278
|
+
expect(eventsOfType(client, 'span-create')).toHaveLength(0);
|
|
279
|
+
});
|
|
280
|
+
it('27. handleRetrieverEnd creates a span-update event with documents', async () => {
|
|
281
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
282
|
+
await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
|
|
283
|
+
const docs = [
|
|
284
|
+
{ pageContent: 'doc1 content', metadata: { source: 'a.pdf' } },
|
|
285
|
+
{ pageContent: 'doc2 content', metadata: { source: 'b.pdf' } },
|
|
286
|
+
];
|
|
287
|
+
await handler.handleRetrieverEnd(docs, 'ret-1');
|
|
288
|
+
const updateBody = firstBody(client, 'span-update');
|
|
289
|
+
expect(updateBody).toBeDefined();
|
|
290
|
+
const output = updateBody?.output;
|
|
291
|
+
expect(output).toHaveLength(2);
|
|
292
|
+
expect(output[0].pageContent).toBe('doc1 content');
|
|
293
|
+
expect(output[1].metadata).toEqual({ source: 'b.pdf' });
|
|
294
|
+
// Also check documentCount in metadata
|
|
295
|
+
const meta = updateBody?.metadata;
|
|
296
|
+
expect(meta?.documentCount).toBe(2);
|
|
297
|
+
});
|
|
298
|
+
it('28. handleRetrieverError creates a span-update with ERROR level', async () => {
|
|
299
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
300
|
+
await handler.handleRetrieverStart(serialized('VectorStoreRetriever'), 'search query', 'ret-1');
|
|
301
|
+
await handler.handleRetrieverError(new Error('Connection timeout'), 'ret-1');
|
|
302
|
+
const updateBody = firstBody(client, 'span-update');
|
|
303
|
+
expect(updateBody?.level).toBe('ERROR');
|
|
304
|
+
expect(updateBody?.statusMessage).toBe('Connection timeout');
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
// =========================================================================
|
|
308
|
+
// Parent-Child Relationships
|
|
309
|
+
// =========================================================================
|
|
310
|
+
describe('Parent-Child Relationships', () => {
|
|
311
|
+
it('29. nested runs preserve parentObservationId', async () => {
|
|
312
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
313
|
+
// Chain is root
|
|
314
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
315
|
+
// LLM is child of chain
|
|
316
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'llm-1', 'chain-1');
|
|
317
|
+
const genBody = firstBody(client, 'generation-create');
|
|
318
|
+
expect(genBody?.parentObservationId).toBeDefined();
|
|
319
|
+
});
|
|
320
|
+
it('30. root run has no parentObservationId', async () => {
|
|
321
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
322
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
323
|
+
const chainBody = firstBody(client, 'chain-create');
|
|
324
|
+
expect(chainBody?.parentObservationId).toBeUndefined();
|
|
325
|
+
});
|
|
326
|
+
it('31. child LLM run under a chain references the chain observationId', async () => {
|
|
327
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
328
|
+
await handler.handleChainStart(serialized('RunnableSequence'), { input: 'test' }, 'chain-1');
|
|
329
|
+
const chainBody = firstBody(client, 'chain-create');
|
|
330
|
+
const chainObsId = chainBody?.id;
|
|
331
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'llm-1', 'chain-1');
|
|
332
|
+
const genBody = firstBody(client, 'generation-create');
|
|
333
|
+
expect(genBody?.parentObservationId).toBe(chainObsId);
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
// =========================================================================
|
|
337
|
+
// Flush & Shutdown
|
|
338
|
+
// =========================================================================
|
|
339
|
+
describe('Flush & Shutdown', () => {
|
|
340
|
+
it('32. flushAsync calls client.flush()', async () => {
|
|
341
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
342
|
+
await handler.flushAsync();
|
|
343
|
+
expect(client.flush).toHaveBeenCalledOnce();
|
|
344
|
+
});
|
|
345
|
+
it('33. handler can be used across multiple sequential calls', async () => {
|
|
346
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
347
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['p1'], 'run-1');
|
|
348
|
+
await handler.handleLLMEnd({
|
|
349
|
+
generations: [[{ text: 'r1', generationInfo: {} }]],
|
|
350
|
+
llmOutput: {},
|
|
351
|
+
}, 'run-1');
|
|
352
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['p2'], 'run-2');
|
|
353
|
+
await handler.handleLLMEnd({
|
|
354
|
+
generations: [[{ text: 'r2', generationInfo: {} }]],
|
|
355
|
+
llmOutput: {},
|
|
356
|
+
}, 'run-2');
|
|
357
|
+
// Should have: 1 trace-create, 2 generation-create, 2 generation-update
|
|
358
|
+
expect(eventsOfType(client, 'trace-create')).toHaveLength(1);
|
|
359
|
+
expect(eventsOfType(client, 'generation-create')).toHaveLength(2);
|
|
360
|
+
expect(eventsOfType(client, 'generation-update')).toHaveLength(2);
|
|
361
|
+
});
|
|
362
|
+
it('34. multiple LLM calls create separate generation events under the same trace', async () => {
|
|
363
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
364
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['p1'], 'run-1');
|
|
365
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['p2'], 'run-2');
|
|
366
|
+
const genEvents = eventsOfType(client, 'generation-create');
|
|
367
|
+
expect(genEvents).toHaveLength(2);
|
|
368
|
+
// Both should share the same traceId
|
|
369
|
+
const traceId1 = genEvents[0].body.traceId;
|
|
370
|
+
const traceId2 = genEvents[1].body.traceId;
|
|
371
|
+
expect(traceId1).toBe(traceId2);
|
|
372
|
+
// But have different observation IDs
|
|
373
|
+
expect(genEvents[0].body.id).not.toBe(genEvents[1].body.id);
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
// =========================================================================
|
|
377
|
+
// Edge Cases
|
|
378
|
+
// =========================================================================
|
|
379
|
+
describe('Edge Cases', () => {
|
|
380
|
+
it('35. handles empty/undefined inputs gracefully', async () => {
|
|
381
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
382
|
+
// Empty prompts array
|
|
383
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), [], 'run-1');
|
|
384
|
+
const genBody = firstBody(client, 'generation-create');
|
|
385
|
+
expect(genBody?.input).toEqual([]);
|
|
386
|
+
// handleLLMEnd with no generations
|
|
387
|
+
const llmResult = {
|
|
388
|
+
generations: [],
|
|
389
|
+
llmOutput: undefined,
|
|
390
|
+
};
|
|
391
|
+
await handler.handleLLMEnd(llmResult, 'run-1');
|
|
392
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
393
|
+
expect(updateBody).toBeDefined();
|
|
394
|
+
// Output falls back to the full generations array when no text is found
|
|
395
|
+
expect(updateBody?.output).toEqual([]);
|
|
396
|
+
});
|
|
397
|
+
it('36. handles missing token usage gracefully (no usage in generation-update)', async () => {
|
|
398
|
+
const handler = new ObservabilityCallbackHandler({ client });
|
|
399
|
+
await handler.handleLLMStart(serialized('ChatOpenAI'), ['prompt'], 'run-1');
|
|
400
|
+
const llmResult = {
|
|
401
|
+
generations: [[{ text: 'response', generationInfo: {} }]],
|
|
402
|
+
llmOutput: {}, // No tokenUsage at all
|
|
403
|
+
};
|
|
404
|
+
await handler.handleLLMEnd(llmResult, 'run-1');
|
|
405
|
+
const updateBody = firstBody(client, 'generation-update');
|
|
406
|
+
expect(updateBody).toBeDefined();
|
|
407
|
+
// Usage object exists but all fields are undefined
|
|
408
|
+
const usage = updateBody?.usage;
|
|
409
|
+
expect(usage.promptTokens).toBeUndefined();
|
|
410
|
+
expect(usage.completionTokens).toBeUndefined();
|
|
411
|
+
expect(usage.totalTokens).toBeUndefined();
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
//# sourceMappingURL=callback-handler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callback-handler.test.js","sourceRoot":"","sources":["../../src/__tests__/callback-handler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,17 +2,36 @@ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
|
|
|
2
2
|
import type { Serialized } from '@langchain/core/load/serializable';
|
|
3
3
|
import type { LLMResult } from '@langchain/core/outputs';
|
|
4
4
|
import type { Document } from '@langchain/core/documents';
|
|
5
|
-
import type {
|
|
5
|
+
import type { IngestionEvent, ObservabilityClientConfig } from '@illuma-ai/observability-core';
|
|
6
|
+
/**
|
|
7
|
+
* Minimal interface that the callback handler requires from an observability client.
|
|
8
|
+
*
|
|
9
|
+
* Any concrete client that implements `enqueue`, `flush`, and `shutdown` is
|
|
10
|
+
* compatible — including `ObservabilityCoreClient` subclasses from
|
|
11
|
+
* `@illuma-ai/observability-node` or `@illuma-ai/observability-web`.
|
|
12
|
+
*/
|
|
13
|
+
export interface ObservabilityClient {
|
|
14
|
+
/** Buffer an ingestion event for later flushing. */
|
|
15
|
+
enqueue(event: IngestionEvent): void;
|
|
16
|
+
/** Flush all buffered events to the server. */
|
|
17
|
+
flush(): Promise<void>;
|
|
18
|
+
/** Flush remaining events and release resources. */
|
|
19
|
+
shutdown(): Promise<void>;
|
|
20
|
+
}
|
|
6
21
|
/**
|
|
7
22
|
* Options for constructing the ObservabilityCallbackHandler.
|
|
8
23
|
* Provide either a pre-configured `client` instance, or `clientOptions`
|
|
9
|
-
* to have the handler create one internally.
|
|
24
|
+
* to have the handler create one internally (requires `@illuma-ai/observability-node`).
|
|
10
25
|
*/
|
|
11
26
|
export interface ObservabilityCallbackHandlerOptions {
|
|
12
|
-
/** Pre-configured
|
|
13
|
-
client?:
|
|
14
|
-
/**
|
|
15
|
-
|
|
27
|
+
/** Pre-configured client instance implementing the ObservabilityClient interface */
|
|
28
|
+
client?: ObservabilityClient;
|
|
29
|
+
/**
|
|
30
|
+
* Options to construct an observability client.
|
|
31
|
+
* When provided without `client`, the handler will attempt to dynamically
|
|
32
|
+
* import `@illuma-ai/observability-node` and construct an `Observability` instance.
|
|
33
|
+
*/
|
|
34
|
+
clientOptions?: ObservabilityClientConfig;
|
|
16
35
|
/** Optional trace name override (default: "langchain-run") */
|
|
17
36
|
traceName?: string;
|
|
18
37
|
/** Optional user ID to associate with the trace */
|
|
@@ -23,6 +42,8 @@ export interface ObservabilityCallbackHandlerOptions {
|
|
|
23
42
|
tags?: string[];
|
|
24
43
|
/** Optional metadata for the trace */
|
|
25
44
|
metadata?: Record<string, unknown>;
|
|
45
|
+
/** Optional environment name (e.g., 'production', 'staging') */
|
|
46
|
+
environment?: string;
|
|
26
47
|
}
|
|
27
48
|
/**
|
|
28
49
|
* LangChain callback handler that sends trace data to Illuma Observe.
|
|
@@ -30,15 +51,17 @@ export interface ObservabilityCallbackHandlerOptions {
|
|
|
30
51
|
* The handler maps LangChain's run hierarchy to Illuma Observe's trace model:
|
|
31
52
|
* - The first (root) run lazily creates a **trace**
|
|
32
53
|
* - LLM runs create **generation** observations (with updates on end/error)
|
|
33
|
-
* - Chain
|
|
54
|
+
* - Chain runs create **chain** observations (with updates on end/error)
|
|
55
|
+
* - Tool runs create **tool** observations (with updates on end/error)
|
|
56
|
+
* - Retriever runs create **retriever** observations (with updates on end/error)
|
|
34
57
|
* - Parent/child relationships are preserved via `parentObservationId`
|
|
35
58
|
*
|
|
36
59
|
* @example
|
|
37
60
|
* ```ts
|
|
38
61
|
* import { ObservabilityCallbackHandler } from '@illuma-ai/observability-langchain';
|
|
39
|
-
* import {
|
|
62
|
+
* import { Observability } from '@illuma-ai/observability-node';
|
|
40
63
|
*
|
|
41
|
-
* const client = new
|
|
64
|
+
* const client = new Observability({
|
|
42
65
|
* publicKey: 'pk-...',
|
|
43
66
|
* secretKey: 'sk-...',
|
|
44
67
|
* baseUrl: 'https://observe.illuma.ai',
|
|
@@ -60,6 +83,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
60
83
|
private sessionId?;
|
|
61
84
|
private traceTags?;
|
|
62
85
|
private traceMetadata?;
|
|
86
|
+
private environment?;
|
|
63
87
|
/**
|
|
64
88
|
* Maps LangChain runId -> internal run state.
|
|
65
89
|
* Used to correlate start/end/error callbacks for the same run.
|
|
@@ -93,7 +117,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
93
117
|
*/
|
|
94
118
|
handleLLMError(err: Error, runId: string): Promise<void>;
|
|
95
119
|
/**
|
|
96
|
-
* Called when a chain starts. Creates a
|
|
120
|
+
* Called when a chain starts. Creates a chain-create event.
|
|
97
121
|
* If this is the first callback, the root trace is also created.
|
|
98
122
|
* @param chain - Serialized chain descriptor
|
|
99
123
|
* @param inputs - The input object passed to the chain
|
|
@@ -114,7 +138,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
114
138
|
*/
|
|
115
139
|
handleChainError(err: Error, runId: string): Promise<void>;
|
|
116
140
|
/**
|
|
117
|
-
* Called when a tool invocation starts. Creates a
|
|
141
|
+
* Called when a tool invocation starts. Creates a tool-create event
|
|
118
142
|
* with the tool name and input.
|
|
119
143
|
* @param tool - Serialized tool descriptor
|
|
120
144
|
* @param input - The input string passed to the tool
|
|
@@ -135,7 +159,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
135
159
|
*/
|
|
136
160
|
handleToolError(err: Error, runId: string): Promise<void>;
|
|
137
161
|
/**
|
|
138
|
-
* Called when a retriever query starts. Creates a
|
|
162
|
+
* Called when a retriever query starts. Creates a retriever-create event
|
|
139
163
|
* for the retrieval operation.
|
|
140
164
|
* @param retriever - Serialized retriever descriptor
|
|
141
165
|
* @param query - The search query string
|
|
@@ -163,7 +187,7 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
163
187
|
getTraceId(): string | null;
|
|
164
188
|
/**
|
|
165
189
|
* Flush all pending events to the Illuma Observe API.
|
|
166
|
-
* Delegates to the underlying
|
|
190
|
+
* Delegates to the underlying client's flush().
|
|
167
191
|
*/
|
|
168
192
|
flushAsync(): Promise<void>;
|
|
169
193
|
/**
|
|
@@ -181,16 +205,14 @@ export declare class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
181
205
|
*/
|
|
182
206
|
private ensureTrace;
|
|
183
207
|
/**
|
|
184
|
-
*
|
|
208
|
+
* Create an ingestion event and enqueue it via the client's public API.
|
|
185
209
|
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
* Since both packages are owned by Illuma, we access the client's internal
|
|
189
|
-
* queue directly. The queue is a simple array that gets drained on flush.
|
|
210
|
+
* Uses `client.enqueue()` which handles auto-flush internally when the
|
|
211
|
+
* queue reaches the configured `flushAt` threshold.
|
|
190
212
|
*
|
|
191
213
|
* @param type - The ingestion event type (e.g., 'generation-create', 'span-update')
|
|
192
214
|
* @param body - The event body payload
|
|
193
215
|
*/
|
|
194
|
-
private
|
|
216
|
+
private enqueueEvent;
|
|
195
217
|
}
|
|
196
218
|
//# sourceMappingURL=callback-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"callback-handler.d.ts","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/callback-handler.js
CHANGED
|
@@ -6,15 +6,17 @@ import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
|
|
|
6
6
|
* The handler maps LangChain's run hierarchy to Illuma Observe's trace model:
|
|
7
7
|
* - The first (root) run lazily creates a **trace**
|
|
8
8
|
* - LLM runs create **generation** observations (with updates on end/error)
|
|
9
|
-
* - Chain
|
|
9
|
+
* - Chain runs create **chain** observations (with updates on end/error)
|
|
10
|
+
* - Tool runs create **tool** observations (with updates on end/error)
|
|
11
|
+
* - Retriever runs create **retriever** observations (with updates on end/error)
|
|
10
12
|
* - Parent/child relationships are preserved via `parentObservationId`
|
|
11
13
|
*
|
|
12
14
|
* @example
|
|
13
15
|
* ```ts
|
|
14
16
|
* import { ObservabilityCallbackHandler } from '@illuma-ai/observability-langchain';
|
|
15
|
-
* import {
|
|
17
|
+
* import { Observability } from '@illuma-ai/observability-node';
|
|
16
18
|
*
|
|
17
|
-
* const client = new
|
|
19
|
+
* const client = new Observability({
|
|
18
20
|
* publicKey: 'pk-...',
|
|
19
21
|
* secretKey: 'sk-...',
|
|
20
22
|
* baseUrl: 'https://observe.illuma.ai',
|
|
@@ -36,6 +38,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
36
38
|
sessionId;
|
|
37
39
|
traceTags;
|
|
38
40
|
traceMetadata;
|
|
41
|
+
environment;
|
|
39
42
|
/**
|
|
40
43
|
* Maps LangChain runId -> internal run state.
|
|
41
44
|
* Used to correlate start/end/error callbacks for the same run.
|
|
@@ -53,9 +56,19 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
53
56
|
this.ownsClient = false;
|
|
54
57
|
}
|
|
55
58
|
else if (options.clientOptions) {
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
// Dynamically require observability-node to construct a client from options.
|
|
60
|
+
// This avoids a hard dependency — users who pass a pre-constructed client
|
|
61
|
+
// do not need observability-node installed.
|
|
62
|
+
try {
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
64
|
+
const { Observability } = require('@illuma-ai/observability-node');
|
|
65
|
+
this.client = new Observability(options.clientOptions);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
throw new Error('ObservabilityCallbackHandler: when using `clientOptions`, ' +
|
|
69
|
+
'`@illuma-ai/observability-node` must be installed. ' +
|
|
70
|
+
'Either install it or provide a pre-constructed `client` instance.');
|
|
71
|
+
}
|
|
59
72
|
this.ownsClient = true;
|
|
60
73
|
}
|
|
61
74
|
else {
|
|
@@ -66,6 +79,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
66
79
|
this.sessionId = options.sessionId;
|
|
67
80
|
this.traceTags = options.tags;
|
|
68
81
|
this.traceMetadata = options.metadata;
|
|
82
|
+
this.environment = options.environment;
|
|
69
83
|
}
|
|
70
84
|
// ---------------------------------------------------------------------------
|
|
71
85
|
// LLM callbacks
|
|
@@ -90,13 +104,18 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
90
104
|
type: 'generation',
|
|
91
105
|
name,
|
|
92
106
|
});
|
|
93
|
-
|
|
107
|
+
// Extract model and provider from LangChain metadata if available
|
|
108
|
+
const model = (_metadata?.ls_model_name ?? undefined);
|
|
109
|
+
const provider = (_metadata?.ls_provider ?? undefined);
|
|
110
|
+
this.enqueueEvent('generation-create', {
|
|
94
111
|
id: observationId,
|
|
95
112
|
traceId,
|
|
96
113
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
97
114
|
name,
|
|
98
115
|
startTime,
|
|
99
116
|
input: prompts,
|
|
117
|
+
...(model ? { model } : {}),
|
|
118
|
+
...(provider ? { provider } : {}),
|
|
100
119
|
metadata: {
|
|
101
120
|
langchainRunId: runId,
|
|
102
121
|
serializedLlm: llm,
|
|
@@ -119,12 +138,14 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
119
138
|
// Different LLM providers place usage stats in different fields.
|
|
120
139
|
const llmOutput = output.llmOutput;
|
|
121
140
|
const tokenUsage = (llmOutput?.tokenUsage ?? llmOutput?.usage ?? {});
|
|
122
|
-
|
|
141
|
+
const provider = (llmOutput?.provider ?? llmOutput?.ls_provider ?? undefined);
|
|
142
|
+
this.enqueueEvent('generation-update', {
|
|
123
143
|
id: run.observationId,
|
|
124
144
|
traceId: run.traceId,
|
|
125
145
|
endTime,
|
|
126
146
|
output: generation?.text ?? output.generations,
|
|
127
147
|
model: (llmOutput?.modelName ?? llmOutput?.model ?? undefined),
|
|
148
|
+
provider,
|
|
128
149
|
usage: {
|
|
129
150
|
promptTokens: (tokenUsage.promptTokens ?? tokenUsage.prompt_tokens),
|
|
130
151
|
completionTokens: (tokenUsage.completionTokens ?? tokenUsage.completion_tokens),
|
|
@@ -142,7 +163,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
142
163
|
const run = this.runs.get(runId);
|
|
143
164
|
if (!run)
|
|
144
165
|
return;
|
|
145
|
-
this.
|
|
166
|
+
this.enqueueEvent('generation-update', {
|
|
146
167
|
id: run.observationId,
|
|
147
168
|
traceId: run.traceId,
|
|
148
169
|
endTime: new Date().toISOString(),
|
|
@@ -156,7 +177,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
156
177
|
// Chain callbacks
|
|
157
178
|
// ---------------------------------------------------------------------------
|
|
158
179
|
/**
|
|
159
|
-
* Called when a chain starts. Creates a
|
|
180
|
+
* Called when a chain starts. Creates a chain-create event.
|
|
160
181
|
* If this is the first callback, the root trace is also created.
|
|
161
182
|
* @param chain - Serialized chain descriptor
|
|
162
183
|
* @param inputs - The input object passed to the chain
|
|
@@ -173,10 +194,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
173
194
|
traceId,
|
|
174
195
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
175
196
|
startTime,
|
|
176
|
-
type: '
|
|
197
|
+
type: 'chain',
|
|
177
198
|
name,
|
|
178
199
|
});
|
|
179
|
-
this.
|
|
200
|
+
this.enqueueEvent('chain-create', {
|
|
180
201
|
id: observationId,
|
|
181
202
|
traceId,
|
|
182
203
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
@@ -197,7 +218,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
197
218
|
const run = this.runs.get(runId);
|
|
198
219
|
if (!run)
|
|
199
220
|
return;
|
|
200
|
-
this.
|
|
221
|
+
this.enqueueEvent('span-update', {
|
|
201
222
|
id: run.observationId,
|
|
202
223
|
traceId: run.traceId,
|
|
203
224
|
endTime: new Date().toISOString(),
|
|
@@ -214,7 +235,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
214
235
|
const run = this.runs.get(runId);
|
|
215
236
|
if (!run)
|
|
216
237
|
return;
|
|
217
|
-
this.
|
|
238
|
+
this.enqueueEvent('span-update', {
|
|
218
239
|
id: run.observationId,
|
|
219
240
|
traceId: run.traceId,
|
|
220
241
|
endTime: new Date().toISOString(),
|
|
@@ -228,7 +249,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
228
249
|
// Tool callbacks
|
|
229
250
|
// ---------------------------------------------------------------------------
|
|
230
251
|
/**
|
|
231
|
-
* Called when a tool invocation starts. Creates a
|
|
252
|
+
* Called when a tool invocation starts. Creates a tool-create event
|
|
232
253
|
* with the tool name and input.
|
|
233
254
|
* @param tool - Serialized tool descriptor
|
|
234
255
|
* @param input - The input string passed to the tool
|
|
@@ -245,10 +266,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
245
266
|
traceId,
|
|
246
267
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
247
268
|
startTime,
|
|
248
|
-
type: '
|
|
269
|
+
type: 'tool',
|
|
249
270
|
name,
|
|
250
271
|
});
|
|
251
|
-
this.
|
|
272
|
+
this.enqueueEvent('tool-create', {
|
|
252
273
|
id: observationId,
|
|
253
274
|
traceId,
|
|
254
275
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
@@ -257,7 +278,6 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
257
278
|
input,
|
|
258
279
|
metadata: {
|
|
259
280
|
langchainRunId: runId,
|
|
260
|
-
observationType: 'tool',
|
|
261
281
|
},
|
|
262
282
|
});
|
|
263
283
|
}
|
|
@@ -270,7 +290,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
270
290
|
const run = this.runs.get(runId);
|
|
271
291
|
if (!run)
|
|
272
292
|
return;
|
|
273
|
-
this.
|
|
293
|
+
this.enqueueEvent('span-update', {
|
|
274
294
|
id: run.observationId,
|
|
275
295
|
traceId: run.traceId,
|
|
276
296
|
endTime: new Date().toISOString(),
|
|
@@ -287,7 +307,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
287
307
|
const run = this.runs.get(runId);
|
|
288
308
|
if (!run)
|
|
289
309
|
return;
|
|
290
|
-
this.
|
|
310
|
+
this.enqueueEvent('span-update', {
|
|
291
311
|
id: run.observationId,
|
|
292
312
|
traceId: run.traceId,
|
|
293
313
|
endTime: new Date().toISOString(),
|
|
@@ -301,7 +321,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
301
321
|
// Retriever callbacks
|
|
302
322
|
// ---------------------------------------------------------------------------
|
|
303
323
|
/**
|
|
304
|
-
* Called when a retriever query starts. Creates a
|
|
324
|
+
* Called when a retriever query starts. Creates a retriever-create event
|
|
305
325
|
* for the retrieval operation.
|
|
306
326
|
* @param retriever - Serialized retriever descriptor
|
|
307
327
|
* @param query - The search query string
|
|
@@ -318,10 +338,10 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
318
338
|
traceId,
|
|
319
339
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
320
340
|
startTime,
|
|
321
|
-
type: '
|
|
341
|
+
type: 'retriever',
|
|
322
342
|
name,
|
|
323
343
|
});
|
|
324
|
-
this.
|
|
344
|
+
this.enqueueEvent('retriever-create', {
|
|
325
345
|
id: observationId,
|
|
326
346
|
traceId,
|
|
327
347
|
parentObservationId: parentRunId ? this.runs.get(parentRunId)?.observationId : undefined,
|
|
@@ -330,7 +350,6 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
330
350
|
input: query,
|
|
331
351
|
metadata: {
|
|
332
352
|
langchainRunId: runId,
|
|
333
|
-
observationType: 'retriever',
|
|
334
353
|
},
|
|
335
354
|
});
|
|
336
355
|
}
|
|
@@ -349,7 +368,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
349
368
|
pageContent: doc.pageContent,
|
|
350
369
|
metadata: doc.metadata,
|
|
351
370
|
}));
|
|
352
|
-
this.
|
|
371
|
+
this.enqueueEvent('span-update', {
|
|
353
372
|
id: run.observationId,
|
|
354
373
|
traceId: run.traceId,
|
|
355
374
|
endTime: new Date().toISOString(),
|
|
@@ -369,7 +388,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
369
388
|
const run = this.runs.get(runId);
|
|
370
389
|
if (!run)
|
|
371
390
|
return;
|
|
372
|
-
this.
|
|
391
|
+
this.enqueueEvent('span-update', {
|
|
373
392
|
id: run.observationId,
|
|
374
393
|
traceId: run.traceId,
|
|
375
394
|
endTime: new Date().toISOString(),
|
|
@@ -391,7 +410,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
391
410
|
}
|
|
392
411
|
/**
|
|
393
412
|
* Flush all pending events to the Illuma Observe API.
|
|
394
|
-
* Delegates to the underlying
|
|
413
|
+
* Delegates to the underlying client's flush().
|
|
395
414
|
*/
|
|
396
415
|
async flushAsync() {
|
|
397
416
|
await this.client.flush();
|
|
@@ -424,7 +443,7 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
424
443
|
return this.rootTraceId;
|
|
425
444
|
}
|
|
426
445
|
this.rootTraceId = randomUUID();
|
|
427
|
-
this.
|
|
446
|
+
this.enqueueEvent('trace-create', {
|
|
428
447
|
id: this.rootTraceId,
|
|
429
448
|
name: this.traceName,
|
|
430
449
|
userId: this.userId,
|
|
@@ -432,38 +451,29 @@ export class ObservabilityCallbackHandler extends BaseCallbackHandler {
|
|
|
432
451
|
tags: this.traceTags,
|
|
433
452
|
metadata: this.traceMetadata,
|
|
434
453
|
input,
|
|
454
|
+
...(this.environment ? { environment: this.environment } : {}),
|
|
435
455
|
});
|
|
436
456
|
return this.rootTraceId;
|
|
437
457
|
}
|
|
438
458
|
/**
|
|
439
|
-
*
|
|
459
|
+
* Create an ingestion event and enqueue it via the client's public API.
|
|
440
460
|
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
* Since both packages are owned by Illuma, we access the client's internal
|
|
444
|
-
* queue directly. The queue is a simple array that gets drained on flush.
|
|
461
|
+
* Uses `client.enqueue()` which handles auto-flush internally when the
|
|
462
|
+
* queue reaches the configured `flushAt` threshold.
|
|
445
463
|
*
|
|
446
464
|
* @param type - The ingestion event type (e.g., 'generation-create', 'span-update')
|
|
447
465
|
* @param body - The event body payload
|
|
448
466
|
*/
|
|
449
|
-
|
|
467
|
+
enqueueEvent(type, body) {
|
|
450
468
|
const event = {
|
|
451
469
|
id: randomUUID(),
|
|
452
470
|
type,
|
|
453
471
|
timestamp: new Date().toISOString(),
|
|
454
472
|
body,
|
|
455
473
|
};
|
|
456
|
-
//
|
|
457
|
-
//
|
|
458
|
-
|
|
459
|
-
if (internal.stopped) {
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
internal.queue.push(event);
|
|
463
|
-
// Trigger auto-flush if batch size threshold is reached
|
|
464
|
-
if (internal.queue.length >= internal.flushAt) {
|
|
465
|
-
void internal.flush();
|
|
466
|
-
}
|
|
474
|
+
// SCALE: O(1) per event — delegates to core client's enqueue which
|
|
475
|
+
// handles batching and auto-flush internally.
|
|
476
|
+
this.client.enqueue(event);
|
|
467
477
|
}
|
|
468
478
|
}
|
|
469
479
|
//# sourceMappingURL=callback-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-handler.js","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"callback-handler.js","sourceRoot":"","sources":["../src/callback-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ObservabilityCallbackHandler } from './callback-handler.js';
|
|
2
|
-
export type { ObservabilityCallbackHandlerOptions } from './callback-handler.js';
|
|
2
|
+
export type { ObservabilityCallbackHandlerOptions, ObservabilityClient, } from './callback-handler.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EACV,mCAAmC,EACnC,mBAAmB,GACpB,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@illuma-ai/observability-langchain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "LangChain callback handler for Illuma Observability",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"test": "vitest run",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@illuma-ai/observability-core": "^0.2.0"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@langchain/core": ">=0.1.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"typescript": "^5.4.5",
|
|
30
|
+
"@types/node": "^20.14.2",
|
|
31
|
+
"@langchain/core": "^0.3.0",
|
|
32
|
+
"vitest": "^3.0.0"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "https://github.com/illuma-ai/observability.git",
|
|
40
|
+
"directory": "packages/observability-langchain"
|
|
41
|
+
},
|
|
16
42
|
"license": "MIT"
|
|
17
43
|
}
|