Skip to content

fix(api): 修正 malformed_response 映射、无内容自动重新生成与默认安全类别 - #100

Merged
Mag1cFall merged 2 commits into
Mag1cFall:mainfrom
xiahuaaaa:fix/malformed-response-handling
Nov 3, 2026
Merged

Mag1cFall merged 2 commits into
Mag1cFall:mainfrom
xiahuaaaa:fix/malformed-response-handling

Conversation

@xiahuaaaa

Copy link
Copy Markdown
Contributor

改动 / Changes

  • internal/api/openai.go: 从 contentFilterFinishReason 中移除 malformed_response,避免上游网络波动或长文本格式异常导致的 Playground 19 号 finishReason 被误判定为 content_filter / refusal。
  • internal/aistudio/generate.go:
    • regenerable() 中增加 finish.FinishReason == "malformed_response",在未产生可见输出前允许自动重新生成(最多 3 次)。
    • 重试循环中重置 output 与 matchedStopSequence 局部状态。
    • 将 output.Add(event) 移至服务端隐藏事件过滤之后,避免被隐藏的步骤误阻塞重新生成。
  • internal/aistudio/safety.go: 默认安全设置覆盖全部 harmCategories(包含 HARM_CATEGORY_CIVIC_INTEGRITY),将所有类别默认阈值均设为 OFF。
  • docs/protocol.md & docs/build.md: 同步更新默认安全设置类别数量、重新生成条件与终态映射说明。

验证 / Verification

  • 新增 TestResolveSafetySettingsCivicIntegrity 与 TestRegenerableMalformedResponse 单元测试,验证安全类别推导与无正文时的重新生成判定行为。
  • 使用 OpenAI 兼容客户端配合 Gemini 4 Argon 进行超长多轮 Agent 对话测试,确认上游返回 malformed_response 时可正常自动重试并在 200 响应中按正常 stop 结束,不再触发 content_filter 报错熔断。

xiahuaaaa and others added 2 commits November 2, 2026 16:16
- 排除隐藏的只读服务端工具步骤,MCP 调用仍阻止重新生成,重新生成时保留已输出的思考与停止序列状态
- 丢弃被重新生成取代的那一次的网页来源与引用
- 撤销默认安全设置中的公民诚信类别,删除断言内部函数与类别数量的测试
- 补充协议文档的重新生成条件与来源处理,构建文档的安全类别恢复为四类
@Mag1cFall
Mag1cFall merged commit a7afc31 into Mag1cFall:main Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants