summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-21 22:16:39 +0900
committerAdam Malczewski <[email protected]>2026-06-21 22:16:39 +0900
commit6cdbc1a645a625a7419b91ddada7ed06f475bed4 (patch)
tree95aaa64b44d91f6906ca6b8f9ac5ab76d4d9adc3
parent4a71e0672f7433f2e29df16fa2865f2702a64db2 (diff)
downloaddispatch-6cdbc1a645a625a7419b91ddada7ed06f475bed4.tar.gz
dispatch-6cdbc1a645a625a7419b91ddada7ed06f475bed4.zip
fix(openai-stream): omit usage attrs from spans when provider doesn't report
When a provider doesn't include a usage field in the SSE stream, the span attributes (usage.inputTokens, usage.outputTokens) are now absent instead of defaulting to 0. This makes it clear in the journal that the provider didn't report usage, rather than looking like 0 tokens were used.
-rw-r--r--packages/openai-stream/src/stream.ts12
1 files changed, 8 insertions, 4 deletions
diff --git a/packages/openai-stream/src/stream.ts b/packages/openai-stream/src/stream.ts
index e801cc5..2f594b5 100644
--- a/packages/openai-stream/src/stream.ts
+++ b/packages/openai-stream/src/stream.ts
@@ -91,8 +91,8 @@ export async function* streamChat(
const bodyString = JSON.stringify(body);
let reqSpan: Span | undefined;
- let totalInputTokens = 0;
- let totalOutputTokens = 0;
+ let totalInputTokens: number | undefined;
+ let totalOutputTokens: number | undefined;
let totalCacheReadTokens: number | undefined;
let totalCacheWriteTokens: number | undefined;
@@ -243,9 +243,13 @@ export async function* streamChat(
try {
const attrs: Record<string, string | number | boolean | null> = {
status: response.status,
- "usage.inputTokens": totalInputTokens,
- "usage.outputTokens": totalOutputTokens,
};
+ if (totalInputTokens !== undefined) {
+ attrs["usage.inputTokens"] = totalInputTokens;
+ }
+ if (totalOutputTokens !== undefined) {
+ attrs["usage.outputTokens"] = totalOutputTokens;
+ }
if (totalCacheReadTokens !== undefined) {
attrs["usage.cacheReadTokens"] = totalCacheReadTokens;
}