@uselemma/tracing 4.2.0 → 4.3.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/README.md CHANGED
@@ -213,6 +213,40 @@ enableDebugMode();
213
213
  Use `openAIAgents({ recordInputs: false, recordOutputs: false })` to avoid
214
214
  sending prompts, tool inputs, tool outputs, or model output text.
215
215
 
216
+ ## LangChain and LangGraph
217
+
218
+ Pass `langChain()` as a LangChain callback handler. The handler creates one
219
+ Lemma trace for the root run, records LLM calls as generations, tools as tool
220
+ spans, retrievers as spans with retrieval documents, and nested chains as child
221
+ spans.
222
+
223
+ ```typescript
224
+ import { ChatOpenAI } from "@langchain/openai";
225
+ import { langChain } from "@uselemma/tracing";
226
+
227
+ const model = new ChatOpenAI({
228
+ model: "gpt-4o",
229
+ callbacks: [langChain({ agentName: "support-agent" })],
230
+ });
231
+
232
+ const response = await model.invoke(userMessage);
233
+ ```
234
+
235
+ LangGraph uses LangChain callbacks too:
236
+
237
+ ```typescript
238
+ import { langGraph } from "@uselemma/tracing";
239
+
240
+ const result = await graph.invoke(
241
+ { input: userMessage },
242
+ { callbacks: [langGraph({ agentName: "support-graph" })] },
243
+ );
244
+ ```
245
+
246
+ Use `langChain({ recordInputs: false, recordOutputs: false })` or
247
+ `langGraph({ recordInputs: false, recordOutputs: false })` to avoid sending
248
+ prompts, tool inputs, tool outputs, retrieved documents, or generated text.
249
+
216
250
  When a helper only has IDs, use the client-level methods:
217
251
 
218
252
  ```typescript
@@ -304,7 +338,8 @@ Use `attributes` for raw attributes that do not yet have a native SDK prop.
304
338
  ## Examples
305
339
 
306
340
  See [`examples/`](./examples) for complete callback tracing, trace handle,
307
- record-by-ID, Vercel AI SDK v6/v7, and OpenAI Agents SDK examples.
341
+ record-by-ID, Vercel AI SDK v6/v7, OpenAI Agents SDK, LangChain, and LangGraph
342
+ examples.
308
343
 
309
344
  ## License
310
345
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { Lemma, NoopSpanHandle, SpanHandle, TraceContext, TraceHandle, active, type DetachedGenerationOptions, type DetachedSpanOptions, type DetachedToolOptions, type GenerationOptions, type JsonValue, type LemmaClientOptions, type SpanOptions, type ToolOptions, type TraceEndOptions, type TraceOptions, } from "./client";
2
2
  export { disableDebugMode, enableDebugMode, isDebugModeEnabled, lemmaDebug, } from "./debug-mode";
3
+ export { LangChainCallbackHandler, LemmaLangChainCallbackHandler, langChain, langGraph, type LangChainIntegrationOptions, type LemmaLangChainIntegrationOptions, type LemmaLangGraphIntegrationOptions, } from "./langchain";
3
4
  export { openAIAgents, type OpenAIAgentsIntegrationOptions, type OpenAIAgentsSpan, type OpenAIAgentsSpanData, type OpenAIAgentsTrace, type OpenAIAgentsTracingProcessor, } from "./openai-agents";
4
5
  export { vercelAI, type LemmaVercelAIIntegrationOptions, type VercelAIIntegrationOptions, type VercelAITelemetryIntegration, } from "./vercel-ai";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACX,MAAM,EACN,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,QAAQ,EACR,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,cAAc,EACd,UAAU,EACV,YAAY,EACZ,WAAW,EACX,MAAM,EACN,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,SAAS,EACT,SAAS,EACT,KAAK,2BAA2B,EAChC,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,GACtC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,KAAK,8BAA8B,EACnC,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,GAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,QAAQ,EACR,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,GAClC,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.vercelAI = exports.openAIAgents = exports.lemmaDebug = exports.isDebugModeEnabled = exports.enableDebugMode = exports.disableDebugMode = exports.active = exports.TraceHandle = exports.TraceContext = exports.SpanHandle = exports.NoopSpanHandle = exports.Lemma = void 0;
3
+ exports.vercelAI = exports.openAIAgents = exports.langGraph = exports.langChain = exports.LemmaLangChainCallbackHandler = exports.LangChainCallbackHandler = exports.lemmaDebug = exports.isDebugModeEnabled = exports.enableDebugMode = exports.disableDebugMode = exports.active = exports.TraceHandle = exports.TraceContext = exports.SpanHandle = exports.NoopSpanHandle = exports.Lemma = void 0;
4
4
  var client_1 = require("./client");
5
5
  Object.defineProperty(exports, "Lemma", { enumerable: true, get: function () { return client_1.Lemma; } });
6
6
  Object.defineProperty(exports, "NoopSpanHandle", { enumerable: true, get: function () { return client_1.NoopSpanHandle; } });
@@ -13,6 +13,11 @@ Object.defineProperty(exports, "disableDebugMode", { enumerable: true, get: func
13
13
  Object.defineProperty(exports, "enableDebugMode", { enumerable: true, get: function () { return debug_mode_1.enableDebugMode; } });
14
14
  Object.defineProperty(exports, "isDebugModeEnabled", { enumerable: true, get: function () { return debug_mode_1.isDebugModeEnabled; } });
15
15
  Object.defineProperty(exports, "lemmaDebug", { enumerable: true, get: function () { return debug_mode_1.lemmaDebug; } });
16
+ var langchain_1 = require("./langchain");
17
+ Object.defineProperty(exports, "LangChainCallbackHandler", { enumerable: true, get: function () { return langchain_1.LangChainCallbackHandler; } });
18
+ Object.defineProperty(exports, "LemmaLangChainCallbackHandler", { enumerable: true, get: function () { return langchain_1.LemmaLangChainCallbackHandler; } });
19
+ Object.defineProperty(exports, "langChain", { enumerable: true, get: function () { return langchain_1.langChain; } });
20
+ Object.defineProperty(exports, "langGraph", { enumerable: true, get: function () { return langchain_1.langGraph; } });
16
21
  var openai_agents_1 = require("./openai-agents");
17
22
  Object.defineProperty(exports, "openAIAgents", { enumerable: true, get: function () { return openai_agents_1.openAIAgents; } });
18
23
  var vercel_ai_1 = require("./vercel-ai");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAiBkB;AAhBhB,+FAAA,KAAK,OAAA;AACL,wGAAA,cAAc,OAAA;AACd,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,gGAAA,MAAM,OAAA;AAYR,2CAKsB;AAJpB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,wGAAA,UAAU,OAAA;AAEZ,iDAOyB;AANvB,6GAAA,YAAY,OAAA;AAOd,yCAKqB;AAJnB,qGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAiBkB;AAhBhB,+FAAA,KAAK,OAAA;AACL,wGAAA,cAAc,OAAA;AACd,oGAAA,UAAU,OAAA;AACV,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,gGAAA,MAAM,OAAA;AAYR,2CAKsB;AAJpB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,wGAAA,UAAU,OAAA;AAEZ,yCAQqB;AAPnB,qHAAA,wBAAwB,OAAA;AACxB,0HAAA,6BAA6B,OAAA;AAC7B,sGAAA,SAAS,OAAA;AACT,sGAAA,SAAS,OAAA;AAKX,iDAOyB;AANvB,6GAAA,YAAY,OAAA;AAOd,yCAKqB;AAJnB,qGAAA,QAAQ,OAAA"}
@@ -0,0 +1,55 @@
1
+ import { Lemma, type LemmaClientOptions } from "./client";
2
+ type RunId = string;
3
+ type Serialized = {
4
+ id?: string[];
5
+ name?: string;
6
+ kwargs?: Record<string, unknown>;
7
+ [key: string]: unknown;
8
+ };
9
+ type LLMResult = {
10
+ generations?: unknown[][];
11
+ llmOutput?: Record<string, unknown>;
12
+ [key: string]: unknown;
13
+ };
14
+ export type LangChainIntegrationOptions = {
15
+ lemma?: Lemma;
16
+ apiKey?: LemmaClientOptions["apiKey"];
17
+ projectId?: LemmaClientOptions["projectId"];
18
+ baseUrl?: LemmaClientOptions["baseUrl"];
19
+ fetch?: LemmaClientOptions["fetch"];
20
+ agentName?: string;
21
+ metadata?: Record<string, unknown>;
22
+ recordInputs?: boolean;
23
+ recordOutputs?: boolean;
24
+ };
25
+ export declare class LemmaLangChainCallbackHandler {
26
+ private readonly options;
27
+ name: string;
28
+ private lemma;
29
+ private readonly runs;
30
+ constructor(options?: LangChainIntegrationOptions);
31
+ private getLemma;
32
+ private traceName;
33
+ private startTrace;
34
+ private parent;
35
+ handleChainStart(serialized: Serialized, inputs: unknown, runId: RunId, parentRunId?: RunId, _tags?: string[], metadata?: Record<string, unknown>, _runType?: string, name?: string): void;
36
+ handleChainEnd(outputs: unknown, runId: RunId): Promise<void>;
37
+ handleChainError(error: unknown, runId: RunId): Promise<void>;
38
+ handleLLMStart(serialized: Serialized, prompts: string[], runId: RunId, parentRunId?: RunId, extraParams?: Record<string, unknown>): void;
39
+ handleChatModelStart(serialized: Serialized, messages: unknown[][], runId: RunId, parentRunId?: RunId, extraParams?: Record<string, unknown>): void;
40
+ handleLLMEnd(output: LLMResult, runId: RunId): void;
41
+ handleLLMError(error: unknown, runId: RunId): void;
42
+ handleToolStart(serialized: Serialized, input: unknown, runId: RunId, parentRunId?: RunId): void;
43
+ handleToolEnd(output: unknown, runId: RunId): void;
44
+ handleToolError(error: unknown, runId: RunId): void;
45
+ handleRetrieverStart(serialized: Serialized, query: string, runId: RunId, parentRunId?: RunId): void;
46
+ handleRetrieverEnd(documents: unknown[], runId: RunId): void;
47
+ handleRetrieverError(error: unknown, runId: RunId): void;
48
+ }
49
+ export declare const LangChainCallbackHandler: typeof LemmaLangChainCallbackHandler;
50
+ export declare function langChain(options?: LangChainIntegrationOptions): LemmaLangChainCallbackHandler;
51
+ export declare function langGraph(options?: LangChainIntegrationOptions): LemmaLangChainCallbackHandler;
52
+ export type LemmaLangChainIntegrationOptions = LangChainIntegrationOptions;
53
+ export type LemmaLangGraphIntegrationOptions = LangChainIntegrationOptions;
54
+ export {};
55
+ //# sourceMappingURL=langchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../src/langchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LangChainCallbackHandler = exports.LemmaLangChainCallbackHandler = void 0;
4
+ exports.langChain = langChain;
5
+ exports.langGraph = langGraph;
6
+ const client_1 = require("./client");
7
+ function serializedName(serialized, fallback) {
8
+ if (typeof serialized?.name === "string" && serialized.name) {
9
+ return serialized.name;
10
+ }
11
+ const id = serialized?.id;
12
+ if (Array.isArray(id) && id.length > 0) {
13
+ return String(id[id.length - 1]);
14
+ }
15
+ return fallback;
16
+ }
17
+ function modelName(serialized) {
18
+ const kwargs = serialized?.kwargs;
19
+ const value = kwargs?.model ??
20
+ kwargs?.modelName ??
21
+ kwargs?.model_name ??
22
+ kwargs?.model_id ??
23
+ serialized?.model ??
24
+ serialized?.modelName ??
25
+ serialized?.model_name ??
26
+ serialized?.model_id;
27
+ return typeof value === "string" ? value : undefined;
28
+ }
29
+ function firstText(value) {
30
+ if (typeof value === "string")
31
+ return value;
32
+ if (!value || typeof value !== "object")
33
+ return undefined;
34
+ const record = value;
35
+ if (typeof record.text === "string")
36
+ return record.text;
37
+ if (typeof record.content === "string")
38
+ return record.content;
39
+ const message = record.message;
40
+ if (message && typeof message === "object") {
41
+ return firstText(message);
42
+ }
43
+ return undefined;
44
+ }
45
+ function llmOutput(result) {
46
+ const generations = result.generations;
47
+ if (!Array.isArray(generations))
48
+ return result;
49
+ const text = generations.flat().map(firstText).filter(Boolean).join("");
50
+ return text || generations;
51
+ }
52
+ function usage(result) {
53
+ const output = result.llmOutput ?? {};
54
+ const tokenUsage = output.tokenUsage ??
55
+ output.token_usage ??
56
+ output.usage ??
57
+ output.estimatedTokenUsage;
58
+ if (!tokenUsage || typeof tokenUsage !== "object")
59
+ return undefined;
60
+ const usageData = tokenUsage;
61
+ const inputTokens = usageData.promptTokens ??
62
+ usageData.prompt_tokens ??
63
+ usageData.inputTokens ??
64
+ usageData.input_tokens;
65
+ const outputTokens = usageData.completionTokens ??
66
+ usageData.completion_tokens ??
67
+ usageData.outputTokens ??
68
+ usageData.output_tokens;
69
+ return {
70
+ inputTokens: typeof inputTokens === "number" ? inputTokens : undefined,
71
+ outputTokens: typeof outputTokens === "number" ? outputTokens : undefined,
72
+ };
73
+ }
74
+ function errorMessage(error) {
75
+ return error instanceof Error ? error.message : String(error);
76
+ }
77
+ class LemmaLangChainCallbackHandler {
78
+ options;
79
+ name = "lemma";
80
+ lemma;
81
+ runs = new Map();
82
+ constructor(options = {}) {
83
+ this.options = options;
84
+ this.lemma = options.lemma;
85
+ }
86
+ getLemma() {
87
+ this.lemma ??= new client_1.Lemma({
88
+ apiKey: this.options.apiKey,
89
+ projectId: this.options.projectId,
90
+ baseUrl: this.options.baseUrl,
91
+ fetch: this.options.fetch,
92
+ });
93
+ return this.lemma;
94
+ }
95
+ traceName(serialized, fallback) {
96
+ return this.options.agentName ?? serializedName(serialized, fallback);
97
+ }
98
+ startTrace(runId, serialized, input, fallbackName, metadata) {
99
+ const trace = this.getLemma().trace({
100
+ name: this.traceName(serialized, fallbackName),
101
+ input: this.options.recordInputs === false ? undefined : input,
102
+ metadata: {
103
+ ...this.options.metadata,
104
+ ...(metadata ?? {}),
105
+ langchainRunId: runId,
106
+ },
107
+ });
108
+ this.runs.set(runId, { trace, type: "chain" });
109
+ return trace;
110
+ }
111
+ parent(runId) {
112
+ if (!runId)
113
+ return undefined;
114
+ return this.runs.get(runId);
115
+ }
116
+ handleChainStart(serialized, inputs, runId, parentRunId, _tags, metadata, _runType, name) {
117
+ const parent = this.parent(parentRunId);
118
+ if (!parent) {
119
+ this.startTrace(runId, { ...serialized, name: name ?? serialized?.name }, inputs, "langchain-run", metadata);
120
+ return;
121
+ }
122
+ const handle = (parent.handle ?? parent.trace)?.startSpan({
123
+ name: name ?? serializedName(serialized, "langchain-chain"),
124
+ input: this.options.recordInputs === false ? undefined : inputs,
125
+ metadata: this.options.metadata,
126
+ attributes: {
127
+ "langchain.run_id": runId,
128
+ "langchain.parent_run_id": parentRunId,
129
+ "langchain.run_type": "chain",
130
+ },
131
+ });
132
+ this.runs.set(runId, { handle, parentRunId, type: "chain" });
133
+ }
134
+ async handleChainEnd(outputs, runId) {
135
+ const run = this.runs.get(runId);
136
+ if (!run)
137
+ return;
138
+ if (run.trace) {
139
+ await run.trace.end(this.options.recordOutputs === false ? undefined : { output: outputs });
140
+ this.runs.delete(runId);
141
+ return;
142
+ }
143
+ run.handle?.end({
144
+ output: this.options.recordOutputs === false ? undefined : outputs,
145
+ });
146
+ this.runs.delete(runId);
147
+ }
148
+ async handleChainError(error, runId) {
149
+ const run = this.runs.get(runId);
150
+ if (!run)
151
+ return;
152
+ if (run.trace) {
153
+ run.trace.fail(error);
154
+ await run.trace.end();
155
+ this.runs.delete(runId);
156
+ return;
157
+ }
158
+ run.handle?.end({ status: "ERROR", error: errorMessage(error) });
159
+ this.runs.delete(runId);
160
+ }
161
+ handleLLMStart(serialized, prompts, runId, parentRunId, extraParams) {
162
+ const parent = this.parent(parentRunId);
163
+ const trace = parent?.trace ??
164
+ parent?.handle ??
165
+ this.startTrace(runId, serialized, prompts, "langchain-llm");
166
+ const handle = trace.startGeneration({
167
+ name: serializedName(serialized, "langchain-llm"),
168
+ input: this.options.recordInputs === false ? undefined : prompts,
169
+ metadata: this.options.metadata,
170
+ model: modelName(serialized),
171
+ llmProvider: "langchain",
172
+ llmInputMessages: this.options.recordInputs === false
173
+ ? undefined
174
+ : prompts.map((content) => ({ role: "user", content })),
175
+ llmInvocationParameters: extraParams,
176
+ attributes: {
177
+ "langchain.run_id": runId,
178
+ "langchain.parent_run_id": parentRunId,
179
+ "langchain.run_type": "llm",
180
+ },
181
+ });
182
+ this.runs.set(runId, { handle, parentRunId, type: "llm" });
183
+ }
184
+ handleChatModelStart(serialized, messages, runId, parentRunId, extraParams) {
185
+ const flatMessages = messages.flat();
186
+ const parent = this.parent(parentRunId);
187
+ const trace = parent?.trace ??
188
+ parent?.handle ??
189
+ this.startTrace(runId, serialized, flatMessages, "langchain-chat-model");
190
+ const handle = trace.startGeneration({
191
+ name: serializedName(serialized, "langchain-chat-model"),
192
+ input: this.options.recordInputs === false ? undefined : flatMessages,
193
+ metadata: this.options.metadata,
194
+ model: modelName(serialized),
195
+ llmProvider: "langchain",
196
+ llmInputMessages: this.options.recordInputs === false ? undefined : flatMessages,
197
+ llmInvocationParameters: extraParams,
198
+ attributes: {
199
+ "langchain.run_id": runId,
200
+ "langchain.parent_run_id": parentRunId,
201
+ "langchain.run_type": "llm",
202
+ },
203
+ });
204
+ this.runs.set(runId, { handle, parentRunId, type: "llm" });
205
+ }
206
+ handleLLMEnd(output, runId) {
207
+ const run = this.runs.get(runId);
208
+ if (!run?.handle)
209
+ return;
210
+ const outputText = llmOutput(output);
211
+ run.handle.end({
212
+ output: this.options.recordOutputs === false ? undefined : outputText,
213
+ usage: usage(output),
214
+ llmOutputMessages: this.options.recordOutputs === false || outputText === undefined
215
+ ? undefined
216
+ : [{ role: "assistant", content: outputText }],
217
+ });
218
+ this.runs.delete(runId);
219
+ }
220
+ handleLLMError(error, runId) {
221
+ const run = this.runs.get(runId);
222
+ run?.handle?.end({ status: "ERROR", error: errorMessage(error) });
223
+ this.runs.delete(runId);
224
+ }
225
+ handleToolStart(serialized, input, runId, parentRunId) {
226
+ const parent = this.parent(parentRunId);
227
+ const trace = parent?.trace ??
228
+ parent?.handle ??
229
+ this.startTrace(runId, serialized, input, "langchain-tool");
230
+ const name = serializedName(serialized, "langchain-tool");
231
+ const handle = trace.startTool({
232
+ name,
233
+ toolName: name,
234
+ input: this.options.recordInputs === false ? undefined : input,
235
+ metadata: this.options.metadata,
236
+ attributes: {
237
+ "langchain.run_id": runId,
238
+ "langchain.parent_run_id": parentRunId,
239
+ "langchain.run_type": "tool",
240
+ },
241
+ });
242
+ this.runs.set(runId, { handle, parentRunId, type: "tool" });
243
+ }
244
+ handleToolEnd(output, runId) {
245
+ const run = this.runs.get(runId);
246
+ run?.handle?.end({
247
+ output: this.options.recordOutputs === false ? undefined : output,
248
+ });
249
+ this.runs.delete(runId);
250
+ }
251
+ handleToolError(error, runId) {
252
+ const run = this.runs.get(runId);
253
+ run?.handle?.end({ status: "ERROR", error: errorMessage(error) });
254
+ this.runs.delete(runId);
255
+ }
256
+ handleRetrieverStart(serialized, query, runId, parentRunId) {
257
+ const parent = this.parent(parentRunId);
258
+ const trace = parent?.trace ??
259
+ parent?.handle ??
260
+ this.startTrace(runId, serialized, query, "langchain-retriever");
261
+ const handle = trace.startSpan({
262
+ name: serializedName(serialized, "langchain-retriever"),
263
+ input: this.options.recordInputs === false ? undefined : query,
264
+ metadata: this.options.metadata,
265
+ attributes: {
266
+ "langchain.run_id": runId,
267
+ "langchain.parent_run_id": parentRunId,
268
+ "langchain.run_type": "retriever",
269
+ },
270
+ });
271
+ this.runs.set(runId, { handle, parentRunId, type: "retriever" });
272
+ }
273
+ handleRetrieverEnd(documents, runId) {
274
+ const run = this.runs.get(runId);
275
+ run?.handle?.end({
276
+ output: this.options.recordOutputs === false ? undefined : documents,
277
+ retrievalDocuments: this.options.recordOutputs === false ? undefined : documents,
278
+ });
279
+ this.runs.delete(runId);
280
+ }
281
+ handleRetrieverError(error, runId) {
282
+ const run = this.runs.get(runId);
283
+ run?.handle?.end({ status: "ERROR", error: errorMessage(error) });
284
+ this.runs.delete(runId);
285
+ }
286
+ }
287
+ exports.LemmaLangChainCallbackHandler = LemmaLangChainCallbackHandler;
288
+ exports.LangChainCallbackHandler = LemmaLangChainCallbackHandler;
289
+ function langChain(options = {}) {
290
+ return new LemmaLangChainCallbackHandler(options);
291
+ }
292
+ function langGraph(options = {}) {
293
+ return langChain({ agentName: "langgraph-agent", ...options });
294
+ }
295
+ //# sourceMappingURL=langchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.js","sourceRoot":"","sources":["../src/langchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ChatOpenAI } from "@langchain/openai";
2
+ import { HumanMessage } from "@langchain/core/messages";
3
+ import { langChain } from "@uselemma/tracing";
4
+
5
+ const lemmaCallbacks = [langChain({ agentName: "support-agent" })];
6
+
7
+ export async function callLangChain(userMessage: string) {
8
+ const model = new ChatOpenAI({
9
+ model: "gpt-4o",
10
+ callbacks: lemmaCallbacks,
11
+ });
12
+
13
+ const response = await model.invoke([new HumanMessage(userMessage)]);
14
+ return response.content;
15
+ }
@@ -0,0 +1,24 @@
1
+ import { StateGraph, START, END } from "@langchain/langgraph";
2
+ import { langGraph } from "@uselemma/tracing";
3
+
4
+ type GraphState = {
5
+ input: string;
6
+ output?: string;
7
+ };
8
+
9
+ const graph = new StateGraph<GraphState>()
10
+ .addNode("answer", async (state) => ({
11
+ output: `You said: ${state.input}`,
12
+ }))
13
+ .addEdge(START, "answer")
14
+ .addEdge("answer", END)
15
+ .compile();
16
+
17
+ export async function callLangGraph(userMessage: string) {
18
+ const result = await graph.invoke(
19
+ { input: userMessage },
20
+ { callbacks: [langGraph({ agentName: "support-graph" })] },
21
+ );
22
+
23
+ return result.output;
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uselemma/tracing",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "HTTP tracing SDK for Lemma",
5
5
  "license": "MIT",
6
6
  "author": "Lemma",