@microsoft/agents-a365-observability package
Classes
| Agent365ExporterOptions |
Número máximo de vãos por lote de exportação. |
| BaggageBuilder |
Construtor de bagagens por pedido para propagação de contexto OpenTelemetry. Esta classe fornece uma API fluente para definir valores de bagage que serão propagados no contexto OpenTelemetry. Exemplo
|
| BaggageScope |
Gestor de contexto para o âmbito da bagagem. Esta classe gere o ciclo de vida dos valores de bagagem, colocando-os em enter e restaurando o contexto anterior na saída. |
| Builder |
Builder para configurar o Agent 365 com rastreamento OpenTelemetry |
| ExecuteToolScope |
Fornece o âmbito de rastreamento OpenTelemetry para operações de execução de ferramentas de IA. |
| InferenceScope |
Fornece o âmbito de rastreamento OpenTelemetry para operações de inferência de IA generativa. |
| InvokeAgentScope |
Fornece o âmbito de rastreamento OpenTelemetry para operações de invocação de agentes de IA. |
| ObservabilityConfiguration |
Configuração para pacote de observabilidade. Herda definições de runtime e adiciona definições específicas de observabilidade. |
| ObservabilityManager |
Ponto de entrada principal para o Agente 365 que fornece rastreamento OpenTelemetry para agentes e ferramentas de IA |
| OpenTelemetryConstants |
Constantes OpenTelemetry para Agent 365 |
| OpenTelemetryScope |
Classe base para escopos de rastreio OpenTelemetry |
| OutputScope |
Fornece o âmbito de rastreamento OpenTelemetry para rastreamento de mensagens de saída com ligação de span pai. |
| PerRequestSpanProcessorConfiguration |
Configuração para PerRequestSpanProcessor. Herda as definições de runtime (clusterCategory, isNodeEnvDevelopment) e adiciona guardas de proteção ao processador por pedido. Isto está separado do ObservabilityConfiguration porque o PerRequestSpanProcessor é usado apenas em cenários específicos e estas definições não devem ser expostas no comum ObservabilityConfiguration. |
Interfaces
| AgentDetails |
Detalhes sobre um agente de IA |
| BlobPart |
Dados binários inline (codificados base64). |
| BuilderOptions |
Opções de configuração para o Agent 365 Observability Builder |
| CallerDetails |
Detalhes do chamador para a criação do telescópio. Suporta chamadas humanas, chamadas agentes, ou ambas (A2A com um humano na cadeia).
Nota sobre migração: Na v1, o nome Ver UserDetails — identidade humana do chamador (anteriormente |
| Channel |
Representa o canal para uma invocação |
| ChatMessage |
Uma mensagem de entrada enviada para um modelo (convenções semânticas gen-ai OTEL). |
| FilePart |
Referência a um ficheiro pré-carregado. |
| GenericPart |
Peça extensível para tipos personalizados / futuros. |
| GenericServerToolCall |
Detalhes extensíveis de chamadas de ferramenta de servidor com um discriminador de tipo. |
| GenericServerToolCallResponse |
Resposta extensível de chamada de ferramenta de servidor com discriminador de tipo. |
| ILogger |
Interface de logger personalizada para observabilidade do Agente 365 Implemente esta interface para suportar backends de registo |
| InferenceDetails |
Detalhes para uma chamada de inferência |
| InferenceResponse |
Detalhes para gravar a resposta de uma chamada de inferência |
| InputMessages | |
| InvokeAgentScopeDetails |
Detalhes para invocar o âmbito do agente. |
| OutputMessage |
Uma mensagem de saída produzida por um modelo (convenções semânticas OTEL gen-ai). |
| OutputMessages | |
| OutputResponse |
Representa uma resposta contendo mensagens de saída de um agente. Usado com o OutputScope para rastreio de mensagens de saída. Aceita strings simples, objetos estruturados OTEL OutputMessage ou um dictado bruto (tratado como resultado de chamada de ferramenta segundo a especificação OTEL). |
| ParentSpanRef |
Referência a um span pai para ligação explícita entre pai e filho através de fronteiras assíncronas. Usado quando a propagação automática do contexto falha (por exemplo, callbacks WebSocket, manipuladores externos de eventos). |
| ReasoningPart |
Raciocínio modelo / conteúdo de cadeia de pensamento. |
| Request |
Representa um pedido com contexto de telemetria. Usado em todos os tipos de âmbito para acompanhamento de canais e conversas. |
| ServerToolCallPart |
Invocação de ferramenta do lado do servidor. |
| ServerToolCallResponsePart |
Resposta à ferramenta do lado do servidor. |
| ServiceEndpoint |
Representa um ponto final para a invocação do agente |
| SpanDetails |
Detalhe a configuração do span para criação do escopo. Os Grupos OpenTelemetry abrangem as opções num único objeto, de modo que a assinatura do método scope se mantém estável à medida que novas opções são adicionadas. |
| TextPart |
Conteúdo em texto simples. |
| ToolCallDetails |
Detalhes de uma chamada de ferramenta feita por um agente |
| ToolCallRequestPart |
Uma chamada de ferramenta solicitada pelo modelo. |
| ToolCallResponsePart |
Resultado de uma chamada de ferramenta. |
| UriPart |
Referência externa de URI. |
| UserDetails |
Detalhes sobre o utilizador humano que chama. |
Aliases de Tipo
| EnhancedAgentDetails | |
| HeadersCarrier |
Tipo de portadora para cabeçalhos HTTP usados na propagação do contexto de traços. Compatível com Node.js IncomingHttpHeaders e mapas de string simples. |
| InputMessagesParam |
Aceitou a entrada para |
| MessagePart |
União de todos os tipos de partes de mensagens conforme as convenções semânticas gen-ai do OTEL. Nota: A GenericPart funciona como um termo genérico para compatibilidade futura com tipos de peças personalizadas ou futuras. Como é |
| ObservabilityConfigurationOptions |
Opções de configuração de observabilidade - estende as opções de tempo de execução. Todos os overrides são funções chamadas em cada acesso à propriedade. Herdado do RuntimeConfigurationOptions:
Nota: |
| OutputMessagesParam |
Aceitou a entrada para |
| ParentContext |
Um contexto parental para criação de spans. Aceita um:
|
| PerRequestSpanProcessorConfigurationOptions |
Opções de configuração para PerRequestSpanProcessor - estende as opções de runtime. Todos os overrides são funções chamadas em cada acesso à propriedade. Herdado do RuntimeConfigurationOptions:
|
| ResponseMessagesParam |
Aceitou a entrada para |
Enumerações
| ExporterEventNames |
Nomes de eventos usados pelo Agent365Exporter para registo e monitorização. Estes são tipos de eventos de baixa cardinalidade para garantir monitorização e agregação eficientes. |
| FinishReason |
Razão pela qual um modelo deixou de gerar as convenções semânticas gen-ai do OTEL. |
| InferenceOperationType |
Representa diferentes operações para tipos de inferência de modelos |
| InvocationRole |
Representa diferentes papéis que podem invocar um agente |
| MessageRole |
Papel de um participante de mensagem segundo as convenções semânticas gen-ai do OTEL. |
| Modality |
Modalidade de media para partes de blob, ficheiro e URI. |
Funções
| create |
Cria um novo Contexto com uma referência explícita ao pai span. Isto permite que os spans filhos sejam corretamente parentados mesmo quando o contexto assíncrono está quebrado. |
| extract |
Extrai o contexto traçado dos cabeçalhos HTTP recebidos usando o propagador W3C globalmente registado. Devolve um OTel ParentContext que pode ser passado para as classes de âmbito como um ParentContext. Exemplo
|
| format |
Objeto de erro de formatar para registo com mensagem e rastreio de pilha |
| get |
Recupere o token de exportação por pedido de um determinado Contexto OTel (ou do ativo). |
| get |
Obtenha a instância atual do logger |
| inject |
Injeta o contexto do traço atual ( Exemplo
|
| is |
Verifica se a exportação por pedido está ativada. Precedência: overrides > internos variável de ambiente de configuração do provedor > de configuração. Quando ativado, o PerRequestSpanProcessor é usado em vez de BatchSpanProcessor. O token é passado via OTel Context (armazenamento local assíncrono) no momento da exportação. |
| normalize |
Normaliza an
|
| normalize |
Normaliza an
|
| reset |
Reiniciar para o logger padrão da consola (principalmente para testes) |
| run |
Executa uma função dentro de um Contexto que transporta o token de exportação por pedido. Isto mantém o token apenas no Contexto OTel (ALS), nunca em qualquer registo. O token pode ser atualizado mais tarde antes |
| run |
Extrai o contexto do traço dos cabeçalhos HTTP recebidos e executa o callback dentro desse contexto. Quaisquer spans criados dentro do callback serão parentados para o rastreio extraído. Exemplo
|
| run |
Executa uma função de callback dentro de um contexto que tem uma referência explícita ao pai span. Isto é útil para criar spans filhos em callbacks assíncronos onde a propagação do contexto está quebrada. |
| safe |
Garante que o valor é sempre uma string JSON parseável.
|
| serialize |
Serializa um wrapper de mensagem versionada para JSON. A saída é o objeto wrapper completo: O try/catch garante que a gravação de telemetria não seja lançada mesmo quando partes da mensagem contêm valores não serializáveis em JSON (por exemplo, BigInt, referências circulares). |
| set |
Defina uma implementação personalizada do logger para o SDK de observabilidade Exemplo com Winston:
|
| update |
Atualize o token de exportação no Contexto OTel ativo. Chame isto para atualizar o token antes de terminar o root span quando o token original pode ter expirado durante um pedido de longa duração. Deve ser chamado dentro do mesmo contexto assíncrono criado por |
Variáveis
| A365_MESSAGE_SCHEMA_VERSION | |
| default |
Fornecedor partilhado por defeito para o ObservabilityConfiguration. |
| default |
Fornecedor predefinido partilhado para PerRequestSpanProcessorConfiguration. |
| logger | Instância padrão do logger para compatibilidade retroativa. Delega para o logger global que pode ser substituído via setLogger(). |
Detalhes de Função
createContextWithParentSpanRef(Context, ParentSpanRef)
Cria um novo Contexto com uma referência explícita ao pai span. Isto permite que os spans filhos sejam corretamente parentados mesmo quando o contexto assíncrono está quebrado.
function createContextWithParentSpanRef(base: Context, parent: ParentSpanRef): Context
Parâmetros
- base
-
Context
O contexto base a estender (tipicamente context.active())
- parent
- ParentSpanRef
A referência do span pai que contém traceId e spanId
Devoluções
Context
Um novo Contexto com o conjunto de span pai
extractContextFromHeaders(HeadersCarrier, Context)
Extrai o contexto traçado dos cabeçalhos HTTP recebidos usando o propagador W3C globalmente registado. Devolve um OTel ParentContext que pode ser passado para as classes de âmbito como um ParentContext.
Exemplo
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
Os cabeçalhos de pedidos HTTP recebidos que contêm traceparent/tracestate.
- baseCtx
-
Context
Contexto base opcional para alargar. Por defeito, é o contexto ativo.
Devoluções
Context
Um Contexto OTel contendo a informação de traço extraída.
formatError(unknown)
Objeto de erro de formatar para registo com mensagem e rastreio de pilha
function formatError(error: unknown): string
Parâmetros
- error
-
unknown
Devoluções
string
getExportToken(Context)
Recupere o token de exportação por pedido de um determinado Contexto OTel (ou do ativo).
function getExportToken(ctx?: Context): string | undefined
Parâmetros
- ctx
-
Context
Devoluções
string | undefined
getLogger()
injectContextToHeaders(Record<string, string>, Context)
Injeta o contexto do traço atual (traceparent/tracestate cabeçalhos) no objeto de cabeçalhos fornecido usando o propagador W3C globalmente registado.
Exemplo
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 mutável onde serão escritos os cabeçalhos do contexto dos traços.
- ctx
-
Context
Contexto OT opcional para injetar. Por defeito, é o contexto ativo.
Devoluções
Record<string, string>
O mesmo headers objeto, para a conveniência da corrente.
isPerRequestExportEnabled(IConfigurationProvider<PerRequestSpanProcessorConfiguration>)
Verifica se a exportação por pedido está ativada. Precedência: overrides > internos variável de ambiente de configuração do provedor > de configuração. Quando ativado, o PerRequestSpanProcessor é usado em vez de BatchSpanProcessor. O token é passado via OTel Context (armazenamento local assíncrono) no momento da exportação.
function isPerRequestExportEnabled(configProvider?: IConfigurationProvider<PerRequestSpanProcessorConfiguration>): boolean
Parâmetros
- configProvider
-
IConfigurationProvider<PerRequestSpanProcessorConfiguration>
Fornecedor de configuração opcional. Por defeito é defaultPerRequestSpanProcessorConfigurationProvider se não especificado.
Devoluções
boolean
normalizeInputMessages(InputMessagesParam)
Normaliza an InputMessagesParam para um wrapper versionado InputMessages .
-
string/string[]→ convertido eChatMessage[]envolto -
InputMessages→ regressou as-is
function normalizeInputMessages(param: InputMessagesParam): InputMessages
Parâmetros
- param
- InputMessagesParam
Devoluções
normalizeOutputMessages(OutputMessagesParam)
Normaliza an OutputMessagesParam para um wrapper versionado OutputMessages .
-
string/string[]→ convertido eOutputMessage[]envolto -
OutputMessages→ regressou as-is
function normalizeOutputMessages(param: OutputMessagesParam): OutputMessages
Parâmetros
- param
- OutputMessagesParam
Devoluções
resetLogger()
Reiniciar para o logger padrão da consola (principalmente para testes)
function resetLogger()
runWithExportToken<T>(string, () => T)
Executa uma função dentro de um Contexto que transporta o token de exportação por pedido. Isto mantém o token apenas no Contexto OTel (ALS), nunca em qualquer registo.
O token pode ser atualizado mais tarde antes updateExportToken() do rastreio ser limpo — útil quando o callback é de longa duração e o token original pode expirar antes da exportação.
function runWithExportToken<T>(token: string, fn: () => T): T
Parâmetros
- token
-
string
- fn
-
() => T
Devoluções
T
runWithExtractedTraceContext<T>(HeadersCarrier, () => T)
Extrai o contexto do traço dos cabeçalhos HTTP recebidos e executa o callback dentro desse contexto. Quaisquer spans criados dentro do callback serão parentados para o rastreio extraído.
Exemplo
runWithExtractedTraceContext(req.headers, () => {
const scope = InvokeAgentScope.start(request, scopeDetails, agentDetails);
scope.dispose();
});
function runWithExtractedTraceContext<T>(headers: HeadersCarrier, callback: () => T): T
Parâmetros
- headers
- HeadersCarrier
Os cabeçalhos de pedidos HTTP recebidos que contêm traceparent/tracestate.
- callback
-
() => T
A função a executar dentro do contexto extraído.
Devoluções
T
O resultado do callback.
runWithParentSpanRef<T>(ParentSpanRef, () => T)
Executa uma função de callback dentro de um contexto que tem uma referência explícita ao pai span. Isto é útil para criar spans filhos em callbacks assíncronos onde a propagação do contexto está quebrada.
function runWithParentSpanRef<T>(parent: ParentSpanRef, callback: () => T): T
Parâmetros
- parent
- ParentSpanRef
A referência do span pai
- callback
-
() => T
A função a executar com o contexto pai
Devoluções
T
O resultado do callback
safeSerializeToJson(string | Record<string, unknown>, string)
Garante que o valor é sempre uma string JSON parseável.
- Os objetos são serializados via JSON.stringify.
- Strings que já são objetos/arrays JSON válidos são passados.
- Todas as outras strings (incluindo primitivas JSON nuas) são enroladas:
{ [key]: value }.
function safeSerializeToJson(value: string | Record<string, unknown>, key: string): string
Parâmetros
- value
-
string | Record<string, unknown>
O valor de serializar.
- key
-
string
A chave a usar ao enrolar uma corda simples.
Devoluções
string
serializeMessages(InputMessages | OutputMessages)
Serializa um wrapper de mensagem versionada para JSON.
A saída é o objeto wrapper completo: {"version":"0.1.0","messages":[...]}.
O try/catch garante que a gravação de telemetria não seja lançada mesmo quando partes da mensagem contêm valores não serializáveis em JSON (por exemplo, BigInt, referências circulares).
function serializeMessages(wrapper: InputMessages | OutputMessages): string
Parâmetros
- wrapper
Devoluções
string
setLogger(ILogger)
Defina uma implementação personalizada do logger para o SDK de observabilidade
Exemplo com 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
A implementação do logger personalizado
updateExportToken(string)
Atualize o token de exportação no Contexto OTel ativo. Chame isto para atualizar o token antes de terminar o root span quando o token original pode ter expirado durante um pedido de longa duração.
Deve ser chamado dentro do mesmo contexto assíncrono criado por runWithExportToken.
function updateExportToken(token: string): boolean
Parâmetros
- token
-
string
O token fresco para usar na exportação.
Devoluções
boolean
Verdade se o token foi atualizado com sucesso, falso se não foi encontrado nenhum titular do token.
Detalhes das variáveis
A365_MESSAGE_SCHEMA_VERSION
A365_MESSAGE_SCHEMA_VERSION: "0.1.0"
Tipo
string
defaultObservabilityConfigurationProvider
Fornecedor partilhado por defeito para o ObservabilityConfiguration.
defaultObservabilityConfigurationProvider: DefaultConfigurationProvider<ObservabilityConfiguration>
Tipo
defaultPerRequestSpanProcessorConfigurationProvider
Fornecedor predefinido partilhado para PerRequestSpanProcessorConfiguration.
defaultPerRequestSpanProcessorConfigurationProvider: DefaultConfigurationProvider<PerRequestSpanProcessorConfiguration>
Tipo
logger
Instância padrão do logger para compatibilidade retroativa. Delega para o logger global que pode ser substituído via setLogger().
logger: ILogger