roshnithakor07/multimodal-damage-claim-verification

GitHub: roshnithakor07/multimodal-damage-claim-verification

基于视觉语言模型与规则推理的多模态 AI 损坏理赔验证代理,从图像证据和用户对话中自动审核汽车、笔记本电脑和包裹的损坏索赔。

Stars: 0 | Forks: 0

# 多模态证据审查系统 一个基于终端的 AI agent,用于使用图像、对话历史、用户风险画像和证据要求来验证**汽车**、**笔记本电脑**和**包裹**的损坏索赔。 为 **HackerRank Orchestrate 24 小时黑客松**构建。 ## 功能说明 对于 `dataset/claims.csv` 中的每一条索赔,该 agent 会: 1. 读取用户对话,提取所申报的损坏情况 2. 加载并编码所有提交的图像 (base64 → Claude vision API) 3. 检查用户的索赔历史以获取风险信号 4. 查找该对象类型的最低证据要求 5. 通过一次多模态 API 调用将所有内容发送给 Claude 6. 解析并验证结构化的 JSON 响应 7. 写入包含所有必填字段的一行输出 ## 仓库结构 ``` . ├── README.md ├── AGENTS.md # AI tool transcript logging instructions ├── problem_statement.md # Full problem description ├── code/ │ ├── main.py # ← Main entry point (run this) │ └── evaluation/ │ ├── main.py # Evaluation script (sample_claims.csv) │ ├── evaluation_report.md # Operational analysis │ └── metrics.json # Generated after running evaluation ├── dataset/ │ ├── claims.csv # Test inputs (run main.py on this) │ ├── sample_claims.csv # Labeled examples (for evaluation) │ ├── user_history.csv # User risk history │ ├── evidence_requirements.csv # Minimum image evidence rules │ └── images/ │ ├── sample/ # Images for sample_claims.csv │ │ └── case_001/img_1.jpg # (and so on) │ └── test/ # Images for claims.csv │ └── case_001/img_1.jpg # (and so on) └── output.csv # Generated predictions for claims.csv ``` ## 环境要求 - Python 3.10+ - 拥有可访问 `claude-haiku-4-5-20251001` 的 Anthropic API key ### 安装依赖 ``` pip install anthropic pandas ``` ## 设置 ### 1. 克隆 / 解压此解决方案 ``` unzip code.zip -d claim-verifier cd claim-verifier ``` ### 2. 添加您的图像 将 HackerRank 仓库中的 `dataset/images/` 文件夹复制到 `dataset/` 中: ``` dataset/images/sample/case_001/img_1.jpg dataset/images/test/case_001/img_1.jpg ... ``` ### 3. 设置您的 API key **macOS / Linux:** ``` export ANTHROPIC_API_KEY=sk-ant-... ``` **Windows (PowerShell):** ``` $env:ANTHROPIC_API_KEY = "sk-ant-..." ``` ## 运行 ### 处理测试索赔 → output.csv ``` python code/main.py ``` 或使用显式路径: ``` python code/main.py \ --input dataset/claims.csv \ --output output.csv \ --dataset-root . ``` 您将看到实时进度日志: ``` 12:01:03 [INFO] Loaded 44 claims from dataset/claims.csv 12:01:03 [INFO] ── Row 1/44 ────────────────────────── 12:01:03 [INFO] Processing user_002 | object=car | images=images/test/case_001/... 12:01:08 [INFO] ── Row 2/44 ────────────────────────── ... 12:07:41 [INFO] ✅ Saved 44 results to output.csv ``` ### 对样本数据运行评估 ``` python code/evaluation/main.py --dataset-root . ``` 这将生成: - `evaluation/sample_predictions.csv` — 针对 20 行样本数据的预测 - `evaluation/metrics.json` — 字段级别准确率与真值的对比 ## 输出格式 `output.csv` 包含以下列(按顺序排列): | 列名 | 描述 | |--------|-------------| | `user_id` | 输入中的用户 ID | | `image_paths` | 原始图像路径 | | `user_claim` | 原始对话 | | `claim_object` | car / laptop / package | | `evidence_standard_met` | true/false — 图像是否足以进行评估? | | `evidence_standard_met_reason` | 简要说明 | | `risk_flags` | 分号分隔的标签 (或 `none`) | | `issue_type` | dent, scratch, crack 等 | | `object_part` | 例如 rear_bumper, screen, box | | `claim_status` | supported / contradicted / not_enough_information | | `claim_status_justification` | 基于图像的解释 | | `supporting_image_ids` | 例如 img_1;img_2 或 none | | `valid_image` | true/false — 是否可用于自动审查? | | `severity` | none / low / medium / high / unknown | ## 设计决策 ### 每次索赔进行单次多模态调用 索赔的所有图像会与完整的 prompt 一起在单次 API 调用中发送。这使得 Claude 能够同时对多张图像进行推理(例如,“img_1 显示了保险杠,而 img_2 显示了底部——两者都支持该索赔”)。 ### 带验证的结构化 JSON 输出 通过 prompt 指示模型仅返回 JSON。`validate_and_fix()` 函数会在写入 CSV 之前,根据所有允许的值集合对输出进行净化处理,从而确保不会将无效值写入输出文件。 ### 用户历史仅作为风险上下文 用户历史标签(例如 `user_history_risk`)会作为上下文注入,但不能覆盖清晰的视觉证据。如果历史 CSV 显示存在高风险,验证步骤会自动将 `user_history_risk` 添加到 `risk_flags` 中。 ### 优雅降级 如果图像缺失,该 agent 会返回 `not_enough_information` 并附带明确的原因,而不是直接崩溃。如果 API 在重试 3 次后仍然失败,则会写入安全的兜底结果。 ### 速率限制处理 - 调用之间休眠 1 秒(可通过 `RATE_LIMIT_SLEEP` 调整) - 遇到 `RateLimitError` 时进行指数退避(重试 3 次,每次 5秒 × 尝试次数) - 如果您拥有 Tier 3+ API 访问权限,可降低 `RATE_LIMIT_SLEEP` 的值 ## 故障排除 **“Image not found” 警告**:确保 `dataset/images/` 已正确放置在您运行脚本时所在的相对路径 `./dataset/images/` 下。 **速率限制错误**:将 `code/main.py` 中的 `RATE_LIMIT_SLEEP`(文件顶部的常量)从 `1.0` 增加到 `2.0` 或 `3.0`。 **JSON 解析错误**:很少见,但可能会在复杂的响应中发生。该 agent 会自动重试,最多 3 次。 **无 API key**:在运行前设置 `ANTHROPIC_API_KEY` 环境变量。 ## 成本与运行时间(预估) | 数据集 | 行数 | 预计运行时间 | 预计成本 | |---------|------|-------------|-----------| | Sample | 20 | ~3 分钟 | ~$3 | | Test | 44 | ~6 分钟 | ~$5 | 有关完整的运行分析,请参阅 `code/evaluation/evaluation_report.md`。
标签:Python, 云计算, 人工智能, 多模态模型, 无后门, 理赔验证, 用户模式Hook绕过, 自动化审核, 规则引擎, 逆向工具