跳到主要内容

可观察性

为什么是可观察性?

可观察性对于跨原型、测试和生产的大型语言模型(LLM)系统至关重要,原因有几个:

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

我们观察到哪些组件?

简短的回答是:一切!

LLM(大型语言模型)应用程序可以包含一个或多个LLM调用。了解单个API调用级别的详细信息以及应用程序级别的这些调用顺序至关重要:

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

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

个人层面:我们可以观察到哪些组成部分?

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

输入提示

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

模型

  • 型号规格
    • 所用模型的特定版本或标识符。
    • 配置设置、超参数以及应用于模型的任何自定义设置。

输出

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

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

LLM系统通常由多个LLM组成。在应用程序级别,有特定的工作流模式,需要在工作流的每个步骤中具有特定的可观察性。以下是一些示例工作流:

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

我们观察到哪些指标?

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

代币和成本

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

痕迹和延迟

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

异常和错误

  • 及时发现系统内的问题。
  • 构建用于测试的数据集
  • 例如,从拇指向下的情况中理解模式和用例
  • 随着时间的推移,监控错误率和负面反馈。

质量

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

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

集成

MIUI与多个可观察性工具集成,帮助您监控和确保更可靠、更高性能的LLM应用程序。

与LangSmith整合

LangSmith在LLM应用程序开发生命周期中提供了可观察性。

绘画

赞成的意见:

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

MIUI集成示例:

下面是一个示例,当我们运行 纠正RAG示例 来自食谱。

绘画

与Langfuse整合

廊坊 是另一个可观察性平台,提供竞争、评估、提示管理和调试指标等功能。它非常适合简单的应用程序迭代、原型设计和评估。

绘画

赞成的意见:

  • 开源(github)
  • 支持本地部署(地方的, 自助主机)
  • 本地支持MIUI API(即将推出)
  • 与各种框架集成
  • 分析仪表板

MIUI集成示例:这是一个循序渐进的过程 例子 将Langfuse与MIUI整合,以及另一个 例子 我们使用LlamaIdex构建RAG应用程序,使用Langfuse观察步骤,并在PostHog中分析数据。

绘画

与Arize Phoenix整合

Phoenix是一个开源的可观察性库,专为实验、评估和故障排除而设计。它旨在支持代理、RAG管道和其他LLM应用程序。

赞成的意见:

  • 开源(github),并基于OpenTetry构建
  • 可以是 自托管,通过访问 ,或直接在 笔记本
  • 提供 西北风一体化 自动跟踪Client.chat和Agent.chat调用
  • 强大的分析平台,带有副驾驶代理,可帮助调试您的应用程序

MIUI集成示例:这是一个 示例笔记本 这展示了如何在凤凰城追踪MIUI聊天完成和工具调用。

绘画

与权重和偏差的整合

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

绘画

赞成的意见:

  • LLM应用程序开发和微调平台
  • 与集成 API
    • 首先添加一行: weave.init(“我的项目”)
    • 自动跟踪输入、输出、上下文、错误、评估指标和跟踪
  • 与集成 MIUI微调服务
    • 在微调的同时跟踪训练指标
    • 比较训练实验

MIUI集成示例:

为了让你开始,你可以查看我们最近的网络研讨会“微调法学硕士法官以减少幻觉”和 烹饪书.

与PromptLayer集成

PromptLayer是一个用于快速管理、协作、监控和评估的平台。对黑客和生产团队都有好处。

赞成的意见:

  • 无代码CMS用于提示管理和版本控制
  • 对的本土支持
  • 默认情况下,提示与模型无关
  • 简单的快速跟踪和可观察性

MIUI集成:

与AgentOps集成

AgentOps是一个用于AI代理的开源可观察性和DevTool平台。它帮助开发人员构建、评估和监控AI代理。

赞成的意见:

  • 开源
  • 专为观察试剂而设计
  • 考虑时间旅行
  • 与CrewAI、AutoGen和LangChain集成

MIUI集成示例:

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

绘画

与磷化物结合

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

绘画

赞成的意见:

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

MIUI集成示例:

绘画