OpenRouter 集成与实践

OpenRouter 集成与实践

Langfuse

2 分钟阅读

Langfuse

将 OpenRouter 与 Langfuse 配合使用

希望无需客户端代码即可自动埋点?查看 OpenRouter Broadcast,自动将追踪发送到 Langfuse。

使用 Langfuse

Langfuse 为 LLM 应用提供可观测性与分析。由于 OpenRouter 使用 OpenAI API 模式,你可以利用 Langfuse 与 OpenAI SDK 的原生集成,自动追踪和监控 OpenRouter API 调用。

安装

pip install langfuse openai

配置

设置环境变量:

import os

# 设置你的 Langfuse API 密钥
LANGFUSE_SECRET_KEY="sk-lf-..."
LANGFUSE_PUBLIC_KEY="pk-lf-..."
# 欧盟区域
LANGFUSE_HOST="https://cloud.langfuse.com"
# 美国区域
# LANGFUSE_HOST="https://us.cloud.langfuse.com"

# 设置你的 OpenRouter API 密钥
os.environ["OPENAI_API_KEY"] = "<OPENROUTER_API_KEY>"

简单的 LLM 调用

由于 OpenRouter 提供兼容 OpenAI 的 API,你可以使用 Langfuse 的 OpenAI SDK 封装,将 OpenRouter 调用自动记录为 Langfuse 中的 generation(生成记录):

# 导入 Langfuse 的 OpenAI SDK 封装
from langfuse.openai import openai

# 使用 OpenRouter 的基础 URL 创建 OpenAI 客户端
client = openai.OpenAI(
    base_url="https://openrouter.ai/api/v1",
    default_headers={
        "HTTP-Referer": "<YOUR_SITE_URL>",  # 可选:你的站点 URL
        "X-OpenRouter-Title": "<YOUR_SITE_NAME>",      # 可选:你的站点名称
    }
)

# 发起聊天补全请求
response = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.6",
    messages=[
        {"role": "system", "content": "你是一位乐于助人的助手。"},
        {"role": "user", "content": "讲一个关于太空的有趣事实。"}
    ],
    name="fun-fact-request"  # 可选:Langfuse 中该 generation 的名称
)

# 打印助手的回复
print(response.choices[0].message.content)

使用嵌套调用进行高级追踪

使用 @observe() 装饰器捕获带有嵌套 LLM 调用的函数执行细节:

from langfuse import observe
from langfuse.openai import openai

# 使用 OpenRouter 的基础 URL 创建 OpenAI 客户端
client = openai.OpenAI(
    base_url="https://openrouter.ai/api/v1",
)

@observe()  # 该装饰器启用对此函数的追踪
def analyze_text(text: str):
    # 第一次 LLM 调用:总结文本
    summary_response = summarize_text(text)
    summary = summary_response.choices[0].message.content

    # 第二次 LLM 调用:分析摘要的情感
    sentiment_response = analyze_sentiment(summary)
    sentiment = sentiment_response.choices[0].message.content

    return {
        "summary": summary,
        "sentiment": sentiment
    }

@observe()  # 将被追踪的嵌套函数
def summarize_text(text: str):
    return client.chat.completions.create(
        model="openai/gpt-4o-mini",
        messages=[
            {"role": "system", "content": "你以简洁的方式总结文本。"},
            {"role": "user", "content": f"总结以下文本:\n{text}"}
        ],
        name="summarize-text"
    )

@observe()  # 将被追踪的嵌套函数
def analyze_sentiment(summary: str):
    return client.chat.completions.create(
        model="openai/gpt-4o-mini",
        messages=[
            {"role": "system", "content": "你分析文本的情感。"},
            {"role": "user", "content": f"分析以下摘要的情感:\n{summary}"}
        ],
        name="analyze-sentiment"
    )

# 用法示例
text_to_analyze = "OpenRouter 的统一 API 显著推动了 AI 开发领域,为模型可访问性树立了新标准。"
result = analyze_text(text_to_analyze)
print(result)

了解更多