Laminar:专为 LLM 设计的监控和分析平台,支持追踪与事件分析

377 阅读4分钟

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

微信公众号|搜一搜:蚝油菜花

lmnr.png

🚀 快速阅读

  1. Laminar 是一个开源平台,专为大型语言模型(LLM)应用设计,提供追踪、评估、标注和分析工具。
  2. 支持自动追踪 LLM 调用、事件分析、数据标注等功能,基于现代技术栈构建,确保高性能和可扩展性。
  3. 通过直观仪表板展示数据,帮助开发者优化应用性能和用户体验,支持 Docker 和 Kubernetes 部署。

正文(附运行示例)

Laminar 是什么

Laminar 是一个开源的可观测性和分析平台,专为大型语言模型(LLM)应用程序设计。它提供了一套完整的工具,用于追踪、评估、注释和分析 LLM 数据,帮助开发者深入理解并优化应用程序。Laminar 的核心功能包括自动追踪 LLM 调用和数据库交互、事件驱动的分析、直观的仪表板展示等,支持数据标注和重用。它基于现代技术栈如 Rust、RabbitMQ、Postgres 和 Clickhouse 构建,确保高性能和可扩展性。

Laminar 的主要功能

  • 追踪:自动追踪 LLM 调用和向量数据库交互,提供应用程序的执行轨迹。
  • 事件分析:基于语义事件的分析,将 LLM 输出转换为可追踪的指标,帮助理解用户或代理的行为。
  • 仪表板:提供直观的仪表板,展示追踪、跨度和事件数据,使数据一目了然。
  • 数据标注:允许用户标注和注释 LLM 追踪,构建数据集改进模型。
  • 评估:支持离线评估,帮助分析模型效果。
  • 提示链管理:构建和托管提示和 LLM 的链,简化复杂流程。
  • 现代技术栈:基于 Rust、RabbitMQ、Postgres 和 Clickhouse 构建,确保高性能和可扩展性。

Laminar 的技术原理

  • OpenTelemetry:基于 OpenTelemetry 进行自动追踪,兼容多种语言和框架。
  • 语义事件:利用自然语言处理技术提取语义事件,转换为可追踪的指标。
  • 消息队列:使用 RabbitMQ 作为消息队列,确保追踪数据的可靠传输。
  • 数据库技术:基于 Postgres 存储应用程序数据,Clickhouse 进行高效的事件和追踪分析。
  • 向量数据库:采用 Qdrant 作为向量数据库,支持高效的向量搜索和检索。
  • 前端技术:基于 Next.js 等现代前端技术构建用户界面。
  • 容器化和编排:使用 Docker 和 Kubernetes 进行容器化部署和编排,简化部署和扩展。

如何运行 Laminar

使用 Laminar Cloud

最简单的方式是使用 Laminar Cloud 的免费层级:

访问 [lmnr.ai](https://www.lmnr.ai)

自行托管使用 Docker Compose

启动本地版本:

git clone https://github.com/lmnr-ai/lmnr
cd lmnr
docker compose up

这将启动以下容器:

  • app-server:核心应用逻辑、后端和 LLM 代理
  • rabbitmq:消息队列,用于可靠传输追踪和观测数据
  • qdrant:向量数据库
  • semantic-search-service:与 qdrant 和嵌入交互的服务
  • frontend:用于与追踪交互的视觉前端仪表板
  • python-executor:一个小型 Python 沙箱,可以运行任意代码,封装在薄薄的 gRPC 服务下
  • postgres:存储所有应用数据的数据库
  • clickhouse:列式 OLAP 数据库,用于更高效的事件和追踪分析

Python 代码插桩示例

首先,创建项目并生成项目 API 密钥:

pip install lmnr
echo "LMNR_PROJECT_API_KEY=<YOUR_PROJECT_API_KEY>" >> .env

然后,初始化 Laminar 并使用@observe()装饰器追踪函数:

import os
from openai import OpenAI
from lmnr import observe, Laminar as L

L.initialize(project_api_key="<LMNR_PROJECT_API_KEY>")

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

@observe()
def poem_writer(topic="turbulence"):
    prompt = f"write a poem about {topic}"
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": prompt},
        ],
    )
    poem = response.choices[0].message.content
    return poem

if __name__ == "__main__":
    print(poem_writer(topic="laminar flow"))

发送事件

使用L.event(name, value)发送事件:

from lmnr import Laminar as L

poem = response.choices[0].message.content
L.event("topic alignment", topic in poem)

使用 Laminar 管道作为提示链管理器

在 UI 中创建 Laminar 管道并管理 LLM 调用链:

from lmnr import Laminar as L

L.initialize('<YOUR_PROJECT_API_KEY>')

result = l.run(
    pipeline='my_pipeline_name',
    inputs={'input_node_name': 'some_value'},
    env={'OPENAI_API_KEY': 'sk-some-key'},
)

资源


❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

微信公众号|搜一搜:蚝油菜花