RunState 在持久化期间将结构化护栏诊断和代理输出转换为字符串

作者: kaluli123123创建于 2026年9月14日更新于 2026年9月16日

请先读一下

  • 你读过文件吗? 是:护栏指南使用“护栏功能输出”的Pydantic结果,而跑道状态是持久的检查站边界。 -** 你找过有关问题吗?** 对 #3288解决了非JSON值,使得序列化失败. 这份报告涉及结构化模型在序列化成功时变成不透明的字符串,而不是最初的约会时间例外.

描述错误

含有普通活性模型的护轨诊断在保存并恢复运行时会失去结构. 结构化的`OutputGuardrailResult.agent output'也是如此。 审计消费者在持续使用前可以读取 " 允许使用 " 和 " 合理性 " 等字段,但之后只保留了Python再生弦;JSON解码不能恢复字段。

发生这种情况的是文件所记载的“Gardrail功能输出(输出 info=结构化 结果,.)”形状,而不仅是人工构造的运行状态内部。 复制时通过runner.run()'进行实际输入/输出护栏和一个有结构输出的代理,然后保存result.to state (.) to string()'并用`runstate. from json()'恢复。

用于批准/恢复的检查站具有同样的诊断持久性途径。 本报告涉及保留审计数据,而不是声称看守机构的决定停止执行政策。

调试信息

  • 检查基线:`fbf59a40',SDK 02.2。
  • Python 3.13.14,马可斯臂64。
  • 使用SDK文件所记载的“脚本模型”来决定SDK拥有的管弦乐;不需要模型服务、API证书或网络。
  • 在离职单上不断复制。 本报告没有单独安装发行软件包。
  • 复制
2zz
导入 Ayncio
导入 json
从 pydantic 导入基底模
从代理导入代理、 Runner、 RunConfig、 运行状态、 守护功能输出
来自代理商。
从代理服务器. 正在测试导入脚本模式, 助手  message

类判定( BaseModel) :
允许: 布尔
理由: str

类解答(BaseModel) :
文本: str

aync def 检查( *args) :
返回 GuardrailFunction 输出( 输出  info=Verdict( alowed=True, 理由='批准'), tripwire  triggered=False)

async def 主线( ):
代理 (name='Audit', model=Scripted Model ([[[Assistant message ('{"text":"hello"}]]]]]),输出 类型=Answer,输入 guardrails=[InputGuardrail(检查],输出 guardrails=[OutputGuardrail(检查]))).
结果 = 等待 Runner.run(代理, “你好”, run  config= RunConfig( 跟踪  残疾= True))
快照=结果.to state (.) to string ()
恢复 = 等待 runState. from json(代理,json.loads(snapshot))
打印('input judge:'),恢复. input guardrail results [0].output.output info)
print('output judge:'),还原. output guardrail results [0].output.output info)
print('s answer:'),还原. output guardrail results [0]. agent output )
表示恢复。  input guardrail results [0].output.output info {'alled': true,
. . . . . . .

内容来源: openai/openai-agents-python