第49章 ReasoningEngine
Reasoning 是 ICAI 利用已有认知资源形成新结论的过程。
上一章的 RuleEngine 主要负责规则运行,而 ReasoningEngine 的范围更大,它需要把:
Fact
Object
Relation
Rule
Condition
Experience
Memory
Current Context
组织起来,经过解析、匹配、条件计算和结果计算,最终形成:
Conclusion
因此可以把 ReasoningEngine 表示为:
Information / Memory
↓
FactResolver
ObjectResolver
RelationResolver
RuleResolver
↓
Condition Calculation
↓
Result Calculation
↓
Conclusion
1. FactResolver
1.1 FactResolver 定义
FactResolver 是 ReasoningEngine 中负责获取、解析、验证和选择事实的组件。
推理不能直接使用未经处理的信息。
例如当前存在:
Battery_A.level = 20
Device_A.state = active
FactResolver 需要把这些事实转换为推理可以使用的结构。
Fact
{
subject
predicate
value
state
source
confidence
}
1.2 FactResolver 的任务
主要包括:
读取事实
↓
识别事实主体
↓
识别事实属性
↓
检查事实状态
↓
检查事实有效性
↓
处理事实冲突
↓
返回可用事实
例如:
Fact_001
Battery_A.level = 20
state = ACTIVE
可以解析为:
subject = Battery_A
predicate = level
value = 20
state = ACTIVE
1.3 FactResolver 与 FactMemory
二者不能混淆:
FactMemory
= 保存和管理事实
FactResolver
= 推理时获取和解析事实
即:
FactMemory
↓
FactResolver
↓
ReasoningEngine
FactResolver 不负责长期保存事实。
2. RuleResolver
2.1 RuleResolver 定义
RuleResolver 负责从 Rule 集合中找到与当前推理目标和当前条件相关的规则。
例如:
Goal:
判断 Device_A 是否需要充电
RuleResolver 搜索:
Rule_001
IF Battery.level < 30
AND Device.state = active
THEN Device.state = needs_charge
如果规则与当前目标相关,则进入推理过程。
2.2 RuleResolver 的运行
基本过程:
Reasoning Goal
↓
Rule Search
↓
Rule Matching
↓
Rule Validation
↓
Rule Priority
↓
Relevant Rules
例如系统存在:
Rule_001 → 电量判断
Rule_002 → 温度判断
Rule_003 → 网络判断
Rule_004 → 位置判断
当前目标:
判断设备是否需要充电
RuleResolver 不需要把所有规则全部送入当前推理,而应该优先取得与:
Battery
Device
Charge
State
相关的规则。
2.3 RuleResolver 与 RuleEngine
二者关系:
RuleResolver
= 找规则、解析规则
RuleEngine
= 检查条件并运行规则
因此:
ReasoningEngine
↓
RuleResolver
↓
Relevant Rules
↓
RuleEngine
RuleResolver 解决:
使用哪些规则?
RuleEngine 解决:
这些规则如何运行?
3. ObjectResolver
3.1 ObjectResolver 定义
ObjectResolver 负责确定推理过程中涉及的对象。
例如:
Battery_A
Device_A
Charger_A
对于:
Battery_A.level < 30
ObjectResolver 首先必须确定:
Battery_A 是什么对象?
然后获取:
Object
├── Property
├── State
├── Relation
└── History
3.2 ObjectResolver 的任务
Object Identifier
↓
Object Search
↓
Object Validation
↓
Property Loading
↓
State Loading
↓
Relation Loading
↓
Resolved Object
例如:
Object_A
{
id: "Device_A",
type: "device",
state: "active",
temperature: 45
}
ObjectResolver 返回这个完整对象结构。
3.3 对象不是单纯名称
例如:
"深圳"
不能仅仅作为一个字符串处理。
在认知结构中,它可能是:
Object
{
id: "Shenzhen",
type: "city",
properties: {
country: "China"
}
}
这样 ReasoningEngine 才能够进一步处理:
Shenzhen
↓
country = China
↓
location relation
↓
condition
↓
conclusion
4. RelationResolver
4.1 RelationResolver 定义
RelationResolver 负责解析对象之间的关系。
基本结构:
Source
↓
Relation
↓
Target
例如:
Device_A
── uses ──>
Charger_A
表示:
Device_A → uses → Charger_A
4.2 RelationResolver 的任务
查找 Source
↓
查找 Relation
↓
查找 Target
↓
验证关系
↓
确认关系状态
↓
返回 Relation
例如:
Relation_001
{
source: "Device_A",
relation: "uses",
target: "Charger_A",
state: "ACTIVE"
}
4.3 关系参与推理
关系本身可以成为推理条件。
例如:
Fact:
Device_A uses Charger_A
规则:
IF Device_A uses Charger_A
AND Charger_A.state = available
THEN Device_A.can_charge = true
推理过程中:
FactResolver
↓
Device_A uses Charger_A
RelationResolver
↓
确认 uses 关系
ObjectResolver
↓
读取 Charger_A
FactResolver
↓
Charger_A.state = available
最终才能计算整个条件。
5. 条件计算
Condition Calculation 是 ReasoningEngine 的核心过程之一。
它负责将:
Facts
Objects
Relations
Properties
States
Rules
转换成条件结果。
5.1 基本条件
例如:
Battery_A.level < 30
当前:
Battery_A.level = 20
计算:
20 < 30
结果:
TRUE
5.2 多条件计算
例如:
Battery_A.level < 30
AND
Device_A.state = active
分别计算:
Condition_1 = TRUE
Condition_2 = TRUE
然后:
TRUE AND TRUE
= TRUE
5.3 条件状态
ReasoningEngine 不应该只有:
TRUE / FALSE
还应该支持:
TRUE
FALSE
UNKNOWN
CONFLICT
例如:
Battery_A.level = UNKNOWN
则:
Battery_A.level < 30
→ UNKNOWN
不能直接推导:
needs_charge
5.4 条件计算结构
可以表示为:
ConditionResult
{
condition_id
input
operator
expected
actual
result
}
例如:
ConditionResult
{
condition_id: 1,
input: "Battery_A.level",
operator: "<",
expected: 30,
actual: 20,
result: "TRUE"
}
6. 结果计算
条件成立之后,ReasoningEngine 还需要计算规则产生的结果。
例如:
IF
Battery_A.level < 30
AND
Device_A.state = active
THEN
Device_A.state = needs_charge
条件计算:
TRUE AND TRUE
→ TRUE
结果计算:
Device_A.state
↓
needs_charge
6.1 结果类型
推理结果可以包括:
CONFIRMED
SUPPORTED
POSSIBLE
UNKNOWN
CONFLICT
REJECTED
例如:
Fact + Rule
→ 明确满足
→ CONFIRMED
如果只有部分条件支持:
→ SUPPORTED
如果存在可能性但证据不足:
→ POSSIBLE
如果没有足够信息:
→ UNKNOWN
如果多个规则产生不同结论:
→ CONFLICT
6.2 结果计算不是直接执行 Action
这一点必须和 RuleEngine 区分。
RuleEngine
→ 执行 Rule Action
ReasoningEngine
→ 计算 Rule / Fact / Relation 产生的推理结果
因此:
Result
≠ Action
例如:
推理结果:
Device_A 可能需要充电
之后 Decision 才可以判断:
是否执行充电行为?
7. Conclusion
7.1 Conclusion 定义
Conclusion 是 ReasoningEngine 根据当前事实、对象、关系、规则、条件和经验计算形成的新认知结论。
核心结构:
Known Information
+
Logical Conditions
+
Rules
+
Reasoning Process
↓
Conclusion
7.2 Conclusion 结构
可以定义:
Conclusion
{
id
subject
predicate
value
state
source
reasoning_chain
confidence
created_at
}
例如:
Conclusion
{
subject: "Device_A",
predicate: "state",
value: "needs_charge",
state: "CONFIRMED"
}
7.3 Reasoning Chain
ICAI 的推理不能只保存最后一个答案,还应该保存推理路径。
例如:
Fact_001
Battery_A.level = 20
↓
Condition_001
Battery_A.level < 30
↓
TRUE
↓
Rule_001
IF Battery.level < 30
THEN Device.state = needs_charge
↓
Conclusion
Device_A.state = needs_charge
可以记录为:
ReasoningChain
{
facts: [
"Fact_001"
],
conditions: [
"Condition_001"
],
rules: [
"Rule_001"
],
conclusion: "Device_A.state = needs_charge"
}
这样系统可以回答一个非常重要的问题:
这个结论是怎么得到的?
这也是 ICAI 可验证推理的重要基础。
8. 完整推理实例
下面建立一个完整的 ReasoningEngine 运行案例。
8.1 当前对象
Device_A
{
type: "device",
state: "active"
}
电池:
Battery_A
{
type: "battery",
level: 20
}
8.2 当前关系
Relation_001
{
source: "Device_A",
relation: "has_battery",
target: "Battery_A",
state: "ACTIVE"
}
表示:
Device_A
│
└── has_battery
↓
Battery_A
8.3 当前事实
Fact_001
{
subject: "Battery_A",
predicate: "level",
value: 20,
state: "ACTIVE"
}
以及:
Fact_002
{
subject: "Device_A",
predicate: "state",
value: "active",
state: "ACTIVE"
}
8.4 当前规则
Rule_001
{
id: 1001,
conditions: [
{
object: "Battery_A",
property: "level",
operator: "<",
value: 30
},
{
object: "Device_A",
property: "state",
operator: "=",
value: "active"
}
],
operator: "AND",
action: {
object: "Device_A",
property: "state",
value: "needs_charge"
},
priority: 20,
state: "ACTIVE"
}
8.5 ReasoningEngine 启动
输入:
Current Context
+
Facts
+
Objects
+
Relations
+
Rules
进入:
ReasoningEngine
8.6 FactResolver
读取:
Battery_A.level = 20
Device_A.state = active
得到:
Fact_001 → ACTIVE
Fact_002 → ACTIVE
事实有效。
8.7 ObjectResolver
解析:
Battery_A
Device_A
得到:
Battery_A.level = 20
Device_A.state = active
8.8 RelationResolver
读取:
Device_A → has_battery → Battery_A
确认:
Device_A
确实拥有
Battery_A
因此对象之间关系成立。
8.9 RuleResolver
查找与当前对象:
Device_A
Battery_A
相关的规则。
找到:
Rule_001
Rule 状态:
ACTIVE
可以参与推理。
8.10 条件计算
第一条件:
Battery_A.level < 30
当前:
20 < 30
得到:
TRUE
第二条件:
Device_A.state = active
当前:
active = active
得到:
TRUE
组合:
TRUE AND TRUE
→ TRUE
8.11 结果计算
规则结果:
Device_A.state = needs_charge
因此形成:
Result
{
object: "Device_A",
property: "state",
value: "needs_charge"
}
8.12 形成 Conclusion
ReasoningEngine 根据:
Fact_001
+
Fact_002
+
Relation_001
+
Rule_001
+
ConditionResult
+
Result
形成:
Conclusion
{
subject: "Device_A",
predicate: "state",
value: "needs_charge",
state: "CONFIRMED"
}
8.13 推理链
最终保存:
Fact_001
Battery_A.level = 20
↓
Fact_002
Device_A.state = active
↓
Relation_001
Device_A has_battery Battery_A
↓
Rule_001
Battery.level < 30
AND
Device.state = active
↓
Condition
TRUE AND TRUE
↓
Result
Device_A.state = needs_charge
↓
Conclusion
Device_A needs_charge
ReasoningEngine 核心模型
完整模型:
Current Context
│
┌─────────────┼─────────────┐
↓ ↓ ↓
FactResolver ObjectResolver RelationResolver
│ │ │
└─────────────┼─────────────┘
↓
RuleResolver
↓
Condition Calculation
↓
Result Calculation
↓
Conclusion
↓
Reasoning Chain
可以进一步抽象为:
Fact
+
Object
+
Relation
+
Rule
+
Condition
+
Experience
+
Memory
↓
ReasoningEngine
↓
Condition
↓
Result
↓
Conclusion
ReasoningEngine 与 RuleEngine 的区别
这一章最重要的区别是:
| 模块 | 核心职责 |
|---|---|
| Rule | 定义逻辑 |
| RuleEngine | 运行规则 |
| ReasoningEngine | 组织认知资源并形成推理结论 |
| Conclusion | 推理产生的新结论 |
| Decision | 根据结论进行决策 |
所以完整关系是:
Fact
+
Object
+
Relation
+
Experience
+
Rule
↓
ReasoningEngine
↓
RuleResolver
↓
Condition Calculation
↓
RuleEngine / Rule Execution
↓
Result Calculation
↓
Conclusion
↓
Decision
↓
Action
↓
Experience
本章核心定义
ReasoningEngine 是 ICAI 中负责组织 Fact、Object、Relation、Rule、Condition、Experience 和 Memory,通过事实解析、对象解析、关系解析、规则解析、条件计算和结果计算,形成可追溯 Conclusion 的推理运行机制。
其核心不是生成语言,而是:
解析
+
匹配
+
计算
+
规则
+
逻辑
+
结论
完全建立在 ICAI 自身的对象、属性、关系、事实、规则、条件、经验和离散计算机制之上。