wangliang
e58c3f0caf
fix: 修复 Product Agent LLM 响应格式解析和工具选择问题
## 问题 1: LLM 返回非标准 JSON 格式
**现象**:
LLM 返回:`search_products\n{"query": "ring"}`
期望格式:`{"action": "call_tool", "tool_name": "...", "arguments": {...}}`
**原因**:
LLM 有时会返回简化格式 `tool_name\n{args}`,导致 JSON 解析失败
**解决方案**:
添加格式兼容逻辑(第 172-191 行):
- 检测 `\n` 分隔的格式
- 解析工具名和参数
- 转换为标准 JSON 结构
## 问题 2: LLM 选择错误的搜索工具
**现象**:
LLM 选择 `search_products`(Hyperf API)而非 `search_spu_products`(Mall API)
**原因**:
Prompt 中工具说明不够突出,LLM 优先选择第一个工具
**解决方案**:
1. 在 prompt 开头添加醒目警告(第 22-29 行):
- ⚠️ 强调必须使用 `search_spu_products`
- 标注适用场景
- 添加 ⭐ 标记推荐工具
2. 添加具体示例(第 78-89 行):
- 展示正确的工具调用格式
- 示例:搜索 "ring" 应使用 `search_spu_products`
## 修改内容
### agent/agents/product.py:172-191
添加非标准格式兼容逻辑
### agent/agents/product.py:14-105
重写 PRODUCT_AGENT_PROMPT:
- 开头添加工具选择警告
- 突出 `search_spu_products` 优先级
- 添加具体使用示例
- 标注各工具适用场景
## 预期效果
1. 兼容 LLM 的简化格式输出
2. LLM 优先选择 `search_spu_products` 进行商品搜索
3. 返回 Mall API 数据并以 Chatwoot cards 展示
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-26 18:17:37 +08:00
..
2026-01-26 18:17:37 +08:00
2026-01-23 18:49:40 +08:00
2026-01-26 13:15:47 +08:00
2026-01-16 16:28:47 +08:00
2026-01-14 19:25:22 +08:00
2026-01-23 18:49:40 +08:00
2026-01-26 13:15:59 +08:00
2026-01-14 19:25:22 +08:00
2026-01-23 18:49:40 +08:00
2026-01-14 19:25:22 +08:00
2026-01-14 19:25:22 +08:00
2026-01-16 16:28:47 +08:00
2026-01-16 16:28:47 +08:00