@microsoft/agents-a365-observability package
クラス
| Agent365ExporterOptions |
エクスポート バッチあたりのスパンの最大数。 |
| BaggageBuilder |
OpenTelemetry コンテキスト伝達の要求手荷物ビルダーごと。 このクラスは、OpenTelemetry コンテキストで伝達される手荷物の値を設定するための fluent API を提供します。 例
|
| BaggageScope |
手荷物スコープのコンテキストマネージャー。 このクラスは手荷物の値のライフサイクルを管理し、入り口に設定し、終了時に前のコンテキストを復元します。 |
| Builder |
OpenTelemetry トレースを使用してエージェント 365 を構成するためのビルダー |
| ExecuteToolScope |
AI ツール実行操作の OpenTelemetry トレース スコープを提供します。 |
| InferenceScope |
生成 AI 推論操作用の OpenTelemetry トレース スコープを提供します。 |
| InvokeAgentScope |
AI エージェント呼び出し操作の OpenTelemetry トレース スコープを提供します。 |
| ObservabilityConfiguration |
監視パッケージの構成。 ランタイム設定を継承し、可観測性固有の設定を追加します。 |
| ObservabilityManager |
AI エージェントとツールの OpenTelemetry トレースを提供する Agent 365 の主要なエントリ ポイント |
| OpenTelemetryConstants |
エージェント 365 の OpenTelemetry 定数 |
| OpenTelemetryScope |
OpenTelemetry トレース スコープの基本クラス |
| OutputScope |
親スパン リンクを使用した出力メッセージ トレースの OpenTelemetry トレース スコープを提供します。 |
| PerRequestSpanProcessorConfiguration |
PerRequestSpanProcessor の構成。 ランタイム設定 (clusterCategory、isNodeEnvDevelopment) を継承し、要求ごとのプロセッサ ガードレールを追加します。 PerRequestSpanProcessor は特定のシナリオでのみ使用され、これらの設定は一般的な ObservabilityConfiguration では公開しないでください。 |
インターフェイス
| AgentDetails |
AI エージェントの詳細 |
| BlobPart |
インライン バイナリ データ (base64 エンコード)。 |
| BuilderOptions |
Agent 365 Observability Builder の構成オプション |
| CallerDetails |
スコープ作成の呼び出し元の詳細。 人間の呼び出し元、エージェントの呼び出し元、またはその両方 (A2A とチェーン内の人間) をサポートします。
移行に関する注意: v1 では、名前 移行ガイダンスについては、 UserDetails (人間の発信者 ID (以前の |
| Channel |
呼び出しのチャネルを表します |
| ChatMessage |
モデルに送信される入力メッセージ (OTEL gen-ai セマンティック規則)。 |
| FilePart |
事前にアップロードされたファイルへの参照。 |
| GenericPart |
カスタム/将来の型の拡張可能な部分。 |
| GenericServerToolCall |
拡張サーバー ツールは、型識別子を使用して詳細を呼び出します。 |
| GenericServerToolCallResponse |
拡張可能なサーバー ツールは、型識別子を使用して応答を呼び出します。 |
| ILogger |
Agent 365 監視用のカスタム ロガー インターフェイス:バックエンドのログ記録をサポートするためにこのインターフェイスを実装します |
| InferenceDetails |
推論呼び出しの詳細 |
| InferenceResponse |
推論呼び出しからの応答を記録するための詳細 |
| InputMessages | |
| InvokeAgentScopeDetails |
エージェント スコープを呼び出すための詳細。 |
| OutputMessage |
モデルによって生成された出力メッセージ (OTEL gen-ai セマンティック規則)。 |
| OutputMessages | |
| OutputResponse |
エージェントからの出力メッセージを含む応答を表します。 出力メッセージ トレースに OutputScope と共に使用されます。 プレーン文字列、構造化された OTEL OutputMessage オブジェクト、または生のディクテーション (OTEL 仕様ごとのツール呼び出し結果として扱われます) を受け入れます。 |
| ParentSpanRef |
非同期境界を越えた明示的な親子リンクの親スパンへの参照。 コンテキストの自動伝達が失敗した場合に使用されます (WebSocket コールバック、外部イベント ハンドラーなど)。 |
| ReasoningPart |
モデル推論/考え方の連鎖コンテンツ。 |
| Request |
テレメトリ コンテキストを持つ要求を表します。 チャネルと会話の追跡のために、すべてのスコープの種類で使用されます。 |
| ServerToolCallPart |
サーバー側ツールの呼び出し。 |
| ServerToolCallResponsePart |
サーバー側ツールの応答。 |
| ServiceEndpoint |
エージェント呼び出しのエンドポイントを表します |
| SpanDetails |
スコープを作成するためのスパン構成の詳細。 OpenTelemetry のスパン オプションを 1 つのオブジェクトにグループ化し、新しいオプションが追加されるとスコープ メソッドシグネチャが安定したままになります。 |
| TextPart |
テキスト形式のコンテンツ。 |
| ToolCallDetails |
エージェントによって行われたツール呼び出しの詳細 |
| ToolCallRequestPart |
モデルによって要求されたツール呼び出し。 |
| ToolCallResponsePart |
ツール呼び出しの結果。 |
| UriPart |
外部 URI 参照。 |
| UserDetails |
人間のユーザー呼び出し元に関する詳細。 |
型エイリアス
| EnhancedAgentDetails | |
| HeadersCarrier |
トレース コンテキスト伝達で使用される HTTP ヘッダーのキャリアの種類。 Node.js IncomingHttpHeaders およびプレーン文字列マップと互換性があります。 |
| InputMessagesParam |
|
| MessagePart |
OTEL gen-ai セマンティック規則に従った、すべてのメッセージ パーツの種類の和集合。 注: GenericPart は、カスタムまたは将来のパーツ型との前方互換性のためのキャッチオールとして機能します。
|
| ObservabilityConfigurationOptions |
監視の構成オプション - ランタイム オプションを拡張します。 すべてのオーバーライドは、各プロパティ アクセスで呼び出される関数です。 RuntimeConfigurationOptions から継承されます。
注: |
| OutputMessagesParam |
|
| ParentContext |
スパン作成の親コンテキスト。 以下のいずれかを受け入れます:
|
| PerRequestSpanProcessorConfigurationOptions |
PerRequestSpanProcessor の構成オプション - ランタイム オプションを拡張します。 すべてのオーバーライドは、各プロパティ アクセスで呼び出される関数です。 RuntimeConfigurationOptions から継承されます。
|
| ResponseMessagesParam |
|
列挙型
| ExporterEventNames |
ログ記録と監視に Agent365Exporter によって使用されるイベント名。 これらは、効率的な監視と集計を保証するために、カーディナリティの低いイベントの種類です。 |
| FinishReason |
モデルが OTEL gen-ai セマンティック規則に従って生成を停止した理由。 |
| InferenceOperationType |
モデル推論の型に対するさまざまな操作を表します |
| InvocationRole |
エージェントを呼び出すことができるさまざまなロールを表します |
| MessageRole |
OTEL gen-ai セマンティック規則ごとのメッセージ参加者の役割。 |
| Modality |
BLOB、ファイル、URI の各部分のメディア モダリティ。 |
関数
| create |
明示的な親スパン参照を持つ新しいコンテキストを作成します。 これにより、非同期コンテキストが壊れた場合でも、子スパンを正しく親にすることができます。 |
| extract |
グローバルに登録された W3C 伝達子を使用して、受信 HTTP ヘッダーからトレース コンテキストを抽出します。 スコープ クラスに ParentContext として渡すことができる OTel ParentContextを返します。 例
|
| format |
メッセージとスタック トレースを使用してログ記録のエラー オブジェクトを書式設定する |
| get |
特定の OTel コンテキスト (またはアクティブな OTel コンテキスト) から要求ごとのエクスポート トークンを取得します。 |
| get |
現在のロガー インスタンスを取得する |
| inject |
グローバルに登録された W3C 伝達子を使用して、指定されたヘッダー オブジェクトに現在のトレース コンテキスト ( 例
|
| is |
要求ごとのエクスポートが有効になっているかどうかを確認します。 優先順位: 構成プロバイダー > 環境変数 > 内部オーバーライド。 有効にすると、BatchSpanProcessor の代わりに PerRequestSpanProcessor が使用されます。 トークンは、エクスポート時に OTel コンテキスト (非同期ローカル ストレージ) を介して渡されます。 |
| normalize |
バージョン管理された
|
| normalize |
バージョン管理された
|
| reset |
既定のコンソール ロガーにリセットする (主にテスト用) |
| run |
要求ごとのエクスポート トークンを含むコンテキスト内で関数を実行します。 これにより、トークンは OTel Context (ALS) にのみ保持され、レジストリには保持されません。 トークンは、トレースがフラッシュされる前に |
| run |
受信 HTTP ヘッダーからトレース コンテキストを抽出し、そのコンテキスト内でコールバックを実行します。 コールバック内で作成されたすべてのスパンは、抽出されたトレースの親になります。 例
|
| run |
明示的な親スパン参照を持つコンテキスト内でコールバック関数を実行します。 これは、コンテキスト伝達が中断される非同期コールバックで子スパンを作成する場合に便利です。 |
| safe |
値が常に JSON で解析可能な文字列であることを確認します。
|
| serialize |
バージョン管理されたメッセージ ラッパーを JSON にシリアル化します。 出力は完全なラッパー オブジェクトです: try/catch を使用すると、メッセージ 部分に JSON シリアル化不可能な値 (BigInt、循環参照など) が含まれている場合でも、テレメトリの記録がスローされないようにします。 |
| set |
監視 SDK のカスタム ロガー実装を設定する Winston の例:
|
| truncate |
文字列値を MAX_ATTRIBUTE_LENGTH 文字に切り捨てます。 値が制限を超えた場合は、トリミングされ、切り捨てサフィックスが追加され、合計の長さが正確に MAX_ATTRIBUTE_LENGTHに制限されます。 |
| update |
アクティブな OTel コンテキストでエクスポート トークンを更新します。 これを呼び出して、実行時間の長い要求中に元のトークンの有効期限が切れた場合にルート スパンを終了する前にトークンを更新します。
|
変数
| A365_MESSAGE_SCHEMA_VERSION | |
| MAX_ATTRIBUTE_LENGTH | スパン属性値の最大長。 この制限を超える値は、サフィックス付きで切り捨てられます。 |
| default |
ObservabilityConfiguration の共有の既定のプロバイダー。 |
| default |
PerRequestSpanProcessorConfiguration の共有既定プロバイダー。 |
| logger | 下位互換性のための既定のロガー インスタンス。 setLogger() を介して置き換えることができるグローバル ロガーにデリゲートします。 |
関数の詳細
createContextWithParentSpanRef(Context, ParentSpanRef)
明示的な親スパン参照を持つ新しいコンテキストを作成します。 これにより、非同期コンテキストが壊れた場合でも、子スパンを正しく親にすることができます。
function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context
パラメーター
- base
-
Context
拡張する基本コンテキスト (通常は context.active())
- parent
- ParentSpanRef
traceId と spanId を含む親スパン参照
返品
Context
親スパン セットを持つ新しいコンテキスト
extractContextFromHeaders(HeadersCarrier, Context)
グローバルに登録された W3C 伝達子を使用して、受信 HTTP ヘッダーからトレース コンテキストを抽出します。 スコープ クラスに ParentContext として渡すことができる OTel ParentContextを返します。
例
const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
function extractContextFromHeaders(headers: HeadersCarrier, baseCtx?: Context): Context
パラメーター
- headers
- HeadersCarrier
traceparent
/
tracestateを含む受信 HTTP 要求ヘッダー。
- baseCtx
-
Context
拡張する省略可能な基本コンテキスト。 既定値はアクティブ コンテキストです。
返品
Context
抽出されたトレース情報を含む OTel コンテキスト。
formatError(unknown)
メッセージとスタック トレースを使用してログ記録のエラー オブジェクトを書式設定する
function formatError(error: unknown): string
パラメーター
- error
-
unknown
返品
string
getExportToken(Context)
特定の OTel コンテキスト (またはアクティブな OTel コンテキスト) から要求ごとのエクスポート トークンを取得します。
function getExportToken(ctx?: Context): string | undefined
パラメーター
- ctx
-
Context
返品
string | undefined
getLogger()
injectContextToHeaders(Record<string, string>, Context)
グローバルに登録された W3C 伝達子を使用して、指定されたヘッダー オブジェクトに現在のトレース コンテキスト (traceparent/tracestate ヘッダー) を挿入します。
例
const headers: Record<string, string> = {};
injectContextToHeaders(headers);
await fetch('http://service-b/process', { headers });
function injectContextToHeaders(headers: Record<string, string>, ctx?: Context): Record<string, string>
パラメーター
- headers
-
Record<string, string>
トレース コンテキスト ヘッダーが書き込まれる変更可能なオブジェクト。
- ctx
-
Context
挿入する省略可能な OTel コンテキスト。 既定値はアクティブ コンテキストです。
返品
Record<string, string>
チェーンの利便性のために、同じ headers オブジェクト。
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)
要求ごとのエクスポートが有効になっているかどうかを確認します。 優先順位: 構成プロバイダー > 環境変数 > 内部オーバーライド。 有効にすると、BatchSpanProcessor の代わりに PerRequestSpanProcessor が使用されます。 トークンは、エクスポート時に OTel コンテキスト (非同期ローカル ストレージ) を介して渡されます。
function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean
パラメーター
- configProvider
-
IConfigurationProvider<PerRequestSpanProcessorConfiguration>
オプションの構成プロバイダー。 指定しない場合、既定値は defaultPerRequestSpanProcessorConfigurationProvider になります。
返品
boolean
normalizeInputMessages(InputMessagesParam)
バージョン管理されたInputMessages ラッパーにInputMessagesParamを正規化します。
-
string/string[]→ChatMessage[]に変換され、ラップされます -
InputMessages返→as-is
function normalizeInputMessages(param: InputMessagesParam): InputMessages
パラメーター
- param
- InputMessagesParam
返品
normalizeOutputMessages(OutputMessagesParam)
バージョン管理されたOutputMessages ラッパーにOutputMessagesParamを正規化します。
-
string/string[]→OutputMessage[]に変換され、ラップされます -
OutputMessages返→as-is
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages
パラメーター
- param
- OutputMessagesParam
返品
resetLogger()
既定のコンソール ロガーにリセットする (主にテスト用)
function resetLogger()
runWithExportToken<T>(string, () => T)
要求ごとのエクスポート トークンを含むコンテキスト内で関数を実行します。 これにより、トークンは OTel Context (ALS) にのみ保持され、レジストリには保持されません。
トークンは、トレースがフラッシュされる前に updateExportToken() を介して後で更新できます。コールバックの実行時間が長く、エクスポート前に元のトークンの有効期限が切れる可能性がある場合に便利です。
function runWithExportToken<T>(token: string, fn: () => T): T
パラメーター
- token
-
string
- fn
-
() => T
返品
T
runWithExtractedTraceContext<T>(HeadersCarrier, () => T)
受信 HTTP ヘッダーからトレース コンテキストを抽出し、そのコンテキスト内でコールバックを実行します。 コールバック内で作成されたすべてのスパンは、抽出されたトレースの親になります。
例
runWithExtractedTraceContext(req.headers, () => {
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T
パラメーター
- headers
- HeadersCarrier
traceparent
/
tracestateを含む受信 HTTP 要求ヘッダー。
- callback
-
() => T
抽出されたコンテキスト内で実行する関数。
返品
T
コールバックの結果。
runWithParentSpanRef<T>(ParentSpanRef, () => T)
明示的な親スパン参照を持つコンテキスト内でコールバック関数を実行します。 これは、コンテキスト伝達が中断される非同期コールバックで子スパンを作成する場合に便利です。
function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T
パラメーター
- parent
- ParentSpanRef
親スパン参照
- callback
-
() => T
親コンテキストで実行する関数
返品
T
コールバックの結果
safeSerializeToJson(string | Record<string, unknown>, string)
値が常に JSON で解析可能な文字列であることを確認します。
- オブジェクトは JSON.stringify を使用してシリアル化されます。
- 既に有効な JSON オブジェクト/配列である文字列が渡されます。
- その他のすべての文字列 (ベア JSON プリミティブを含む) は、
{ [key]: value }ラップされます。
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string
パラメーター
- value
-
string | Record<string, unknown>
シリアル化する値。
- key
-
string
プレーン文字列をラップするときに使用するキー。
返品
string
serializeMessages(InputMessages | OutputMessages)
バージョン管理されたメッセージ ラッパーを JSON にシリアル化します。
出力は完全なラッパー オブジェクトです: {"version":"0.1.0","messages":[...]}。
try/catch を使用すると、メッセージ 部分に JSON シリアル化不可能な値 (BigInt、循環参照など) が含まれている場合でも、テレメトリの記録がスローされないようにします。
function serializeMessages(wrapper: InputMessages | OutputMessages): string
パラメーター
- wrapper
返品
string
setLogger(ILogger)
監視 SDK のカスタム ロガー実装を設定する
Winston の例:
import * as winston from 'winston';
import { setLogger } from '@microsoft/agents-a365-observability';
const winstonLogger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
setLogger({
info: (msg, ...args) => winstonLogger.info(msg, ...args),
warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
error: (msg, ...args) => winstonLogger.error(msg, ...args),
event: (eventType, isSuccess, durationMs, message, details) => {
// eventType is ExporterEventNames enum value
winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, ...details });
}
});
function setLogger(customLogger: ILogger)
パラメーター
- customLogger
- ILogger
カスタム ロガーの実装
truncateValue(string)
文字列値を MAX_ATTRIBUTE_LENGTH 文字に切り捨てます。 値が制限を超えた場合は、トリミングされ、切り捨てサフィックスが追加され、合計の長さが正確に MAX_ATTRIBUTE_LENGTHに制限されます。
function truncateValue(value: string): string
パラメーター
- value
-
string
切り捨てる文字列
返品
string
制限内の場合は元の文字列、それ以外の場合は切り捨てられた文字列
updateExportToken(string)
アクティブな OTel コンテキストでエクスポート トークンを更新します。 これを呼び出して、実行時間の長い要求中に元のトークンの有効期限が切れた場合にルート スパンを終了する前にトークンを更新します。
runWithExportTokenによって作成されたのと同じ非同期コンテキスト内で呼び出す必要があります。
function updateExportToken(token: string): boolean
パラメーター
- token
-
string
エクスポートに使用する新しいトークン。
返品
boolean
トークンが正常に更新された場合は true、トークン所有者が見つからなかった場合は false。
変数の詳細
A365_MESSAGE_SCHEMA_VERSION
A365_MESSAGE_SCHEMA_VERSION: "0.1.0"
型
string
MAX_ATTRIBUTE_LENGTH
スパン属性値の最大長。 この制限を超える値は、サフィックス付きで切り捨てられます。
MAX_ATTRIBUTE_LENGTH: 8192
型
8192
defaultObservabilityConfigurationProvider
ObservabilityConfiguration の共有の既定のプロバイダー。
defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>
型
defaultPerRequestSpanProcessorConfigurationProvider
PerRequestSpanProcessorConfiguration の共有既定プロバイダー。
defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>