@argosvix/sdk 0.4.12-alpha.0 → 0.4.13-alpha.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 +32 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/langchainCallback.d.ts +90 -0
- package/dist/langchainCallback.d.ts.map +1 -0
- package/dist/langchainCallback.js +236 -0
- package/dist/langchainCallback.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -234,6 +234,38 @@ Notes:
|
|
|
234
234
|
A stream that the consumer cancels mid-way is not recorded (token usage is only final at the
|
|
235
235
|
stream's `finish`).
|
|
236
236
|
|
|
237
|
+
## LangChain.js
|
|
238
|
+
|
|
239
|
+
If your app uses LangChain.js, attach `argosvixLangChainHandler()` as a callback. Every LLM call
|
|
240
|
+
made through LangChain — including calls issued inside chains and agents — is recorded: provider,
|
|
241
|
+
model, tokens, cost, latency, TTFT (streaming), cache and reasoning tokens.
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
import { ChatOpenAI } from "@langchain/openai";
|
|
245
|
+
import { argosvixLangChainHandler, flushClient } from "@argosvix/sdk";
|
|
246
|
+
|
|
247
|
+
const handler = argosvixLangChainHandler({ apiKey: process.env.ARGOSVIX_API_KEY });
|
|
248
|
+
const model = new ChatOpenAI({ model: "gpt-5.5" });
|
|
249
|
+
|
|
250
|
+
try {
|
|
251
|
+
// Per-call:
|
|
252
|
+
await model.invoke("Summarize this PR.", { callbacks: [handler] });
|
|
253
|
+
// Or attach once at construction: new ChatOpenAI({ ..., callbacks: [handler] });
|
|
254
|
+
} finally {
|
|
255
|
+
await flushClient(handler); // or: await handler.flush()
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Notes:
|
|
260
|
+
- Supported providers are the same four as `wrap()` (OpenAI / Anthropic / Google Gemini /
|
|
261
|
+
Mistral). The handler maps the LangChain model class (e.g. `ChatOpenAI`, `ChatAnthropic`,
|
|
262
|
+
`ChatGoogleGenerativeAI`, `ChatMistralAI`) to the right pricing table. Other providers run
|
|
263
|
+
normally but are not recorded — pass `config.provider` to force a mapping.
|
|
264
|
+
- Token usage is read from the standard `usage_metadata` on the message (with `llmOutput.tokenUsage`
|
|
265
|
+
as a fallback), so cache/reasoning breakdowns are captured where the provider reports them.
|
|
266
|
+
- Budget / policy gates and automatic trace grouping (`withTrace`) apply here too.
|
|
267
|
+
- Recording is best-effort: a callback never throws into your LangChain run.
|
|
268
|
+
|
|
237
269
|
## Automatic trace grouping
|
|
238
270
|
|
|
239
271
|
Wrap a unit of work in `withTrace` and every wrapped LLM call inside it is grouped under one
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { wrap, getRecorder } from "./client.js";
|
|
2
2
|
export { argosvixMiddleware } from "./aiSdkMiddleware.js";
|
|
3
3
|
export type { ArgosvixAiSdkMiddleware } from "./aiSdkMiddleware.js";
|
|
4
|
+
export { argosvixLangChainHandler } from "./langchainCallback.js";
|
|
5
|
+
export type { ArgosvixLangChainHandler } from "./langchainCallback.js";
|
|
4
6
|
export { withTrace, withSpan, observe, getAmbientTraceContext } from "./context.js";
|
|
5
7
|
export type { TraceContext } from "./context.js";
|
|
6
8
|
export type { ObservationRecord, ObservationType } from "./types.js";
|
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,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { wrap, getRecorder } from "./client.js";
|
|
2
2
|
export { argosvixMiddleware } from "./aiSdkMiddleware.js";
|
|
3
|
+
export { argosvixLangChainHandler } from "./langchainCallback.js";
|
|
3
4
|
export { withTrace, withSpan, observe, getAmbientTraceContext } from "./context.js";
|
|
4
5
|
export { Recorder } from "./recorder.js";
|
|
5
6
|
export { RuntimeGate, BudgetGate, ArgosvixBudgetExceededError, ArgosvixBudgetGateUnavailableError, ArgosvixPolicyViolationError, } from "./budgetGate.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kCAAkC,EAClC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ArgosvixConfig } from "./types.js";
|
|
2
|
+
import { Recorder } from "./recorder.js";
|
|
3
|
+
/**
|
|
4
|
+
* 監査 Tier 2 = LangChain.js 統合 (コールバックハンドラ)。
|
|
5
|
+
*
|
|
6
|
+
* `argosvixLangChainHandler()` は LangChain の `callbacks` 配列に渡せる
|
|
7
|
+
* コールバックハンドラを返す。 model.invoke / chain / agent の `{ callbacks: [...] }`
|
|
8
|
+
* に入れると、 LangChain 経由の全 LLM 呼び出し (= chain や agent が内部発行する
|
|
9
|
+
* 呼び出しも含む) を観測する: provider / model / tokens / cost / latency / TTFT /
|
|
10
|
+
* cache / reasoning。
|
|
11
|
+
*
|
|
12
|
+
* LangChain へのハード依存は持たない (= `@langchain/core` を import しない)。
|
|
13
|
+
* LangChain は BaseCallbackHandler インスタンスでなくとも、 ハンドラメソッドを
|
|
14
|
+
* 持つ素のオブジェクトを `callbacks` に受け付ける。
|
|
15
|
+
*
|
|
16
|
+
* 設計方針は AI SDK ミドルウェアと同じ: 観測コードは決してホストの呼び出しを
|
|
17
|
+
* 壊さない (= 記録は best-effort)。
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* import { ChatOpenAI } from "@langchain/openai";
|
|
21
|
+
* import { argosvixLangChainHandler, flushClient } from "@argosvix/sdk";
|
|
22
|
+
*
|
|
23
|
+
* const handler = argosvixLangChainHandler({ apiKey: process.env.ARGOSVIX_API_KEY });
|
|
24
|
+
* const model = new ChatOpenAI({ model: "gpt-5.5" });
|
|
25
|
+
* try {
|
|
26
|
+
* await model.invoke("hi", { callbacks: [handler] });
|
|
27
|
+
* } finally {
|
|
28
|
+
* await flushClient(handler); // or: await handler.flush()
|
|
29
|
+
* }
|
|
30
|
+
*/
|
|
31
|
+
interface LcSerialized {
|
|
32
|
+
id?: unknown;
|
|
33
|
+
name?: unknown;
|
|
34
|
+
}
|
|
35
|
+
interface LcExtraParams {
|
|
36
|
+
invocation_params?: {
|
|
37
|
+
model?: unknown;
|
|
38
|
+
model_name?: unknown;
|
|
39
|
+
modelName?: unknown;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
interface LcUsageMetadata {
|
|
43
|
+
input_tokens?: number;
|
|
44
|
+
output_tokens?: number;
|
|
45
|
+
total_tokens?: number;
|
|
46
|
+
input_token_details?: {
|
|
47
|
+
cache_read?: number;
|
|
48
|
+
cache_creation?: number;
|
|
49
|
+
};
|
|
50
|
+
output_token_details?: {
|
|
51
|
+
reasoning?: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
interface LcLLMResult {
|
|
55
|
+
generations?: Array<Array<{
|
|
56
|
+
message?: {
|
|
57
|
+
usage_metadata?: LcUsageMetadata;
|
|
58
|
+
};
|
|
59
|
+
} | undefined> | undefined>;
|
|
60
|
+
llmOutput?: {
|
|
61
|
+
model_name?: unknown;
|
|
62
|
+
tokenUsage?: {
|
|
63
|
+
promptTokens?: number;
|
|
64
|
+
completionTokens?: number;
|
|
65
|
+
totalTokens?: number;
|
|
66
|
+
};
|
|
67
|
+
usage?: {
|
|
68
|
+
promptTokens?: number;
|
|
69
|
+
completionTokens?: number;
|
|
70
|
+
totalTokens?: number;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* LangChain のハンドラオブジェクト型 (= callbacks 配列に渡せる素のオブジェクト)。
|
|
76
|
+
* flush() / recorder を直接公開する (flushClient(handler) も可)。
|
|
77
|
+
*/
|
|
78
|
+
export interface ArgosvixLangChainHandler {
|
|
79
|
+
name: string;
|
|
80
|
+
handleLLMStart: (llm: LcSerialized, prompts: unknown, runId: string, parentRunId?: string, extraParams?: LcExtraParams) => void;
|
|
81
|
+
handleChatModelStart: (llm: LcSerialized, messages: unknown, runId: string, parentRunId?: string, extraParams?: LcExtraParams) => void;
|
|
82
|
+
handleLLMNewToken: (token: string, idx?: unknown, runId?: string) => void;
|
|
83
|
+
handleLLMEnd: (output: LcLLMResult, runId: string) => void;
|
|
84
|
+
handleLLMError: (err: unknown, runId: string) => void;
|
|
85
|
+
flush: () => Promise<void>;
|
|
86
|
+
readonly recorder: Recorder;
|
|
87
|
+
}
|
|
88
|
+
export declare function argosvixLangChainHandler(config?: ArgosvixConfig): ArgosvixLangChainHandler;
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=langchainCallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchainCallback.d.ts","sourceRoot":"","sources":["../src/langchainCallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,YAAY,CAAC;AAK1E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,iBAAiB,CAAC,EAAE;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,oBAAoB,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,KAAK,CACjB,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,cAAc,CAAC,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAC,GAAG,SAAS,CAClF,CAAC;IACF,SAAS,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACxF,KAAK,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACpF,CAAC;CACH;AAYD;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAChI,oBAAoB,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACvI,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAiHD,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,cAAmB,GAC1B,wBAAwB,CA+I1B"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { _registerRecorderFor } from "./client.js";
|
|
2
|
+
import { _registerObservationSink, getAmbientTraceContext } from "./context.js";
|
|
3
|
+
import { generateId } from "./ids.js";
|
|
4
|
+
import { calculateCostWithCache } from "./pricing.js";
|
|
5
|
+
import { Recorder } from "./recorder.js";
|
|
6
|
+
/** 記録は best-effort。 ここで投げてもホストの呼び出しを壊さない。 */
|
|
7
|
+
function safeRun(fn) {
|
|
8
|
+
try {
|
|
9
|
+
fn();
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
console.error("[argosvix] LangChain handler recording failed (non-fatal):", err);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* LangChain の serialized id (例 ["langchain","chat_models","openai","ChatOpenAI"])
|
|
18
|
+
* や class 名から Argosvix の 4 provider へ寄せる。 セグメント完全一致を主判定に
|
|
19
|
+
* して substring 誤判定を避ける。 最後のセグメント (= class 名、 例 ChatOpenAI) は
|
|
20
|
+
* 補助的に includes 判定する (= class 名しか持たない独自 wrapper も拾うため。 副作用
|
|
21
|
+
* として class 名に provider 名を含む独自クラスは寄せられる)。 該当なし = null
|
|
22
|
+
* (= backend の厳格 enum 検証に合わせ fabricate せず記録をスキップ。 config.provider で上書き可)。
|
|
23
|
+
*/
|
|
24
|
+
function mapProvider(llm) {
|
|
25
|
+
const segments = [];
|
|
26
|
+
if (llm && Array.isArray(llm.id)) {
|
|
27
|
+
for (const s of llm.id)
|
|
28
|
+
if (typeof s === "string")
|
|
29
|
+
segments.push(s.toLowerCase());
|
|
30
|
+
}
|
|
31
|
+
if (llm && typeof llm.name === "string")
|
|
32
|
+
segments.push(llm.name.toLowerCase());
|
|
33
|
+
const has = (...keys) => segments.some((seg) => keys.some((k) => seg === k));
|
|
34
|
+
// class 名 (ChatOpenAI 等) は prefix 判定で拾う
|
|
35
|
+
const cls = segments[segments.length - 1] ?? "";
|
|
36
|
+
if (has("openai", "azure_openai", "azureopenai") || cls.includes("openai"))
|
|
37
|
+
return "openai";
|
|
38
|
+
if (has("anthropic") || cls.includes("anthropic"))
|
|
39
|
+
return "anthropic";
|
|
40
|
+
if (has("google_genai", "google_vertexai", "googlegenerativeai", "google", "vertexai") ||
|
|
41
|
+
cls.includes("google") ||
|
|
42
|
+
cls.includes("gemini") ||
|
|
43
|
+
cls.includes("vertex")) {
|
|
44
|
+
return "gemini";
|
|
45
|
+
}
|
|
46
|
+
if (has("mistralai", "mistral") || cls.includes("mistral"))
|
|
47
|
+
return "mistral";
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function resolveModel(extraParams) {
|
|
51
|
+
const ip = extraParams?.invocation_params;
|
|
52
|
+
const cand = ip?.model ?? ip?.model_name ?? ip?.modelName;
|
|
53
|
+
return typeof cand === "string" && cand.length > 0 ? cand : "unknown";
|
|
54
|
+
}
|
|
55
|
+
/** LLMResult から正規化トークンを取り出す。 usage_metadata (標準) を優先、 無ければ llmOutput.tokenUsage。 */
|
|
56
|
+
function extractTokens(output) {
|
|
57
|
+
// model 名は token source に関わらず llmOutput.model_name から拾う (= start の
|
|
58
|
+
// invocation_params が無い integration でも model 不明 → cost 0 にならないように)。
|
|
59
|
+
const modelName = typeof output.llmOutput?.model_name === "string" ? output.llmOutput.model_name : undefined;
|
|
60
|
+
const modelSpread = modelName !== undefined ? { modelName } : {};
|
|
61
|
+
// 標準 usage_metadata = AIMessage に載る provider 横断の正規化形
|
|
62
|
+
const meta = output.generations?.[0]?.[0]?.message?.usage_metadata;
|
|
63
|
+
if (meta && (typeof meta.input_tokens === "number" || typeof meta.output_tokens === "number")) {
|
|
64
|
+
const promptTokens = meta.input_tokens ?? 0;
|
|
65
|
+
const completionTokens = meta.output_tokens ?? 0;
|
|
66
|
+
return {
|
|
67
|
+
promptTokens,
|
|
68
|
+
completionTokens,
|
|
69
|
+
totalTokens: meta.total_tokens ?? promptTokens + completionTokens,
|
|
70
|
+
cachedReadTokens: meta.input_token_details?.cache_read ?? 0,
|
|
71
|
+
cachedWriteTokens: meta.input_token_details?.cache_creation ?? 0,
|
|
72
|
+
reasoningTokens: meta.output_token_details?.reasoning ?? 0,
|
|
73
|
+
...modelSpread,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// fallback = OpenAI 形 llmOutput.tokenUsage
|
|
77
|
+
const tu = output.llmOutput?.tokenUsage ?? output.llmOutput?.usage;
|
|
78
|
+
const promptTokens = tu?.promptTokens ?? 0;
|
|
79
|
+
const completionTokens = tu?.completionTokens ?? 0;
|
|
80
|
+
return {
|
|
81
|
+
promptTokens,
|
|
82
|
+
completionTokens,
|
|
83
|
+
totalTokens: tu?.totalTokens ?? promptTokens + completionTokens,
|
|
84
|
+
cachedReadTokens: 0,
|
|
85
|
+
cachedWriteTokens: 0,
|
|
86
|
+
reasoningTokens: 0,
|
|
87
|
+
...modelSpread,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
let warnedUnsupported = null;
|
|
91
|
+
function warnUnsupported(llm) {
|
|
92
|
+
const label = llm && Array.isArray(llm.id)
|
|
93
|
+
? llm.id.filter((s) => typeof s === "string").join(".")
|
|
94
|
+
: typeof llm?.name === "string"
|
|
95
|
+
? llm.name
|
|
96
|
+
: "unknown";
|
|
97
|
+
if (warnedUnsupported === null)
|
|
98
|
+
warnedUnsupported = new Set();
|
|
99
|
+
if (warnedUnsupported.has(label))
|
|
100
|
+
return;
|
|
101
|
+
warnedUnsupported.add(label);
|
|
102
|
+
// eslint-disable-next-line no-console
|
|
103
|
+
console.warn(`[argosvix] LangChain model "${label}" is not one of openai/anthropic/gemini/mistral; ` +
|
|
104
|
+
`the call runs normally but is not recorded. Pass config.provider to override.`);
|
|
105
|
+
}
|
|
106
|
+
export function argosvixLangChainHandler(config = {}) {
|
|
107
|
+
const recorder = new Recorder(config);
|
|
108
|
+
_registerObservationSink(recorder);
|
|
109
|
+
const callTags = { ...(config.tags ?? {}) };
|
|
110
|
+
// runId ごとの開始状態 (= start で登録、 end/error で消費・削除)。
|
|
111
|
+
const runs = new Map();
|
|
112
|
+
// abort などで end/error が来ない run が溜まり続けないよう上限を設ける
|
|
113
|
+
// (= Map は挿入順を保つので、 超過時は最古を FIFO 退避)。
|
|
114
|
+
const MAX_PENDING_RUNS = 10000;
|
|
115
|
+
function buildTraceMeta() {
|
|
116
|
+
const meta = {};
|
|
117
|
+
const ambient = config.autoContext === false ? undefined : getAmbientTraceContext();
|
|
118
|
+
const traceId = config.traceId ?? ambient?.traceId;
|
|
119
|
+
if (traceId) {
|
|
120
|
+
meta.traceId = traceId;
|
|
121
|
+
meta.spanId = config.spanId ?? generateId();
|
|
122
|
+
const parent = config.parentSpanId ?? ambient?.spanId;
|
|
123
|
+
if (parent)
|
|
124
|
+
meta.parentSpanId = parent;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
if (config.spanId)
|
|
128
|
+
meta.spanId = config.spanId;
|
|
129
|
+
if (config.parentSpanId)
|
|
130
|
+
meta.parentSpanId = config.parentSpanId;
|
|
131
|
+
}
|
|
132
|
+
if (config.sessionId)
|
|
133
|
+
meta.sessionId = config.sessionId;
|
|
134
|
+
return meta;
|
|
135
|
+
}
|
|
136
|
+
function onStart(llm, runId, extraParams) {
|
|
137
|
+
const provider = config.provider ?? mapProvider(llm);
|
|
138
|
+
if (provider === null) {
|
|
139
|
+
warnUnsupported(llm);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (runs.size >= MAX_PENDING_RUNS) {
|
|
143
|
+
const oldest = runs.keys().next().value;
|
|
144
|
+
if (oldest !== undefined)
|
|
145
|
+
runs.delete(oldest);
|
|
146
|
+
}
|
|
147
|
+
runs.set(runId, {
|
|
148
|
+
start: Date.now(),
|
|
149
|
+
model: resolveModel(extraParams),
|
|
150
|
+
provider,
|
|
151
|
+
traceMeta: buildTraceMeta(),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
const handler = {
|
|
155
|
+
name: "argosvix_handler",
|
|
156
|
+
handleLLMStart(llm, _prompts, runId, _parentRunId, extraParams) {
|
|
157
|
+
safeRun(() => onStart(llm, runId, extraParams));
|
|
158
|
+
},
|
|
159
|
+
handleChatModelStart(llm, _messages, runId, _parentRunId, extraParams) {
|
|
160
|
+
safeRun(() => onStart(llm, runId, extraParams));
|
|
161
|
+
},
|
|
162
|
+
handleLLMNewToken(_token, _idx, runId) {
|
|
163
|
+
safeRun(() => {
|
|
164
|
+
if (!runId)
|
|
165
|
+
return;
|
|
166
|
+
const state = runs.get(runId);
|
|
167
|
+
if (state && state.ttftMs === undefined) {
|
|
168
|
+
state.ttftMs = Date.now() - state.start;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
handleLLMEnd(output, runId) {
|
|
173
|
+
const state = runs.get(runId);
|
|
174
|
+
if (!state)
|
|
175
|
+
return; // 未対応 provider 等で start が無い
|
|
176
|
+
runs.delete(runId);
|
|
177
|
+
safeRun(() => {
|
|
178
|
+
const t = extractTokens(output);
|
|
179
|
+
const model = t.modelName ?? state.model;
|
|
180
|
+
const cost = calculateCostWithCache(state.provider, model, t.promptTokens, t.completionTokens, t.cachedReadTokens, t.cachedWriteTokens);
|
|
181
|
+
const record = {
|
|
182
|
+
id: generateId(),
|
|
183
|
+
provider: state.provider,
|
|
184
|
+
model,
|
|
185
|
+
promptTokens: t.promptTokens,
|
|
186
|
+
completionTokens: t.completionTokens,
|
|
187
|
+
totalTokens: t.totalTokens,
|
|
188
|
+
costUsd: cost.costUsd,
|
|
189
|
+
latencyMs: Date.now() - state.start,
|
|
190
|
+
timestamp: new Date().toISOString(),
|
|
191
|
+
tags: callTags,
|
|
192
|
+
...state.traceMeta,
|
|
193
|
+
...(t.cachedReadTokens > 0 ? { cachedReadTokens: t.cachedReadTokens } : {}),
|
|
194
|
+
...(t.cachedWriteTokens > 0 ? { cachedWriteTokens: t.cachedWriteTokens } : {}),
|
|
195
|
+
...(cost.cacheSavingsUsd > 0 ? { cacheSavingsUsd: cost.cacheSavingsUsd } : {}),
|
|
196
|
+
...(t.reasoningTokens > 0 ? { reasoningTokens: t.reasoningTokens } : {}),
|
|
197
|
+
...(state.ttftMs !== undefined ? { ttftMs: state.ttftMs } : {}),
|
|
198
|
+
};
|
|
199
|
+
recorder.record(record);
|
|
200
|
+
});
|
|
201
|
+
},
|
|
202
|
+
handleLLMError(err, runId) {
|
|
203
|
+
const state = runs.get(runId);
|
|
204
|
+
if (!state)
|
|
205
|
+
return;
|
|
206
|
+
runs.delete(runId);
|
|
207
|
+
safeRun(() => recorder.record({
|
|
208
|
+
id: generateId(),
|
|
209
|
+
provider: state.provider,
|
|
210
|
+
model: state.model,
|
|
211
|
+
promptTokens: 0,
|
|
212
|
+
completionTokens: 0,
|
|
213
|
+
totalTokens: 0,
|
|
214
|
+
costUsd: 0,
|
|
215
|
+
latencyMs: Date.now() - state.start,
|
|
216
|
+
timestamp: new Date().toISOString(),
|
|
217
|
+
tags: callTags,
|
|
218
|
+
...state.traceMeta,
|
|
219
|
+
error: err instanceof Error ? err.message : String(err),
|
|
220
|
+
}));
|
|
221
|
+
},
|
|
222
|
+
async flush() {
|
|
223
|
+
try {
|
|
224
|
+
await recorder.flush();
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
// eslint-disable-next-line no-console
|
|
228
|
+
console.error("[argosvix] LangChain handler flush failed:", err);
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
recorder,
|
|
232
|
+
};
|
|
233
|
+
_registerRecorderFor(handler, recorder);
|
|
234
|
+
return handler;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=langchainCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchainCallback.js","sourceRoot":"","sources":["../src/langchainCallback.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@argosvix/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.13-alpha.0",
|
|
4
4
|
"description": "Drop-in observability wrapper for OpenAI, Anthropic, Gemini, Mistral SDK clients. One-line wrap() = cost / latency / quality records.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"argosvix",
|