🐛 fix(ai): 修正 Anthropic 兼容供应商问答失败

- 为 AnthropicProvider.Chat 与 ChatStream 补充工具调用降级回退
- 首次携带 tools 请求在 400/422/404 时自动去掉 tools 重试一次
- 补充兼容供应商问答回归测试并更新 backlog 记录

Fixes #333
This commit is contained in:
Syngnat
2026-04-17 12:02:23 +08:00
parent 2569a3779a
commit a2cad9f7ce
3 changed files with 176 additions and 2 deletions

View File

@@ -30,6 +30,7 @@
| #329 | 如果调整了左侧导航栏的宽度后,建议左侧导航栏内增加横向滚动查看 | Fixed | `fcade0f` |
| #330 | 建议在查询结果表格中增加自适应内容列宽的功能 | Fixed | `632e57e` |
| #331 | 重复连接 DB一分钟重试了 60 多次 | Fixed | `ca76440` |
| #333 | AI 功能添加供应商测试正常,但问答显示失败 | Fixed | Pending |
| #351 | 为什么没有截断和清空表的功能呀? | Fixed | Pending |
## Notes
@@ -88,6 +89,12 @@
- 处理:将连接自动重试范围收敛到应用启动保护窗口内;稳定期下所有连接探测与重建都只执行一次,避免后台挂起场景持续放大失败流量。
- 验证:补充并更新 `internal/app/app_startup_connect_retry_test.go`,覆盖稳定期瞬时失败不重试、不再输出重试提示,以及启动期仍保留完整重试预算。
### #333
- 根因AI 供应商“测试连接”走的是轻量健康检查,不会带 `tools`;而正式聊天默认会把本地工具定义一起发给模型。当前 `Anthropic` 协议路径缺少和 `OpenAI` 一样的 400 自动降级逻辑,遇到不支持工具调用的兼容端点时会直接报错。
- 处理:为 `AnthropicProvider.Chat / ChatStream` 补充 400 降级回退。首次带 `tools` 请求若返回 400/422/404则自动去掉 `tools` 重试一次,允许不支持 function calling 的兼容端点继续完成普通问答。
- 验证:补充 `internal/ai/provider/anthropic_test.go` 回归测试,覆盖非流式与流式两条链路下“首请求因 tools 返回 400回退后成功”的场景并执行 `go test ./internal/ai/provider -count=1`
### #330
- 根因:查询结果表格已经支持拖拽调整列宽,但 resize handle 没有提供双击自适应逻辑,导致用户只能靠手工拖拽慢慢试宽度。