Skip to content

Conversation

@wodiwudi
Copy link

标题

fix(model): 增强响应解析的鲁棒性,兼容非标准模型输出

描述

PR 类型

  • Bug 修复 (修复了模型输出格式不标准导致 Agent 崩溃的问题)
  • 新功能
  • 文档更新

当前行为 (Current Behavior)

phone_agent/model/client.py 中的 _parse_response 方法目前严格依赖 <answer> 标签来分割“思考过程”和“动作指令”。
然而,许多模型(特别是通过 ModelScope 或 BigModel 等第三方 API 调用时)经常会生成以下格式的输出:

  1. 缺少 <answer> 标签。
  2. 缺少闭合的 </think> 标签。
  3. 思考过程和代码混合在一起。

这会导致程序抛出 ValueError: Failed to parse action 异常并终止运行。

新行为 (New Behavior)

本 PR 在 _parse_response 中实现了更鲁棒的多级解析策略:

  1. 标准解析:优先检查 <answer> 标签(保持向后兼容)。
  2. 兜底策略 1:如果缺少 <answer>,尝试使用 </think> 进行分割。
  3. 兜底策略 2 (正则):使用正则表达式直接从混合内容中提取 do(...)finish(...) 指令。

测试计划 (Test Plan)

  • 使用 BigModel 配合 AutoGLM-Phone-9B 模型进行了测试。
  • 验证了缺少 <answer> 标签的响应现在可以被正确解析。
  • 验证了 <think> 标签未闭合的响应现在可以被正确解析。
  • 验证了标准的响应格式依然可以正常工作。

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.

1 participant