系统支持多模态图片处理,用户上传图片后,系统先做通用预分析,再结合文字需求决定下一步动作。
图片上传
↓
Router 预分析(analyze_image)
↓
判断意图
├→ 通用问答: "图里是什么" → 直接回答
├→ 文字提取: "识别图片文字" → OCR 结果
└→ 记账: 小票/支付截图 → analyze_receipt → ledger_insert
处理流程
图片预分析
Router 节点收到带图片的消息时,调用 analyze_image 工具:
- 提取
image_kind(通用/小票/截图等)
- 生成
summary(图片描述)
- 提取
ocr_text(文字内容)
- 给出
confidence 评分
分析结果存入 state.extra.image_analysis 意图路由
Router 综合图片分析结果 + 用户文字内容决定路由:
- 图片像小票/支付截图 + 用户提到记账 →
ledger_manager
- 其他情况 →
chat_manager(通用回答)
执行动作
- 通用问答:chat_manager 直接基于图片分析结果回答
- 记账:ledger_manager 调用
analyze_receipt 提取结构化数据,再 ledger_insert
analyze_image
通用图片分析,由 Router 自动调用。
| 参数 | 说明 |
|---|
url | 图片 URL |
question | 用户问题(可选) |
返回:image_kind, answer, summary, ocr_text, confidence
analyze_receipt
小票/收据专用提取。
返回结构化数据:金额、商户名、交易日期、支付方式等
支持场景
| 场景 | 用户输入示例 | 系统行为 |
|---|
| 通用看图 | ”图里是什么” “帮我看下这张图” | 描述图片内容 |
| 文字提取 | ”识别图片文字” “翻译图里的英文” | OCR + 处理 |
| 小票记账 | ”这张小票帮我记一下” | 提取金额→记账 |
| 支付截图 | (上传微信支付截图)“记一笔” | 识别→记账 |
| 追问上文 | 上条发图 → “这张图里写了什么” | 复用最近图片上下文 |
记账关键词检测:记账、入账、账单、小票、发票、支付截图、付款截图、消费截图、金额、花了、支出、收入、报销
| 环境变量 | 默认值 | 说明 |
|---|
VISION_MODEL | gpt-4o | 视觉分析模型 |
OPENAI_BASE_URL | https://api.openai.com/v1 | API 地址 |
跨消息图片上下文
用户在同一会话中先发图片、再发文字追问时,系统会尝试复用最近的图片上下文,无需重新上传。
用户: [上传图片]
Agent: "收到图片"
用户: "这张图里写了什么"
Agent: (复用上条图片)"图片中的文字是..."