跳至主要內容

PostHog

PostHog 是什麼?

PostHog 是一個開源的產品分析平台,可協助您追蹤並分析使用者如何與您的產品互動。對於 LLM 應用程式,PostHog 提供專門的 AI 功能,可追蹤模型使用情況、效能以及使用者與您的 AI 功能的互動。

與 LiteLLM Proxy(LLM 閘道)搭配使用

步驟 1:建立一個 config.yaml 檔案並設定 litellm_settingssuccess_callback

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo

litellm_settings:
success_callback: ["posthog"]
failure_callback: ["posthog"]

步驟 2:設定必要的環境變數

export POSTHOG_API_KEY="your-posthog-api-key"
# Optional, defaults to https://app.posthog.com
export POSTHOG_API_URL="https://app.posthog.com" # optional

步驟 3:啟動 proxy,發出測試請求

啟動 proxy

litellm --config config.yaml --debug

測試請求

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
],
"metadata": {
"user_id": "user-123",
"custom_field": "custom_value"
}
}'

基於團隊的記錄

使用團隊回呼設定,為每個團隊設定不同的 PostHog 憑證:

curl -X POST 'http://localhost:4000/team/{team_id}/callback' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"callback_name": "posthog",
"callback_type": "success",
"callback_vars": {
"posthog_api_key": "ph_team_specific_key",
"posthog_api_url": "https://custom.posthog.com"
}
}'

現在來自該團隊的所有請求都會記錄到其專屬的 PostHog 專案。

與 LiteLLM Python SDK 搭配使用

快速開始

只需 2 行程式碼,即可透過 PostHog 立即記錄您在所有提供者上的回應:

litellm.success_callback = ["posthog"]
litellm.failure_callback = ["posthog"] # logs errors to posthog
import litellm
import os

# from PostHog
os.environ["POSTHOG_API_KEY"] = ""
# Optional, defaults to https://app.posthog.com
os.environ["POSTHOG_API_URL"] = "" # optional

# LLM API Keys
os.environ['OPENAI_API_KEY']=""

# set posthog as a callback, litellm will send the data to posthog
litellm.success_callback = ["posthog"]

# openai call
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hi - i'm openai"}
],
metadata = {
"user_id": "user-123", # set posthog user ID
}
)

進階

設定使用者 ID 與自訂中繼資料

metadata 中傳入 user_id,即可在 PostHog 中將事件與特定使用者關聯:

使用 LiteLLM Python SDK:

import litellm

litellm.success_callback = ["posthog"]

response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello world"}
],
metadata={
"user_id": "user-123", # Add user ID for PostHog tracking
"custom_field": "custom_value" # Add custom metadata
}
)

使用 OpenAI Python SDK 搭配 LiteLLM Proxy:

import openai

client = openai.OpenAI(
api_key="sk-1234", # Your LiteLLM Proxy API key
base_url="http://0.0.0.0:4000" # Your LiteLLM Proxy URL
)

response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello world"}
],
extra_body={
"metadata": {
"user_id": "user-123", # Add user ID for PostHog tracking
"project_name": "my-project", # Add custom metadata
"environment": "production"
}
}
)

每次請求的憑證

您可以針對每次請求覆寫 PostHog 憑證:

import litellm

litellm.success_callback = ["posthog"]

# Use custom PostHog credentials for this specific request
response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello world"}
],
posthog_api_key="ph_custom_project_key",
posthog_api_url="https://custom.posthog.com"
)

這在您需要以下情況時很有用:

  • 將不同團隊/專案的記錄分送到不同的 PostHog 執行個體
  • 為測試環境與正式環境使用不同的 PostHog 專案
  • 根據客戶或租戶路由記錄

停用特定呼叫的記錄

使用 no-log 旗標可防止特定呼叫被記錄:

import litellm

litellm.success_callback = ["posthog"]

response = litellm.completion(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "This won't be logged"}
],
metadata={"no-log": True}
)

PostHog 會記錄什麼?

當 LiteLLM 記錄到 PostHog 時,會擷取有關您 LLM 使用情況的詳細資訊:

針對完成請求

  • 模型資訊:提供者、模型名稱、模型參數
  • 使用指標:輸入 token、輸出 token、總成本
  • 效能:延遲、完成時間
  • 內容:輸入訊息、模型回應(遵循隱私設定)
  • 中繼資料:自訂欄位、使用者 ID、追蹤資訊

針對嵌入請求

  • 模型資訊:提供者、模型名稱
  • 使用指標:輸入 token、總成本
  • 效能:延遲
  • 內容:輸入文字(遵循隱私設定)
  • 中繼資料:自訂欄位、使用者 ID、追蹤資訊

針對錯誤

  • 錯誤詳細資訊:錯誤類型、錯誤訊息、堆疊追蹤
  • 內容:造成錯誤的模型、提供者、輸入
  • 時間:錯誤發生時間、請求持續時間

環境變數

變數必填說明
POSTHOG_API_KEY您的 PostHog 專案 API 金鑰
POSTHOG_API_URLPostHog API URL(預設為 https://app.posthog.com)

疑難排解

1. 缺少 API 金鑰

Error: POSTHOG_API_KEY is not set

設定您的 PostHog API 金鑰:

import os
os.environ["POSTHOG_API_KEY"] = "your-api-key"

2. 自訂 PostHog 執行個體

如果您使用的是自架的 PostHog 執行個體:

import os
os.environ["POSTHOG_API_URL"] = "https://your-posthog-instance.com"

3. 事件未顯示

  • 檢查您的 API 金鑰是否正確
  • 驗證與 PostHog 的網路連線是否正常
  • 事件可能需要幾分鐘才會出現在 PostHog 儀表板中