入门 📋 6 个步骤 第 530 / 532 篇

用 Helicone 给 AI Agent 套一层成本与延迟可观测:零代码侵入的轻量代理实操

Helicone 开源 LLM 可观测代理实操:把 OpenAI/Anthropic 请求改走网关,零代码侵入即可看每次调用的 Token、花费、延迟与错误率,并按功能、用户与模型切片排查成本。

2026.10.14· 15 分钟阅读· 约 1989 字· 🔍 Helicone / 🛰️ LLM 代理

你有没有遇到过这种场景:Agent 上线跑了一周,账单突然涨了三倍,却不知道是哪段逻辑、哪个用户、哪个模型把 Token 烧光的?传统的「在代码里到处加 print 算账」既侵入业务,又算不清分摊。本教程教你用 Helicone——一个开源的 LLM 网关与可观测层——把请求从「直连官方 API」改成「先过 Helicone 代理」,业务代码几乎不用改,就能在仪表盘里看到每次调用的成本、延迟、错误率,并可以按功能、用户、模型任意切片。

🧩 本教程适合:已经用 OpenAI / Anthropic / 兼容 OpenAI 协议模型跑 Agent,想把成本与质量看清楚、但暂时不想大改代码结构的开发者与独立产品人。你只需要 Python 或 Node 能发 HTTP 请求即可。

先搞懂:Helicone 解决什么问题?

大模型官方 API 只管「给你返回结果」,不帮你记「这次花了多少、慢在哪里、为什么失败」。Helicone 站在你和官方 API 之间:你照常调用,只是把请求地址从官方域名换成 Helicone 的网关域名,并在请求头带上 Helicone 的 Key。网关会把请求转发给官方、把响应原样返回给你,同时把这次调用的元数据(模型、Token、耗时、状态)落库,供你事后分析。

不接可观测接 Helicone 之后
成本只能看官方月度总账单每次调用都有明细,可下钻到单条请求
延迟问题靠猜按模型、按路由看出 p50 / p95 延迟
出错难复现请求体、响应、报错全留存,可回放

先定边界:Helicone 是「可观测代理」,不是「模型供应商」。它不替你生成内容,只负责转发与记录。计费仍然发生在你背后的官方模型账户上,Helicone 的免费档足够个人与小团队使用,超出后按用量计费。

Step 1:注册并创建 Helicone 项目

1 拿到你的工作区与 API Key

Helicone 提供云端托管(开箱即用)与自托管(数据完全在自己手里)两种形态。新手建议先用云端:

1. 浏览器打开:helicone.ai
2. 用 GitHub 或邮箱注册登录
3. 进入 Dashboard,点「New Project」创建一个项目
4. 在项目设置里找到「API Keys」,创建一个 Key
   (形如 pk-lf-xxxxxxxxxxxxxxxx,这是你的代理凭证)

拿到后,把它放进环境变量,别写死在源码里。
💡 云端版默认数据驻留在美国区域。如果你的业务涉及个人信息或商业机密,务必评估合规要求;高风险场景直接走自托管(下面 Step 6 会讲)。

Step 2:把请求改走 Helicone 网关

2 只改 base_url 和加一个请求头

Helicone 兼容 OpenAI 的接口形态,所以你几乎不用改调用逻辑,只把 base_url 指向 Helicone 网关,并通过请求头带上 Helicone Key。下面是环境变量写法:

# .env 文件(切勿提交到公开仓库)
OPENAI_API_KEY=sk-你的官方模型Key
HELICONE_API_KEY=pk-lf-你的HeliconeKey

# 把官方地址换成 Helicone 网关地址
OPENAI_BASE_URL=https://oai.hconeai.com/v1

对 Anthropic 官方 SDK 同理,把 base_url 换成 https://anthropic.hconeai.com。只要你的代码本来就用一个可配置的 base_url 变量,这一行就是全部改动。

密钥安全红线:Helicone Key 是「能代你转发并读取请求/响应」的代理凭证,权限等同你的模型 Key。务必放在服务端环境变量或密钥管理服务里,绝对不能出现在前端代码、浏览器包或公开 Git 仓库。一旦泄露,别人可以用你的额度发起调用。

Step 3:跑通第一次调用,确认数据进仪表盘

3 一行 Python 验证链路通了

用你熟悉的 SDK 发一次请求,把 base_url 指到 Helicone 网关,并在请求头注入 Helicone Key:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url=os.environ["OPENAI_BASE_URL"],  # https://oai.hconeai.com/v1
    default_headers={"Helicone-Auth": "Bearer " + os.environ["HELICONE_API_KEY"]},
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "用一句话解释什么是智能体。"}],
)
print(resp.choices[0].message.content)

运行后回到 Helicone Dashboard 的「Requests」页面,应该能看到这一条调用——模型、Tokens、耗时、状态都列出来了。看不到的话,先检查 base_url 拼写和 Helicone-Auth 请求头有没有带上。

🔑 关键验证点:Dashboard 有记录 = 链路通。这一步不通,后面都没意义,务必先确认。

Step 4:给调用打「属性标签」,做成本归因

4
用 property 头按功能 / 用户切片

光看总账还不够,你要知道「客服 Agent 比写作 Agent 贵多少」「哪个用户把额度烧光了」。Helicone 用自定义属性(property)给每次调用贴标签,仪表盘就能按标签聚合:

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    base_url=os.environ["OPENAI_BASE_URL"],
    default_headers={
        "Helicone-Auth": "Bearer " + os.environ["HELICONE_API_KEY"],
        # 自定义属性:功能模块 + 用户标识 + 请求类型
        "Helicone-Property-Feature": "customer-support",
        "Helicone-Property-User": "user_8821",
        "Helicone-Property-Type": "chat",
    },
)

这样在 Dashboard 里就能切到「Feature = customer-support」看这一块的花费曲线,也能按 User 把成本归属到具体账号。多智能体系统里,建议给每个子 Agent 一个独立的 Feature 标签,谁贵谁便宜一目了然。

🎯 最佳实践:把「功能模块 / 用户 ID / Agent 名称」做成必填 property,成本归因会清晰很多。标签在代码里是普通请求头,不改动任何模型逻辑。

Step 5:在仪表盘看成本、延迟与错误率

5 三个面板读懂你的 Agent 健康度

跑一段时间后,打开 Helicone 的几个核心面板:

# Dashboard 里重点看三块
Requests      # 单条请求明细,可点开看完整 prompt / 响应 / 报错
Cost          # 按时间、模型、property 聚合的花费曲线
Latency       # p50 / p95 延迟,定位慢调用来自哪个路由
  • 成本异常:某天曲线陡增,按 Feature 下钻,通常是某个新上线的 Agent 在死循环调用。
  • 延迟异常:p95 明显高于 p50,说明少数请求卡在长上下文或工具调用,考虑加缓存或限流。
  • 错误率:5xx 集中出现,先看是不是官方服务抖动,再看是不是自己的 prompt 触发了安全拦截。
📊 把「按 Feature 拆成本」养成习惯:每周花五分钟看一眼 Cost 面板,比月底收到天价账单再救火省心得多。

Step 6:接缓存与告警,把成本压下来并盯住异常

6 用缓存省重复调用 + 用告警兜底

Helicone 支持「语义缓存」:内容相近的提问直接命中缓存返回,不再调模型,成本立降。开启方式是在请求头打开缓存开关:

default_headers={
    "Helicone-Auth": "Bearer " + os.environ["HELICONE_API_KEY"],
    "Helicone-Cache-Enabled": "true",
}

同时,在 Dashboard 的 Alerts 里设一条规则:当「单用户 1 分钟花费超过阈值」或「错误率超过比例」时发邮件 / Webhook。这样即使半夜跑飞,你也能第一时间收到通知而不是第二天看账单。

代理延迟提醒:请求多经过一跳网关,会带来极小的额外延迟。绝大多数应用无感;但对延迟极度敏感的紧密内循环(例如毫秒级重试),建议只对「需要观测的那部分」走代理,或改用自托管把网关部署在同区域乃至内网,把这一跳压到最低。

常见问题速查

现象大概率原因与解决
Dashboard 看不到请求base_url 没换成网关域名,或 Helicone-Auth 请求头漏带;先回 Step 3 验证
能调用但报错 401Helicone Key 与官方模型 Key 搞混;Helicone-Auth 用 Helicone Key,api_key 用官方 Key
成本聚合不到模块property 标签没在请求头设置;确认 Header 名是 Helicone-Property-XXX
涉及敏感数据不敢上云改用 Helicone 自托管(开源),网关与数据全在自己服务器
← 返回教程中心