2026年10月23日 1 分钟阅读

从一次模型调用到可追踪的 Agent:用 Respan 接入 LLM 可观测性

tinyash 0 条评论

当应用只发出几次模型请求时,打印输入和输出似乎就够了。进入真实环境后,问题很快变复杂:一次 Agent 任务可能经过多个模型调用、工具执行和重试;某次回答变慢或质量下降,单看最终文本很难定位是哪个环节出了问题。Respan 是面向 LLM 工程团队的观测与评估平台,其公开 SDK 提供调用追踪、工作流结构化和属性附加能力,也能为若干模型 SDK 自动启用 instrumentation。

这篇文章聚焦一个实用目标:为现有 Python OpenAI 调用加上追踪,同时明确它能解决什么、不能解决什么。

从 SDK 开始,而不是先重写应用

Respan 的 GitHub README 将项目描述为发送 OpenLLMetry 格式 telemetry 的库,并给出了 Python 安装和 OpenAI 快速示例。先安装 SDK 与应用原本使用的 OpenAI SDK:

pip install respan-ai openai

在 Respan 平台创建 API key,然后通过环境变量提供凭据。不要把真实密钥写进源码或提交到仓库:

export RESPAN_API_KEY="替换为你的 Respan API key"
# 可选:默认 API 地址为 https://api.respan.ai/api
export RESPAN_BASE_URL="https://api.respan.ai/api"

下面的例子沿用官方 README 的客户端配置方式。它将 OpenAI 客户端指向 Respan gateway,并初始化 Respan SDK:

import os
from openai import OpenAI
from respan import Respan

respan = Respan()
api_key = os.environ["RESPAN_API_KEY"]
base_url = os.getenv("RESPAN_BASE_URL", "https://api.respan.ai/api")

client = OpenAI(api_key=api_key, base_url=base_url)
response = client.chat.completions.create(
    model="gpt-4.1-nano",
    messages=[{"role": "user", "content": "用三种语言说你好。"}],
)
print(response.choices[0].message.content)
respan.shutdown()

这段代码有个重要边界:快速示例把同一个 Respan API key 用于 gateway 请求和 telemetry。若你的应用直接连接模型供应商,则按供应商自身要求配置模型凭据和 endpoint;README 说明 Respan 仍通过 RESPAN_API_KEY 接收 telemetry。不要把“接入观测”误写成“所有模型调用必须经过代理”。

自动插桩与显式集成如何取舍

对 README 列出的部分一方 SDK,默认初始化会尝试发现可用的自动 instrumentation。Python 可用 respan.get_auto_instrumentation_status() 查看状态;TypeScript 则在 await respan.initialize() 后调用 getInstrumentationStatus()。这比猜测“已初始化就一定追踪成功”稳妥,特别是在依赖缺失或配置变化时。

不过自动发现不是所有集成都自动覆盖。README 将框架、封装库、应用框架、协议工具、观测桥接和向量数据库等归为显式 opt-in,避免同一请求产生重复 spans。Python 若要显式插件与直接 SDK 自动发现并用,需要显式设置 is_auto_instrument=True;传入 instrumentations 默认会选择显式模式。TypeScript 的显式模式当前与自动发现互斥。选一种清晰的策略,并在启动日志或健康检查中记录 instrumentation 状态。

让 Trace 对排错有用

单纯收集请求数量通常不够。Respan README 还提供 workflow/task 装饰器(Python 的 @workflow、@task,TypeScript 的 withWorkflow、withTask),以及把 customer_identifier、thread_identifier 和 metadata 附加到作用域 spans 的方式。对于多轮 Agent,建议以一次用户任务作为 workflow 边界,再把检索、模型决策和工具执行拆成可读的阶段;为 trace 附加稳定的会话或业务标识,排查时才容易从一条用户反馈找到相关调用。

注意不要把敏感提示词、访问令牌或个人数据不加筛选地作为 metadata。追踪系统扩展了可观测性,也扩展了数据暴露面;上线前应定义脱敏、保留期限和访问权限,并确认团队的数据合规要求。

可靠性边界同样要设计

SDK 的 spans 在内存中批量并重试,但 README 明确指出:它们不会写入磁盘,因此进程崩溃或长时间服务中断时,仍在队列中的 spans 可能丢失。对于不能接受这种丢失的长运行 Agent,项目提供 Respan Collector:README 将其描述为带持久化、有界队列的上游 OpenTelemetry Collector,可与应用并行运行,并将 RESPAN_BASE_URL 指向 collector。是否采用应结合部署和运维能力决定;不要仅凭 SDK 的重试行为就假设遥测具备持久化保证。

适用场景与落地检查

Respan 适合希望把模型调用、工作流上下文和评估/观测放到一个平台查看的工程团队。它不是自动修复 Agent 的质量工具:instrumentation 能帮助还原调用过程,但不会替代测试、人工评估或对提示词与工具权限的审查。开始接入前,建议逐项确认:

  1. 本地与生产环境的 RESPAN_API_KEY、可选 RESPAN_BASE_URL 是否正确注入。
  2. 自动插桩状态是否符合预期,显式插件是否造成重复 spans。
  3. 关键 workflow/task 与业务标识是否足以定位问题,同时避免收集敏感信息。
  4. 能否接受内存队列在崩溃时丢失;若不能,评估 Collector 部署方案。

从一个无敏感数据的测试请求开始,在平台确认 trace 出现后,再逐步覆盖 Agent 的工具调用和多阶段流程。这样比一次性改造所有服务更容易发现配置错误,也让追踪数据的边界和价值都更清楚。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。