OpenLLMetry简介
OpenLLMetry是一个基于OpenTelemetry构建的开源项目,旨在为大型语言模型(LLM)应用提供全面的可观测性解决方案。它由Traceloop公司在Apache 2.0许可下开发和维护,可以轻松集成到现有的可观测性堆栈中,如Datadog、Honeycomb等。
OpenLLMetry的核心优势在于它能够捕获LLM应用中的关键性能指标(KPI),并将这些数据标准化后输出为OpenTelemetry格式。这使得开发者可以全面了解LLM应用的运行状况,包括模型调用、向量数据库操作等关键环节。
主要特性
OpenLLMetry具有以下主要特性:
-
基于OpenTelemetry标准:利用OpenTelemetry的强大生态系统,确保与现有可观测性工具的兼容性。
-
支持多种LLM提供商:可以监控OpenAI、Anthropic、Cohere等主流LLM服务的调用。
-
向量数据库支持:集成了Chroma、Pinecone、Qdrant等常用向量数据库的监控。
-
框架集成:与LangChain、LlamaIndex等流行的LLM开发框架无缝集成。
-
易于使用:通过简单的SDK初始化即可开始收集数据。
-
灵活的导出选项:支持将数据导出到多种可观测性平台。
快速开始
要开始使用OpenLLMetry,只需几个简单的步骤:
- 安装SDK:
pip install traceloop-sdk
- 在代码中初始化:
from traceloop.sdk import Traceloop
Traceloop.init()
这样就完成了基本设置,OpenLLMetry将开始收集你的LLM应用数据。
支持的目标平台
OpenLLMetry支持将数据导出到多个可观测性平台,包括:
- Traceloop
- Dynatrace
- Datadog
- New Relic
- Honeycomb
- Grafana Tempo
- HyperDX
- SigNoz
- Splunk
- OpenTelemetry Collector
- IBM Instana
每个平台的具体配置方法可以参考官方文档。
监控范围
OpenLLMetry可以监控以下几个主要方面:
LLM提供商
- OpenAI / Azure OpenAI
- Anthropic
- Cohere
- Ollama
- Mistral AI
- HuggingFace
- AWS Bedrock
- Replicate
- Google Vertex AI
- Google Generative AI (Gemini)
- IBM Watsonx AI
- Together AI
- Aleph Alpha
向量数据库
- Chroma
- Pinecone
- Qdrant
- Weaviate
- Milvus
- Marqo
- LanceDB
开发框架
- LangChain
- LlamaIndex
- Haystack
- LiteLLM
使用案例:OpenAI LLM模型与LangChain
以下是一个使用OpenAI LLM模型和LangChain框架的简单示例,展示了如何使用OpenLLMetry进行监控:
from traceloop.sdk import Traceloop
import os
import openai
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from traceloop.sdk.decorators import workflow, task
Traceloop.init(app_name="openai-obs", disable_batch=True)
openai.api_key = os.getenv("OPENAI_API_KEY")
@task(name="add_prompt_context")
def add_prompt_context():
llm = OpenAI(openai_api_key=openai.api_key)
prompt = ChatPromptTemplate.from_template("explain the business of company {company} in a max of {length} words")
model = ChatOpenAI()
chain = prompt | model
return chain
@task(name="prep_prompt_chain")
def prep_prompt_chain():
return add_prompt_context()
@workflow(name="ask_question")
def prompt_question():
chain = prep_prompt_chain()
return chain.invoke({"company": "dynatrace", "length" : 50})
if __name__ == "__main__":
print(prompt_question())
运行这段代码后,你可以在Dynatrace等支持的可观测性平台中实时查看AI模型的运行情况,包括每个LangChain任务的可靠性和延迟等信息。
社区与支持
OpenLLMetry拥有活跃的社区支持:
- Slack社区:与其他用户和Traceloop团队实时交流
- GitHub Discussions:深入讨论功能和获取帮助
- GitHub Issues:报告bug和错误
- Twitter:获取最新动态
贡献指南
OpenLLMetry欢迎社区贡献。无论是大是小,所有贡献都很重要。你可以:
- 查看贡献指南了解如何开始
- 预约与团队成员配对编程
- 加入Slack社区提问
结语
OpenLLMetry为LLM应用开发者提供了一个强大而灵活的可观测性解决方案。通过标准化的数据收集和广泛的集成支持,它使得监控和优化LLM应用变得更加简单。无论你是使用哪种LLM服务或开发框架,OpenLLMetry都能帮助你更好地理解和改进你的AI应用。
随着LLM技术的不断发展,可观测性将在确保AI系统的可靠性、性能和合规性方面发挥越来越重要的作用。OpenLLMetry作为一个开源项目,将继续跟随行业发展,为开发者提供最前沿的LLM可观测性工具。我们期待看到更多开发者加入OpenLLMetry社区,共同推动LLM应用的可观测性发展。