我昨天更新了[1],现在日志中出现了大量错误:
Discourse AI: structured output response was not valid JSON, falling back to best-effort parsing (311 bytes)
我检查了 HTTP 响应,发现没有问题。然后我在 rails console 中尝试解析这段文本:
...
discourse(prod)> p = JsonCompleter.new
=>
#<JsonCompleter:0x00007f48763b0270
...
discourse(prod)> p.parse text
=>
{"spam" => false,
"reason" =>
"..."}
discourse(prod)> p.parse DiscourseAi::Utils::BestEffortJsonParser.escape_control_characters(text)
(discourse):14:in '<main>': unexpected token "\\" (JsonCompleter::ParseError)
原来,Discourse 在解析之前转义了换行符^[code,这是由 pr#41716 引入的,导致了该错误。