feat: 完成 issue #47 Prompt 版本管理 + 幻觉校验中间件(版本库联动 + 评测报告脚本)
This commit is contained in:
@@ -11,8 +11,9 @@ core/llm-gateway/
|
||||
├── __init__.py 包入口(导出各模块 API)
|
||||
├── dlp.py DLP 敏感数据拦截引擎(Issue #48)
|
||||
├── router.py 敏感度路由规则引擎(Issue #43 雏形)
|
||||
├── prompts.py Prompt 版本管理(Issue #47 雏形)
|
||||
├── hallucination.py 幻觉/事实性校验中间件(Issue #47 雏形)
|
||||
├── prompts.py Prompt 版本管理(Issue #47)
|
||||
├── hallucination.py 幻觉/事实性校验中间件(Issue #47)
|
||||
├── evaluate_hallucination.py 幻觉/事实性评测报告脚本(Issue #47)
|
||||
├── gateway.py 混合网关主编排(EPIC #6 主体交付)
|
||||
├── config/
|
||||
│ ├── dlp.template.yaml 模板 DLP 规则资产(ti-cl4 示例)
|
||||
@@ -107,16 +108,65 @@ if result.needs_human:
|
||||
|
||||
- **敏感度路由**(router.py,Issue #43 雏形):模板配置驱动,DLP 拦截
|
||||
fail-closed 强制 block,未知内容保守走本地(数据不出厂);
|
||||
- **Prompt 版本管理**(prompts.py,Issue #47 雏形):semver 版本库、
|
||||
- **Prompt 版本管理**(prompts.py,Issue #47):semver 版本库、
|
||||
运行时绑定(可复现)、一键回滚、变更审计;
|
||||
- **幻觉/事实性校验**(hallucination.py,Issue #47 雏形):`[来源: X]`
|
||||
引用溯源强制校验 + 高利害信度阈值 → 人工确认;
|
||||
- **幻觉/事实性校验**(hallucination.py,Issue #47):`[来源: X]`
|
||||
引用溯源强制校验 + 高利害信度阈值 → 人工确认,并与 Prompt 版本库联动
|
||||
(评测按 `name@version` 分解,Prompt 变更后可对比各版本事实一致性);
|
||||
- **推理后端抽象**(gateway.py 内 `InferenceBackend`):业务代码只依赖
|
||||
接口,本地 70B / 云端 API 具体接入由子任务 #44 / #45 实现。
|
||||
|
||||
## Prompt 版本管理 + 幻觉/事实性校验(Issue #47)
|
||||
|
||||
对应 PRD 5.4「Prompt 版本管理 + 幻觉/事实性校验」。
|
||||
|
||||
### Prompt 版本管理(prompts.py)
|
||||
|
||||
所有提示词模板纳入版本库(semver),变更须评审并记录(同版本号覆盖报错),
|
||||
支持一键回滚;生产流程运行时按 `(name, version)` 绑定,可复现。
|
||||
|
||||
```python
|
||||
from llm_gateway.prompts import PromptRegistry
|
||||
|
||||
reg = PromptRegistry.from_template_config("config/prompts.template.yaml")
|
||||
pv = reg.get("qa", version="1.0.0") # 显式绑定旧版本:行为不受后续变更影响
|
||||
rendered = pv.render(query="炉温偏高怎么处理")
|
||||
reg.promote("qa", "1.0.1")
|
||||
reg.rollback("qa") # 一键回滚
|
||||
```
|
||||
|
||||
### 幻觉/事实性校验(hallucination.py)
|
||||
|
||||
RAG 答案强制引用溯源:输出中所有 `[来源: X]` 声明必须命中本次 RAG 检索的
|
||||
文档片段,否则判 `unsupported`(幻觉嫌疑);高利害输出(处置建议 / 报警解释)
|
||||
要求信度 ≥ 阈值,否则 `human_review` 转人工确认。
|
||||
|
||||
```python
|
||||
from llm_gateway.hallucination import HallucinationGuard
|
||||
|
||||
guard = HallucinationGuard(default_threshold=0.8)
|
||||
v = guard.check(
|
||||
answer="建议降温。[来源: 沸腾氯化炉异常处置SOP]",
|
||||
sources=["沸腾氯化炉异常处置SOP"],
|
||||
confidence=0.95, high_stakes=True,
|
||||
prompt_name="alarm_explain", prompt_version="1.0.0", # 与版本库联动
|
||||
)
|
||||
print(v.action) # pass / human_review / unsupported
|
||||
```
|
||||
|
||||
### 定期评测报告脚本(evaluate_hallucination.py)
|
||||
|
||||
PRD 5.4「定期用评测集检验事实一致性」:评测集 JSON + 版本库配置 →
|
||||
Markdown 评测报告(按 `name@version` 分解,Prompt 变更后可对比各版本幻觉率)。
|
||||
|
||||
```bash
|
||||
cd core/llm-gateway
|
||||
python evaluate_hallucination.py --demo --output reports/hallucination.md
|
||||
python evaluate_hallucination.py --samples eval_set.json --output report.md
|
||||
```
|
||||
|
||||
## 后续子任务(EPIC #6 拆分,待扩展)
|
||||
|
||||
- 敏感度路由调优与路由准确率评估脚本(Issue #49,本版已提供评估入口);
|
||||
- 本地 70B 模型接入与推理封装(Issue #44);
|
||||
- 云端 API(Qwen/DeepSeek)接入与安全网关(Issue #45);
|
||||
- Prompt 版本管理 + 幻觉校验中间件完善(Issue #47,本版已提供核心)。
|
||||
- 云端 API(Qwen/DeepSeek)接入与安全网关(Issue #45)。
|
||||
|
||||
Reference in New Issue
Block a user