语义内核中的可观测性

可观测性的简要介绍

构建 AI 解决方案时,希望能够观察服务的行为。 可观测性是监视和分析分布式系统中组件的内部状态的能力。 这是构建企业就绪 AI 解决方案的关键要求。

通常可以通过日志记录、指标和跟踪来实现可观测性。 它们通常被称为可观测性的三大支柱。 还将听到用于描述这三大支柱收集的数据的“遥测”一词。 与调试不同,可观测性提供了系统运行状况和性能的持续概述。

用于进一步阅读的有用材料:

语义内核中的可观测性

语义内核设计为可观察。 它发出与 OpenTelemetry 标准兼容的日志、指标和跟踪。 可以使用你喜欢的可观测性工具来监视和分析基于语义内核构建的服务的行为。

具体而言,语义内核提供以下可观测性功能:

  • 日志记录:语义内核记录内核、内核插件和函数以及 AI 连接器中有意义的事件和错误。 日志和事件

    重要

    Application Insights 中的跟踪表示传统的日志条目和 OpenTelemetry 跨事件。 它们与分布式跟踪不同。

  • 指标:语义内核从内核函数和 AI 连接器发出指标。 你将能够监视指标,例如内核函数执行时间、AI 连接器的令牌消耗等。 指标
  • 跟踪:语义内核支持分布式跟踪。 可以在不同的服务和语义内核中跟踪活动。 完成请求的端到端事务
遥测 说明
日志 日志会在整个内核中记录。 有关 .Net 中的日志记录的详细信息,请参阅本文档。 敏感数据(如内核函数参数和结果)在跟踪级别记录。 有关日志级别的详细信息,请参阅此
活动 每个内核函数执行和对 AI 模型的每次调用都记录为活动。 所有活动都由名为“Microsoft.SemanticKernel”的活动源生成。
指标 语义内核从内核函数中捕获以下指标:
  • semantic_kernel.function.invocation.duration (直方图) - 函数执行时间(以秒为单位)
  • semantic_kernel.function.streaming.duration (直方图) - 函数流式处理执行时间(以秒为单位)
  • semantic_kernel.function.invocation.token_usage.prompt (直方图) - 提示令牌用法的数量(仅适用于 KernelFunctionFromPrompt
  • semantic_kernel.function.invocation.token_usage.completion (直方图) - 完成令牌用法数(仅适用于 KernelFunctionFromPrompt
遥测 说明
日志 日志会在整个内核中记录。 有关在 Python 中日志记录的详细信息,请参阅本文档。 敏感数据(如内核函数参数和结果)在调试级别记录。
Span 每个自动函数调用循环、每个内核函数执行和对 AI 模型的每次调用都记录为跨度。
指标 语义内核从内核函数中捕获以下指标:
  • semantic_kernel.function.invocation.duration (直方图) - 函数执行时间(以秒为单位)
  • semantic_kernel.function.streaming.duration (直方图) - 函数流式处理执行时间(以秒为单位)

注意

语义内核可观测性尚不适用于 Java。

OpenTelemetry 语义约定

语义内核遵循 OpenTelemetry 语义约定 ,实现可观测性。 这意味着语义内核发出的日志、指标和跟踪是结构化的,遵循通用架构。 这可确保可以更有效地分析语义内核发出的遥测数据。

注意

目前,生成式 AI语义约定处于实验状态。 语义内核努力尽可能密切地遵循 OpenTelemetry 语义约定,并为 AI 解决方案提供一致且有意义的可观测性体验。

后续步骤

在语义内核中基本了解可观测性后,可以详细了解如何将遥测数据输出到控制台或使用 APM 工具可视化和分析遥测数据。