楼主:
gino0717 (gino0717)
2025-01-26 02:46:17啊就
听说这个这几天出的玩意儿挺屌
趁著放假来玩玩看
我有在玩unity啊
我一直心底有个缺憾就是游戏npc的行为决策都是一堆if else堆起来的东西
我更希望的是有个模型里面已经有个小小的世界观
transformer模型理论上是这样的东西
但是真的能用的模型都太大了
塞到游戏里面实在是不太现实
我用ollama在笔电上当后端跑deepseek-r1 1.5b 、7b、8b模型
因为这三个模型是我能接受的容量够小的模型
再大就太大了
显卡是NVIDIA GeFore MX150 (2GB VRAM)
给定下列条件来模拟游戏中npc用来做决策需要的参数:
prompt中提供npc的状态:
1.饱食度
2.睡眠度
3.口渴程度
npc周遭的物体和座标
1.npc的位置
2.苹果
3.门口
4.刀子
5.床
6.桌子
7.水
能够进行的动作
1.移动
2.拾取
3.使用
然后我期望当饱食度低的时候,
npc会输出:移动到刀子->拾取刀子->移动到苹果>使用苹果
当睡眠值低的时候
npc会输出:移动到床->使用床
最后以json格式呈现
deepseek-r1 1.5b的模型会有合理的推论过程但是错误的结论
7b和8b的模型可以做出符合预期的动作顺序
同样容量(~5GB)的llama3 8b模型常会在结论中产生不存在的物体和座标或是动作
相比之下deepseek的答案可说是相当稳健
7b模型4.7GB 8b模型4.9GB
还是很大但是已经算相对小的了
但是有个问题
就是这个模型会先输出一大堆他的思考的过程(碎碎唸)
然后这过程实在太久了
他会写一大篇论文来分析你到底下那堆指令啥意思
然后会看他一直在那边wait...我少考虑了什么....wait....我少考虑了什么....
你加了prompt他会花更多篇幅在那边思考你写啥意思
你就看他在那边到底要分析到什么时候 到底
我的提示词大概长这样:
you are a game's npc , decide the next 6 (or more) series action based on your
status and enviroment objects .
If the status is low(<50) then need to do some action to raise it,
your status : Saturation:100,awake:10,water:90.
The environment: npc's position(0,0), apple(20,5),knife(10,3),table(40,8),
bed(40,3),water(10,5) .
The actions you can do: walk,pick,use.
if npc's coordinate not match the object it must walk to there first.
the output should be in json formats so I can feed the results to program as:
[{"action":"someAction","coordinate": [(some x),(some y)]}]
我希望以后碎碎唸那段可能会是一个可以存下来的东西
不要每次更新状态都重新碎碎唸一次
= =
南无阿弥陀佛