构建了一个 LLM 在结构上被禁止生成最终输出的 Agent,寻求反馈以及愿意尝试“攻破”它的人
摘要
作者描述了一个基于 LangGraph 构建的 AI Agent,旨在复现生产环境中的 Python 崩溃问题。其独特之处在于架构设计:LLM 负责规划行动,而确定性 Python 函数则生成最终测试代码,以确保可靠性。
在这里发帖是因为我最终确定的这种约束机制感觉有些奇特,我想知道是否有其他人做过类似的事情,或者认为我的想法有误。
**背景:** 我构建了一个用于复现生产环境 Python 崩溃的 Agent。你只需提供一个 Sentry URL,该 Agent 就会读取堆栈跟踪(stacktrace)和帧局部变量(frame locals),决定调用哪些工具(如仓库内省、依赖准备、沙箱执行等),并在 Docker 沙箱中运行所有操作。最终,它要么生成一个确定性的失败 pytest 测试(你可以直接粘贴到你的仓库中),要么在无法完全复现时提供一份结构化的调查报告。
**奇特之处:** LLM 在结构上不被允许编写最终的测试代码或审计工件(audit artifact)。这些字节数据来自一个纯确定性的 Python 函数,该函数仅以捕获的帧局部变量作为输入。Agent 可以进行规划、调用工具、从死胡同中恢复以及推理竞态条件,但当需要输出实际的测试/工件时,执行的是非 LLM 的代码路径。该工件始终标记为 llm_in_evidence_path: false。架构采用 LangGraph Supervisor 加上 11 个工具。Agent 的评估标准基于其确定性输出,而不仅仅是推理过程。
这种分离是否值得付出额外的复杂性,还是说我过度设计了?我目前大约有 800 个单元测试,但还没有真正的外部评估框架,我知道这才是真正的短板。如果你也在构建 Agent 并对这种架构有见解,我将真诚地感谢任何反馈。
另外:如果你手头有未解决的 Python Sentry 问题(尤其是涉及 Django/FastAPI/Celery/SQLAlchemy 的),我很乐意让它运行一遍,看看会发生什么。帧局部变量是关键,因此任何使用默认 Python SDK 设置的环境应该都能适用。请直接私信或留言,哪种方式方便用哪种。
相似文章
构建了一个代理工作站,让环境进行结构推理,从而减轻LLM的负担
Atlarix是一个桌面环境,它预先将代码库解析为节点/边图,使得编码代理能够通过查询来导航架构,而无需阅读原始文本,从而提高了较小本地模型的性能。
我的代理悄悄地损坏了它自己的记忆图谱,而我正在尝试一些方法。
作者描述了一个问题:LLM 代理的记忆图谱因错误的边而损坏,并提议使用声明的本体来验证写入和遍历。对 120 条故意破坏的遍历进行的测试捕获了所有错误。
赋予LLMs exec()能力是一场安全噩梦。我构建了一个基于AST的开源防护机制来阻止恶意代理执行。
介绍ast-guard,一个开源的基于AST的安全工具,它通过将LLM生成的Python字符串解析为抽象语法树,并应用节点级白名单和上下文感知安全检查,防止恶意代码执行。
约束衰减:LLM代理在后端代码生成中的脆弱性
本文研究了大型语言模型智能体在结构约束下的后端代码生成脆弱性,发现了一种称为“约束衰减”的现象,即随着约束条件不断累积,模型性能显著下降。
层隔离评估:基于无LLM、回归锁定的测试框架对生产级LLM代理的确定性骨架进行门控
本文介绍了针对LLM代理的层隔离评估方法,将生产级代理分解为架构层,每层使用确定性无LLM测试框架进行测试。它展示了逐切片基线测试能够定位聚合指标所掩盖的性能回归,并通过跨多个租户的受控回归注入进行了验证。