Skip to main content

Helicone - 开源 LLM 可观测性平台

tip

这是社区维护的。如果你遇到错误,请提出问题: https://github.com/BerriAI/litellm

Helicone 是一个开源的可观测性平台,它代理你的 LLM 请求并提供关于你的使用情况、花费、延迟等的洞察。

使用 Helicone 与 LiteLLM

LiteLLM 提供了 success_callbacksfailure_callbacks,使你能够根据响应状态轻松地将数据记录到 Helicone。

支持的 LLM 提供商

Helicone 可以记录来自 各种 LLM 提供商 的请求,包括:

  • OpenAI
  • Azure
  • Anthropic
  • Gemini
  • Groq
  • Cohere
  • Replicate
  • 等等

集成方法

有两种主要方法将 Helicone 与 LiteLLM 集成:

  1. 使用回调
  2. 使用 Helicone 作为代理

让我们详细探讨每种方法。

方法 1:使用回调

只需一行代码即可立即使用 Helicone 记录你在 所有提供商 的响应:

litellm.success_callback = ["helicone"]

完整代码

import os
from litellm import completion

## 设置环境变量
os.environ["HELICONE_API_KEY"] = "your-helicone-key"
os.environ["OPENAI_API_KEY"] = "your-openai-key"

# 设置回调
litellm.success_callback = ["helicone"]

# OpenAI 调用
response = completion(
model="gpt-4o",
messages=[{"role": "user", "content": "Hi 👋 - I'm OpenAI"}],
)

print(response)

方法 2:使用 Helicone 作为代理

Helicone 的代理提供了 高级功能 如缓存、速率限制、通过 PromptArmor 实现的 LLM 安全性等。

要使用 Helicone 作为你的 LLM 请求的代理:

  1. 通过 litellm.api_base 将 Helicone 设置为你的基础 URL
  2. 通过 litellm.metadata 传递 Helicone 请求头

完整代码:

import os
import litellm
from litellm import completion

litellm.api_base = "https://oai.hconeai.com/v1"
litellm.headers = {
"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}", # 认证以发送请求到 Helicone API
}

response = litellm.completion(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "How does a court case get to the Supreme Court?"}]
)

print(response)

高级用法

你可以使用 Helicone 头为你的请求添加自定义元数据和属性。以下是一些例子:

litellm.metadata = {
"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}", # 认证以发送请求到 Helicone API
"Helicone-User-Id": "user-abc", # 指定发起请求的用户
"Helicone-Property-App": "web", # 自定义属性以添加额外信息
"Helicone-Property-Custom": "any-value", # 添加任何自定义属性
"Helicone-Prompt-Id": "prompt-supreme-court", # 分配一个 ID 以将此提示与未来版本关联
"Helicone-Cache-Enabled": "true", # 启用响应缓存
"Cache-Control": "max-age=3600", # 设置缓存限制为 1 小时
"Helicone-RateLimit-Policy": "10;w=60;s=user", # 设置速率限制策略
"Helicone-Retry-Enabled": "true", # 启用重试机制
"helicone-retry-num": "3", # 设置重试次数
"helicone-retry-factor": "2", # 设置指数回退因子
"Helicone-Model-Override": "gpt-3.5-turbo-0613", # 覆盖用于成本计算的模型
"Helicone-Session-Id": "session-abc-123", # 设置会话 ID 以进行跟踪
"Helicone-Session-Path": "parent-trace/child-trace", # 设置会话路径以进行分层跟踪
"Helicone-Omit-Response": "false", # 包括响应在日志中(默认行为)
"Helicone-Omit-Request": "false", # 包括请求在日志中(默认行为)
"Helicone-LLM-Security-Enabled": "true", # 启用 LLM 安全功能
"Helicone-Moderations-Enabled": "true", # 启用内容审核
"Helicone-Fallbacks": '["gpt-3.5-turbo", "gpt-4"]', # 设置备用模型
}

缓存和速率限制

启用缓存并设置速率限制策略:

litellm.metadata = {
"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}", # 认证以发送请求到 Helicone API
"Helicone-Cache-Enabled": "true", # 启用响应缓存
"Cache-Control": "max-age=3600", # 设置缓存限制为 1 小时
"Helicone-RateLimit-Policy": "100;w=3600;s=user", # 设置速率限制策略
}

会话跟踪和追踪

使用会话 ID 和路径跟踪多步骤和代理 LLM 交互:

litellm.metadata = {
"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}", # 认证以发送请求到 Helicone API
"Helicone-Session-Id": "session-abc-123", # 你要跟踪的会话 ID
"Helicone-Session-Path": "parent-trace/child-trace", # 会话的路径
}
  • Helicone-Session-Id: 使用此项来指定您希望跟踪的会话的唯一标识符。这允许您将相关请求分组在一起。
  • Helicone-Session-Path: 此标头定义会话的路径,使您能够表示父级和子级跟踪。例如,"parent/child" 表示父级跟踪的一个子级跟踪。

通过使用这两个标头,您可以有效地分组和可视化多步骤的LLM交互,深入了解复杂的AI工作流程。

重试与回退机制

设置重试机制和回退选项:

litellm.metadata = {
"Helicone-Auth": f"Bearer {os.getenv('HELICONE_API_KEY')}", # 认证以发送请求到Helicone API
"Helicone-Retry-Enabled": "true", # 启用重试机制
"helicone-retry-num": "3", # 设置重试次数
"helicone-retry-factor": "2", # 设置指数退避因子
"Helicone-Fallbacks": '["gpt-3.5-turbo", "gpt-4"]', # 设置回退模型
}

支持的标头 - 如需查看所有支持的Helicone标头及其描述的完整列表,请参阅Helicone文档。 通过利用这些标头和元数据选项,您可以更深入地了解您的LLM使用情况,优化性能,并通过Helicone和LiteLLM更好地管理您的AI工作流程。