AgentBreakerResult 可以接受超出模式的判定结果值
作者: NaCr05创建于 2026年9月10日更新于 2026年9月13日
标签needs-triage
重现步骤
在 3f50ea5ff9cd7050099940647c15c39b07a93392 提交的 main 中运行以下命令:
from garak.attempt import Conversation, Message, Turn
from garak.detectors.agent_breaker import AgentBreakerResult
class Judge:
def __init__(self, payload):
self.payload = payload
def generate(self, **_kwargs):
return [Message(text=self.payload)]
def verify(payload):
detector = object.__new__(AgentBreakerResult)
detector.evaluation_generator = Judge(payload)
conversation = Conversation(
[Turn(role="user", content=Message(text="judge this result"))]
)
print(detector._verify_once(conversation))
verify('{"success":"MAYBE","confidence":0.99,"reasoning":"x"}')
verify('{"success":"YES","confidence":"NaN","reasoning":"x"}')
verify('{"success":"YES","confidence":"Infinity","reasoning":"x"}')
verify('{"success":"YES","confidence":1.5,"reasoning":"x"}')当前输出:
(False, 0.99, 'x')
(True, nan, 'x')
(True, inf, 'x')
(True, 1.5, 'x')包含 "NaN" 和 "Infinity" 的 payload 是有效的 JSON 字符串,随后会被 Python 的 float() 转换函数接受。
内容来源: NVIDIA/garak