❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
微信公众号|搜一搜:蚝油菜花
🚀 快速阅读
- Laminar 是一个开源平台,专为大型语言模型(LLM)应用设计,提供追踪、评估、标注和分析工具。
- 支持自动追踪 LLM 调用、事件分析、数据标注等功能,基于现代技术栈构建,确保高性能和可扩展性。
- 通过直观仪表板展示数据,帮助开发者优化应用性能和用户体验,支持 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'},
)
资源
- 项目官网:lmnr.ai
- GitHub 仓库:github.com/lmnr-ai/lmn…
- 文档:docs.lmnr.ai
❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
微信公众号|搜一搜:蚝油菜花