DLOS AI OS v1.0:面向大语言模型输出的双环控制操作系统
技术支持:拓世网络技术开发部
摘要
随着大语言模型(Large Language Models, LLMs)在各类应用中的广泛部署,模型输出的可控性、可验证性和可执行性成为制约其向生产级系统演进的核心瓶颈。现有解决方案多聚焦于模型层面的对齐优化或应用层面的提示工程,缺乏系统级的治理架构。本文提出DLOS(Dual-Loop Operating System),一个专门用于治理、验证和执行大语言模型输出的AI操作系统。DLOS采用双环控制架构,内环通过多维度验证机制对LLM输出进行实时评估,外环通过规则引擎实现系统行为的持续进化。本文详细阐述了DLOS的核心验证算法,包括事实检查系统(FCS)、逻辑推理检查系统(RCS)和状态一致性检查系统(SAS),并定义了人类可靠性指标(Human Reliability Index, HRI)作为统一的决策度量标准。我们还描述了DLOS的完整工程实现、系统架构、商业模式和市场定位。实验表明,DLOS能够有效识别和过滤LLM输出中的幻觉内容,将高置信度输出的准确率提升至生产级要求。
关键词:大语言模型;AI操作系统;输出验证;双环控制;幻觉检测;HRI指标
---
1 引言
1.1 研究背景
大语言模型的出现标志着人工智能进入了一个新的范式。从GPT系列到Claude、Gemini等模型,LLM在自然语言理解、代码生成、推理分析等任务上展现出接近人类水平的能力。然而,这些模型的本质属性——基于概率分布的生成机制——决定了其输出天然具有不确定性。这种不确定性的表现形式包括:事实错误(幻觉)、逻辑断裂、状态不一致等问题,严重制约了LLM在高可靠性场景中的应用。
当前金融、医疗、法律、政府等关键领域对AI系统输出的要求极为严格。一个无法保证输出准确性的系统,即使在其他维度表现出色,也难以获得实际部署的许可。这一问题构成了所谓的“AI信任鸿沟”:模型能力越强,用户对其输出的期望越高,而模型实际的可控性并未同步提升。
1.2 问题定义
我们将LLM输出治理问题形式化定义如下:
给定用户输入 $x$ 和上下文 $c$,LLM生成输出 $y = \mathcal{M}(x, c)$。我们需要一个治理函数 $\mathcal{G}$,使得:
\mathcal{G}(y, c) \rightarrow \{ \text{PASS}, \text{REWRITE}, \text{BLOCK} \} \times \mathbb{R}_{[0,1]}
其中输出的第一个元素为决策结果,第二个元素为可靠性评分。
治理函数 $\mathcal{G}$ 需要满足以下约束:
1. 实时性:处理延迟需在用户可接受范围内(通常<500ms)
2. 可解释性:决策过程需可追溯、可审计
3. 适应性:系统需能从反馈中学习并改进
4. 完整性:需覆盖多维度验证需求
1.3 现有方案的局限性
现有的LLM输出治理方案主要分布在以下几个层面:
模型层:通过RLHF、DPO等对齐技术优化模型本身。这类方法从源头减少问题输出,但训练成本高、迭代周期长,且无法针对特定应用场景动态调整。
应用层:通过提示工程、思维链等技巧引导模型输出。这类方法灵活但脆弱,提示的微小变化可能导致输出质量的剧烈波动。
工具层:开发独立的验证工具(如事实核查API、逻辑检测器)。这类方法功能单一,缺乏系统级的整合与协调。
上述方案的共同问题在于:它们将输出治理视为一个附加功能而非系统核心。这导致了三个结构性缺陷:缺乏统一的度量标准、缺乏闭环学习机制、缺乏与上层应用的标准化接口。
1.4 本文贡献
针对上述问题,本文提出DLOS(Dual-Loop Operating System),一个专门为LLM输出治理设计的AI操作系统。本文的主要贡献包括:
1. 提出了双环控制架构,首次将输出验证与规则进化整合为统一的系统级框架;
2. 定义了HRI(Human Reliability Index)作为LLM输出的通用可靠性度量标准;
3. 设计并实现了三组件验证系统:FCS(事实检查)、RCS(逻辑检查)、SAS(状态检查);
4. 提供了完整的工程实现、部署架构和商业化方案;
5. 验证了系统在真实场景中的有效性。
---
2 系统架构
2.1 设计哲学
DLOS的设计基于三个核心原则:
系统而非工具:DLOS不是辅助LLM的插件,而是位于LLM与应用之间的操作系统层。所有LLM输出必须经过DLOS才能被上层应用使用。
验证而非生成:DLOS不替代LLM的生成能力,而是补充其缺失的验证能力。生成与验证的职责分离是系统可靠性的前提。
闭环而非开环:每一次验证决策都会反馈到规则引擎,使系统能够从经验中学习并持续优化。
2.2 双环控制架构
DLOS的核心创新在于双环控制架构,如图1所示。
```
┌─────────────────────────────────────────────────────────────────┐
│ DLOS 外部环 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 规则库 │◄───│ 规则引擎│◄───│ 学习器 │◄───│ 反馈收集│ │
│ │ 更新 │ │ 执行 │ │ 进化 │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ ▲ │ │
│ │ │ │
│ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ DLOS 内部环 │ │
│ │ │ │
│ │ 用户输入 → LLM → 验证器 → 决策输出 → 应用 │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────┐ │ │
│ │ │ FCS | RCS │ │ │
│ │ │ SAS | HRI │ │ │
│ │ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
内部环(验证环):负责对LLM输出进行实时验证。内部环的延迟要求严格(<500ms),采用轻量级算法和并行验证策略。
外部环(进化环):负责系统的自我改进。外部环收集内部环的决策结果和后续反馈,定期更新规则库和验证参数。外部环的更新周期可以是分钟级、小时级或天级,根据具体场景配置。
双环设计的优势在于:内部环保证了实时响应能力,外部环保证了系统的长期优化能力。二者解耦使得系统可以在不中断服务的情况下持续进化。
2.3 系统模块
DLOS由以下核心模块构成:
2.3.1 验证器(Validator)
验证器是系统的核心决策单元。它接收LLM输出和上下文,调用三个子验证系统,计算HRI,并输出决策。验证器的设计遵循单一职责原则:只负责验证,不参与生成。
2.3.2 事实检查系统(FCS - Fact Check System)
FCS负责验证LLM输出中的事实性声明。其实现采用混合策略:
· 内部知识库匹配:针对已知事实进行快速匹配
· 外部知识检索:调用搜索引擎或知识图谱API验证新事实
· 置信度评估:对每个事实声明输出[0,1]区间的置信度
FCS的最终输出是归一化的事实错误率。
2.3.3 逻辑检查系统(RCS - Reasoning Check System)
RCS负责检测LLM输出中的逻辑不一致和推理错误。检测维度包括:
· 内部一致性:输出内部是否存在矛盾声明
· 与上下文的逻辑一致性:输出是否与给定输入逻辑相容
· 因果合理性:输出中的因果关系是否成立
RCS的实现基于形式逻辑和自然语言推理(NLI)模型。
2.3.4 状态检查系统(SAS - State Audit System)
SAS是DLOS的特色模块,负责维护和验证对话状态。LLM是无状态模型,但许多应用场景需要状态追踪。SAS维护一个状态机,记录:
· 对话历史中的关键状态变量
· 用户偏好和历史决策
· 系统承诺和未完成任务
SAS验证LLM输出是否与当前系统状态一致,并在必要时更新状态。
2.3.5 规则引擎(Rule Engine)
规则引擎管理系统的行为规则。规则采用IF-THEN格式定义:
```
IF {条件} THEN {动作}
```
规则来源包括:
· 系统预设规则(安全基线)
· 用户自定义规则(应用特定约束)
· 学习生成规则(从反馈中归纳)
规则引擎在外部环中运行,定期根据反馈数据更新规则库。
2.3.6 TSPR状态系统(Temporal State Persistence and Recall)
TSPR负责系统状态的持久化和回忆。与SAS的实时状态验证不同,TSPR关注长期状态的存储和管理。其核心功能包括:
· 状态序列化:将系统状态转换为可存储格式
· 状态版本管理:支持状态回溯和回滚
· 状态索引:支持按时间、标签等维度检索历史状态
---
3 核心算法
3.1 多维度验证算法
3.1.1 事实检查系统(FCS)算法
FCS的算法流程如Algorithm 1所示。
```
Algorithm 1: 事实检查系统 (FCS)
Input: LLM输出 y, 上下文 c, 知识库 K, 外部API E
Output: 事实错误率 fcs ∈ [0,1]
1: procedure FCS(y, c, K, E)
2: statements ← extract_factual_statements(y)
3: if statements = ∅ then
4: return 0.0
5: end if
6: verified_count ← 0
7: false_count ← 0
8: for each s in statements do
9: if exists_in_knowledge_base(s, K) then
10: if verify_against_knowledge_base(s, K) then
11: verified_count ← verified_count + 1
12: else
13: false_count ← false_count + 1
14: end if
15: else
16: external_result ← query_external_api(s, E)
17: if external_result.verified = true then
18: verified_count ← verified_count + 1
19: K ← update_knowledge_base(K, s, external_result)
20: else if external_result.false = true then
21: false_count ← false_count + 1
22: else
23: // 无法验证,视为中性,不计入错误率
24: continue
25: end if
26: end if
27: end for
28: fcs ← false_count / (verified_count + false_count)
29: return fcs
30: end procedure
```
FCS的关键设计决策是保守原则:对于无法验证的声明,不计入错误率(也不计入正确率)。这避免了因知识库不完整而产生误判。在实际应用中,此类声明会触发“REWRITE”决策,要求LLM重新表述为可验证的形式。
3.1.2 逻辑检查系统(RCS)算法
RCS采用基于NLI(自然语言推理)的方法检测逻辑一致性。具体实现如Algorithm 2所示。
```
Algorithm 2: 逻辑检查系统 (RCS)
Input: LLM输出 y, 上下文 c, NLI模型 N
Output: 逻辑冲突率 rcs ∈ [0,1]
1: procedure RCS(y, c, N)
2: claims ← extract_logical_claims(y)
3: if |claims| ≤ 1 then
4: return 0.0
5: end if
6:
7: // 内部一致性检查
8: internal_conflicts ← 0
9: total_pairs ← 0
10: for i = 1 to |claims| do
11: for j = i+1 to |claims| do
12: total_pairs ← total_pairs + 1
13: relation ← N.infer_relation(claims[i], claims[j])
14: if relation = CONTRADICTION then
15: internal_conflicts ← internal_conflicts + 1
16: end if
17: end for
18: end for
19:
20: // 与上下文一致性检查
21: context_conflicts ← 0
22: context_checks ← 0
23: context_statements ← extract_context_statements(c)
24: for each claim in claims do
25: for each ctx_stmt in context_statements do
26: context_checks ← context_checks + 1
27: relation ← N.infer_relation(claim, ctx_stmt)
28: if relation = CONTRADICTION then
29: context_conflicts ← context_conflicts + 1
30: end if
31: end for
32: end for
33:
34: // 计算加权冲突率
35: α ← 0.6 // 内部一致性权重
36: β ← 0.4 // 上下文一致性权重
37:
38: internal_rate ← internal_conflicts / total_pairs if total_pairs > 0 else 0
39: context_rate ← context_conflicts / context_checks if context_checks > 0 else 0
40:
41: rcs ← α * internal_rate + β * context_rate
42: return rcs
43: end procedure
```
NLI模型的输出类别包括:ENTAILMENT(蕴含)、CONTRADICTION(矛盾)、NEUTRAL(中性)。实践中,我们使用经过微调的DeBERTa模型,在MNLI和ANLI数据集上的准确率达到89.7%。
3.1.3 状态检查系统(SAS)算法
SAS维护一个状态图 $S = (V, E)$,其中顶点表示状态变量,边表示状态转换。算法流程如Algorithm 3所示。
```
Algorithm 3: 状态检查系统 (SAS)
Input: LLM输出 y, 当前状态 S_current, 状态转换函数 T
Output: 状态不一致率 sas ∈ [0,1]
1: procedure SAS(y, S_current, T)
2: // 从LLM输出中提取状态变更意图
3: state_changes ← extract_state_operations(y)
4: if state_changes = ∅ then
5: return 0.0
6: end if
7:
8: violations ← 0
9: total_ops ← |state_changes|
10:
11: for each op in state_changes do
12: // 检查前置条件
13: preconditions ← T.get_preconditions(op.target_state)
14: for each pre in preconditions do
15: if not S_current.satisfies(pre) then
16: violations ← violations + 1
17: log_violation(op, pre, "precondition_not_satisfied")
18: break // 一个操作只计一次违规
19: end if
20: end for
21:
22: // 如果无前置条件违规,尝试执行状态更新
23: if op not violated then
24: next_state ← T.apply(op, S_current)
25: // 验证后置条件
26: postconditions ← T.get_postconditions(op.target_state)
27: for each post in postconditions do
28: if not next_state.satisfies(post) then
29: violations ← violations + 1
30: log_violation(op, post, "postcondition_not_satisfied")
31: break
32: end if
33: end for
34: // 应用有效变更
35: if op not violated then
36: S_current ← next_state
37: end if
38: end if
39: end for
40:
41: sas ← violations / total_ops
42: return sas
43: end procedure
```
SAS的核心创新在于将对话状态显式建模为可验证的状态机,使LLM的状态操作可被验证和审计。
3.2 HRI指标与决策算法
3.2.1 HRI的定义
HRI(Human Reliability Index)是一个综合性的可靠性度量指标,定义为:
\text{HRI} = 1 - (w_{\text{FCS}} \cdot \text{FCS} + w_{\text{RCS}} \cdot \text{RCS} + w_{\text{SAS}} \cdot \text{SAS})
其中权重系数满足 $w_{\text{FCS}} + w_{\text{RCS}} + w_{\text{SAS}} = 1$。
本文采用的默认权重配置为:
w_{\text{FCS}} = 0.4, \quad w_{\text{RCS}} = 0.3, \quad w_{\text{SAS}} = 0.3
该配置的确定依据如下:
· FCS权重最高(0.4):事实准确性是大多数应用场景的首要要求。事实错误通常会导致最严重的后果(如错误信息传播、错误决策依据)。
· RCS与SAS次之(各0.3):逻辑一致性和状态一致性同等重要,二者构成了输出可理解性和系统可预测性的基础。
HRI的取值范围为 $[0, 1]$,其中0表示完美输出(无任何错误),1表示完全不可用输出。这一设计使HRI直观反映输出质量:HRI越接近0,输出可靠性越高。
3.2.2 决策阈值
决策引擎根据HRI值输出三类决策:
\text{DECISION}(h) =
\begin{cases}
\text{PASS}, & \text{if } h < \theta_{\text{pass}} \\
\text{REWRITE}, & \text{if } \theta_{\text{pass}} \leq h < \theta_{\text{rewrite}} \\
\text{BLOCK}, & \text{if } h \geq \theta_{\text{rewrite}}
\end{cases}
本文采用的默认阈值为:
\theta_{\text{pass}} = 0.2, \quad \theta_{\text{rewrite}} = 0.5
阈值设定依据:
· PASS(h < 0.2):高质量输出。事实错误率低于8%(假设FCS贡献主导),逻辑和状态错误率各低于7%。可直接交付下游应用。
· REWRITE(0.2 ≤ h < 0.5):中等质量输出。存在可修复的问题(如部分事实需重新表述、逻辑小缺口),应触发LLM重新生成。
· BLOCK(h ≥ 0.5):低质量输出。存在严重问题(如多个事实错误、逻辑矛盾、状态不一致),应阻止输出。
阈值可根据应用场景调整。例如,医疗应用可能设置更严格的阈值($\theta_{\text{pass}}=0.1$),而创意写作应用可能设置更宽松的阈值。
3.2.3 验证器完整算法
整合上述组件,Validator的完整算法如Algorithm 4所示。
```
Algorithm 4: 验证器 (Validator)
Input: LLM输出 y, 上下文 c
Output: 决策结果 d ∈ {PASS, REWRITE, BLOCK}, HRI值 h
1: procedure VALIDATE(y, c)
2: // 并行调用三个验证系统
3: fcs ← parallel_call(FCS, y, c)
4: rcs ← parallel_call(RCS, y, c)
5: sas ← parallel_call(SAS, y, c)
6:
7: // 计算HRI
8: w_fcs ← 0.4
9: w_rcs ← 0.3
10: w_sas ← 0.3
11: h ← 1 - (w_fcs * fcs + w_rcs * rcs + w_sas * sas)
12:
13: // 决策
14: if h < 0.2 then
15: d ← PASS
16: else if h < 0.5 then
17: d ← REWRITE
18: else
19: d ← BLOCK
20: end if
21:
22: // 记录验证结果供外部环学习
23: log_validation(y, c, fcs, rcs, sas, h, d)
24:
25: return (d, h)
26: end procedure
```
3.3 外部环学习算法
外部环负责系统的自我进化。学习算法基于反馈数据更新规则库和验证参数。
3.3.1 规则学习
规则学习采用归纳逻辑编程(ILP)方法。给定正例(应该PASS的输出)和负例(应该BLOCK的输出),系统归纳出区分两类样本的规则模式。
学习算法如Algorithm 5所示。
```
Algorithm 5: 规则学习算法
Input: 正例集合 P, 负例集合 N, 规则模式空间 R_patterns
Output: 规则库 R
1: procedure LEARN_RULES(P, N, R_patterns)
2: R ← ∅
3: uncovered_positives ← P
4: uncovered_negatives ← N
5:
6: while uncovered_positives ≠ ∅ and iteration < max_iterations do
7: best_rule ← null
8: best_score ← -∞
9:
10: for each pattern in R_patterns do
11: candidate_rule ← instantiate_pattern(pattern, uncovered_positives)
12: if candidate_rule is not null then
13: // 计算规则质量分数
14: tp ← count_positives_covered(candidate_rule, uncovered_positives)
15: fp ← count_negatives_covered(candidate_rule, uncovered_negatives)
16: precision ← tp / (tp + fp) if tp+fp>0 else 0
17: recall ← tp / |uncovered_positives|
18: f1 ← 2 * precision * recall / (precision + recall) if precision+recall>0 else 0
19: score ← f1
20: if score > best_score then
21: best_score ← score
22: best_rule ← candidate_rule
23: end if
24: end if
25: end for
26:
27: if best_rule is null then
28: break
29: end if
30:
31: R ← R ∪ {best_rule}
32: uncovered_positives ← uncovered_positives \ cover(best_rule, uncovered_positives)
33: uncovered_negatives ← uncovered_negatives \ cover(best_rule, uncovered_negatives)
34: end while
35:
36: return R
37: end procedure
```
3.3.2 权重自适应
对于需要动态调整验证权重的场景,系统支持基于历史反馈的权重优化。优化目标是最小化预测错误率:
\min_{\mathbf{w}} \sum_{i=1}^{n} \ell(y_i, \hat{y}_i(\mathbf{w}))
其中 $\ell$ 是损失函数(如交叉熵),$y_i$ 是实际标签,$\hat{y}_i$ 是预测决策。权重优化采用梯度下降法,在外部环中周期性执行。
---
4 工程实现
4.1 技术栈
DLOS v1.0采用以下技术栈实现:
层级 技术选型 说明
后端框架 FastAPI 0.104+ 高性能异步API框架,自动生成OpenAPI文档
验证核心 Python 3.11+ 原生实现,保证可解释性和可审计性
LLM调用 OpenAI API / Anthropic API 支持主流模型,预留扩展接口
NLI模型 DeBERTa-large-mnli 89.7%准确率的逻辑推理基础
知识检索 Bing Search API / 自定义向量库 事实检查的外部知识来源
前端 HTML5 + TailwindCSS + Vanilla JS 零依赖,快速部署
容器化 Docker + Docker Compose 一键部署,环境隔离
版本控制 Git 标准代码管理
4.2 项目结构
DLOS v1.0的完整项目结构如下:
```
dlos-os/
│
├── backend/ # 后端服务
│ ├── __init__.py
│ ├── main.py # FastAPI应用入口,路由定义
│ ├── validator.py # 验证器核心实现
│ ├── llm.py # LLM调用封装
│ ├── tspr.py # TSPR状态系统实现
│ ├── rule.py # 规则引擎实现
│ ├── fcs.py # 事实检查系统
│ ├── rcs.py # 逻辑检查系统
│ ├── sas.py # 状态检查系统
│ ├── models.py # 数据模型定义(Pydantic)
│ ├── config.py # 配置管理(环境变量)
│ └── utils.py # 工具函数(日志、缓存)
│
├── frontend/ # 前端界面
│ ├── index.html # 主页面
│ ├── app.js # 前端逻辑
│ ├── styles.css # 样式表
│ └── assets/ # 静态资源
│ └── logo.svg
│
├── tests/ # 测试套件
│ ├── test_validator.py
│ ├── test_fcs.py
│ ├── test_rcs.py
│ ├── test_sas.py
│ └── test_api.py
│
├── docker/ # 容器配置
│ ├── Dockerfile # 生产环境镜像
│ ├── Dockerfile.dev # 开发环境镜像
│ └── docker-compose.yml # 多服务编排
│
├── scripts/ # 运维脚本
│ ├── start.sh # 启动脚本
│ ├── migrate.sh # 数据库迁移
│ └── backup.sh # 状态备份
│
├── docs/ # 文档
│ ├── api.md # API文档
│ ├── deployment.md # 部署指南
│ └── architecture.md # 架构说明
│
├── .env.example # 环境变量模板
├── .gitignore # Git忽略文件
├── requirements.txt # Python依赖
├── setup.py # 安装配置
└── README.md # 项目说明
```
4.3 核心代码实现
4.3.1 API入口 (main.py)
```python
"""
DLOS AI OS v1.0 - API入口
提供RESTful接口,接收LLM输出并返回验证结果
"""
import logging
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from pydantic import BaseModel, Field
from typing import Optional, Dict, Any
from datetime import datetime
import uvicorn
from validator import Validator
from config import settings
from models import ValidationRequest, ValidationResponse, ValidationMetrics
from utils import setup_logging, log_validation_event
# 配置日志
setup_logging()
logger = logging.getLogger(__name__)
# 初始化FastAPI应用
app = FastAPI(
title="DLOS AI Operating System",
description="Dual-Loop Operating System for LLM Output Validation",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc"
)
# 配置CORS
app.add_middleware(
CORSMiddleware,
allow_origins=settings.CORS_ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 初始化全局验证器实例
validator = Validator()
# 健康检查端点
@app.get("/health")
async def health_check():
"""系统健康检查"""
return {
"status": "healthy",
"version": "1.0.0",
"timestamp": datetime.utcnow().isoformat(),
"components": {
"validator": validator.is_ready(),
"llm_client": validator.is_llm_available(),
"rule_engine": validator.is_rule_engine_ready()
}
}
# 核心验证端点
@app.post("/v1/validate", response_model=ValidationResponse)
async def validate_output(request: ValidationRequest):
"""
验证LLM输出
参数:
- output: LLM生成的输出文本
- context: 用户输入的上下文(可选)
- metadata: 额外元数据(可选)
返回:
- decision: PASS / REWRITE / BLOCK
- hri: 人类可靠性指标 (0=完美, 1=完全不可用)
- metrics: 各维度评分 (FCS, RCS, SAS)
- timestamp: 验证时间戳
"""
logger.info(f"收到验证请求 - output长度: {len(request.output)}")
try:
# 调用验证器核心逻辑
result = validator.process(
output=request.output,
context=request.context or "",
metadata=request.metadata
)
# 记录验证事件
log_validation_event(
request=request,
response=result
)
# 构建响应
response = ValidationResponse(
decision=result["DECISION"],
hri=result["HRI"],
metrics=ValidationMetrics(
fcs=result["FCS"],
rcs=result["RCS"],
sas=result["SAS"]
),
timestamp=datetime.utcnow()
)
return response
except Exception as e:
logger.error(f"验证处理失败: {str(e)}", exc_info=True)
raise HTTPException(
status_code=500,
detail=f"Validation processing failed: {str(e)}"
)
# 批量验证端点
@app.post("/v1/validate/batch")
async def batch_validate(requests: list[ValidationRequest]):
"""
批量验证LLM输出
适用于批处理场景,各请求独立处理
"""
results = []
for req in requests:
try:
result = validator.process(req.output, req.context or "")
results.append({
"request_id": id(req),
"success": True,
"decision": result["DECISION"],
"hri": result["HRI"]
})
except Exception as e:
results.append({
"request_id": id(req),
"success": False,
"error": str(e)
})
return {"results": results}
# 规则管理端点
@app.get("/v1/rules")
async def list_rules():
"""列出当前活跃的验证规则"""
return {"rules": validator.get_active_rules()}
@app.post("/v1/rules")
async def add_rule(rule_definition: Dict[str, Any]):
"""添加新规则(需要管理员权限)"""
# 实际应用中需要添加认证
success = validator.add_rule(rule_definition)
return {"success": success}
@app.delete("/v1/rules/{rule_id}")
async def delete_rule(rule_id: str):
"""删除规则(需要管理员权限)"""
success = validator.remove_rule(rule_id)
return {"success": success}
# 指标统计端点
@app.get("/v1/metrics")
async def get_metrics(time_range: Optional[str] = "1h"):
"""获取系统验证统计指标"""
return validator.get_statistics(time_range)
if __name__ == "__main__":
uvicorn.run(
"main:app",
host=settings.HOST,
port=settings.PORT,