# NeMo IORails 与 LLMRails：同一护栏切换引擎，检索配置为何必须走 LLMRails

已审计官方文档对应的IORails/LLMRails配置范围与受控检索材料；未运行NeMo引擎，作者支持矩阵检查不冒充运行错误回执。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 准备两份引擎配置与受控资料

input.json分别列出IORails的输入输出边界、LLMRails的检索边界，并给出正常C1和注入C2。不是使用一套虚构PII材料混充双引擎对照。

## 2. 核对当前支持矩阵

先打开官方rail-engine-support确认所需rail在哪个引擎支持。文档可能更新，要保存日期与版本，不能假设两种引擎功能完全等同。

## 3. 验证IORails误配检索负例

audit.py将IORails+retrieval标为与当前文档不符；作者检查不代表真实引擎的启动错误码。正式环境要保存实际诊断。

## 4. 先运行IORails输入输出边界

在匹配SDK环境按官方入口加载仅input/output配置，记录输入输出处理结果；不把这一步说成retrieval rail已经执行。

## 5. 切换LLMRails检索处理入口

将同一受控检索材料送入有相应retrieval rail的LLMRails配置，保存被过滤片段、原请求和真实运行轨迹。

## 6. 比较缺失与多执行的能力

核对系统是否处理了C2，是否误删C1，以及配置切换带来的额外模型调用。引擎支持检索不等于注入识别绝对正确。

## 7. 交付矩阵版本与配置差异

保存两份配置、文档支持点及真实返回。当前包未运行NeMo引擎或模型，所有行为观察由目标环境补证。

## 官方依据

- NeMo Guardrails 官方文档或源码：https://docs.nvidia.com/nemo/guardrails/reference/rail-engine-support
