文章目录
-
- 前言
- 一、先搞懂:决策模块的本质------"输入信息→输出选择"
- 二、决策模块的3个关键步骤(通俗版拆解)
- 三、代码实战:写一个"奶茶选购Agent"的决策模块
- 四、常见的决策"思路"(Agent的3种"思考方式")
-
- [1. 规则式决策(最直接)](#1. 规则式决策(最直接))
- [2. 目标导向决策(有明确方向)](#2. 目标导向决策(有明确方向))
- [3. 学习式决策(会"总结经验")](#3. 学习式决策(会“总结经验”))
- 五、总结:决策模块的核心是什么?
目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步。想要系统学习AI知识的朋友可以看看我的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,风趣幽默,从深度学习基础原理到各领域实战应用都有讲解。
前言
各位小伙伴,上一节我们聊了感知模块,Agent能"看到"周围的信息了对吧?但光看不行啊,就像咱们看到美食,得想"吃不吃、怎么吃";看到路口,得想"往左走还是往右走"------这就是决策模块要干的活儿!
今天咱们就扒一扒Agent的"大脑核心":决策模块到底是怎么帮Agent"思考问题"的?全程大白话,不搞复杂公式,还会带大家写个简单的决策代码,看完你就懂啦~
一、先搞懂:决策模块的本质------"输入信息→输出选择"
咱们先举个生活例子:你家小孩(或者你自己)早上起床,面临两个选择:
- 选项A:先刷牙再吃早饭
- 选项B:先吃早饭再刷牙
这时候你会怎么"决策"?肯定是先想:"哪个更健康?""有没有时间?"------其实Agent的决策模块也是这么干的!
它的核心逻辑超简单:
- 接收"感知模块"传来的外部信息(比如"现在是早上7点""牙刷在卫生间""早饭在桌子上");
- 结合自身的"目标"(比如"要健康""要准时上学");
- 经过一套"思考规则",最终选出一个"最优动作"(比如"先刷牙再吃早饭")。
用一句话总结:决策模块就是Agent的"指挥官",根据"看到的情况"和"想要的目标",拍板"接下来该干啥" 。
二、决策模块的3个关键步骤(通俗版拆解)
咱们用"Agent帮你买奶茶"这个场景,一步步看它是怎么决策的:
步骤1:明确目标(知道"要啥")
首先得让Agent知道"最终要达成什么"------目标可以是明确的,也可以是有优先级的。
比如买奶茶的目标:
- 核心目标:买到"三分糖、加珍珠"的珍珠奶茶;
- 次要目标:价格不超过20元;
- 底线目标:15分钟内拿到。
Agent的目标通常是咱们提前设定的,就像给小孩说"去冰箱拿一瓶牛奶",目标越明确,决策越简单~
步骤2:分析现状(知道"有啥条件")
这一步是拿感知模块的信息来"算账"------哪些条件满足,哪些不满足,有哪些可选方案。
比如Agent买奶茶时,感知到的信息:
- 附近有3家奶茶店:A店(距离500米,三分糖珍珠奶茶18元,需等10分钟)、B店(距离300米,只有全糖珍珠奶茶15元,需等5分钟)、C店(距离1公里,三分糖珍珠奶茶22元,需等8分钟);
- 你现在的状态:只有20元,赶时间。
这时候Agent会把这些信息整理成"可选方案+约束条件",就像咱们列清单一样~
步骤3:执行规则(选出"最优解")
这是决策的核心!Agent会按照提前设定的"规则",从可选方案里挑最好的。
比如买奶茶的规则:
- 先满足核心目标(三分糖+珍珠),不满足的直接排除;
- 再满足次要目标(价格≤20元);
- 最后满足底线目标(时间≤15分钟)。
咱们一步步算:
- 排除B店(只有全糖,不满足核心目标);
- 排除C店(价格22元,超预算);
- 剩下A店:满足所有目标→选A店!
你看,Agent的决策过程和咱们平时做事的逻辑几乎一样,只是它更"死板"------严格按照规则来,不会像人一样临时变卦~
三、代码实战:写一个"奶茶选购Agent"的决策模块
光说不练假把式,咱们用Python写个简单的决策代码,一看就懂!
python
# 1. 定义目标和规则(提前设定好)
target = {
"core": ["三分糖", "珍珠"], # 核心目标
"secondary": "price <= 20", # 次要目标
"bottom_line": "time <= 15" # 底线目标
}
# 2. 感知模块传来的现状(可选奶茶店信息)
milk_tea_shops = [
{"name": "A店", "sugar": "三分糖", "topping": "珍珠", "price": 18, "time": 10},
{"name": "B店", "sugar": "全糖", "topping": "珍珠", "price": 15, "time": 5},
{"name": "C店", "sugar": "三分糖", "topping": "珍珠", "price": 22, "time": 8}
]
# 3. 决策模块核心逻辑:筛选最优方案
def decision_module(shops, target):
best_choice = None
# 遍历所有可选方案
for shop in shops:
# 第一步:满足核心目标
core_ok = all(requirement in [shop["sugar"], shop["topping"]] for requirement in target["core"])
if not core_ok:
continue # 不满足核心目标,直接跳过
# 第二步:满足次要目标(价格)
secondary_ok = eval(f"{shop['price']} {target['secondary'].split(' ')[1]} {target['secondary'].split(' ')[2]}")
if not secondary_ok:
continue
# 第三步:满足底线目标(时间)
bottom_line_ok = eval(f"{shop['time']} {target['bottom_line'].split(' ')[1]} {target['bottom_line'].split(' ')[2]}")
if bottom_line_ok:
best_choice = shop
break # 找到满足所有条件的,直接返回
return best_choice
# 4. 执行决策
result = decision_module(milk_tea_shops, target)
print(f"Agent的决策结果:去{result['name']}买奶茶!")
print(f"理由:满足{target['core'][0]}+{target['core'][1]},价格{result['price']}元(≤20元),等待{result['time']}分钟(≤15分钟)")
运行这段代码,输出结果就是:
Agent的决策结果:去A店买奶茶!
理由:满足三分糖+珍珠,价格18元(≤20元),等待10分钟(≤15分钟)
是不是超简单?这个代码就是决策模块的"简化版"------实际的Agent决策模块会更复杂(比如考虑多个目标冲突、不确定因素),但核心逻辑和这个一样:按规则筛选最优解~
四、常见的决策"思路"(Agent的3种"思考方式")
不同的Agent,决策逻辑也不一样,就像有的人做事果断,有的人喜欢犹豫~ 咱们介绍3种最常见的:
1. 规则式决策(最直接)
就像咱们刚才写的奶茶代码------提前定好"if-else"规则,Agent照着执行。
- 优点:简单、速度快,容易理解;
- 缺点:不够灵活,遇到没见过的情况就"懵了"(比如奶茶店出了"五分糖",规则里没写,就没法决策);
- 适用场景:简单任务(比如自动回复、简单筛选)。
2. 目标导向决策(有明确方向)
Agent知道最终要达成的"目标",会主动寻找"能实现目标的路径"。
比如:Agent的目标是"帮你找到最近的咖啡店",它会先查附近的咖啡店位置,再算距离,最后选最近的------哪怕中间遇到"修路"(突发情况),也会重新规划路径。
- 优点:灵活,能应对突发情况;
- 缺点:需要提前明确目标,计算量比规则式大;
- 适用场景:复杂任务(比如导航、智能助手)。
3. 学习式决策(会"总结经验")
这种Agent最厉害------它没有固定的规则,而是通过"学习"慢慢总结经验,越用越聪明!
比如:Agent一开始不知道"三分糖奶茶卖得最好",但它卖了100次奶茶后,发现选三分糖的客户最多,就会默认优先推荐三分糖------这就是机器学习的思路~
- 优点:超级灵活,能适应新环境;
- 缺点:需要大量数据学习,一开始可能会"犯错";
- 适用场景:高级任务(比如推荐系统、自动驾驶)。
五、总结:决策模块的核心是什么?
其实不管是哪种决策方式,核心都离不开3件事:
- 知道"要啥"(目标);
- 知道"有啥"(现状);
- 知道"怎么选"(规则/学习经验)。
就像咱们教育小孩一样:告诉他们"要好好学习"(目标),让他们知道"自己现在的成绩"(现状),再教他们"怎么制定学习计划"(规则)------小孩就会慢慢学会"自己思考问题"~
下一节,咱们会聊Agent的执行模块:Agent如何"完成动作"(输出层,与外部系统交互的方式),比如奶茶Agent选了A店,怎么去买?记得持续关注哦!
如果觉得这篇文章好懂,别忘了点赞、转发,咱们一起把AI入门学明白~
