@microsoft/agents-a365-observability package
Klassen
| Agent365ExporterOptions |
Maximale Anzahl von Spannen pro Exportbatch. |
| BaggageBuilder |
Gepäck-Generator pro Anforderung für die OpenTelemetry-Kontextverteilung. Diese Klasse bietet eine Fluent-API zum Festlegen von Gepäckwerten, die im OpenTelemetry-Kontext weitergegeben werden. Beispiel
|
| BaggageScope |
Kontextmanager für Gepäckumfang. Diese Klasse verwaltet den Lebenszyklus von Gepäckwerten, legt sie beim Betreten und Wiederherstellen des vorherigen Kontexts beim Verlassen fest. |
| Builder |
Generator zum Konfigurieren von Agent 365 mit OpenTelemetry-Ablaufverfolgung |
| ExecuteToolScope |
Stellt openTelemetry-Ablaufverfolgungsbereich für KI-Toolausführungsvorgänge bereit. |
| InferenceScope |
Stellt openTelemetry-Ablaufverfolgungsbereich für generative KI-Ableitungsvorgänge bereit. |
| InvokeAgentScope |
Stellt den OpenTelemetry-Ablaufverfolgungsbereich für KI-Agent-Aufrufvorgänge bereit. |
| ObservabilityConfiguration |
Konfiguration für Observability-Paket. Erbt Laufzeiteinstellungen und fügt Observability-spezifische Einstellungen hinzu. |
| ObservabilityManager |
Haupteinstiegspunkt für Agent 365, der die OpenTelemetry-Ablaufverfolgung für KI-Agents und -Tools bereitstellt |
| OpenTelemetryConstants |
OpenTelemetry-Konstanten für Agent 365 |
| OpenTelemetryScope |
Basisklasse für OpenTelemetry-Ablaufverfolgungsbereiche |
| OutputScope |
Stellt den Bereich der OpenTelemetry-Ablaufverfolgung für die Ausgabenachrichtenablaufverfolgung mit übergeordneter Spanverknüpfung bereit. |
| PerRequestSpanProcessorConfiguration |
Konfiguration für PerRequestSpanProcessor. Erbt Laufzeiteinstellungen (clusterCategory, isNodeEnvDevelopment) und fügt Prozessorschutzläufe pro Anforderung hinzu. Dies ist von ObservabilityConfiguration getrennt, da PerRequestSpanProcessor nur in bestimmten Szenarien verwendet wird und diese Einstellungen nicht in der allgemeinen ObservabilityConfiguration verfügbar gemacht werden sollten. |
Schnittstellen
| AgentDetails |
Details zu einem KI-Agent |
| BlobPart |
Inline-Binärdaten (base64-codiert). |
| BuilderOptions |
Konfigurationsoptionen für Agent 365 Observability Builder |
| CallerDetails |
Anruferdetails für die Bereichserstellung. Unterstützt menschliche Anrufer, Agentanrufer oder beides (A2A mit einem Menschen in der Kette).
Migrationshinweis: In v1 wird der Name Siehe UserDetails – Menschliche Anruferidentität (zuvor |
| Channel |
Stellt den Kanal für einen Aufruf dar. |
| ChatMessage |
Eine an ein Modell gesendete Eingabenachricht (OTEL gen-ai semantische Konventionen). |
| FilePart |
Verweisen auf eine vorab hochgeladene Datei. |
| GenericPart |
Erweiterbarer Teil für benutzerdefinierte/ zukünftige Typen. |
| GenericServerToolCall |
Extensible Server tool call details with a type diskriminator. |
| GenericServerToolCallResponse |
Extensible Server tool call response with a type diskriminator. |
| ILogger |
Benutzerdefinierte Loggerschnittstelle für Agent 365 Observability Implementieren Sie diese Schnittstelle zur Unterstützung von Protokollierungs-Back-Ends |
| InferenceDetails |
Details für einen Rückschlussanruf |
| InferenceResponse |
Details zum Aufzeichnen der Antwort von einem Rückschlussanruf |
| InputMessages | |
| InvokeAgentScopeDetails |
Details zum Aufrufen des Agentbereichs. |
| OutputMessage |
Eine Ausgabemeldung, die von einem Modell (OTEL gen-ai semantic conventions) erzeugt wird. |
| OutputMessages | |
| OutputResponse |
Stellt eine Antwort dar, die Ausgabemeldungen von einem Agent enthält. Wird zusammen mit OutputScope für die Ausgabenachrichtenablaufverfolgung verwendet. Akzeptiert einfache Zeichenfolgen, strukturierte OTEL OutputMessage-Objekte oder ein unformatiertes Diktat (behandelt als Toolaufrufergebnis pro OTEL-Spezifikation). |
| ParentSpanRef |
Verweis auf eine übergeordnete Spanne für explizite Verknüpfungen zwischen übergeordneten und untergeordneten Elementen über asynchrone Grenzen hinweg. Wird verwendet, wenn die automatische Kontextverteilung fehlschlägt (z. B. WebSocket-Rückrufe, externe Ereignishandler). |
| ReasoningPart |
Modellieren von Begründungen /Gedankenketteninhalten. |
| Request |
Stellt eine Anforderung mit Telemetriekontext dar. Wird für alle Bereichstypen für die Kanal- und Unterhaltungsnachverfolgung verwendet. |
| ServerToolCallPart |
Serverseitiger Toolaufruf. |
| ServerToolCallResponsePart |
Serverseitige Toolantwort. |
| ServiceEndpoint |
Stellt einen Endpunkt für den Agentaufruf dar. |
| SpanDetails |
Umfassen Konfigurationsdetails für die Bereichserstellung. Gruppiert OpenTelemetry-Optionen in einem einzelnen Objekt, sodass die Bereichsmethodensignatur stabil bleibt, wenn neue Optionen hinzugefügt werden. |
| TextPart |
Nur-Text-Inhalt. |
| ToolCallDetails |
Details zu einem Toolaufruf, der von einem Agent getätigt wurde |
| ToolCallRequestPart |
Ein Vom Modell angeforderter Toolaufruf. |
| ToolCallResponsePart |
Ergebnis eines Toolaufrufs. |
| UriPart |
Externer URI-Verweis. |
| UserDetails |
Details zum Anrufer des menschlichen Benutzers. |
Typaliase
| EnhancedAgentDetails | |
| HeadersCarrier |
Trägertyp für HTTP-Header, die in der Ablaufverfolgungskontextverteilung verwendet werden. Kompatibel mit Node.js IncomingHttpHeaders und einfachen Zeichenfolgenzuordnungen. |
| InputMessagesParam |
Akzeptierte Eingabe für |
| MessagePart |
Union aller Nachrichtenteiltypen gemäß OTEL gen-ai semantischen Konventionen. Hinweis: GenericPart fungiert als Catch-All für die Vorwärtskompatibilität mit benutzerdefinierten oder zukünftigen Teiltypen. Da es |
| ObservabilityConfigurationOptions |
Observability-Konfigurationsoptionen – erweitert Laufzeitoptionen. Alle Außerkraftsetzungen sind Funktionen, die für jeden Eigenschaftenzugriff aufgerufen werden. Geerbt von RuntimeConfigurationOptions:
Hinweis: |
| OutputMessagesParam |
Akzeptierte Eingabe für |
| ParentContext |
Ein übergeordneter Kontext für die Span Creation. Akzeptiert entweder:
|
| PerRequestSpanProcessorConfigurationOptions |
Konfigurationsoptionen für PerRequestSpanProcessor – erweitert Laufzeitoptionen. Alle Außerkraftsetzungen sind Funktionen, die für jeden Eigenschaftenzugriff aufgerufen werden. Geerbt von RuntimeConfigurationOptions:
|
| ResponseMessagesParam |
Akzeptierte Eingabe für |
Enumerationen
| ExporterEventNames |
Ereignisnamen, die von Agent365Exporter zur Protokollierung und Überwachung verwendet werden. Hierbei handelt es sich um Ereignistypen mit niedriger Kardinalität, um eine effiziente Überwachung und Aggregation zu gewährleisten. |
| FinishReason |
Grund, warum ein Modell nicht mehr per OTEL gen-ai-Semantikkonventionen generiert wurde. |
| InferenceOperationType |
Stellt unterschiedliche Vorgänge für Typen für Modellinferenz dar. |
| InvocationRole |
Stellt unterschiedliche Rollen dar, die einen Agent aufrufen können |
| MessageRole |
Rolle eines Nachrichtenteilnehmers gemäß OTEL gen-ai semantischen Konventionen. |
| Modality |
Medienmodalitäten für Blob-, Datei- und URI-Teile. |
Functions
| create |
Erstellt einen neuen Kontext mit einem expliziten übergeordneten Span-Bezug. Auf diese Weise können untergeordnete Abschnitte korrekt übergeordnet werden, auch wenn asynchroner Kontext unterbrochen wird. |
| extract |
Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern mithilfe des global registrierten W3C-Verteilungsmoduls. Gibt ein OTel ParentContext zurück, das als ParentContext an Bereichsklassen übergeben werden kann. Beispiel
|
| format |
Formatieren des Fehlerobjekts für die Protokollierung mit Nachrichten- und Stapelablaufverfolgung |
| get |
Abrufen des Exporttokens pro Anforderung aus einem bestimmten OTel-Kontext (oder dem aktiven). |
| get |
Abrufen der aktuellen Loggerinstanz |
| inject |
Fügt den aktuellen Ablaufverfolgungskontext ( Beispiel
|
| is |
Überprüfen Sie, ob der Export pro Anforderung aktiviert ist. Rangfolge: Interne Außerkraftsetzungen der Umgebungsvariable des Konfigurationsanbieters >> . Wenn diese Option aktiviert ist, wird der PerRequestSpanProcessor anstelle von BatchSpanProcessor verwendet. Das Token wird zur Exportzeit über OTel Context (asynchroner lokaler Speicher) übergeben. |
| normalize |
Normalisiert einen
|
| normalize |
Normalisiert einen
|
| reset |
Zurücksetzen auf den Standardkonsolenlogger (hauptsächlich für Tests) |
| run |
Führen Sie eine Funktion innerhalb eines Kontexts aus, der das Exporttoken pro Anforderung enthält. Dadurch wird das Token nur in OTel Context (ALS) beibehalten, nie in einer Registrierung. Das Token kann später aktualisiert |
| run |
Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern und führt den Rückruf innerhalb dieses Kontexts aus. Alle innerhalb des Rückrufs erstellten Spans werden der extrahierten Ablaufverfolgung übergeordnet. Beispiel
|
| run |
Führt eine Rückruffunktion in einem Kontext aus, der einen expliziten übergeordneten Span-Bezug aufweist. Dies ist nützlich, um untergeordnete Abschnitte in asynchronen Rückrufen zu erstellen, bei denen die Kontextverteilung unterbrochen ist. |
| safe |
Stellt sicher, dass der Wert immer eine JSON-parseable Zeichenfolge ist.
|
| serialize |
Serialisiert einen versionsierten Nachrichtenwrapper in JSON. Die Ausgabe ist das vollständige Wrapperobjekt: Der Try/Catch stellt sicher, dass die Telemetrieaufzeichnung nicht ausgelöst wird, auch wenn Nachrichtenteile nicht-JSON-serialisierbare Werte enthalten (z. B. BigInt, Zirkelverweisen). |
| set |
Festlegen einer benutzerdefinierten Loggerimplementierung für das Observability SDK Beispiel mit Winston:
|
| truncate |
Kürzen Sie einen Zeichenfolgenwert auf MAX_ATTRIBUTE_LENGTH Zeichen. Wenn der Wert den Grenzwert überschreitet, wird er gekürzt und ein Abkürzungssuffix angefügt, wobei die Gesamtlänge bei genau MAX_ATTRIBUTE_LENGTH begrenzt ist. |
| update |
Aktualisieren Sie das Exporttoken im aktiven OTel-Kontext. Rufen Sie das Token auf, um das Token zu aktualisieren, bevor die Stammspanne beendet wird, wenn das ursprüngliche Token möglicherweise während einer langen Anforderung abgelaufen ist. Muss innerhalb desselben asynchronen Kontexts aufgerufen werden, der von |
Variablen
| A365_MESSAGE_SCHEMA_VERSION | |
| MAX_ATTRIBUTE_LENGTH | Maximale Länge für Span-Attributwerte. Werte, die diesen Grenzwert überschreiten, werden mit einem Suffix abgeschnitten. |
| default |
Freigegebener Standardanbieter für ObservabilityConfiguration. |
| default |
Freigegebener Standardanbieter für PerRequestSpanProcessorConfiguration. |
| logger | Standardprotokollierinstanz für Abwärtskompatibilität. Delegiert an den globalen Logger, der über setLogger() ersetzt werden kann. |
Details zur Funktion
createContextWithParentSpanRef(Context, ParentSpanRef)
Erstellt einen neuen Kontext mit einem expliziten übergeordneten Span-Bezug. Auf diese Weise können untergeordnete Abschnitte korrekt übergeordnet werden, auch wenn asynchroner Kontext unterbrochen wird.
function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context
Parameter
- base
-
Context
Der zu erweiternde Basiskontext (in der Regel context.active())
- parent
- ParentSpanRef
Der übergeordnete Span-Bezug, der TraceId und spanId enthält
Gibt zurück
Context
Ein neuer Kontext mit dem übergeordneten Span-Satz
extractContextFromHeaders(HeadersCarrier, Context)
Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern mithilfe des global registrierten W3C-Verteilungsmoduls. Gibt ein OTel ParentContext zurück, das als ParentContext an Bereichsklassen übergeben werden kann.
Beispiel
const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
function extractContextFromHeaders(headers: HeadersCarrier, baseCtx?: Context): Context
Parameter
- headers
- HeadersCarrier
Die eingehenden HTTP-Anforderungsheader, die traceparent/tracestate.
- baseCtx
-
Context
Optionaler Basiskontext, der erweitert werden soll. Standardmäßig wird der aktive Kontext verwendet.
Gibt zurück
Context
Ein OTel-Kontext, der die extrahierten Ablaufverfolgungsinformationen enthält.
formatError(unknown)
Formatieren des Fehlerobjekts für die Protokollierung mit Nachrichten- und Stapelablaufverfolgung
function formatError(error: unknown): string
Parameter
- error
-
unknown
Gibt zurück
string
getExportToken(Context)
Abrufen des Exporttokens pro Anforderung aus einem bestimmten OTel-Kontext (oder dem aktiven).
function getExportToken(ctx?: Context): string | undefined
Parameter
- ctx
-
Context
Gibt zurück
string | undefined
getLogger()
injectContextToHeaders(Record<string, string>, Context)
Fügt den aktuellen Ablaufverfolgungskontext (traceparent/tracestate Header) mithilfe des global registrierten W3C-Verteilungsobjekts in das bereitgestellte Headerobjekt ein.
Beispiel
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>
Parameter
- headers
-
Record<string, string>
Veränderbares Objekt, bei dem Ablaufverfolgungskontextheader geschrieben werden.
- ctx
-
Context
Optionaler OTel-Kontext, aus dem eingefügt werden soll. Standardmäßig wird der aktive Kontext verwendet.
Gibt zurück
Record<string, string>
Dasselbe headers Objekt zur Verkettung des Komforts.
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)
Überprüfen Sie, ob der Export pro Anforderung aktiviert ist. Rangfolge: Interne Außerkraftsetzungen der Umgebungsvariable des Konfigurationsanbieters >> . Wenn diese Option aktiviert ist, wird der PerRequestSpanProcessor anstelle von BatchSpanProcessor verwendet. Das Token wird zur Exportzeit über OTel Context (asynchroner lokaler Speicher) übergeben.
function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean
Parameter
- configProvider
-
IConfigurationProvider<PerRequestSpanProcessorConfiguration>
Optionaler Konfigurationsanbieter. Standardwert ist "defaultPerRequestSpanProcessorConfigurationProvider", falls nicht angegeben.
Gibt zurück
boolean
normalizeInputMessages(InputMessagesParam)
Normalisiert einen InputMessagesParam in einen versionsierten InputMessages Wrapper.
-
string/string[]→ inChatMessage[]konvertiert und umschlossen -
InputMessages→ as-is zurückgegeben
function normalizeInputMessages(param: InputMessagesParam): InputMessages
Parameter
- param
- InputMessagesParam
Gibt zurück
normalizeOutputMessages(OutputMessagesParam)
Normalisiert einen OutputMessagesParam in einen versionsierten OutputMessages Wrapper.
-
string/string[]→ inOutputMessage[]konvertiert und umschlossen -
OutputMessages→ as-is zurückgegeben
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages
Parameter
- param
- OutputMessagesParam
Gibt zurück
resetLogger()
Zurücksetzen auf den Standardkonsolenlogger (hauptsächlich für Tests)
function resetLogger()
runWithExportToken<T>(string, () => T)
Führen Sie eine Funktion innerhalb eines Kontexts aus, der das Exporttoken pro Anforderung enthält. Dadurch wird das Token nur in OTel Context (ALS) beibehalten, nie in einer Registrierung.
Das Token kann später aktualisiert updateExportToken() werden, bevor die Ablaufverfolgung geleert wird – nützlich, wenn der Rückruf lange ausgeführt wird und das ursprüngliche Token vor dem Export abläuft.
function runWithExportToken<T>(token: string, fn: () => T): T
Parameter
- token
-
string
- fn
-
() => T
Gibt zurück
T
runWithExtractedTraceContext<T>(HeadersCarrier, () => T)
Extrahiert den Ablaufverfolgungskontext aus eingehenden HTTP-Headern und führt den Rückruf innerhalb dieses Kontexts aus. Alle innerhalb des Rückrufs erstellten Spans werden der extrahierten Ablaufverfolgung übergeordnet.
Beispiel
runWithExtractedTraceContext(req.headers, () => {
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T
Parameter
- headers
- HeadersCarrier
Die eingehenden HTTP-Anforderungsheader, die traceparent/tracestate.
- callback
-
() => T
Die Funktion, die innerhalb des extrahierten Kontexts ausgeführt werden soll.
Gibt zurück
T
Das Ergebnis des Rückrufs.
runWithParentSpanRef<T>(ParentSpanRef, () => T)
Führt eine Rückruffunktion in einem Kontext aus, der einen expliziten übergeordneten Span-Bezug aufweist. Dies ist nützlich, um untergeordnete Abschnitte in asynchronen Rückrufen zu erstellen, bei denen die Kontextverteilung unterbrochen ist.
function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T
Parameter
- parent
- ParentSpanRef
Der übergeordnete Span-Bezug
- callback
-
() => T
Die Funktion, die mit dem übergeordneten Kontext ausgeführt werden soll
Gibt zurück
T
Das Ergebnis des Rückrufs
safeSerializeToJson(string | Record<string, unknown>, string)
Stellt sicher, dass der Wert immer eine JSON-parseable Zeichenfolge ist.
- Objekte werden über JSON.stringify serialisiert.
- Zeichenfolgen, die bereits gültige JSON-Objekte/Arrays sind, werden übergeben.
- Alle anderen Zeichenfolgen (einschließlich bare JSON-Grundtypen) werden umschlossen:
{ [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string
Parameter
- value
-
string | Record<string, unknown>
Der wert, der serialisiert werden soll.
- key
-
string
Der Schlüssel, der beim Umbruch einer einfachen Zeichenfolge verwendet werden soll.
Gibt zurück
string
serializeMessages(InputMessages | OutputMessages)
Serialisiert einen versionsierten Nachrichtenwrapper in JSON.
Die Ausgabe ist das vollständige Wrapperobjekt: {"version":"0.1.0","messages":[...]}.
Der Try/Catch stellt sicher, dass die Telemetrieaufzeichnung nicht ausgelöst wird, auch wenn Nachrichtenteile nicht-JSON-serialisierbare Werte enthalten (z. B. BigInt, Zirkelverweisen).
function serializeMessages(wrapper: InputMessages | OutputMessages): string
Parameter
- wrapper
Gibt zurück
string
setLogger(ILogger)
Festlegen einer benutzerdefinierten Loggerimplementierung für das Observability SDK
Beispiel mit 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)
Parameter
- customLogger
- ILogger
Die implementierung des benutzerdefinierten Loggers
truncateValue(string)
Kürzen Sie einen Zeichenfolgenwert auf MAX_ATTRIBUTE_LENGTH Zeichen. Wenn der Wert den Grenzwert überschreitet, wird er gekürzt und ein Abkürzungssuffix angefügt, wobei die Gesamtlänge bei genau MAX_ATTRIBUTE_LENGTH begrenzt ist.
function truncateValue(value: string): string
Parameter
- value
-
string
Die Zeichenfolge, die abgeschnitten werden soll
Gibt zurück
string
Die ursprüngliche Zeichenfolge, wenn sie innerhalb von Grenzwerten liegt, andernfalls die abgeschnittene Zeichenfolge
updateExportToken(string)
Aktualisieren Sie das Exporttoken im aktiven OTel-Kontext. Rufen Sie das Token auf, um das Token zu aktualisieren, bevor die Stammspanne beendet wird, wenn das ursprüngliche Token möglicherweise während einer langen Anforderung abgelaufen ist.
Muss innerhalb desselben asynchronen Kontexts aufgerufen werden, der von runWithExportToken.
function updateExportToken(token: string): boolean
Parameter
- token
-
string
Das für den Export zu verwendende frische Token.
Gibt zurück
boolean
"true", wenn das Token erfolgreich aktualisiert wurde, "false", wenn kein Tokenhalter gefunden wurde.
Details zu Variablen
A365_MESSAGE_SCHEMA_VERSION
A365_MESSAGE_SCHEMA_VERSION: "0.1.0"
Typ
string
MAX_ATTRIBUTE_LENGTH
Maximale Länge für Span-Attributwerte. Werte, die diesen Grenzwert überschreiten, werden mit einem Suffix abgeschnitten.
MAX_ATTRIBUTE_LENGTH: 8192
Typ
8192
defaultObservabilityConfigurationProvider
Freigegebener Standardanbieter für ObservabilityConfiguration.
defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>
Typ
defaultPerRequestSpanProcessorConfigurationProvider
Freigegebener Standardanbieter für PerRequestSpanProcessorConfiguration.
defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>
Typ
logger
Standardprotokollierinstanz für Abwärtskompatibilität. Delegiert an den globalen Logger, der über setLogger() ersetzt werden kann.
logger: ILogger