@loongsuite/otel-util-genai 0.1.0-beta.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/LICENSE +201 -0
- package/README.md +262 -0
- package/dist/environment-variables.d.ts +8 -0
- package/dist/environment-variables.d.ts.map +1 -0
- package/dist/environment-variables.js +21 -0
- package/dist/environment-variables.js.map +1 -0
- package/dist/event-log/converter.d.ts +19 -0
- package/dist/event-log/converter.d.ts.map +1 -0
- package/dist/event-log/converter.js +216 -0
- package/dist/event-log/converter.js.map +1 -0
- package/dist/event-log/field-mapping.d.ts +53 -0
- package/dist/event-log/field-mapping.d.ts.map +1 -0
- package/dist/event-log/field-mapping.js +400 -0
- package/dist/event-log/field-mapping.js.map +1 -0
- package/dist/event-log/grouping.d.ts +67 -0
- package/dist/event-log/grouping.d.ts.map +1 -0
- package/dist/event-log/grouping.js +241 -0
- package/dist/event-log/grouping.js.map +1 -0
- package/dist/event-log/index.d.ts +5 -0
- package/dist/event-log/index.d.ts.map +1 -0
- package/dist/event-log/index.js +18 -0
- package/dist/event-log/index.js.map +1 -0
- package/dist/event-log/parent-context.d.ts +14 -0
- package/dist/event-log/parent-context.d.ts.map +1 -0
- package/dist/event-log/parent-context.js +45 -0
- package/dist/event-log/parent-context.js.map +1 -0
- package/dist/event-log/readable-spans.d.ts +36 -0
- package/dist/event-log/readable-spans.d.ts.map +1 -0
- package/dist/event-log/readable-spans.js +73 -0
- package/dist/event-log/readable-spans.js.map +1 -0
- package/dist/event-log/types.d.ts +78 -0
- package/dist/event-log/types.d.ts.map +1 -0
- package/dist/event-log/types.js +35 -0
- package/dist/event-log/types.js.map +1 -0
- package/dist/extended-environment-variables.d.ts +12 -0
- package/dist/extended-environment-variables.d.ts.map +1 -0
- package/dist/extended-environment-variables.js +25 -0
- package/dist/extended-environment-variables.js.map +1 -0
- package/dist/extended-handler.d.ts +50 -0
- package/dist/extended-handler.d.ts.map +1 -0
- package/dist/extended-handler.js +334 -0
- package/dist/extended-handler.js.map +1 -0
- package/dist/extended-metrics.d.ts +13 -0
- package/dist/extended-metrics.d.ts.map +1 -0
- package/dist/extended-metrics.js +27 -0
- package/dist/extended-metrics.js.map +1 -0
- package/dist/extended-span-utils.d.ts +14 -0
- package/dist/extended-span-utils.d.ts.map +1 -0
- package/dist/extended-span-utils.js +427 -0
- package/dist/extended-span-utils.js.map +1 -0
- package/dist/extended-types.d.ts +150 -0
- package/dist/extended-types.d.ts.map +1 -0
- package/dist/extended-types.js +46 -0
- package/dist/extended-types.js.map +1 -0
- package/dist/handler.d.ts +23 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +127 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/instruments.d.ts +4 -0
- package/dist/instruments.d.ts.map +1 -0
- package/dist/instruments.js +37 -0
- package/dist/instruments.js.map +1 -0
- package/dist/memory/memory-types.d.ts +26 -0
- package/dist/memory/memory-types.d.ts.map +1 -0
- package/dist/memory/memory-types.js +17 -0
- package/dist/memory/memory-types.js.map +1 -0
- package/dist/memory/memory-utils.d.ts +7 -0
- package/dist/memory/memory-utils.d.ts.map +1 -0
- package/dist/memory/memory-utils.js +121 -0
- package/dist/memory/memory-utils.js.map +1 -0
- package/dist/metrics.d.ts +11 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +77 -0
- package/dist/metrics.js.map +1 -0
- package/dist/semconv/gen-ai-extended-attributes.d.ts +101 -0
- package/dist/semconv/gen-ai-extended-attributes.d.ts.map +1 -0
- package/dist/semconv/gen-ai-extended-attributes.js +120 -0
- package/dist/semconv/gen-ai-extended-attributes.js.map +1 -0
- package/dist/semconv/gen-ai-memory-attributes.d.ts +28 -0
- package/dist/semconv/gen-ai-memory-attributes.d.ts.map +1 -0
- package/dist/semconv/gen-ai-memory-attributes.js +42 -0
- package/dist/semconv/gen-ai-memory-attributes.js.map +1 -0
- package/dist/span-utils.d.ts +18 -0
- package/dist/span-utils.d.ts.map +1 -0
- package/dist/span-utils.js +236 -0
- package/dist/span-utils.js.map +1 -0
- package/dist/types.d.ts +117 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +88 -0
- package/dist/utils.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Tracer, type TracerProvider, type MeterProvider, type Context } from "@opentelemetry/api";
|
|
2
|
+
import { InvocationMetricsRecorder } from "./metrics.js";
|
|
3
|
+
import { type EventLogger } from "./span-utils.js";
|
|
4
|
+
import type { LLMInvocation, GenAIError } from "./types.js";
|
|
5
|
+
export interface TelemetryHandlerOptions {
|
|
6
|
+
tracerProvider?: TracerProvider;
|
|
7
|
+
meterProvider?: MeterProvider;
|
|
8
|
+
loggerProvider?: unknown;
|
|
9
|
+
instrumentationName?: string;
|
|
10
|
+
instrumentationVersion?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class TelemetryHandler {
|
|
13
|
+
protected _tracer: Tracer;
|
|
14
|
+
protected _metricsRecorder: InvocationMetricsRecorder;
|
|
15
|
+
protected _logger: EventLogger | null;
|
|
16
|
+
constructor(options?: TelemetryHandlerOptions);
|
|
17
|
+
startLlm(invocation: LLMInvocation, parentContext?: Context, startTime?: number): LLMInvocation;
|
|
18
|
+
stopLlm(invocation: LLMInvocation, endTime?: number): LLMInvocation;
|
|
19
|
+
failLlm(invocation: LLMInvocation, error: GenAIError, endTime?: number): LLMInvocation;
|
|
20
|
+
llm<T>(invocationOrFn?: LLMInvocation | null, fn?: (inv: LLMInvocation) => T): T extends Promise<unknown> ? Promise<LLMInvocation> : LLMInvocation;
|
|
21
|
+
}
|
|
22
|
+
export declare function getTelemetryHandler(options?: TelemetryHandlerOptions): TelemetryHandler;
|
|
23
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,MAAM,EAGX,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D,MAAM,WAAW,uBAAuB;IACtC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACtD,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;gBAE1B,OAAO,GAAE,uBAA4B;IAiBjD,QAAQ,CACN,UAAU,EAAE,aAAa,EACzB,aAAa,CAAC,EAAE,OAAO,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa;IAkBhB,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IAWnE,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa;IActF,GAAG,CAAC,CAAC,EACH,cAAc,CAAC,EAAE,aAAa,GAAG,IAAI,EACrC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,CAAC,GAC7B,CAAC,SAAS,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa;CAgDvE;AA2BD,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,uBAAuB,GAChC,gBAAgB,CAKlB"}
|
package/dist/handler.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { trace, metrics, context, diag, SpanKind, } from "@opentelemetry/api";
|
|
15
|
+
import { InvocationMetricsRecorder } from "./metrics.js";
|
|
16
|
+
import { applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, } from "./span-utils.js";
|
|
17
|
+
import { createLLMInvocation } from "./types.js";
|
|
18
|
+
import { VERSION } from "./version.js";
|
|
19
|
+
const INSTRUMENTATION_NAME = "@loongsuite/otel-util-genai";
|
|
20
|
+
export class TelemetryHandler {
|
|
21
|
+
_tracer;
|
|
22
|
+
_metricsRecorder;
|
|
23
|
+
_logger;
|
|
24
|
+
constructor(options = {}) {
|
|
25
|
+
const scopeName = options.instrumentationName ?? INSTRUMENTATION_NAME;
|
|
26
|
+
const scopeVersion = options.instrumentationVersion ?? VERSION;
|
|
27
|
+
this._tracer = (options.tracerProvider ?? trace).getTracer(scopeName, scopeVersion);
|
|
28
|
+
const meter = (options.meterProvider ?? metrics).getMeter(scopeName, scopeVersion);
|
|
29
|
+
this._metricsRecorder = new InvocationMetricsRecorder(meter);
|
|
30
|
+
// EventLogger from LoggerProvider (OTel Logs API)
|
|
31
|
+
this._logger = resolveEventLogger(options.loggerProvider, scopeName, scopeVersion);
|
|
32
|
+
}
|
|
33
|
+
startLlm(invocation, parentContext, startTime) {
|
|
34
|
+
const spanName = `${invocation.operationName ?? "chat"} ${invocation.requestModel ?? ""}`.trim();
|
|
35
|
+
const span = this._tracer.startSpan(spanName, { kind: SpanKind.CLIENT, startTime }, parentContext);
|
|
36
|
+
invocation.monotonicStartS = performance.now() / 1000;
|
|
37
|
+
invocation.span = span;
|
|
38
|
+
invocation.contextToken = trace.setSpan(parentContext ?? context.active(), span);
|
|
39
|
+
context.with(invocation.contextToken, () => { });
|
|
40
|
+
return invocation;
|
|
41
|
+
}
|
|
42
|
+
stopLlm(invocation, endTime) {
|
|
43
|
+
if (!invocation.span)
|
|
44
|
+
return invocation;
|
|
45
|
+
const span = invocation.span;
|
|
46
|
+
applyLlmFinishAttributes(span, invocation);
|
|
47
|
+
this._metricsRecorder.record(span, invocation);
|
|
48
|
+
maybeEmitLlmEvent(this._logger, span, invocation);
|
|
49
|
+
span.end(endTime);
|
|
50
|
+
return invocation;
|
|
51
|
+
}
|
|
52
|
+
failLlm(invocation, error, endTime) {
|
|
53
|
+
if (!invocation.span)
|
|
54
|
+
return invocation;
|
|
55
|
+
const span = invocation.span;
|
|
56
|
+
applyLlmFinishAttributes(span, invocation);
|
|
57
|
+
applyErrorAttributes(span, error);
|
|
58
|
+
this._metricsRecorder.record(span, invocation, {
|
|
59
|
+
errorType: error.type,
|
|
60
|
+
});
|
|
61
|
+
maybeEmitLlmEvent(this._logger, span, invocation, error);
|
|
62
|
+
span.end(endTime);
|
|
63
|
+
return invocation;
|
|
64
|
+
}
|
|
65
|
+
llm(invocationOrFn, fn) {
|
|
66
|
+
const invocation = invocationOrFn ?? createLLMInvocation();
|
|
67
|
+
this.startLlm(invocation);
|
|
68
|
+
if (!fn) {
|
|
69
|
+
// Return invocation for manual start/stop pattern when no callback
|
|
70
|
+
return invocation;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const result = fn(invocation);
|
|
74
|
+
if (result instanceof Promise) {
|
|
75
|
+
return result
|
|
76
|
+
.then(() => {
|
|
77
|
+
this.stopLlm(invocation);
|
|
78
|
+
return invocation;
|
|
79
|
+
})
|
|
80
|
+
.catch((err) => {
|
|
81
|
+
const genErr = {
|
|
82
|
+
message: String(err),
|
|
83
|
+
type: err instanceof Error
|
|
84
|
+
? err.constructor.name
|
|
85
|
+
: "Error",
|
|
86
|
+
};
|
|
87
|
+
this.failLlm(invocation, genErr);
|
|
88
|
+
throw err;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
this.stopLlm(invocation);
|
|
92
|
+
return invocation;
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
const genErr = {
|
|
96
|
+
message: String(err),
|
|
97
|
+
type: err instanceof Error ? err.constructor.name : "Error",
|
|
98
|
+
};
|
|
99
|
+
this.failLlm(invocation, genErr);
|
|
100
|
+
throw err;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function resolveEventLogger(loggerProvider, scopeName = INSTRUMENTATION_NAME, scopeVersion = VERSION) {
|
|
105
|
+
if (!loggerProvider)
|
|
106
|
+
return null;
|
|
107
|
+
if (typeof loggerProvider === "object" &&
|
|
108
|
+
loggerProvider !== null &&
|
|
109
|
+
"getLogger" in loggerProvider) {
|
|
110
|
+
try {
|
|
111
|
+
const lp = loggerProvider;
|
|
112
|
+
return lp.getLogger(scopeName, scopeVersion);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
diag.debug("Failed to get event logger from LoggerProvider");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
let _defaultHandler = null;
|
|
121
|
+
export function getTelemetryHandler(options) {
|
|
122
|
+
if (!_defaultHandler) {
|
|
123
|
+
_defaultHandler = new TelemetryHandler(options);
|
|
124
|
+
}
|
|
125
|
+
return _defaultHandler;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { VERSION } from "./version.js";
|
|
2
|
+
export type { GenAIInvocation, LLMInvocation, GenAIError, InputMessage, OutputMessage, MessagePart, Text, Reasoning, ToolCall, ToolCallResponse, Blob, GenAIFile, Uri, Base64Blob, FunctionToolDefinition, GenericToolDefinition, ToolDefinition, Modality, FinishReason, } from "./types.js";
|
|
3
|
+
export { ContentCapturingMode, createLLMInvocation } from "./types.js";
|
|
4
|
+
export type { RetrievalDocument, EmbeddingInvocation, ExecuteToolInvocation, CreateAgentInvocation, InvokeAgentInvocation, RetrievalInvocation, RerankInvocation, EntryInvocation, ReactStepInvocation, } from "./extended-types.js";
|
|
5
|
+
export { createEmbeddingInvocation, createExecuteToolInvocation, createCreateAgentInvocation, createInvokeAgentInvocation, createRetrievalInvocation, createRerankInvocation, createEntryInvocation, createReactStepInvocation, } from "./extended-types.js";
|
|
6
|
+
export type { MemoryInvocation } from "./memory/memory-types.js";
|
|
7
|
+
export { createMemoryInvocation } from "./memory/memory-types.js";
|
|
8
|
+
export { TelemetryHandler, getTelemetryHandler, type TelemetryHandlerOptions, } from "./handler.js";
|
|
9
|
+
export { ExtendedTelemetryHandler, getExtendedTelemetryHandler, } from "./extended-handler.js";
|
|
10
|
+
export { isExperimentalMode, getContentCapturingMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "./utils.js";
|
|
11
|
+
export { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
|
|
12
|
+
export { InvocationMetricsRecorder } from "./metrics.js";
|
|
13
|
+
export { ExtendedInvocationMetricsRecorder } from "./extended-metrics.js";
|
|
14
|
+
export { getLlmCommonAttributes, getLlmSpanName, getLlmRequestAttributes, getLlmResponseAttributes, getLlmMessagesAttributesForSpan, getToolDefinitionsForSpan, applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, type EventLogger, } from "./span-utils.js";
|
|
15
|
+
export { applyEmbeddingFinishAttributes, applyCreateAgentFinishAttributes, applyExecuteToolFinishAttributes, applyInvokeAgentFinishAttributes, maybeEmitInvokeAgentEvent, applyRetrievalFinishAttributes, applyRerankFinishAttributes, applyEntryFinishAttributes, applyReactStepFinishAttributes, } from "./extended-span-utils.js";
|
|
16
|
+
export { applyMemoryFinishAttributes, maybeEmitMemoryEvent, } from "./memory/memory-utils.js";
|
|
17
|
+
export * from "./semconv/gen-ai-extended-attributes.js";
|
|
18
|
+
export * from "./semconv/gen-ai-memory-attributes.js";
|
|
19
|
+
export * from "./environment-variables.js";
|
|
20
|
+
export * from "./extended-environment-variables.js";
|
|
21
|
+
export * from "./event-log/index.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,IAAI,EACJ,SAAS,EACT,GAAG,EACH,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGvE,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAGtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
// Version
|
|
15
|
+
export { VERSION } from "./version.js";
|
|
16
|
+
export { ContentCapturingMode, createLLMInvocation } from "./types.js";
|
|
17
|
+
export { createEmbeddingInvocation, createExecuteToolInvocation, createCreateAgentInvocation, createInvokeAgentInvocation, createRetrievalInvocation, createRerankInvocation, createEntryInvocation, createReactStepInvocation, } from "./extended-types.js";
|
|
18
|
+
export { createMemoryInvocation } from "./memory/memory-types.js";
|
|
19
|
+
// Handlers
|
|
20
|
+
export { TelemetryHandler, getTelemetryHandler, } from "./handler.js";
|
|
21
|
+
export { ExtendedTelemetryHandler, getExtendedTelemetryHandler, } from "./extended-handler.js";
|
|
22
|
+
// Utilities
|
|
23
|
+
export { isExperimentalMode, getContentCapturingMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "./utils.js";
|
|
24
|
+
// Instruments
|
|
25
|
+
export { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
|
|
26
|
+
// Metrics
|
|
27
|
+
export { InvocationMetricsRecorder } from "./metrics.js";
|
|
28
|
+
export { ExtendedInvocationMetricsRecorder } from "./extended-metrics.js";
|
|
29
|
+
// Span Utils
|
|
30
|
+
export { getLlmCommonAttributes, getLlmSpanName, getLlmRequestAttributes, getLlmResponseAttributes, getLlmMessagesAttributesForSpan, getToolDefinitionsForSpan, applyLlmFinishAttributes, applyErrorAttributes, maybeEmitLlmEvent, } from "./span-utils.js";
|
|
31
|
+
// Extended Span Utils
|
|
32
|
+
export { applyEmbeddingFinishAttributes, applyCreateAgentFinishAttributes, applyExecuteToolFinishAttributes, applyInvokeAgentFinishAttributes, maybeEmitInvokeAgentEvent, applyRetrievalFinishAttributes, applyRerankFinishAttributes, applyEntryFinishAttributes, applyReactStepFinishAttributes, } from "./extended-span-utils.js";
|
|
33
|
+
// Memory Utils
|
|
34
|
+
export { applyMemoryFinishAttributes, maybeEmitMemoryEvent, } from "./memory/memory-utils.js";
|
|
35
|
+
// Semantic Conventions
|
|
36
|
+
export * from "./semconv/gen-ai-extended-attributes.js";
|
|
37
|
+
export * from "./semconv/gen-ai-memory-attributes.js";
|
|
38
|
+
// Environment Variables
|
|
39
|
+
export * from "./environment-variables.js";
|
|
40
|
+
export * from "./extended-environment-variables.js";
|
|
41
|
+
// Event Log → Trace conversion
|
|
42
|
+
export * from "./event-log/index.js";
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAwBvC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAcvE,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,WAAW;AACX,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,cAAc;AACd,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,UAAU;AACV,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAE1E,aAAa;AACb,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AAEzB,sBAAsB;AACtB,OAAO,EACL,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,gCAAgC,EAChC,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,0BAA0B,CAAC;AAElC,eAAe;AACf,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,uBAAuB;AACvB,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAEtD,wBAAwB;AACxB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AAEpD,+BAA+B;AAC/B,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB3D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAM/D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAO5D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { GEN_AI_CLIENT_OPERATION_DURATION, GEN_AI_CLIENT_TOKEN_USAGE, } from "./semconv/gen-ai-extended-attributes.js";
|
|
15
|
+
const DURATION_BUCKETS = [
|
|
16
|
+
0.01, 0.02, 0.04, 0.08, 0.16, 0.32, 0.64, 1.28, 2.56, 5.12, 10.24, 20.48,
|
|
17
|
+
40.96, 81.92,
|
|
18
|
+
];
|
|
19
|
+
const TOKEN_USAGE_BUCKETS = [
|
|
20
|
+
1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304,
|
|
21
|
+
16777216, 67108864,
|
|
22
|
+
];
|
|
23
|
+
export function createDurationHistogram(meter) {
|
|
24
|
+
return meter.createHistogram(GEN_AI_CLIENT_OPERATION_DURATION, {
|
|
25
|
+
description: "Duration of GenAI client operation",
|
|
26
|
+
unit: "s",
|
|
27
|
+
advice: { explicitBucketBoundaries: DURATION_BUCKETS },
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function createTokenHistogram(meter) {
|
|
31
|
+
return meter.createHistogram(GEN_AI_CLIENT_TOKEN_USAGE, {
|
|
32
|
+
description: "Number of input and output tokens used by GenAI clients",
|
|
33
|
+
unit: "{token}",
|
|
34
|
+
advice: { explicitBucketBoundaries: TOKEN_USAGE_BUCKETS },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=instruments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruments.js","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,OAAO,EACL,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;IACxE,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACrE,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,KAAY;IAClD,OAAO,KAAK,CAAC,eAAe,CAAC,gCAAgC,EAAE;QAC7D,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,EAAE,wBAAwB,EAAE,gBAAgB,EAAE;KACvD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAY;IAC/C,OAAO,KAAK,CAAC,eAAe,CAAC,yBAAyB,EAAE;QACtD,WAAW,EACT,yDAAyD;QAC3D,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,EAAE,wBAAwB,EAAE,mBAAmB,EAAE;KAC1D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Span, Context } from "@opentelemetry/api";
|
|
2
|
+
export interface MemoryInvocation {
|
|
3
|
+
operation: string;
|
|
4
|
+
contextToken?: Context | null;
|
|
5
|
+
span?: Span | null;
|
|
6
|
+
attributes?: Record<string, unknown>;
|
|
7
|
+
userId?: string | null;
|
|
8
|
+
agentId?: string | null;
|
|
9
|
+
runId?: string | null;
|
|
10
|
+
appId?: string | null;
|
|
11
|
+
memoryId?: string | null;
|
|
12
|
+
limit?: number | null;
|
|
13
|
+
page?: number | null;
|
|
14
|
+
pageSize?: number | null;
|
|
15
|
+
topK?: number | null;
|
|
16
|
+
memoryType?: string | null;
|
|
17
|
+
threshold?: number | null;
|
|
18
|
+
rerank?: boolean | null;
|
|
19
|
+
inputMessages?: unknown;
|
|
20
|
+
outputMessages?: unknown;
|
|
21
|
+
serverAddress?: string | null;
|
|
22
|
+
serverPort?: number | null;
|
|
23
|
+
monotonicStartS?: number | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function createMemoryInvocation(operation: string, init?: Partial<MemoryInvocation>): MemoryInvocation;
|
|
26
|
+
//# sourceMappingURL=memory-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/memory/memory-types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAC/B,gBAAgB,CAElB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export function createMemoryInvocation(operation, init) {
|
|
15
|
+
return { operation, attributes: {}, ...init };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=memory-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-types.js","sourceRoot":"","sources":["../../src/memory/memory-types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AA4BjC,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,IAAgC;IAEhC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Span } from "@opentelemetry/api";
|
|
2
|
+
import type { GenAIError } from "../types.js";
|
|
3
|
+
import type { MemoryInvocation } from "./memory-types.js";
|
|
4
|
+
import type { EventLogger } from "../span-utils.js";
|
|
5
|
+
export declare function applyMemoryFinishAttributes(span: Span, invocation: MemoryInvocation): void;
|
|
6
|
+
export declare function maybeEmitMemoryEvent(logger: EventLogger | null | undefined, span: Span, invocation: MemoryInvocation, error?: GenAIError | null): void;
|
|
7
|
+
//# sourceMappingURL=memory-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-utils.d.ts","sourceRoot":"","sources":["../../src/memory/memory-utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA0B1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAyFpD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,gBAAgB,GAC3B,IAAI,CAwBN;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACtC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,gBAAgB,EAC5B,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,GACxB,IAAI,CAgBN"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { GEN_AI_OPERATION_NAME, GEN_AI_SPAN_KIND, SERVER_ADDRESS, SERVER_PORT, ERROR_TYPE, GenAiSpanKindValues, } from "../semconv/gen-ai-extended-attributes.js";
|
|
15
|
+
import { GEN_AI_MEMORY_OPERATION, GEN_AI_MEMORY_USER_ID, GEN_AI_MEMORY_AGENT_ID, GEN_AI_MEMORY_RUN_ID, GEN_AI_MEMORY_APP_ID, GEN_AI_MEMORY_ID, GEN_AI_MEMORY_LIMIT, GEN_AI_MEMORY_PAGE, GEN_AI_MEMORY_PAGE_SIZE, GEN_AI_MEMORY_TOP_K, GEN_AI_MEMORY_MEMORY_TYPE, GEN_AI_MEMORY_THRESHOLD, GEN_AI_MEMORY_RERANK, GEN_AI_MEMORY_INPUT_MESSAGES, GEN_AI_MEMORY_OUTPUT_MESSAGES, } from "../semconv/gen-ai-memory-attributes.js";
|
|
16
|
+
import { isExperimentalMode, shouldEmitEvent, shouldCaptureContentInSpan, shouldCaptureContentInEvent, genAiJsonDumps, } from "../utils.js";
|
|
17
|
+
function getMemoryCommonAttributes(invocation) {
|
|
18
|
+
const attrs = {
|
|
19
|
+
[GEN_AI_OPERATION_NAME]: "memory_operation",
|
|
20
|
+
[GEN_AI_MEMORY_OPERATION]: invocation.operation,
|
|
21
|
+
};
|
|
22
|
+
if (invocation.userId != null) {
|
|
23
|
+
attrs[GEN_AI_MEMORY_USER_ID] = invocation.userId;
|
|
24
|
+
}
|
|
25
|
+
if (invocation.agentId != null) {
|
|
26
|
+
attrs[GEN_AI_MEMORY_AGENT_ID] = invocation.agentId;
|
|
27
|
+
}
|
|
28
|
+
if (invocation.runId != null) {
|
|
29
|
+
attrs[GEN_AI_MEMORY_RUN_ID] = invocation.runId;
|
|
30
|
+
}
|
|
31
|
+
if (invocation.appId != null) {
|
|
32
|
+
attrs[GEN_AI_MEMORY_APP_ID] = invocation.appId;
|
|
33
|
+
}
|
|
34
|
+
return attrs;
|
|
35
|
+
}
|
|
36
|
+
function getMemoryParameterAttributes(invocation) {
|
|
37
|
+
const attrs = {};
|
|
38
|
+
if (invocation.memoryId != null) {
|
|
39
|
+
attrs[GEN_AI_MEMORY_ID] = invocation.memoryId;
|
|
40
|
+
}
|
|
41
|
+
if (invocation.limit != null) {
|
|
42
|
+
attrs[GEN_AI_MEMORY_LIMIT] = invocation.limit;
|
|
43
|
+
}
|
|
44
|
+
if (invocation.page != null) {
|
|
45
|
+
attrs[GEN_AI_MEMORY_PAGE] = invocation.page;
|
|
46
|
+
}
|
|
47
|
+
if (invocation.pageSize != null) {
|
|
48
|
+
attrs[GEN_AI_MEMORY_PAGE_SIZE] = invocation.pageSize;
|
|
49
|
+
}
|
|
50
|
+
if (invocation.topK != null) {
|
|
51
|
+
attrs[GEN_AI_MEMORY_TOP_K] = invocation.topK;
|
|
52
|
+
}
|
|
53
|
+
if (invocation.memoryType != null) {
|
|
54
|
+
attrs[GEN_AI_MEMORY_MEMORY_TYPE] = invocation.memoryType;
|
|
55
|
+
}
|
|
56
|
+
if (invocation.threshold != null) {
|
|
57
|
+
attrs[GEN_AI_MEMORY_THRESHOLD] = invocation.threshold;
|
|
58
|
+
}
|
|
59
|
+
if (invocation.rerank != null) {
|
|
60
|
+
attrs[GEN_AI_MEMORY_RERANK] = invocation.rerank;
|
|
61
|
+
}
|
|
62
|
+
return attrs;
|
|
63
|
+
}
|
|
64
|
+
function getMemoryContentAttributes(invocation, forSpan) {
|
|
65
|
+
if (!isExperimentalMode())
|
|
66
|
+
return {};
|
|
67
|
+
if (forSpan && !shouldCaptureContentInSpan())
|
|
68
|
+
return {};
|
|
69
|
+
if (!forSpan && !shouldCaptureContentInEvent())
|
|
70
|
+
return {};
|
|
71
|
+
const attrs = {};
|
|
72
|
+
if (invocation.inputMessages != null) {
|
|
73
|
+
attrs[GEN_AI_MEMORY_INPUT_MESSAGES] =
|
|
74
|
+
typeof invocation.inputMessages === "string"
|
|
75
|
+
? invocation.inputMessages
|
|
76
|
+
: genAiJsonDumps(invocation.inputMessages);
|
|
77
|
+
}
|
|
78
|
+
if (invocation.outputMessages != null) {
|
|
79
|
+
attrs[GEN_AI_MEMORY_OUTPUT_MESSAGES] =
|
|
80
|
+
typeof invocation.outputMessages === "string"
|
|
81
|
+
? invocation.outputMessages
|
|
82
|
+
: genAiJsonDumps(invocation.outputMessages);
|
|
83
|
+
}
|
|
84
|
+
return attrs;
|
|
85
|
+
}
|
|
86
|
+
export function applyMemoryFinishAttributes(span, invocation) {
|
|
87
|
+
span.updateName(invocation.operation
|
|
88
|
+
? `memory_operation ${invocation.operation}`
|
|
89
|
+
: "memory_operation");
|
|
90
|
+
span.setAttribute(GEN_AI_SPAN_KIND, GenAiSpanKindValues.MEMORY);
|
|
91
|
+
const attrs = {};
|
|
92
|
+
Object.assign(attrs, getMemoryCommonAttributes(invocation));
|
|
93
|
+
Object.assign(attrs, getMemoryParameterAttributes(invocation));
|
|
94
|
+
if (invocation.serverAddress != null) {
|
|
95
|
+
attrs[SERVER_ADDRESS] = invocation.serverAddress;
|
|
96
|
+
}
|
|
97
|
+
if (invocation.serverPort != null) {
|
|
98
|
+
attrs[SERVER_PORT] = invocation.serverPort;
|
|
99
|
+
}
|
|
100
|
+
Object.assign(attrs, getMemoryContentAttributes(invocation, true));
|
|
101
|
+
if (invocation.attributes) {
|
|
102
|
+
Object.assign(attrs, invocation.attributes);
|
|
103
|
+
}
|
|
104
|
+
span.setAttributes(attrs);
|
|
105
|
+
}
|
|
106
|
+
export function maybeEmitMemoryEvent(logger, span, invocation, error) {
|
|
107
|
+
if (!isExperimentalMode() || !shouldEmitEvent() || !logger)
|
|
108
|
+
return;
|
|
109
|
+
const attrs = {};
|
|
110
|
+
Object.assign(attrs, getMemoryCommonAttributes(invocation));
|
|
111
|
+
Object.assign(attrs, getMemoryParameterAttributes(invocation));
|
|
112
|
+
Object.assign(attrs, getMemoryContentAttributes(invocation, false));
|
|
113
|
+
if (error) {
|
|
114
|
+
attrs[ERROR_TYPE] = error.type;
|
|
115
|
+
}
|
|
116
|
+
logger.emit({
|
|
117
|
+
name: "gen_ai.memory.operation.details",
|
|
118
|
+
attributes: attrs,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=memory-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-utils.js","sourceRoot":"","sources":["../../src/memory/memory-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Meter, Span } from "@opentelemetry/api";
|
|
2
|
+
import type { LLMInvocation } from "./types.js";
|
|
3
|
+
export declare class InvocationMetricsRecorder {
|
|
4
|
+
private _durationHistogram;
|
|
5
|
+
private _tokenHistogram;
|
|
6
|
+
constructor(meter: Meter);
|
|
7
|
+
record(span: Span | null | undefined, invocation: LLMInvocation, options?: {
|
|
8
|
+
errorType?: string;
|
|
9
|
+
}): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAa,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAMjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAchD,qBAAa,yBAAyB;IACpC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,eAAe,CAAY;gBAEvB,KAAK,EAAE,KAAK;IAKxB,MAAM,CACJ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAC7B,UAAU,EAAE,aAAa,EACzB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,IAAI;CAiER"}
|
package/dist/metrics.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Copyright The OpenTelemetry Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { trace, context } from "@opentelemetry/api";
|
|
15
|
+
import { createDurationHistogram, createTokenHistogram, } from "./instruments.js";
|
|
16
|
+
import { GEN_AI_OPERATION_NAME, GEN_AI_REQUEST_MODEL, GEN_AI_PROVIDER_NAME, GEN_AI_RESPONSE_MODEL, GEN_AI_TOKEN_TYPE, GenAiOperationNameValues, GenAiTokenTypeValues, SERVER_ADDRESS, SERVER_PORT, ERROR_TYPE, } from "./semconv/gen-ai-extended-attributes.js";
|
|
17
|
+
export class InvocationMetricsRecorder {
|
|
18
|
+
_durationHistogram;
|
|
19
|
+
_tokenHistogram;
|
|
20
|
+
constructor(meter) {
|
|
21
|
+
this._durationHistogram = createDurationHistogram(meter);
|
|
22
|
+
this._tokenHistogram = createTokenHistogram(meter);
|
|
23
|
+
}
|
|
24
|
+
record(span, invocation, options) {
|
|
25
|
+
if (!span)
|
|
26
|
+
return;
|
|
27
|
+
const tokenCounts = [];
|
|
28
|
+
if (invocation.inputTokens != null) {
|
|
29
|
+
tokenCounts.push({
|
|
30
|
+
count: invocation.inputTokens,
|
|
31
|
+
type: GenAiTokenTypeValues.INPUT,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (invocation.outputTokens != null) {
|
|
35
|
+
tokenCounts.push({
|
|
36
|
+
count: invocation.outputTokens,
|
|
37
|
+
type: GenAiTokenTypeValues.OUTPUT,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const attributes = {
|
|
41
|
+
[GEN_AI_OPERATION_NAME]: GenAiOperationNameValues.CHAT,
|
|
42
|
+
};
|
|
43
|
+
if (invocation.requestModel) {
|
|
44
|
+
attributes[GEN_AI_REQUEST_MODEL] = invocation.requestModel;
|
|
45
|
+
}
|
|
46
|
+
if (invocation.provider) {
|
|
47
|
+
attributes[GEN_AI_PROVIDER_NAME] = invocation.provider;
|
|
48
|
+
}
|
|
49
|
+
if (invocation.responseModelName) {
|
|
50
|
+
attributes[GEN_AI_RESPONSE_MODEL] = invocation.responseModelName;
|
|
51
|
+
}
|
|
52
|
+
if (invocation.serverAddress) {
|
|
53
|
+
attributes[SERVER_ADDRESS] = invocation.serverAddress;
|
|
54
|
+
}
|
|
55
|
+
if (invocation.serverPort != null) {
|
|
56
|
+
attributes[SERVER_PORT] = invocation.serverPort;
|
|
57
|
+
}
|
|
58
|
+
if (invocation.metricAttributes) {
|
|
59
|
+
Object.assign(attributes, invocation.metricAttributes);
|
|
60
|
+
}
|
|
61
|
+
let durationSeconds = null;
|
|
62
|
+
if (invocation.monotonicStartS != null) {
|
|
63
|
+
durationSeconds = Math.max(performance.now() / 1000 - invocation.monotonicStartS, 0.0);
|
|
64
|
+
}
|
|
65
|
+
const spanContext = trace.setSpan(context.active(), span);
|
|
66
|
+
if (options?.errorType) {
|
|
67
|
+
attributes[ERROR_TYPE] = options.errorType;
|
|
68
|
+
}
|
|
69
|
+
if (durationSeconds != null) {
|
|
70
|
+
this._durationHistogram.record(durationSeconds, attributes, spanContext);
|
|
71
|
+
}
|
|
72
|
+
for (const { count, type } of tokenCounts) {
|
|
73
|
+
this._tokenHistogram.record(count, { ...attributes, [GEN_AI_TOKEN_TYPE]: type }, spanContext);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|