@microsoft/agents-a365-observability package

Klasser

Agent365ExporterOptions

Maksimalt antal span pr. eksportbatch.

BaggageBuilder

Per anmodning bagage builder for OpenTelemetry kontekstoverførsel.

Denne klasse indeholder en flydende API til angivelse af bagageværdier, der overføres i OpenTelemetry-konteksten.

Eksempel

const scope = new BaggageBuilder()
  .tenantId("tenant-123")
  .agentId("agent-456")
  .build();

scope.enter();
// Baggage is set in this context
// ... do work ...
scope.exit();
// Baggage is restored after exiting the context
BaggageScope

Kontekstadministrator for bagageomfang.

Denne klasse administrerer livscyklussen for bagageværdier, angiver dem ved indsejling og gendanner den tidligere kontekst ved afslutning.

Builder

Generator til konfiguration af Agent 365 med OpenTelemetry-sporing

ExecuteToolScope

Leverer sporingsområde for OpenTelemetry for handlinger til udførelse af AI-værktøjer.

InferenceScope

Leverer OpenTelemetry-sporingsområde for generative AI-inferenshandlinger.

InvokeAgentScope

Leverer sporingsområdet for OpenTelemetry for aktiveringshandlinger for AI-agenten.

ObservabilityConfiguration

Konfiguration af observability-pakke. Arver kørselsindstillinger og tilføjer observability-specifikke indstillinger.

ObservabilityManager

Hovedindtastningspunkt for Agent 365, der leverer OpenTelemetry-sporing for AI-agenter og -værktøjer

OpenTelemetryConstants

OpenTelemetry-konstanter for Agent 365

OpenTelemetryScope

Basisklasse for OpenTelemetry-sporingsområder

OutputScope

Leverer sporingsområdet for OpenTelemetry for sporing af outputmeddelelser med overordnet span linking.

PerRequestSpanProcessorConfiguration

Konfiguration af PerRequestSpanProcessor. Nedarver kørselsindstillinger (clusterCategory, isNodeEnvDevelopment) og tilføjer processorgardelister pr. anmodning.

Dette er adskilt fra ObservabilityConfiguration, fordi PerRequestSpanProcessor kun bruges i bestemte scenarier, og disse indstillinger bør ikke vises i den almindelige ObservabilityConfiguration.

Grænseflader

AgentDetails

Oplysninger om en AI-agent

BlobPart

Indbyggede binære data (base64-kodet).

BuilderOptions

Konfigurationsindstillinger for Agent 365 Observability Builder

CallerDetails

Oplysninger om opkald til oprettelse af område. Understøtter personopkald, agentopkald eller begge dele (A2A med et menneske i kæden).

Migreringsnote: I v1 refereres navnet CallerDetails til identiteten for den person, der ringer op (nu UserDetails). I v2 blev det genbrugt som en ombryder, der grupperer både oplysninger om person- og agentopkald.

Se UserDetails – identitet for den person, der ringer op (tidligere CallerDetails) Se afsnittet CHANGELOG.md – banebrydende ændringer for at få vejledning til migrering

Channel

Repræsenterer kanal for en aktivering

ChatMessage

En inputmeddelelse, der er sendt til en model (OTEL gen-ai semantiske konventioner).

FilePart

Reference til en fil, der allerede er uploadet.

GenericPart

Del, der kan udvides, for brugerdefinerede/fremtidige typer.

GenericServerToolCall

Oplysninger om viderestillede serverværktøjskald med en typediskriminator.

GenericServerToolCallResponse

Svar på serverværktøjskald, der kan udvides, med en typediskriminator.

ILogger

Brugerdefineret logføringsgrænseflade til Agent 365-observabilitet Implementer denne grænseflade for at understøtte logføring af backends

InferenceDetails

Oplysninger om et afledningskald

InferenceResponse

Oplysninger om optagelse af svaret fra et inferensopkald

InputMessages
InvokeAgentScopeDetails

Oplysninger om aktivering af agentomfang.

OutputMessage

En outputmeddelelse, der er produceret af en model (OTEL gen-ai semantiske konventioner).

OutputMessages
OutputResponse

Repræsenterer et svar, der indeholder outputmeddelelser fra en agent. Bruges sammen med OutputScope til sporing af outputmeddelelser. Accepterer almindelige strenge, strukturerede OTEL OutputMessage-objekter eller et råt dikt (behandles som et værktøjskaldsresultat pr. OTEL-specifikation).

ParentSpanRef

Reference til et overordnet interval for eksplicit overordnet/underordnet-sammenkædning på tværs af asynkrone grænser. Bruges, når automatisk kontekstoverførsel mislykkes (f.eks. WebSocket-tilbagekald, eksterne hændelseshandlere).

ReasoningPart

Model ræsonnering/kæde af tankeindhold.

Request

Repræsenterer en anmodning med telemetrikontekst. Bruges på tværs af alle områdetyper til kanal- og samtalesporing.

ServerToolCallPart

Aktivering af værktøj på serversiden.

ServerToolCallResponsePart

Svar på værktøj på serversiden.

ServiceEndpoint

Repræsenterer et slutpunkt for agentaktivering

SpanDetails

Detaljer om konfiguration af omfang for oprettelse af område. Grupper OpenTelemetry spænder over indstillingerne i et enkelt objekt, så signaturen for områdemetoden forbliver stabil, efterhånden som der tilføjes nye indstillinger.

TextPart

Indhold i almindelig tekst.

ToolCallDetails

Oplysninger om et værktøjskald foretaget af en agent

ToolCallRequestPart

Et værktøjskald, som modellen har anmodet om.

ToolCallResponsePart

Resultatet af et værktøjskald.

UriPart

Ekstern URI-reference.

UserDetails

Oplysninger om den person, der ringer op.

Typealiasser

EnhancedAgentDetails
HeadersCarrier

Bæretype for HTTP-headere, der bruges i overførsel af sporingskontekst. Kompatibel med Node.js IndgåendeHttpHeaders og almindelige strengkort.

InputMessagesParam

Accepteret input for recordInputMessages. Understøtter en enkelt streng, en matrix af strenge (bagudkompat) eller den versionerede ombrydning.

MessagePart

Samling af alle meddelelsesdelstyper pr. OTEL gen-ai semantiske konventioner.

Bemærk! GenericPart fungerer som en catch-all for fremadrettet kompatibilitet med brugerdefinerede eller fremtidige deltyper. Da dens type er string (ikke en konstant), vil udtømmendeswitch/casepart.type ikke producere kompileringsfejl for ubehandlede sager.

ObservabilityConfigurationOptions

Konfigurationsindstillinger for observabilitet – udvider kørselsindstillinger. Alle tilsidesættelser er funktioner, der kaldes for hver egenskabsadgang.

Nedarvet fra RuntimeConfigurationOptions:

  • clusterCategory
  • isNodeEnvDevelopment

Bemærk! isDevelopmentEnvironment er en afledt hentning for konfigurationsklassen (baseret på clusterCategory), ikke en indstilling, der kan tilsidesættes.

OutputMessagesParam

Accepteret input for recordOutputMessages. Understøtter en enkelt streng, en matrix af strenge (bagudkompat) eller den versionerede ombrydning.

ParentContext

En overordnet kontekst for oprettelse af et tidsrum. Accepterer enten:

PerRequestSpanProcessorConfigurationOptions

Konfigurationsindstillinger for PerRequestSpanProcessor – udvider kørselsindstillinger. Alle tilsidesættelser er funktioner, der kaldes for hver egenskabsadgang.

Nedarvet fra RuntimeConfigurationOptions:

  • clusterCategory, isNodeEnvDevelopment
ResponseMessagesParam

Accepteret input for OutputResponse.messages. Understøtter almindelige strenge, strukturerede OutputMessages eller et råt dikt (behandles som et værktøjskaldsresultat pr. OTEL-specifikation og serialiseret direkte via JSON.stringify).

Optællinger

ExporterEventNames

Hændelsesnavne, der bruges af Agent365Exporter til logføring og overvågning. Dette er hændelsestyper med lav kardinalitet for at sikre effektiv overvågning og aggregering.

FinishReason

Årsagen til, at en model stoppede med at generere pr. semantiske OTEL-gen-ai-konventioner.

InferenceOperationType

Repræsenterer en anden handling for typer til modelindledning

InvocationRole

Repræsenterer forskellige roller, der kan aktivere en agent

MessageRole

En meddelelsesdeltagers rolle pr. OTEL gen-ai semantiske konventioner.

Modality

Mediemodalitet for blob-, fil- og URI-dele.

Funktioner

createContextWithParentSpanRef(Context, ParentSpanRef)

Opretter en ny kontekst med en eksplicit overordnet reference. Dette gør det muligt for underordnede spans at være korrekt overordnet, selv når asynkron kontekst er brudt.

extractContextFromHeaders(HeadersCarrier, Context)

Udtrækker sporingskontekst fra indgående HTTP-headere ved hjælp af den globalt registrerede W3C-overførsel. Returnerer et OTel ParentContext , der kan overføres til områdeklasser som ParentContext.

Eksempel

const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
formatError(unknown)

Formatér fejlobjekt til logføring med meddelelses- og staksporing

getExportToken(Context)

Hent eksporttokenet pr. anmodning fra en given OTel-kontekst (eller den aktive).

getLogger()

Hent den aktuelle logføringsforekomst

injectContextToHeaders(Record<string, string>, Context)

Indsætter den aktuelle sporingskontekst (traceparent/tracestate headers) i det angivne headerobjekt ved hjælp af den globalt registrerede W3C-overførsel.

Eksempel

const headers: Record<string, string> = {};
injectContextToHeaders(headers);
await fetch('http://service-b/process', { headers });
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)

Kontrollér, om eksport pr. anmodning er aktiveret. Prioritet: Intern tilsidesætter > miljøvariablen for konfigurationsudbyderen > . Når indstillingen er aktiveret, bruges PerRequestSpanProcessor i stedet for BatchSpanProcessor. Tokenet overføres via OTel Context (asynkront lokalt lager) på eksporttidspunktet.

normalizeInputMessages(InputMessagesParam)

Normaliserer en InputMessagesParam til en versionindpakket InputMessages ombrydning.

  • string / string[] → konverteret til ChatMessage[] og ombrudt
  • InputMessages → returnerede as-is
normalizeOutputMessages(OutputMessagesParam)

Normaliserer en OutputMessagesParam til en versionindpakket OutputMessages ombrydning.

  • string / string[] → konverteret til OutputMessage[] og ombrudt
  • OutputMessages → returnerede as-is
resetLogger()

Nulstil til standardkonsollogføring (primært til test)

runWithExportToken<T>(string, () => T)

Kør en funktion i en kontekst, der indeholder eksporttokenet pr. anmodning. Dette bevarer kun tokenet i ALS (OTel Context), aldrig i nogen registreringsdatabase.

Tokenet kan opdateres senere via updateExportToken() , før sporingen ryddes – nyttig, når tilbagekaldet er langvarigt, og det oprindelige token kan udløbe før eksporten.

runWithExtractedTraceContext<T>(HeadersCarrier, () => T)

Udtrækker sporingskontekst fra indgående HTTP-headere og kører tilbagekaldet i denne kontekst. Alle spans, der oprettes i tilbagekaldet, er overordnet til den udtrukne sporing.

Eksempel

runWithExtractedTraceContext(req.headers, () => {
  const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
  scope.dispose();
});
runWithParentSpanRef<T>(ParentSpanRef, () => T)

Kører en tilbagekaldsfunktion i en kontekst, der har en eksplicit overordnet span reference. Dette er nyttigt til oprettelse af underordnede spændevidder i asynkrone tilbagekald, hvor kontekstoverførslen er brudt.

safeSerializeToJson(string | Record<string, unknown>, string)

Sikrer, at værdien altid er en JSON-fortolkelig streng.

  • Objekter serialiseres via JSON.stringify.
  • Strenge, der allerede er gyldige JSON-objekter/matrixer, overføres.
  • Alle andre strenge (herunder bare JSON-primitiver) er ombrudt: { [key]: value }.
serializeMessages(InputMessages | OutputMessages)

Serialiserer en versioneret meddelelsesombrydning til JSON.

Outputtet er det fulde ombrydningsobjekt: {"version":"0.1.0","messages":[...]}.

Try/catch sikrer, at telemetrioptagelsen ikke aktiveres, selvom meddelelsesdele indeholder værdier, der ikke kan serialiseres af JSON (f.eks. BigInt, cirkulære refs).

setLogger(ILogger)

Angiv en brugerdefineret logføringsimplementering for OBSERVABILITY SDK

Eksempel med 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 });
  }
});
updateExportToken(string)

Opdater eksporttokenet i den aktive OTel-kontekst. Kald dette for at opdatere tokenet, før du afslutter rodens rækkevidde, når det oprindelige token kan være udløbet under en anmodning, der har kørt i lang tid.

Skal kaldes inden for den samme asynkrone kontekst, der er oprettet af runWithExportToken.

Variabler

A365_MESSAGE_SCHEMA_VERSION
defaultObservabilityConfigurationProvider

Delt standardprovider for ObservabilityConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider

Delt standardprovider for PerRequestSpanProcessorConfiguration.

logger

Standardlogføringsforekomst for bagudkompatibilitet. Stedfortrædere til den globale logføring, som kan erstattes via setLogger().

Oplysninger om funktion

createContextWithParentSpanRef(Context, ParentSpanRef)

Opretter en ny kontekst med en eksplicit overordnet reference. Dette gør det muligt for underordnede spans at være korrekt overordnet, selv når asynkron kontekst er brudt.

function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context

Parametre

base

Context

Den basiskontekst, der skal udvides (typisk context.active())

parent
ParentSpanRef

Den overordnede span-reference, der indeholder traceId og spanId

Returnerer

Context

En ny kontekst med det overordnede span-sæt

extractContextFromHeaders(HeadersCarrier, Context)

Udtrækker sporingskontekst fra indgående HTTP-headere ved hjælp af den globalt registrerede W3C-overførsel. Returnerer et OTel ParentContext , der kan overføres til områdeklasser som ParentContext.

Eksempel

const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
function extractContextFromHeaders(headers: HeadersCarrier, baseCtx?: Context): Context

Parametre

headers
HeadersCarrier

De indgående HTTP-anmodningsheadere, der indeholder traceparent/tracestate.

baseCtx

Context

Valgfri basiskontekst, der skal udvides. Som standard den aktive kontekst.

Returnerer

Context

En OTel-kontekst, der indeholder de udtrukne sporingsoplysninger.

formatError(unknown)

Formatér fejlobjekt til logføring med meddelelses- og staksporing

function formatError(error: unknown): string

Parametre

error

unknown

Returnerer

string

getExportToken(Context)

Hent eksporttokenet pr. anmodning fra en given OTel-kontekst (eller den aktive).

function getExportToken(ctx?: Context): string | undefined

Parametre

ctx

Context

Returnerer

string | undefined

getLogger()

Hent den aktuelle logføringsforekomst

function getLogger(): ILogger

Returnerer

injectContextToHeaders(Record<string, string>, Context)

Indsætter den aktuelle sporingskontekst (traceparent/tracestate headers) i det angivne headerobjekt ved hjælp af den globalt registrerede W3C-overførsel.

Eksempel

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>

Parametre

headers

Record<string, string>

Objekt, der kan slås fra, hvor der skrives sporingskontekstheadere.

ctx

Context

Valgfri OTel-kontekst, der skal indsættes fra. Som standard den aktive kontekst.

Returnerer

Record<string, string>

Det samme headers objekt, for sammenkædning bekvemmelighed.

isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)

Kontrollér, om eksport pr. anmodning er aktiveret. Prioritet: Intern tilsidesætter > miljøvariablen for konfigurationsudbyderen > . Når indstillingen er aktiveret, bruges PerRequestSpanProcessor i stedet for BatchSpanProcessor. Tokenet overføres via OTel Context (asynkront lokalt lager) på eksporttidspunktet.

function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean

Parametre

configProvider

IConfigurationProvider<PerRequestSpanProcessorConfiguration>

Valgfri konfigurationsprovider. Standard er standardperRequestSpanProcessorConfigurationProvider, hvis den ikke er angivet.

Returnerer

boolean

normalizeInputMessages(InputMessagesParam)

Normaliserer en InputMessagesParam til en versionindpakket InputMessages ombrydning.

  • string / string[] → konverteret til ChatMessage[] og ombrudt
  • InputMessages → returnerede as-is
function normalizeInputMessages(param: InputMessagesParam): InputMessages

Parametre

Returnerer

normalizeOutputMessages(OutputMessagesParam)

Normaliserer en OutputMessagesParam til en versionindpakket OutputMessages ombrydning.

  • string / string[] → konverteret til OutputMessage[] og ombrudt
  • OutputMessages → returnerede as-is
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages

Parametre

Returnerer

resetLogger()

Nulstil til standardkonsollogføring (primært til test)

function resetLogger()

runWithExportToken<T>(string, () => T)

Kør en funktion i en kontekst, der indeholder eksporttokenet pr. anmodning. Dette bevarer kun tokenet i ALS (OTel Context), aldrig i nogen registreringsdatabase.

Tokenet kan opdateres senere via updateExportToken() , før sporingen ryddes – nyttig, når tilbagekaldet er langvarigt, og det oprindelige token kan udløbe før eksporten.

function runWithExportToken<T>(token: string, fn: () => T): T

Parametre

token

string

fn

() => T

Returnerer

T

runWithExtractedTraceContext<T>(HeadersCarrier, () => T)

Udtrækker sporingskontekst fra indgående HTTP-headere og kører tilbagekaldet i denne kontekst. Alle spans, der oprettes i tilbagekaldet, er overordnet til den udtrukne sporing.

Eksempel

runWithExtractedTraceContext(req.headers, () => {
  const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
  scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T

Parametre

headers
HeadersCarrier

De indgående HTTP-anmodningsheadere, der indeholder traceparent/tracestate.

callback

() => T

Den funktion, der skal udføres i den udtrukne kontekst.

Returnerer

T

Resultatet af tilbagekaldet.

runWithParentSpanRef<T>(ParentSpanRef, () => T)

Kører en tilbagekaldsfunktion i en kontekst, der har en eksplicit overordnet span reference. Dette er nyttigt til oprettelse af underordnede spændevidder i asynkrone tilbagekald, hvor kontekstoverførslen er brudt.

function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T

Parametre

parent
ParentSpanRef

Referencen til det overordnede interval

callback

() => T

Den funktion, der skal udføres med den overordnede kontekst

Returnerer

T

Resultatet af tilbagekaldet

safeSerializeToJson(string | Record<string, unknown>, string)

Sikrer, at værdien altid er en JSON-fortolkelig streng.

  • Objekter serialiseres via JSON.stringify.
  • Strenge, der allerede er gyldige JSON-objekter/matrixer, overføres.
  • Alle andre strenge (herunder bare JSON-primitiver) er ombrudt: { [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string

Parametre

value

string | Record<string, unknown>

Den værdi, der skal serialiseres.

key

string

Den nøgle, der skal bruges, når en almindelig streng ombrydes.

Returnerer

string

serializeMessages(InputMessages | OutputMessages)

Serialiserer en versioneret meddelelsesombrydning til JSON.

Outputtet er det fulde ombrydningsobjekt: {"version":"0.1.0","messages":[...]}.

Try/catch sikrer, at telemetrioptagelsen ikke aktiveres, selvom meddelelsesdele indeholder værdier, der ikke kan serialiseres af JSON (f.eks. BigInt, cirkulære refs).

function serializeMessages(wrapper: InputMessages | OutputMessages): string

Parametre

Returnerer

string

setLogger(ILogger)

Angiv en brugerdefineret logføringsimplementering for OBSERVABILITY SDK

Eksempel med 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)

Parametre

customLogger
ILogger

Den brugerdefinerede logføringsimplementering

updateExportToken(string)

Opdater eksporttokenet i den aktive OTel-kontekst. Kald dette for at opdatere tokenet, før du afslutter rodens rækkevidde, når det oprindelige token kan være udløbet under en anmodning, der har kørt i lang tid.

Skal kaldes inden for den samme asynkrone kontekst, der er oprettet af runWithExportToken.

function updateExportToken(token: string): boolean

Parametre

token

string

Det nye token, der skal bruges til eksport.

Returnerer

boolean

true, hvis tokenet blev opdateret korrekt, falsk, hvis der ikke blev fundet nogen tokenholder.

Variabeldetaljer

A365_MESSAGE_SCHEMA_VERSION

A365_MESSAGE_SCHEMA_VERSION: "0.1.0"

Type

string

defaultObservabilityConfigurationProvider

Delt standardprovider for ObservabilityConfiguration.

defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>

Type

defaultPerRequestSpanProcessorConfigurationProvider

Delt standardprovider for PerRequestSpanProcessorConfiguration.

defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>

Type

logger

Standardlogføringsforekomst for bagudkompatibilitet. Stedfortrædere til den globale logføring, som kan erstattes via setLogger().

logger: ILogger

Type