Skip to content
English

createProviderObservationScope ​

SUPPORT · function · 运行时值

Bind provider observations to a caller-owned destination across diagnostic child spans.

attach returns a scoped diagnostic context; contexts that were not attached through this scope produce no observations. Child contexts inherit the owner and a parent/child span path.

导入 ​

ts
import { createProviderObservationScope } from '@jangts/agent-core/support';
js
import { createProviderObservationScope } from '@jangts/agent-core/support';

其他公开入口:@jangts/agent-core/support、@jangts/agent-core/support/model。

定义 ​

泛型参数 ​

类型参数约束默认类型
Owner——

调用 ​

ts
createProviderObservationScope<Owner>(sink: { accepts?(owner: Owner, descriptor: import("../../structs/support/model/provider-observer.js").ProviderEventDescriptor): boolean; write(owner: Owner, observation: ProviderObservation, spanId: string, content: "metadata" | "content"): void | Promise<void>; }): Readonly<{ attach: (context: DiagnosticContext, owner: Owner, spanId?: string) => DiagnosticContext; observer: Readonly<ProviderObserver>; }>

Bind provider observations to a caller-owned destination across diagnostic child spans.

attach returns a scoped diagnostic context; contexts that were not attached through this scope produce no observations. Child contexts inherit the owner and a parent/child span path.

类型参数约束默认类型
Owner——
参数类型传递说明
sink{ accepts?(owner: Owner, descriptor: import("../../structs/support/model/provider-observer.js").ProviderEventDescriptor): boolean; write(owner: Owner, observation: ProviderObservation, spanId: string, content: "metadata" | "content"): void | Promise<void>; }必需—
sink 的字段
字段类型必需说明
accepts((owner: Owner, descriptor: import("../../structs/support/model/provider-observer.js").ProviderEventDescriptor) => boolean) | undefined可省略见类型定义及调用场景。
write(owner: Owner, observation: ProviderObservation, spanId: string, content: "metadata" | "content") => void | Promise<void>必需见类型定义及调用场景。

返回: Readonly<{ attach: (context: DiagnosticContext, owner: Owner, spanId?: string) => DiagnosticContext; observer: Readonly<ProviderObserver>; }>。

返回值结构
字段类型必需说明
attach(context: DiagnosticContext, owner: Owner, spanId?: string) => DiagnosticContext必需见类型定义及调用场景。
observerReadonly<ProviderObserver>必需见类型定义及调用场景。

使用示例 ​

只观察元数据 ​

入门 · Node.js

ts
import { Support } from '@jangts/agent-core';
const scope = Support.createProviderObservationScope<{ requestId: string }>({
  accepts(_owner, descriptor) { return descriptor.content === 'metadata'; },
  write(owner, event, spanId) { console.log(owner.requestId, spanId, event.event); },
});
console.log(scope.observer);
js
import { Support } from '@jangts/agent-core';
const scope = Support.createProviderObservationScope({
    accepts(_owner, descriptor) { return descriptor.content === 'metadata'; },
    write(owner, event, spanId) { console.log(owner.requestId, spanId, event.event); },
});
console.log(scope.observer);

按本次请求绑定自己的关联值 ​

配置 · Node.js

此例只装配;实际调用时把该 diagnostics 配入对应请求 execution,不把 App ID 强塞进 Core 身份。

ts
import { Support } from '@jangts/agent-core';
import { createDiagnostics } from '@jangts/agent-core/diagnostics';
const scope = Support.createProviderObservationScope<{ requestId: string }>({
  accepts: (_owner, descriptor) => descriptor.content === 'metadata',
  write(owner, event, spanId) { console.log(owner.requestId, spanId, event.event); },
});
const provider = new Support.CompatibleModelProvider({
  config: { baseUrl: process.env.MODEL_BASE_URL!, apiKey: process.env.MODEL_API_KEY!, model: process.env.MODEL_NAME! },
  observe: { provider: scope.observer },
});
const diagnostics = scope.attach(createDiagnostics(), { requestId: 'app-request-1' });
console.log(provider, diagnostics.identity?.runId);
js
import { Support } from '@jangts/agent-core';
import { createDiagnostics } from '@jangts/agent-core/diagnostics';
const scope = Support.createProviderObservationScope({
    accepts: (_owner, descriptor) => descriptor.content === 'metadata',
    write(owner, event, spanId) { console.log(owner.requestId, spanId, event.event); },
});
const provider = new Support.CompatibleModelProvider({
    config: { baseUrl: process.env.MODEL_BASE_URL, apiKey: process.env.MODEL_API_KEY, model: process.env.MODEL_NAME },
    observe: { provider: scope.observer },
});
const diagnostics = scope.attach(createDiagnostics(), { requestId: 'app-request-1' });
console.log(provider, diagnostics.identity?.runId);

相关定义 ​

接口参考、使用示例与开发指南。