可观测性
为何需要可观测性?
可观测性对于大语言模型 (LLM) 系统在原型设计、测试和生产阶段至关重要,原因如下:
- 可见性:可观测性提供对 LLM 应用内部状态的详细洞察,使开发者能够理解系统行为。这种可见性对于识别、诊断问题和进行调试至关重要。
- 生产要求:在生产环境中实施可观测性可以满足关键要求,包括监控、可扩展性、安全性和合规性。
- 可复现性:可观测性使开发者能够观察并复现 LLM 系统行为。
- 持续改进:从可观测性数据中获得的洞察可用于推动持续改进措施。
我们观察哪些组件?
简而言之:应有尽有!
一个 LLM (大语言模型) 应用可以包含一个或多个 LLM 调用。理解单个 API 调用层面的细节以及应用层面这些调用的序列至关重要。
-
单个 LLM 调用层面:在单个 LLM API 调用层面,LLM 接收输入提示并生成输出。因此,我们可以监控和观察三个关键组件:输入提示、模型和输出。
-
应用层面:在应用层面,观察 LLM 调用的模式、逻辑和序列非常重要。这个序列决定了信息的流动以及 LLM 被调用的顺序和执行的任务。
单个层面:我们可以观察哪些组件?
为了实现有效的可观测性,我们需要监控和记录与 LLM 交互中涉及的每个组件每个版本的详细信息。以下是要观察的内容以及可观测性工具中一些预期的模块的分解:
输入提示
- 提示模板
- 用于生成输入提示的标准化格式或结构,包括模板中的任何占位符或变量。
- 可观测性工具通常提供一个提示模板注册表,供社区或组织使用和分享。
- 示例
- 少量样本情境学习在提示工程中通常很有效。可以使用特定示例或样本输入来引导模型生成的响应。
- 检索上下文
- 在检索增强生成 (RAG) 系统中,从外部源或数据库检索相关上下文,为 LLM 提供信息,使结果更加可靠。
- 内存
- 存储在内存中的历史数据或先前的交互。
- 如何使用此内存来影响当前提示,例如总结过去的内存、检索相关内存或使用最近的内存。
- 工具
- 用于预处理或增强输入提示的任何工具或实用程序。
- 工具在 LLM 应用中变得越来越重要,它们充当连接现实应用的桥梁。
- 这些工具应用的具体配置或设置及其影响。
模型
- 模型规格
- 正在使用的模型的特定版本或标识符。
- 应用于模型的配置设置、超参数和任何定制。
输出
- 格式
- 模型生成的输出的结构和格式。
应用层面:我们可以观察哪些工作流模式?
一个 LLM 系统通常包含不止一个 LLM。在应用层面,存在需要对工作流中每个步骤进行特定可观测性的特定工作流模式。以下是一些示例工作流:
- RAG
- 一个 RAG 系统除了包含 LLM 的生成步骤外,还包含文档检索步骤。需要额外的可观测性来跟踪和监控外部文档/数据集和检索步骤。
- LLM 作为系统的一部分
- 一个 LLM 系统可能涉及多个 LLM 链式连接,或包含多次迭代的流工程,或一个复杂的多智能体系统,例如用于创建模拟世界。需要观察每个步骤的输入和输出,以理解整体系统行为,识别瓶颈,并确保系统的可靠性和性能。
- 微调
- 微调是一个独立的工作流,它可能是更大工作流的一部分,或另一个工作流的先决步骤。它涉及准备微调数据集、上传数据、创建微调任务以及使用微调模型。这些步骤中的每一个,特别是微调训练任务,都可以通过可观测性来跟踪微调数据集、监控进度、识别问题并确保微调模型的质量。
我们观察哪些指标?
在 LLM 系统工作流的每个步骤中,我们可以观察以下内容并设置整体服务级别目标 (SLOs)、警报和监控:
Token 和成本
- 跟踪处理的 token 数量和相关成本。
跟踪和延迟
- 跟踪系统工作流以观察和监控操作序列。
- 测量和监控延迟以识别性能瓶颈并确保及时响应。
异常和错误
- 及时识别系统内的问题。
- 构建用于测试的数据集
- 例如,从差评案例中理解模式和用例
- 长期监控错误率和负面反馈。
质量
在可观测性工具中,我们应该能够通过评估、反馈和标注来监控关键性能指标。
- 评估
- 用于评估输出质量和相关性的指标和标准。
- 可观测性工具通常提供全面的评估工具包,用于创建评估数据集、标注、评估和比较模型结果。
- 反馈
- 用户对输出的反馈,包括评分、评论和建议。
- 任何已有的自动化反馈机制或系统,用于收集和分析用户反馈。
- 标注
- 手动或自动添加到输出中的标注,用于进一步分析,并可能添加到评估或微调数据集中。
集成
Mistral 集成了多种可观测性工具,帮助您监控并确保 LLM 应用更可靠、性能更高。
与 LangSmith 集成
LangSmith 在 LLM 应用开发生命周期的全程提供可观测性。

优点
- LangSmith 兼容 LangChain 生态系统和外部系统。
- 部署选项即将推出。
- 它提供广泛的可观察领域,作为一个一体化平台。
Mistral 集成示例
- Mistral cookbook 中的所有 langchain notebook 都包含 LangSmith 集成。
以下是一个示例,展示了运行 Mistral cookbook 中的 纠错 RAG 示例 时,如何跟踪跟踪、输入、输出、文档、token 和状态。

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

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

与 Arize Phoenix 集成
Phoenix 是一个开源可观测性库,专为实验、评估和故障排除而设计。它旨在支持智能体、RAG 流水线和其他 LLM 应用。
优点
- 开源 (Github),并基于 OpenTelemetry 构建
- 可以自行托管,通过云访问,或直接在notebook 中运行
- 提供 Mistral 集成,自动跟踪 Client.chat 和 Agent.chat 调用
- 强大的分析平台,带有 copilot 智能体帮助调试您的应用
Mistral 集成示例: 这是一个示例 notebook,展示了如何在 Phoenix 中跟踪 Mistral chat.complete 和工具调用。

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

优点
- 同时支持 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

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

优点
- 开源 (github) 平台
- 无代码聚类和分析
- 可定制仪表盘
- 与其他可观测性框架、语言、API 等有许多集成
Mistral 集成示例
- 查看 Mistral cookbook 中的 phospho notebook。

与 MLflow 集成
MLflow 是一个统一的、端到端的开源 MLOps 平台,适用于传统 ML 和 GenAI 应用,提供全面的跟踪能力,用于监控和分析 GenAI 应用的执行。
优点
- 开源 (Github)
- 通过添加一行代码添加 Mistral 集成:
mlflow.mistral.autolog()
并获得聊天和嵌入调用的完整跟踪。 - 可以在本地运行或自行托管,或通过现有的托管 MLflow 服务之一使用
- 除了跟踪和实验跟踪之外,还提供完整的模型评估、版本控制和部署功能。
Mistral 集成示例: 这是一个示例 notebook。
