agentmetrics-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/package.json +48 -45
- package/src/callback.ts +15 -44
- package/dist/callback.d.ts +0 -31
- package/dist/callback.d.ts.map +0 -1
- package/dist/callback.js +0 -247
- package/dist/callback.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,45 +1,48 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "agentmetrics-langchain",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"description": "AgentMetrics observability integration for LangChain.js",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"homepage": "https://github.com/andalabx/agentmetrics",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/andalabx/agentmetrics.git"
|
|
11
|
-
},
|
|
12
|
-
"keywords": [
|
|
13
|
-
"langchain",
|
|
14
|
-
"agentmetrics",
|
|
15
|
-
"observability",
|
|
16
|
-
"ai-agents",
|
|
17
|
-
"monitoring"
|
|
18
|
-
],
|
|
19
|
-
"exports": {
|
|
20
|
-
".": {
|
|
21
|
-
"import": "./dist/index.js",
|
|
22
|
-
"types": "./dist/index.d.ts"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"main": "./dist/index.js",
|
|
26
|
-
"types": "./dist/index.d.ts",
|
|
27
|
-
"files": [
|
|
28
|
-
"dist",
|
|
29
|
-
"src"
|
|
30
|
-
],
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "
|
|
33
|
-
"prepublishOnly": "npm run build"
|
|
34
|
-
},
|
|
35
|
-
"peerDependencies": {
|
|
36
|
-
"@langchain/core": ">=0.2.0"
|
|
37
|
-
},
|
|
38
|
-
"devDependencies": {
|
|
39
|
-
"@
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
}
|
|
45
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "agentmetrics-langchain",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "AgentMetrics observability integration for LangChain.js",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/andalabx/agentmetrics",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/andalabx/agentmetrics.git"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"langchain",
|
|
14
|
+
"agentmetrics",
|
|
15
|
+
"observability",
|
|
16
|
+
"ai-agents",
|
|
17
|
+
"monitoring"
|
|
18
|
+
],
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"import": "./dist/index.js",
|
|
22
|
+
"types": "./dist/index.d.ts"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"files": [
|
|
28
|
+
"dist",
|
|
29
|
+
"src"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --no-splitting --external @langchain/core",
|
|
33
|
+
"prepublishOnly": "npm run build"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@langchain/core": ">=0.2.0"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@agentmetrics/core": "workspace:*",
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"@langchain/core": ">=0.2.0",
|
|
42
|
+
"tsup": "^8.0.0",
|
|
43
|
+
"typescript": "^5.0.0"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18"
|
|
47
|
+
}
|
|
48
|
+
}
|
package/src/callback.ts
CHANGED
|
@@ -3,40 +3,8 @@ import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
|
3
3
|
import type { Serialized } from "@langchain/core/load/serializable";
|
|
4
4
|
import type { LLMResult } from "@langchain/core/outputs";
|
|
5
5
|
import type { ChainValues } from "@langchain/core/utils/types";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const PRICING: Record<string, [number, number, number, number]> = {
|
|
9
|
-
// [input, output, cache_read, cache_write]
|
|
10
|
-
"gpt-4o": [2.50, 10.00, 1.25, 0],
|
|
11
|
-
"gpt-4o-mini": [0.15, 0.60, 0.075, 0],
|
|
12
|
-
"gpt-4-turbo": [10.00, 30.00, 0, 0],
|
|
13
|
-
"gpt-3.5-turbo": [0.50, 1.50, 0, 0],
|
|
14
|
-
"claude-3-5-sonnet-20241022":[3.00, 15.00, 0.30, 3.75],
|
|
15
|
-
"claude-3-5-haiku-20241022": [0.80, 4.00, 0.08, 1.00],
|
|
16
|
-
"claude-3-opus-20240229": [15.00, 75.00, 1.50, 18.75],
|
|
17
|
-
"claude-sonnet-4-6": [3.00, 15.00, 0.30, 3.75],
|
|
18
|
-
"claude-opus-4-7": [15.00, 75.00, 1.50, 18.75],
|
|
19
|
-
"claude-haiku-4-5-20251001": [0.80, 4.00, 0.08, 1.00],
|
|
20
|
-
"gemini-1.5-pro": [1.25, 5.00, 0, 0],
|
|
21
|
-
"gemini-1.5-flash": [0.075, 0.30, 0, 0],
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
function estimateCost(
|
|
25
|
-
model: string | null,
|
|
26
|
-
inputTokens: number,
|
|
27
|
-
outputTokens: number,
|
|
28
|
-
cacheReadTokens: number,
|
|
29
|
-
cacheWriteTokens: number,
|
|
30
|
-
): number | null {
|
|
31
|
-
if (!model) return null;
|
|
32
|
-
const key = Object.keys(PRICING).find(k => model.startsWith(k)) ?? null;
|
|
33
|
-
if (!key) return null;
|
|
34
|
-
const [ip, op, cr, cw] = PRICING[key];
|
|
35
|
-
return (
|
|
36
|
-
(inputTokens * ip + outputTokens * op +
|
|
37
|
-
cacheReadTokens * cr + cacheWriteTokens * cw) / 1_000_000
|
|
38
|
-
);
|
|
39
|
-
}
|
|
6
|
+
import type { AgentEndEvent } from "@agentmetrics/core";
|
|
7
|
+
import { estimateCost as sharedEstimateCost } from "@agentmetrics/core";
|
|
40
8
|
|
|
41
9
|
|
|
42
10
|
const MAX_RETRY_ATTEMPTS = 3;
|
|
@@ -48,7 +16,7 @@ function sleep(ms: number): Promise<void> {
|
|
|
48
16
|
async function sendWithRetry(
|
|
49
17
|
url: string,
|
|
50
18
|
apiKey: string,
|
|
51
|
-
payload:
|
|
19
|
+
payload: object,
|
|
52
20
|
): Promise<void> {
|
|
53
21
|
const body = JSON.stringify(payload);
|
|
54
22
|
for (let attempt = 0; attempt < MAX_RETRY_ATTEMPTS; attempt++) {
|
|
@@ -300,12 +268,15 @@ export class AgentMetricsCallback extends BaseCallbackHandler {
|
|
|
300
268
|
}
|
|
301
269
|
|
|
302
270
|
const durationMs = performance.now() - run.startMs;
|
|
303
|
-
const est =
|
|
304
|
-
run.model
|
|
305
|
-
run.
|
|
271
|
+
const est = sharedEstimateCost(
|
|
272
|
+
run.model ?? undefined,
|
|
273
|
+
run.inputTokens,
|
|
274
|
+
run.outputTokens,
|
|
275
|
+
run.cacheReadTokens,
|
|
276
|
+
run.cacheWriteTokens,
|
|
306
277
|
);
|
|
307
278
|
|
|
308
|
-
const payload:
|
|
279
|
+
const payload: AgentEndEvent = {
|
|
309
280
|
event_id: randomUUID(),
|
|
310
281
|
trace_id: runId,
|
|
311
282
|
agent_id: run.agentId,
|
|
@@ -321,12 +292,12 @@ export class AgentMetricsCallback extends BaseCallbackHandler {
|
|
|
321
292
|
llm_calls: run.llmCalls,
|
|
322
293
|
input_tokens: run.inputTokens,
|
|
323
294
|
output_tokens: run.outputTokens,
|
|
295
|
+
...(run.model ? { model: run.model } : {}),
|
|
296
|
+
...(run.error ? { error: run.error } : {}),
|
|
297
|
+
...(run.cacheReadTokens ? { cache_read_tokens: run.cacheReadTokens } : {}),
|
|
298
|
+
...(run.cacheWriteTokens ? { cache_write_tokens: run.cacheWriteTokens } : {}),
|
|
299
|
+
...(est != null ? { estimated_cost_usd: est } : {}),
|
|
324
300
|
};
|
|
325
|
-
if (run.model) payload["model"] = run.model;
|
|
326
|
-
if (run.error) payload["error"] = run.error;
|
|
327
|
-
if (run.cacheReadTokens) payload["cache_read_tokens"] = run.cacheReadTokens;
|
|
328
|
-
if (run.cacheWriteTokens) payload["cache_write_tokens"] = run.cacheWriteTokens;
|
|
329
|
-
if (est !== null) payload["estimated_cost_usd"] = est;
|
|
330
301
|
|
|
331
302
|
// fire-and-forget: don't block the caller
|
|
332
303
|
sendWithRetry(this._baseUrl, this._apiKey, payload).catch(() => {});
|
package/dist/callback.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
2
|
-
import type { Serialized } from "@langchain/core/load/serializable";
|
|
3
|
-
import type { LLMResult } from "@langchain/core/outputs";
|
|
4
|
-
import type { ChainValues } from "@langchain/core/utils/types";
|
|
5
|
-
export declare class AgentMetricsCallback extends BaseCallbackHandler {
|
|
6
|
-
name: string;
|
|
7
|
-
private readonly _apiKey;
|
|
8
|
-
private readonly _agentId;
|
|
9
|
-
private readonly _baseUrl;
|
|
10
|
-
private readonly _runs;
|
|
11
|
-
private readonly _parentMap;
|
|
12
|
-
private readonly _pendingToolNames;
|
|
13
|
-
constructor(opts: {
|
|
14
|
-
apiKey: string;
|
|
15
|
-
agentId?: string;
|
|
16
|
-
baseUrl?: string;
|
|
17
|
-
});
|
|
18
|
-
handleChainStart(_serialized: Serialized, _inputs: ChainValues, runId: string, parentRunId?: string): Promise<void>;
|
|
19
|
-
handleChainEnd(_outputs: ChainValues, runId: string, parentRunId?: string): Promise<void>;
|
|
20
|
-
handleChainError(err: Error, runId: string, parentRunId?: string): Promise<void>;
|
|
21
|
-
handleLLMStart(_llm: Serialized, _prompts: string[], runId: string, parentRunId?: string): Promise<void>;
|
|
22
|
-
handleChatModelStart(_llm: Serialized, _messages: unknown[][], runId: string, parentRunId?: string): Promise<void>;
|
|
23
|
-
handleLLMEnd(output: LLMResult, runId: string): Promise<void>;
|
|
24
|
-
handleLLMError(_err: Error, _runId: string): Promise<void>;
|
|
25
|
-
handleToolStart(serialized: Serialized, _input: string, runId: string, parentRunId?: string): Promise<void>;
|
|
26
|
-
handleToolEnd(_output: unknown, runId: string): Promise<void>;
|
|
27
|
-
handleToolError(err: Error, runId: string): Promise<void>;
|
|
28
|
-
private _findTopRun;
|
|
29
|
-
private _emit;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=callback.d.ts.map
|
package/dist/callback.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../src/callback.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,WAAW,EAAE,MAAM,6BAA6B,CAAC;AA2G/D,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,IAAI,SAAkB;IAEtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAGnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAE1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;gBAEnD,IAAI,EAAE;QAChB,MAAM,EAAI,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAQK,gBAAgB,CACpB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAClB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAMV,gBAAgB,CACpB,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAYV,cAAc,CAClB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAIV,oBAAoB,CACxB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,OAAO,EAAE,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAIV,YAAY,CAChB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAuCV,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,eAAe,CACnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAQV,aAAa,CACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;IAUV,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,OAAO,CAAC,WAAW;YAYL,KAAK;CA0CpB"}
|
package/dist/callback.js
DELETED
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "crypto";
|
|
2
|
-
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
|
|
3
|
-
const PRICING = {
|
|
4
|
-
// [input, output, cache_read, cache_write]
|
|
5
|
-
"gpt-4o": [2.50, 10.00, 1.25, 0],
|
|
6
|
-
"gpt-4o-mini": [0.15, 0.60, 0.075, 0],
|
|
7
|
-
"gpt-4-turbo": [10.00, 30.00, 0, 0],
|
|
8
|
-
"gpt-3.5-turbo": [0.50, 1.50, 0, 0],
|
|
9
|
-
"claude-3-5-sonnet-20241022": [3.00, 15.00, 0.30, 3.75],
|
|
10
|
-
"claude-3-5-haiku-20241022": [0.80, 4.00, 0.08, 1.00],
|
|
11
|
-
"claude-3-opus-20240229": [15.00, 75.00, 1.50, 18.75],
|
|
12
|
-
"claude-sonnet-4-6": [3.00, 15.00, 0.30, 3.75],
|
|
13
|
-
"claude-opus-4-7": [15.00, 75.00, 1.50, 18.75],
|
|
14
|
-
"claude-haiku-4-5-20251001": [0.80, 4.00, 0.08, 1.00],
|
|
15
|
-
"gemini-1.5-pro": [1.25, 5.00, 0, 0],
|
|
16
|
-
"gemini-1.5-flash": [0.075, 0.30, 0, 0],
|
|
17
|
-
};
|
|
18
|
-
function estimateCost(model, inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens) {
|
|
19
|
-
if (!model)
|
|
20
|
-
return null;
|
|
21
|
-
const key = Object.keys(PRICING).find(k => model.startsWith(k)) ?? null;
|
|
22
|
-
if (!key)
|
|
23
|
-
return null;
|
|
24
|
-
const [ip, op, cr, cw] = PRICING[key];
|
|
25
|
-
return ((inputTokens * ip + outputTokens * op +
|
|
26
|
-
cacheReadTokens * cr + cacheWriteTokens * cw) / 1_000_000);
|
|
27
|
-
}
|
|
28
|
-
const MAX_RETRY_ATTEMPTS = 3;
|
|
29
|
-
function sleep(ms) {
|
|
30
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
31
|
-
}
|
|
32
|
-
async function sendWithRetry(url, apiKey, payload) {
|
|
33
|
-
const body = JSON.stringify(payload);
|
|
34
|
-
for (let attempt = 0; attempt < MAX_RETRY_ATTEMPTS; attempt++) {
|
|
35
|
-
try {
|
|
36
|
-
const res = await fetch(`${url}/v1/events`, {
|
|
37
|
-
method: "POST",
|
|
38
|
-
headers: {
|
|
39
|
-
"Content-Type": "application/json",
|
|
40
|
-
Authorization: `Bearer ${apiKey}`,
|
|
41
|
-
},
|
|
42
|
-
body,
|
|
43
|
-
});
|
|
44
|
-
if (res.ok || (res.status >= 400 && res.status < 500))
|
|
45
|
-
return;
|
|
46
|
-
if (attempt < MAX_RETRY_ATTEMPTS - 1) {
|
|
47
|
-
await sleep(Math.min(1000 * 2 ** attempt + Math.random() * 200, 10_000));
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
if (attempt < MAX_RETRY_ATTEMPTS - 1) {
|
|
52
|
-
await sleep(Math.min(1000 * 2 ** attempt + Math.random() * 200, 10_000));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function newRunState(agentId) {
|
|
58
|
-
return {
|
|
59
|
-
agentId,
|
|
60
|
-
startMs: performance.now(),
|
|
61
|
-
inputTokens: 0,
|
|
62
|
-
outputTokens: 0,
|
|
63
|
-
cacheReadTokens: 0,
|
|
64
|
-
cacheWriteTokens: 0,
|
|
65
|
-
llmCalls: 0,
|
|
66
|
-
toolCalls: 0,
|
|
67
|
-
toolErrors: 0,
|
|
68
|
-
toolNames: new Set(),
|
|
69
|
-
model: null,
|
|
70
|
-
status: "success",
|
|
71
|
-
error: null,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
export class AgentMetricsCallback extends BaseCallbackHandler {
|
|
75
|
-
name = "agentmetrics";
|
|
76
|
-
_apiKey;
|
|
77
|
-
_agentId;
|
|
78
|
-
_baseUrl;
|
|
79
|
-
// top-level run_id → RunState
|
|
80
|
-
_runs = new Map();
|
|
81
|
-
// run_id → parent run_id (ancestry chain)
|
|
82
|
-
_parentMap = new Map();
|
|
83
|
-
// tool run_id → tool name (resolved on end/error)
|
|
84
|
-
_pendingToolNames = new Map();
|
|
85
|
-
constructor(opts) {
|
|
86
|
-
super();
|
|
87
|
-
this._apiKey = opts.apiKey;
|
|
88
|
-
this._agentId = opts.agentId ?? "langchain-agent";
|
|
89
|
-
this._baseUrl = opts.baseUrl ?? "http://localhost:8099";
|
|
90
|
-
}
|
|
91
|
-
async handleChainStart(_serialized, _inputs, runId, parentRunId) {
|
|
92
|
-
if (!parentRunId) {
|
|
93
|
-
this._runs.set(runId, newRunState(this._agentId));
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this._parentMap.set(runId, parentRunId);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
async handleChainEnd(_outputs, runId, parentRunId) {
|
|
100
|
-
if (!parentRunId) {
|
|
101
|
-
await this._emit(runId);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async handleChainError(err, runId, parentRunId) {
|
|
105
|
-
if (!parentRunId) {
|
|
106
|
-
const run = this._runs.get(runId);
|
|
107
|
-
if (run) {
|
|
108
|
-
run.status = "failed";
|
|
109
|
-
run.error = String(err).slice(0, 500);
|
|
110
|
-
}
|
|
111
|
-
await this._emit(runId);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async handleLLMStart(_llm, _prompts, runId, parentRunId) {
|
|
115
|
-
if (parentRunId)
|
|
116
|
-
this._parentMap.set(runId, parentRunId);
|
|
117
|
-
}
|
|
118
|
-
async handleChatModelStart(_llm, _messages, runId, parentRunId) {
|
|
119
|
-
if (parentRunId)
|
|
120
|
-
this._parentMap.set(runId, parentRunId);
|
|
121
|
-
}
|
|
122
|
-
async handleLLMEnd(output, runId) {
|
|
123
|
-
const run = this._findTopRun(runId);
|
|
124
|
-
if (!run)
|
|
125
|
-
return;
|
|
126
|
-
run.llmCalls++;
|
|
127
|
-
// Path 1: ChatGeneration → message.usage_metadata (Anthropic / OpenAI)
|
|
128
|
-
let foundUsage = false;
|
|
129
|
-
for (const genList of output.generations) {
|
|
130
|
-
for (const gen of genList) {
|
|
131
|
-
const msg = gen.message;
|
|
132
|
-
const umeta = msg?.usage_metadata;
|
|
133
|
-
if (umeta) {
|
|
134
|
-
run.inputTokens += umeta["input_tokens"] ?? 0;
|
|
135
|
-
run.outputTokens += umeta["output_tokens"] ?? 0;
|
|
136
|
-
const details = umeta["input_token_details"] ?? {};
|
|
137
|
-
run.cacheReadTokens += details["cache_read"] ?? 0;
|
|
138
|
-
run.cacheWriteTokens += details["cache_creation"] ?? 0;
|
|
139
|
-
if (!run.model) {
|
|
140
|
-
const rmeta = msg?.response_metadata;
|
|
141
|
-
run.model = rmeta?.["model_name"] ?? rmeta?.["model"] ?? null;
|
|
142
|
-
}
|
|
143
|
-
foundUsage = true;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (foundUsage)
|
|
148
|
-
return;
|
|
149
|
-
// Path 2: llm_output dict (older/non-chat)
|
|
150
|
-
const lo = (output.llmOutput ?? {});
|
|
151
|
-
const usage = (lo["token_usage"] ?? lo["usage"] ?? {});
|
|
152
|
-
run.inputTokens += usage["prompt_tokens"] ?? 0;
|
|
153
|
-
run.outputTokens += usage["completion_tokens"] ?? 0;
|
|
154
|
-
run.cacheReadTokens += usage["cache_read_input_tokens"] ?? 0;
|
|
155
|
-
run.cacheWriteTokens += usage["cache_creation_input_tokens"] ?? 0;
|
|
156
|
-
if (!run.model) {
|
|
157
|
-
run.model = lo["model_name"] ?? lo["model"] ?? null;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async handleLLMError(_err, _runId) {
|
|
161
|
-
// LLM errors do not affect tool error counts
|
|
162
|
-
}
|
|
163
|
-
async handleToolStart(serialized, _input, runId, parentRunId) {
|
|
164
|
-
const name = serialized.name
|
|
165
|
-
?? serialized.id?.at(-1)
|
|
166
|
-
?? "unknown";
|
|
167
|
-
this._pendingToolNames.set(runId, String(name));
|
|
168
|
-
if (parentRunId)
|
|
169
|
-
this._parentMap.set(runId, parentRunId);
|
|
170
|
-
}
|
|
171
|
-
async handleToolEnd(_output, runId) {
|
|
172
|
-
const run = this._findTopRun(runId);
|
|
173
|
-
if (run) {
|
|
174
|
-
run.toolCalls++;
|
|
175
|
-
const name = this._pendingToolNames.get(runId);
|
|
176
|
-
if (name)
|
|
177
|
-
run.toolNames.add(name);
|
|
178
|
-
}
|
|
179
|
-
this._pendingToolNames.delete(runId);
|
|
180
|
-
}
|
|
181
|
-
async handleToolError(err, runId) {
|
|
182
|
-
const run = this._findTopRun(runId);
|
|
183
|
-
if (run) {
|
|
184
|
-
run.toolCalls++;
|
|
185
|
-
run.toolErrors++;
|
|
186
|
-
const name = this._pendingToolNames.get(runId);
|
|
187
|
-
if (name)
|
|
188
|
-
run.toolNames.add(name);
|
|
189
|
-
}
|
|
190
|
-
this._pendingToolNames.delete(runId);
|
|
191
|
-
}
|
|
192
|
-
_findTopRun(runId) {
|
|
193
|
-
const seen = new Set();
|
|
194
|
-
let rid = runId;
|
|
195
|
-
while (rid && !seen.has(rid)) {
|
|
196
|
-
seen.add(rid);
|
|
197
|
-
const state = this._runs.get(rid);
|
|
198
|
-
if (state)
|
|
199
|
-
return state;
|
|
200
|
-
rid = this._parentMap.get(rid);
|
|
201
|
-
}
|
|
202
|
-
return null;
|
|
203
|
-
}
|
|
204
|
-
async _emit(runId) {
|
|
205
|
-
const run = this._runs.get(runId);
|
|
206
|
-
if (!run)
|
|
207
|
-
return;
|
|
208
|
-
this._runs.delete(runId);
|
|
209
|
-
// clean up orphan parent-map entries
|
|
210
|
-
for (const [k, v] of this._parentMap) {
|
|
211
|
-
if (v === runId)
|
|
212
|
-
this._parentMap.delete(k);
|
|
213
|
-
}
|
|
214
|
-
const durationMs = performance.now() - run.startMs;
|
|
215
|
-
const est = estimateCost(run.model, run.inputTokens, run.outputTokens, run.cacheReadTokens, run.cacheWriteTokens);
|
|
216
|
-
const payload = {
|
|
217
|
-
event_id: randomUUID(),
|
|
218
|
-
trace_id: runId,
|
|
219
|
-
agent_id: run.agentId,
|
|
220
|
-
platform: "langchain",
|
|
221
|
-
event_name: "agent_end",
|
|
222
|
-
ts: Date.now(),
|
|
223
|
-
redaction_policy_version: "v1-strict",
|
|
224
|
-
status: run.status,
|
|
225
|
-
duration_ms: Math.round(durationMs * 100) / 100,
|
|
226
|
-
tool_calls: run.toolCalls,
|
|
227
|
-
tool_errors: run.toolErrors,
|
|
228
|
-
tool_names: [...run.toolNames],
|
|
229
|
-
llm_calls: run.llmCalls,
|
|
230
|
-
input_tokens: run.inputTokens,
|
|
231
|
-
output_tokens: run.outputTokens,
|
|
232
|
-
};
|
|
233
|
-
if (run.model)
|
|
234
|
-
payload["model"] = run.model;
|
|
235
|
-
if (run.error)
|
|
236
|
-
payload["error"] = run.error;
|
|
237
|
-
if (run.cacheReadTokens)
|
|
238
|
-
payload["cache_read_tokens"] = run.cacheReadTokens;
|
|
239
|
-
if (run.cacheWriteTokens)
|
|
240
|
-
payload["cache_write_tokens"] = run.cacheWriteTokens;
|
|
241
|
-
if (est !== null)
|
|
242
|
-
payload["estimated_cost_usd"] = est;
|
|
243
|
-
// fire-and-forget: don't block the caller
|
|
244
|
-
sendWithRetry(this._baseUrl, this._apiKey, payload).catch(() => { });
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
//# sourceMappingURL=callback.js.map
|
package/dist/callback.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../src/callback.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
DELETED
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|