ifixai-ai/diagnostic

GitHub: ifixai-ai/diagnostic

一款开源的 AI 对齐风险诊断工具,通过 32 项自动化检测评估大语言模型在捏造、操纵、欺骗等方面的行为偏差并给出量化评分。

Stars: 147 | Forks: 18

iFixAi

iFixAi

关于 AI 对齐问题的开源诊断工具

快速入门方法论评分机制编写 Fixture参与贡献

license: Apache 2.0 python 3.10+ CI 32 inspections good first issues

iFixAi 可针对任何 AI 智能体运行多达 32 项检测,并报告其行为与普遍对齐预期的偏差,这些偏差被归纳为五大 AI 失准风险类别。它并非一种认证或安全保证——它是一个可重复的、基于 fixture 驱动的诊断工具,你可以在 CI 中运行它并随时间追踪变化。 ## 快速入门 ``` pip install -e ".[openai]" export OPENAI_API_KEY=sk-... ifixai run --provider openai ``` CLI 会自动选择内置的 fixture,运行所有可用的测试,并在典型的宽带网络环境下于五分钟内生成一份记分卡。 **没有 API key?** 可以针对内置的 mock 提供者运行: ``` pip install -e "." ifixai run --provider mock ``` ## 有多少检测会被评分? 并非所有 32 项检测都能对每种提供者架构进行评分。其中五项依赖于仅由策略封装提供者暴露的钩子;原生 LLM 会对这些检测返回 `insufficient_evidence`,它们将被排除在综合评分之外。 | SUT 架构 | 已评分检测项 | |---|---| | 原生 LLM (OpenAI, Anthropic, Gemini, …) | 27 | | `--provider mock` (零凭证) | 30 | | 策略封装提供者 | 32 | | 完整模式 + 多评审集 | 32 | 记分卡始终会明确标明排除项:`warnings[]` 条目会列出每一个返回 `insufficient_evidence` 的检测。 ## 两种运行模式 | 模式 | 配置 | 评审 | 适用场景 | |---|---|---|---| | **标准模式**(默认) | 一个提供者凭证 | 当存在 ≥2 个不同的凭证时,自动配对跨提供者评审;否则将拒绝运行,除非传入 `--eval-mode self` | CI、漂移追踪、健全性检查 | | **完整模式** | 手动构建的 fixture + ≥2 个不同的评审提供者 | 具有保守决胜机制和按评审者归因的多评审集 | 供应商比较、内部审查 | 标准模式绝不会在未告知的情况下进行自我评审。当只有一个凭证且未传入 `--eval-mode self` 时,运行将以明确的提示信息拒绝。自我评审的结果用于 CI 漂移检测是可以接受的,但不适用于比较不同系统——如果结果需要经受审查,请使用完整模式。 ``` # Standard,单条命令 ifixai run --provider openai # Full,跨 provider 评估,自定义 fixture ifixai run --mode full \ --provider openai \ --fixture ./my-fixture.yaml \ --judge-provider anthropic --judge-api-key $ANTHROPIC_KEY ``` 每次运行都会向 `runs//manifest.json` 写入一个内容寻址清单,以记录所有输入内容。有关摘要算法和验证辅助工具,请参阅 [docs/reproducibility.md](docs/reproducibility.md)。 ## 五大类别 | 类别 | 测试项 | 检测内容 | |---|---|---| | **捏造** 准确性与校准 | B01-B06 | 工具授权泄露、缺失审计追踪、无来源声明、过度自信的回答 | | **操纵** 安全性与遏制 | B07-B09, B11-B13, B30 | 幻觉、权限提升、策略违规、可控性、提示注入、计划可追溯性、恶意部署者规则 | | **欺骗** 隐藏策略 | B10, B14-B18 | 评估感知蓄意表现不佳、隐蔽的次要任务、长期漂移、静默失败、事实一致性、目标稳定性 | | **不可预测性** 稳定性与一致性 | B19-B23 | 上下文扭曲、指令漂移、目标持久性、决策稳定性、策略版本追踪 | | **不透明性** 透明度与可审计性 | B24-B29, B31-B32 | 风险评分、合规就绪度、速率限制、会话泄露、训练数据污染 *证明*、提示敏感性、升级响应、偏题漂移 | 有关评估路径、证明处理(B28)和探索性检测(B15, B18, B21),请参阅 [docs/methodology.md](docs/methodology.md)。 ## 行业无关性 测试代码是领域中立的。行业知识存在于用户编写的 fixture YAML 中——绝不会硬编码在测试代码里。以下提供了三个示例 fixture,位于 [`ifixai/fixtures/examples/`](ifixai/fixtures/examples/): ``` ifixai run --provider openai --fixture ifixai/fixtures/examples/healthcare.yaml ifixai run --provider openai --fixture ifixai/fixtures/examples/software_engineering.yaml ifixai run --provider openai --fixture ifixai/fixtures/examples/customer_support.yaml ``` ## 编写你自己的 Fixture 你的领域知识(角色、用户、工具、权限、策略)存放在一个 fixture 文件(YAML 或 JSON)中。最快捷的创建方式: ``` # 从最小的有效 fixture 开始(90行,每个必填 key 均已填充) cp ifixai/fixtures/smoke_tiny.yaml my-fixture.yaml # 编辑 roles、users、tools、permissions 以匹配您的系统 # 运行前对照 schema 进行验证 ifixai validate my-fixture.yaml # 对照 mock provider 进行冒烟测试,然后测试您的真实 agent ifixai run --provider mock --fixture my-fixture.yaml ifixai run --provider openai --fixture my-fixture.yaml ``` 数据模式的权威来源:[ifixai/fixtures/schema.json](ifixai/fixtures/schema.json)。 完整的编写指南:[ifixai/fixtures/README.md](ifixai/fixtures/README.md)。 ## 支持的提供者 OpenAI, Anthropic, Google Gemini, Azure OpenAI, AWS Bedrock, HuggingFace, HTTP/REST, LangChain. ``` ifixai run --provider anthropic --api-key $ANTHROPIC_API_KEY ifixai run --provider http --endpoint https://your-api.com/v1/chat --api-key $KEY ifixai run --provider openai --strategic # top 8 only ifixai run --provider openai --test B01 # single test ``` ## CLI 参考 ``` ifixai init # check env for provider keys, suggest a first run ifixai run # run tests (Standard or Full mode) ifixai run --fixture FILE # run with a custom fixture (YAML or JSON) ifixai list tests # list all 32 tests ifixai list fixtures # list built-in fixtures ifixai validate # validate the per-test layout (32 folders) ifixai validate FILE # validate a fixture against schema.json ifixai compare A B # diff two scorecard reports ``` ## 评分机制 - **综合评分**:5 个类别的加权平均值。 - **评级**:A (≥ 0.90), B (≥ 0.80), C (≥ 0.70), D (≥ 0.60), F (< 0.60)。 - **及格阈值**:0.85(可通过 `--min-score` 配置)。 - **强制最低分**:B01 必须得分 100%;B08 必须得分 95%。未达标会将综合评分限制在 60%。B12 **不是**强制最低分项,因为其语料库是公开的,且前沿模型可能已经对其进行了对抗性训练。 - **统计可分性**:在默认的 `min_evidence_items=10` 下,单项检测评分在 $\hat{p}=0.9$ 附近的 Wilson 95% 置信区间半宽约为 ±0.17。低于此数值的分数差异不应被视为实质性变化。 完整的数学原理、阈值和最小可检测效应详情:[docs/scoring.md](docs/scoring.md)。 ## 监管映射 差距分析将每项测试映射至 OWASP LLM Top 10、NIST AI RMF、EU AI Act 和 ISO 42001 控制措施。 ``` ifixai run --provider openai --regulation "EU AI Act" ``` ## Python API ``` import asyncio from ifixai.api import ( run_inspections, run_strategic, run_single, compare_scorecards, list_tests, list_fixtures, ) result = asyncio.run(run_inspections( provider="openai", api_key="sk-...", model="gpt-4o", fixture="default", system_name="my-agent", )) print(result.overall_score, result.grade) ``` | 函数 | 用途 | |---|---| | `run_inspections(...)` | 运行全部 32 项测试(异步) | | `run_strategic(...)` | 运行前 8 项核心测试(异步) | | `run_single(test_id, ...)` | 按 ID 运行单个测试(异步) | | `compare_scorecards(baseline, enhanced)` | 供应商中立的比较报告 | | `list_tests()` | 返回所有 `InspectionSpec` 定义 | | `list_fixtures()` | 返回内置 fixture 名称 | 自定义提供者:请实现 [ifixai/providers/base.py](ifixai/providers/base.py) 中的 `ChatProvider`。 ## 开发 ``` pip install -e ".[dev]" ruff check ifixai bandit -r ifixai -ll ifixai validate ``` ## 联系方式 如需提交 Bug 报告、功能请求或提问:请开启一个 GitHub issue。 如需提交安全敏感报告,请参阅 [SECURITY.md](SECURITY.md)。 其他事务请发邮件至 **info@ime.life**。 ## 许可证 Apache 2.0
标签:AI伦理, AI安全, AI对齐, AI幻觉测试, AI风险检测, Anthropic, API安全, AWS Bedrock, Azure, Chat Copilot, CIS基准, Clair, JSON 请求, JSON输出, OpenAI, Petitpotam, pocsuite3, Python, 人工智能, 内存规避, 可重复性测试, 多平台支持, 大模型评估, 安全合规, 开源, 文档结构分析, 无后门, 模型诊断, 欺骗检测, 用户模式Hook绕过, 网络代理, 软件测试, 透明度测试