OpenAI 的护栏并未控制成本。这里的差距。
Source: Dev.to
OpenAI Guardrails 概览
OpenAI 在上个月的 Agents SDK 中发布了 Guardrails。
- 输入 Guardrails – 在代理处理消息之前运行逻辑(阻止、重定向、记录)。
- 输出 Guardrails – 在代理生成响应之后运行逻辑(标记、过滤、暂停)。
- 工具调用 Guardrails – 在工具实际调用前拦截(根据你的规则批准或拒绝)。
这些是行为控制,用来回答 “我的代理做对了吗?” 的问题。它们是真实存在的,能够解决真实问题,并且在验证、内容过滤以及工具批准逻辑方面表现良好。
成本方面的局限
Guardrails 没有费用概念:
- 没有
budget_usd参数。 - 没有
on_exceed钩子。 - 没有跨任务的 token 累计。
- 没有每个代理函数的费用上限。
这不是疏忽,而是超出范围。OpenAI 的框架侧重于编排和质量控制,而预算执行属于另一个层面。
产生的缺口
你的流水线可以通过所有 Guardrails 检查,产生干净的输出,且所有工具调用都获得批准——但如果出现未受控的重试循环,仍可能产生巨额账单(例如 $47,000 的 AWS 发票)。Guardrails 通过,预算却被毁掉。
引入 agentguard47
agentguard47 位于 框架层之下,对每个代理函数强制支出限制。
# agentguard47 example
from agentguard47 import guard
@guard(budget_usd=2.00, on_exceed="raise")
def run_analyzer(task):
result = client.responses.create(...)
return result
当累计支出达到指定预算(例如 $2.00)时,装饰器会抛出异常,你可以捕获并处理。这样可以防止在计费时出现静默循环和意外费用,为每个代理函数设定独立的费用上限。
如何使用 agentguard47
-
安装
pip install agentguard47 -
包装 任意代理函数(无论是使用 OpenAI 的 Agents SDK、LangChain,还是原始的
openai客户端),使用@guard装饰器。 -
处理
on_exceed动作(raise、log、自定义回调等),决定预算被突破时的处理方式。
与现有工具的集成
- 与 OpenAI 的 Agents SDK 无缝配合。
- 与 LangChain 流水线兼容。
- 调用 原始 OpenAI 客户端 的函数也可以被 Guard。
装饰器对函数内部实现保持中立;它只负责跟踪费用累计并强制执行设定的上限。
推荐做法
- 使用 OpenAI Guardrails 进行行为验证、内容过滤和工具批准逻辑。
- 添加 agentguard47 用于费用强制、预算突破的硬性停止以及每个代理的费用追踪。
这两类工具工作在不同层面,互为补充。你需要同时回答以下两个问题:
- 代理的行为是否正确? – OpenAI Guardrails。
- 代理是否在预算范围内? – agentguard47。