@microsoft/agents-a365-observability package
Clases
| Agent365ExporterOptions |
Número máximo de intervalos por lote de exportación. |
| BaggageBuilder |
Generador de equipaje por solicitud para la propagación de contexto de OpenTelemetry. Esta clase proporciona una API fluida para establecer valores de equipaje que se propagarán en el contexto de OpenTelemetry. Ejemplo
|
| BaggageScope |
Administrador de contexto para el ámbito del equipaje. Esta clase administra el ciclo de vida de los valores de equipaje y los establece al entrar y restaurar el contexto anterior al salir. |
| Builder |
Generador para configurar el agente 365 con seguimiento de OpenTelemetry |
| ExecuteToolScope |
Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de ejecución de herramientas de IA. |
| InferenceScope |
Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de inferencia de IA generativas. |
| InvokeAgentScope |
Proporciona el ámbito de seguimiento de OpenTelemetry para las operaciones de invocación del agente de IA. |
| ObservabilityConfiguration |
Configuración del paquete de observabilidad. Hereda la configuración del entorno de ejecución y agrega configuraciones específicas de observabilidad. |
| ObservabilityManager |
Punto de entrada principal para el Agente 365 que proporciona seguimiento de OpenTelemetry para agentes y herramientas de IA |
| OpenTelemetryConstants |
Constantes de OpenTelemetry para el Agente 365 |
| OpenTelemetryScope |
Clase base para ámbitos de seguimiento de OpenTelemetry |
| OutputScope |
Proporciona el ámbito de seguimiento de OpenTelemetry para el seguimiento de mensajes de salida con la vinculación del intervalo primario. |
| PerRequestSpanProcessorConfiguration |
Configuración de PerRequestSpanProcessor. Hereda la configuración del entorno de ejecución (clusterCategory, isNodeEnvDevelopment) y agrega límites de protección de procesador por solicitud. Esto se separa de ObservabilityConfiguration porque PerRequestSpanProcessor solo se usa en escenarios específicos y esta configuración no debe exponerse en la configuración común ObservabilityConfiguration. |
Interfaces
| AgentDetails |
Detalles sobre un agente de IA |
| BlobPart |
Datos binarios insertados (codificados en base64). |
| BuilderOptions |
Opciones de configuración del Generador de observabilidad del Agente 365 |
| CallerDetails |
Detalles del autor de la llamada para la creación del ámbito. Admite autores de llamadas humanas, llamadores de agente o ambos (A2A con un humano en la cadena).
Nota de migración: En la versión 1, el nombre Consulte UserDetails : identidad del autor de la llamada humana (anteriormente |
| Channel |
Representa el canal de una invocación. |
| ChatMessage |
Un mensaje de entrada enviado a un modelo (convenciones semánticas de OTEL gen-ai). |
| FilePart |
Referencia a un archivo cargado previamente. |
| GenericPart |
Parte extensible para tipos personalizados y futuros. |
| GenericServerToolCall |
Detalles de la llamada de la herramienta servidor extensible con un discriminador de tipos. |
| GenericServerToolCallResponse |
Respuesta de llamada de herramienta de servidor extensible con un discriminador de tipos. |
| ILogger |
Interfaz de registrador personalizada para la observabilidad del Agente 365 Implementa esta interfaz para admitir los back-end de registro |
| InferenceDetails |
Detalles de una llamada de inferencia |
| InferenceResponse |
Detalles para registrar la respuesta desde una llamada de inferencia |
| InputMessages | |
| InvokeAgentScopeDetails |
Detalles para invocar el ámbito del agente. |
| OutputMessage |
Un mensaje de salida generado por un modelo (convenciones semánticas de OTEL gen-ai). |
| OutputMessages | |
| OutputResponse |
Representa una respuesta que contiene mensajes de salida de un agente. Se usa con OutputScope para el seguimiento de mensajes de salida. Acepta cadenas sin formato, objetos OutputMessage estructurados de OTEL o un dict sin procesar (tratado como resultado de llamada de herramienta por especificación de OTEL). |
| ParentSpanRef |
Referencia a un intervalo primario para la vinculación explícita de elementos primarios y secundarios a través de límites asincrónicos. Se usa cuando se produce un error en la propagación automática del contexto (por ejemplo, devoluciones de llamada de WebSocket, controladores de eventos externos). |
| ReasoningPart |
Razonamiento del modelo/contenido de cadena de pensamiento. |
| Request |
Representa una solicitud con contexto de telemetría. Se usa en todos los tipos de ámbito para el seguimiento de canales y conversaciones. |
| ServerToolCallPart |
Invocación de herramientas del lado servidor. |
| ServerToolCallResponsePart |
Respuesta de la herramienta del lado servidor. |
| ServiceEndpoint |
Representa un punto de conexión para la invocación del agente. |
| SpanDetails |
Detalles de configuración del intervalo para la creación del ámbito. Agrupa las opciones de intervalo de OpenTelemetry en un único objeto, por lo que la firma del método de ámbito permanece estable a medida que se agregan nuevas opciones. |
| TextPart |
Contenido de texto sin formato. |
| ToolCallDetails |
Detalles de una llamada de herramienta realizada por un agente |
| ToolCallRequestPart |
Una llamada de herramienta solicitada por el modelo. |
| ToolCallResponsePart |
Resultado de una llamada a herramienta. |
| UriPart |
Referencia de URI externo. |
| UserDetails |
Detalles sobre el autor de la llamada del usuario humano. |
Alias de tipos
| EnhancedAgentDetails | |
| HeadersCarrier |
Tipo de operador para encabezados HTTP usados en la propagación del contexto de seguimiento. Compatible con Node.js IncomingHttpHeaders y mapas de cadenas sin formato. |
| InputMessagesParam |
Entrada aceptada para |
| MessagePart |
Unión de todos los tipos de elementos de mensaje por convenciones semánticas de OTEL gen-ai. Nota: GenericPart actúa como un punto de referencia para la compatibilidad directa con tipos de elementos personalizados o futuros. Dado que es |
| ObservabilityConfigurationOptions |
Opciones de configuración de observabilidad: amplía las opciones de tiempo de ejecución. Todas las invalidaciones son funciones a las que se llama en cada acceso a propiedades. Heredado de RuntimeConfigurationOptions:
Nota: |
| OutputMessagesParam |
Entrada aceptada para |
| ParentContext |
Un contexto primario para la creación del intervalo. Acepta cualquiera de:
|
| PerRequestSpanProcessorConfigurationOptions |
Opciones de configuración para PerRequestSpanProcessor: amplía las opciones de tiempo de ejecución. Todas las invalidaciones son funciones a las que se llama en cada acceso a propiedades. Heredado de RuntimeConfigurationOptions:
|
| ResponseMessagesParam |
Entrada aceptada para |
Enumeraciones
| ExporterEventNames |
Nombres de eventos usados por Agent365Exporter para el registro y la supervisión. Estos son tipos de eventos de baja cardinalidad para garantizar una supervisión y agregación eficaces. |
| FinishReason |
Motivo por el que un modelo dejó de generarse por convenciones semánticas de OTEL gen-ai. |
| InferenceOperationType |
Representa una operación diferente para los tipos de inferencia del modelo. |
| InvocationRole |
Representa distintos roles que pueden invocar un agente. |
| MessageRole |
Rol de un participante de mensajes por convenciones semánticas de OTEL gen-ai. |
| Modality |
Modalidad multimedia para elementos de blob, archivo y URI. |
Funciones
| create |
Crea un nuevo contexto con una referencia explícita de intervalo primario. Esto permite que los intervalos secundarios estén correctamente primarios incluso cuando se interrumpe el contexto asincrónico. |
| extract |
Extrae el contexto de seguimiento de los encabezados HTTP entrantes mediante el propagador W3C registrado globalmente. Devuelve un objeto OTel ParentContext que se puede pasar a las clases de ámbito como ParentContext. Ejemplo
|
| format |
Dar formato al objeto de error para el registro con seguimiento de mensajes y pila |
| get |
Recupere el token de exportación por solicitud de un contexto de OTel determinado (o el activo). |
| get |
Obtención de la instancia del registrador actual |
| inject |
Inserta el contexto de seguimiento actual ( Ejemplo
|
| is |
Compruebe si la exportación por solicitud está habilitada. Precedencia: invalida internamente la > variable de entorno del proveedor > de configuración. Cuando está habilitada, se usa PerRequestSpanProcessor en lugar de BatchSpanProcessor. El token se pasa a través de OTel Context (almacenamiento local asincrónico) en el momento de la exportación. |
| normalize |
Normaliza un objeto
|
| normalize |
Normaliza un objeto
|
| reset |
Restablecer al registrador de consola predeterminado (principalmente para pruebas) |
| run |
Ejecute una función dentro de un contexto que contenga el token de exportación por solicitud. Esto mantiene el token solo en OTel Context (ALS), nunca en ningún registro. El token se puede actualizar más adelante a través |
| run |
Extrae el contexto de seguimiento de los encabezados HTTP entrantes y ejecuta la devolución de llamada dentro de ese contexto. Los intervalos creados dentro de la devolución de llamada se asociarán al seguimiento extraído. Ejemplo
|
| run |
Ejecuta una función de devolución de llamada dentro de un contexto que tiene una referencia explícita de intervalo primario. Esto resulta útil para crear intervalos secundarios en devoluciones de llamada asincrónicas en las que se interrumpe la propagación del contexto. |
| safe |
Garantiza que el valor siempre es una cadena que se puede analizar con JSON.
|
| serialize |
Serializa un contenedor de mensajes con versiones en JSON. La salida es el objeto contenedor completo: El try/catch garantiza que la grabación de telemetría no se produzca incluso cuando las partes del mensaje contienen valores no serializables JSON (por ejemplo, BigInt, referencias circulares). |
| set |
Establecimiento de una implementación de registrador personalizado para el SDK de observabilidad Ejemplo con Winston:
|
| truncate |
Truncar un valor de cadena para MAX_ATTRIBUTE_LENGTH caracteres. Si el valor supera el límite, se recorta y se anexa un sufijo de truncamiento, con la longitud total limitada exactamente MAX_ATTRIBUTE_LENGTH. |
| update |
Actualice el token de exportación en el contexto de OTel activo. Llame a esto para actualizar el token antes de finalizar el intervalo raíz cuando el token original haya expirado durante una solicitud de larga duración. Debe llamarse a dentro del mismo contexto asincrónico creado por |
Variables
| A365_MESSAGE_SCHEMA_VERSION | |
| MAX_ATTRIBUTE_LENGTH | Longitud máxima para los valores de atributo de intervalo. Los valores que superen este límite se truncarán con un sufijo. |
| default |
Proveedor predeterminado compartido para ObservabilityConfiguration. |
| default |
Proveedor predeterminado compartido para PerRequestSpanProcessorConfiguration. |
| logger | Instancia predeterminada del registrador para la compatibilidad con versiones anteriores. Delega al registrador global que se puede reemplazar a través de setLogger(). |
Detalles de la función
createContextWithParentSpanRef(Context, ParentSpanRef)
Crea un nuevo contexto con una referencia explícita de intervalo primario. Esto permite que los intervalos secundarios estén correctamente primarios incluso cuando se interrumpe el contexto asincrónico.
function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context
Parámetros
- base
-
Context
Contexto base que se va a extender (normalmente context.active())
- parent
- ParentSpanRef
Referencia de intervalo principal que contiene traceId y spanId
Devoluciones
Context
Nuevo contexto con el conjunto de intervalos primarios
extractContextFromHeaders(HeadersCarrier, Context)
Extrae el contexto de seguimiento de los encabezados HTTP entrantes mediante el propagador W3C registrado globalmente. Devuelve un objeto OTel ParentContext que se puede pasar a las clases de ámbito como ParentContext.
Ejemplo
const parentCtx = extractContextFromHeaders(req.headers);
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails, undefined, { parentContext: parentCtx });
function extractContextFromHeaders(headers: HeadersCarrier, baseCtx?: Context): Context
Parámetros
- headers
- HeadersCarrier
Encabezados de solicitud HTTP entrantes que contienen traceparent/tracestate.
- baseCtx
-
Context
Contexto base opcional que se va a extender. El valor predeterminado es el contexto activo.
Devoluciones
Context
Un contexto de OTel que contiene la información de seguimiento extraída.
formatError(unknown)
Dar formato al objeto de error para el registro con seguimiento de mensajes y pila
function formatError(error: unknown): string
Parámetros
- error
-
unknown
Devoluciones
string
getExportToken(Context)
Recupere el token de exportación por solicitud de un contexto de OTel determinado (o el activo).
function getExportToken(ctx?: Context): string | undefined
Parámetros
- ctx
-
Context
Devoluciones
string | undefined
getLogger()
injectContextToHeaders(Record<string, string>, Context)
Inserta el contexto de seguimiento actual (traceparent/tracestate encabezados) en el objeto de encabezados proporcionado mediante el propagador W3C registrado globalmente.
Ejemplo
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>
Parámetros
- headers
-
Record<string, string>
Objeto mutable donde se escribirán los encabezados de contexto de seguimiento.
- ctx
-
Context
Contexto de OTel opcional desde el que se va a insertar. El valor predeterminado es el contexto activo.
Devoluciones
Record<string, string>
El mismo headers objeto, para la comodidad de encadenamiento.
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)
Compruebe si la exportación por solicitud está habilitada. Precedencia: invalida internamente la > variable de entorno del proveedor > de configuración. Cuando está habilitada, se usa PerRequestSpanProcessor en lugar de BatchSpanProcessor. El token se pasa a través de OTel Context (almacenamiento local asincrónico) en el momento de la exportación.
function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean
Parámetros
- configProvider
-
IConfigurationProvider<PerRequestSpanProcessorConfiguration>
Proveedor de configuración opcional. El valor predeterminado es defaultPerRequestSpanProcessorConfigurationProvider si no se especifica.
Devoluciones
boolean
normalizeInputMessages(InputMessagesParam)
Normaliza un objeto InputMessagesParam en un contenedor con InputMessages versiones.
-
string/string[]→ convertido enChatMessage[]y encapsulado -
InputMessages→ devuelto as-is
function normalizeInputMessages(param: InputMessagesParam): InputMessages
Parámetros
- param
- InputMessagesParam
Devoluciones
normalizeOutputMessages(OutputMessagesParam)
Normaliza un objeto OutputMessagesParam en un contenedor con OutputMessages versiones.
-
string/string[]→ convertido enOutputMessage[]y encapsulado -
OutputMessages→ devuelto as-is
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages
Parámetros
- param
- OutputMessagesParam
Devoluciones
resetLogger()
Restablecer al registrador de consola predeterminado (principalmente para pruebas)
function resetLogger()
runWithExportToken<T>(string, () => T)
Ejecute una función dentro de un contexto que contenga el token de exportación por solicitud. Esto mantiene el token solo en OTel Context (ALS), nunca en ningún registro.
El token se puede actualizar más adelante a través updateExportToken() de antes de vaciar el seguimiento, útil cuando la devolución de llamada es de larga duración y el token original puede expirar antes de la exportación.
function runWithExportToken<T>(token: string, fn: () => T): T
Parámetros
- token
-
string
- fn
-
() => T
Devoluciones
T
runWithExtractedTraceContext<T>(HeadersCarrier, () => T)
Extrae el contexto de seguimiento de los encabezados HTTP entrantes y ejecuta la devolución de llamada dentro de ese contexto. Los intervalos creados dentro de la devolución de llamada se asociarán al seguimiento extraído.
Ejemplo
runWithExtractedTraceContext(req.headers, () => {
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T
Parámetros
- headers
- HeadersCarrier
Encabezados de solicitud HTTP entrantes que contienen traceparent/tracestate.
- callback
-
() => T
Función que se va a ejecutar en el contexto extraído.
Devoluciones
T
Resultado de la devolución de llamada.
runWithParentSpanRef<T>(ParentSpanRef, () => T)
Ejecuta una función de devolución de llamada dentro de un contexto que tiene una referencia explícita de intervalo primario. Esto resulta útil para crear intervalos secundarios en devoluciones de llamada asincrónicas en las que se interrumpe la propagación del contexto.
function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T
Parámetros
- parent
- ParentSpanRef
Referencia del intervalo primario
- callback
-
() => T
Función que se va a ejecutar con el contexto primario
Devoluciones
T
Resultado de la devolución de llamada
safeSerializeToJson(string | Record<string, unknown>, string)
Garantiza que el valor siempre es una cadena que se puede analizar con JSON.
- Los objetos se serializan a través de JSON.stringify.
- Las cadenas que ya son objetos o matrices JSON válidos se pasan a través.
- Todas las demás cadenas (incluidas las primitivas JSON sin sistema operativo) se encapsulan:
{ [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string
Parámetros
- value
-
string | Record<string, unknown>
Valor que se va a serializar.
- key
-
string
Clave que se va a usar al encapsular una cadena sin formato.
Devoluciones
string
serializeMessages(InputMessages | OutputMessages)
Serializa un contenedor de mensajes con versiones en JSON.
La salida es el objeto contenedor completo: {"version":"0.1.0","messages":[...]}.
El try/catch garantiza que la grabación de telemetría no se produzca incluso cuando las partes del mensaje contienen valores no serializables JSON (por ejemplo, BigInt, referencias circulares).
function serializeMessages(wrapper: InputMessages | OutputMessages): string
Parámetros
- wrapper
Devoluciones
string
setLogger(ILogger)
Establecimiento de una implementación de registrador personalizado para el SDK de observabilidad
Ejemplo con 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)
Parámetros
- customLogger
- ILogger
Implementación del registrador personalizado
truncateValue(string)
Truncar un valor de cadena para MAX_ATTRIBUTE_LENGTH caracteres. Si el valor supera el límite, se recorta y se anexa un sufijo de truncamiento, con la longitud total limitada exactamente MAX_ATTRIBUTE_LENGTH.
function truncateValue(value: string): string
Parámetros
- value
-
string
Cadena que se va a truncar
Devoluciones
string
Cadena original si está dentro de los límites; de lo contrario, la cadena truncada
updateExportToken(string)
Actualice el token de exportación en el contexto de OTel activo. Llame a esto para actualizar el token antes de finalizar el intervalo raíz cuando el token original haya expirado durante una solicitud de larga duración.
Debe llamarse a dentro del mismo contexto asincrónico creado por runWithExportToken.
function updateExportToken(token: string): boolean
Parámetros
- token
-
string
Token nuevo que se va a usar para la exportación.
Devoluciones
boolean
true si el token se actualizó correctamente, false si no se encontró ningún titular del token.
Detalles de variables
A365_MESSAGE_SCHEMA_VERSION
A365_MESSAGE_SCHEMA_VERSION: "0.1.0"
Tipo
string
MAX_ATTRIBUTE_LENGTH
Longitud máxima para los valores de atributo de intervalo. Los valores que superen este límite se truncarán con un sufijo.
MAX_ATTRIBUTE_LENGTH: 8192
Tipo
8192
defaultObservabilityConfigurationProvider
Proveedor predeterminado compartido para ObservabilityConfiguration.
defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>
Tipo
defaultPerRequestSpanProcessorConfigurationProvider
Proveedor predeterminado compartido para PerRequestSpanProcessorConfiguration.
defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>
Tipo
logger
Instancia predeterminada del registrador para la compatibilidad con versiones anteriores. Delega al registrador global que se puede reemplazar a través de setLogger().
logger: ILogger