Bug Fix:Gemini 幻覺工具名導致 JsonParseException — 容錯處理
問題根因
Gemini 模型有時會幻覺出不存在的工具名(如 project_structure),Spring AI 的 GoogleGenAiChatModel.parseJsonToMap() 在下一輪對話時,嘗試解析ToolResponse.responseData,卻收到純文字字串(非合法 JSON),導致 JsonParseException 崩潰。
修改內容
檔案:backend/src/main/java/com/interview/ai/application/AiChatService.java
| 位置 |
修改前 |
修改後 |
| unknown tool 回應 |
"Error: unknown tool '...'" |
{"error":"unknown tool '...'. Available tools: ..."} |
| null callResult |
"" |
{"result":"ok"} |
上游追蹤
未來需回頭處理
當 spring-ai PR #5438 合併且專案升級對應版本後:
- 移除
AiChatService.java 中兩處標有 // TODO: remove this workaround after spring-ai PR #5438 is merged 的 workaround
- unknown tool 回應可改回純文字(或直接讓上游 library 處理)
- null callResult fallback 可改回
"" 或依上游行為調整
追蹤方式:定期確認 PR #5438 狀態,或在升級 spring-ai 版本時同步確認。
Bug Fix:Gemini 幻覺工具名導致 JsonParseException — 容錯處理
問題根因
Gemini 模型有時會幻覺出不存在的工具名(如
project_structure),Spring AI 的GoogleGenAiChatModel.parseJsonToMap()在下一輪對話時,嘗試解析ToolResponse.responseData,卻收到純文字字串(非合法 JSON),導致JsonParseException崩潰。修改內容
檔案:
backend/src/main/java/com/interview/ai/application/AiChatService.java"Error: unknown tool '...'"{"error":"unknown tool '...'. Available tools: ..."}""{"result":"ok"}上游追蹤
未來需回頭處理
當 spring-ai PR #5438 合併且專案升級對應版本後:
AiChatService.java中兩處標有// TODO: remove this workaround after spring-ai PR #5438 is merged的 workaround""或依上游行為調整