跳到主内容

可观测性

为何需要可观测性?

可观测性对于大语言模型 (LLM) 系统在原型设计、测试和生产阶段至关重要,原因如下:

  • 可见性:可观测性提供对 LLM 应用内部状态的详细洞察,使开发者能够理解系统行为。这种可见性对于识别、诊断问题和进行调试至关重要。
  • 生产要求:在生产环境中实施可观测性可以满足关键要求,包括监控、可扩展性、安全性和合规性。
  • 可复现性:可观测性使开发者能够观察并复现 LLM 系统行为。
  • 持续改进:从可观测性数据中获得的洞察可用于推动持续改进措施。

我们观察哪些组件?

简而言之:应有尽有!

一个 LLM (大语言模型) 应用可以包含一个或多个 LLM 调用。理解单个 API 调用层面的细节以及应用层面这些调用的序列至关重要。

  1. 单个 LLM 调用层面:在单个 LLM API 调用层面,LLM 接收输入提示并生成输出。因此,我们可以监控和观察三个关键组件:输入提示、模型和输出。

  2. 应用层面:在应用层面,观察 LLM 调用的模式、逻辑和序列非常重要。这个序列决定了信息的流动以及 LLM 被调用的顺序和执行的任务。

单个层面:我们可以观察哪些组件?

为了实现有效的可观测性,我们需要监控和记录与 LLM 交互中涉及的每个组件每个版本的详细信息。以下是要观察的内容以及可观测性工具中一些预期的模块的分解:

输入提示

  • 提示模板
    • 用于生成输入提示的标准化格式或结构,包括模板中的任何占位符或变量。
    • 可观测性工具通常提供一个提示模板注册表,供社区或组织使用和分享。
  • 示例
    • 少量样本情境学习在提示工程中通常很有效。可以使用特定示例或样本输入来引导模型生成的响应。
  • 检索上下文
    • 在检索增强生成 (RAG) 系统中,从外部源或数据库检索相关上下文,为 LLM 提供信息,使结果更加可靠。
  • 内存
    • 存储在内存中的历史数据或先前的交互。
    • 如何使用此内存来影响当前提示,例如总结过去的内存、检索相关内存或使用最近的内存。
  • 工具
    • 用于预处理或增强输入提示的任何工具或实用程序。
    • 工具在 LLM 应用中变得越来越重要,它们充当连接现实应用的桥梁。
    • 这些工具应用的具体配置或设置及其影响。

模型

  • 模型规格
    • 正在使用的模型的特定版本或标识符。
    • 应用于模型的配置设置、超参数和任何定制。

输出

  • 格式
    • 模型生成的输出的结构和格式。

应用层面:我们可以观察哪些工作流模式?

一个 LLM 系统通常包含不止一个 LLM。在应用层面,存在需要对工作流中每个步骤进行特定可观测性的特定工作流模式。以下是一些示例工作流:

  • RAG
    • 一个 RAG 系统除了包含 LLM 的生成步骤外,还包含文档检索步骤。需要额外的可观测性来跟踪和监控外部文档/数据集和检索步骤。
  • LLM 作为系统的一部分
    • 一个 LLM 系统可能涉及多个 LLM 链式连接,或包含多次迭代的流工程,或一个复杂的多智能体系统,例如用于创建模拟世界。需要观察每个步骤的输入和输出,以理解整体系统行为,识别瓶颈,并确保系统的可靠性和性能。
  • 微调
    • 微调是一个独立的工作流,它可能是更大工作流的一部分,或另一个工作流的先决步骤。它涉及准备微调数据集、上传数据、创建微调任务以及使用微调模型。这些步骤中的每一个,特别是微调训练任务,都可以通过可观测性来跟踪微调数据集、监控进度、识别问题并确保微调模型的质量。

我们观察哪些指标?

在 LLM 系统工作流的每个步骤中,我们可以观察以下内容并设置整体服务级别目标 (SLOs)、警报和监控:

Token 和成本

  • 跟踪处理的 token 数量和相关成本。

跟踪和延迟

  • 跟踪系统工作流以观察和监控操作序列。
  • 测量和监控延迟以识别性能瓶颈并确保及时响应。

异常和错误

  • 及时识别系统内的问题。
  • 构建用于测试的数据集
  • 例如,从差评案例中理解模式和用例
  • 长期监控错误率和负面反馈。

质量

在可观测性工具中,我们应该能够通过评估、反馈和标注来监控关键性能指标。

  • 评估
    • 用于评估输出质量和相关性的指标和标准。
    • 可观测性工具通常提供全面的评估工具包,用于创建评估数据集、标注、评估和比较模型结果。
  • 反馈
    • 用户对输出的反馈,包括评分、评论和建议。
    • 任何已有的自动化反馈机制或系统,用于收集和分析用户反馈。
  • 标注
    • 手动或自动添加到输出中的标注,用于进一步分析,并可能添加到评估或微调数据集中。

集成

Mistral 集成了多种可观测性工具,帮助您监控并确保 LLM 应用更可靠、性能更高。

与 LangSmith 集成

LangSmith 在 LLM 应用开发生命周期的全程提供可观测性。

drawing

优点

  • LangSmith 兼容 LangChain 生态系统和外部系统。
  • 部署选项即将推出。
  • 它提供广泛的可观察领域,作为一个一体化平台。

Mistral 集成示例

以下是一个示例,展示了运行 Mistral cookbook 中的 纠错 RAG 示例 时,如何跟踪跟踪、输入、输出、文档、token 和状态。

drawing

与 🪢 Langfuse 集成

Langfuse (GitHub) 是一个用于 LLM 工程的开源平台。它为 AI 应用提供跟踪和监控能力,帮助开发者调试、分析和优化他们的产品。Langfuse 通过原生集成、OpenTelemetry 和 SDKs 与各种工具和框架集成。

drawing

优点

  • 最常用的开源 LLMOps 平台 (博客文章)
  • 模型和框架无关
  • 为生产而构建
  • 可逐步采用,从一个功能开始,随着时间推移扩展到完整平台
  • API 优先,所有功能均可通过 API 进行定制集成
  • 可选地,Langfuse 可以轻松地自行托管

Mistral 集成示例

  • 逐步指南:使用 Langfuse 跟踪 Mistral 模型。
  • Cookbook:关于使用 Mistral 和 LlamaIndex 构建 RAG 应用并使用 Langfuse 跟踪步骤。
drawing

Langfuse 中的公共示例跟踪

与 Arize Phoenix 集成

Phoenix 是一个开源可观测性库,专为实验、评估和故障排除而设计。它旨在支持智能体、RAG 流水线和其他 LLM 应用。

优点

  • 开源 (Github),并基于 OpenTelemetry 构建
  • 可以自行托管,通过访问,或直接在notebook 中运行
  • 提供 Mistral 集成,自动跟踪 Client.chat 和 Agent.chat 调用
  • 强大的分析平台,带有 copilot 智能体帮助调试您的应用

Mistral 集成示例: 这是一个示例 notebook,展示了如何在 Phoenix 中跟踪 Mistral chat.complete 和工具调用。

drawing

与 Weights and Biases 集成

Weights & Biases 是一个端到端 AI 开发者平台,用于 ML 和 LLM 工作流,可用于微调和 LLM 应用构建。使用 W&B Weave 来评估、监控和迭代 GenAI 应用,并使用 W&B Models 作为记录系统来训练、微调和管理 AI 模型。

drawing

优点

  • 同时支持 LLM 应用开发和微调的平台
  • Mistral API 集成
    • 通过添加一行代码开始:weave.init('my-project')
    • 自动跟踪输入、输出、上下文、错误、评估指标和跟踪
  • Mistral 微调服务集成
    • 在微调时跟踪训练指标
    • 比较训练实验

Mistral 集成示例

要开始使用,您可以查看我们最近的网络研讨会“微调 LLM 裁判以减少幻觉”以及cookbook

与 PromptLayer 集成

PromptLayer 是一个用于提示管理、协作、监控和评估的平台。适用于黑客和生产团队。

优点

  • 无代码 CMS,用于提示管理和版本控制
  • 对 Mistral 的原生支持
  • 提示默认与模型无关
  • 简单的提示跟踪和可观测性

Mistral 集成

与 AgentOps 集成

AgentOps 是一个开源的可观测性和 DevTool 平台,专为 AI 智能体设计。它帮助开发者构建、评估和监控 AI 智能体。

优点

  • 开源
  • 专为观察智能体而设计
  • 允许时间旅行
  • 与 CrewAI, AutoGen, & LangChain 集成

Mistral 集成示例

https://github.com/mistralai/cookbook/blob/main/third_party/CAMEL_AI/camel_roleplaying_scraper.ipynb

drawing

与 phospho 集成

phospho 是一个文本分析平台,通过数据挖掘用户消息,可以轻松获取答案、做出决策并减少用户流失。

drawing

优点

  • 开源 (github) 平台
  • 无代码聚类和分析
  • 可定制仪表盘
  • 与其他可观测性框架、语言、API 等有许多集成

Mistral 集成示例

drawing

与 MLflow 集成

MLflow 是一个统一的、端到端的开源 MLOps 平台,适用于传统 ML 和 GenAI 应用,提供全面的跟踪能力,用于监控和分析 GenAI 应用的执行。

优点

  • 开源 (Github)
  • 通过添加一行代码添加 Mistral 集成:mlflow.mistral.autolog() 并获得聊天和嵌入调用的完整跟踪。
  • 可以在本地运行或自行托管,或通过现有的托管 MLflow 服务之一使用
  • 除了跟踪和实验跟踪之外,还提供完整的模型评估、版本控制和部署功能。

Mistral 集成示例: 这是一个示例 notebook

drawing