玩家对游戏说“想抢占学校周边的客群”,这句话该由谁来理解,又该由谁来算账?大发娱乐的回答是:想的归大模型,算的归模拟器,中间隔着一道校验。
一句话进来,世界状态要怎样变
先设定一个假设场景,所有数字均为模拟示例。玩家经营一家连锁面包店,在指令框里写下:“我想抢占学校周边的客群,别亏太多。”这句话没有价格,没有时间,也没有说“别亏太多”是多少。传统的模拟器读不懂它,它只认“把某商品价格改为X”这种精确指令。
如果反过来,把整个店铺状态交给大模型,让它直接回答“下个月销量和利润是多少”,得到的将是一段听上去合理的文字。这段文字里的销量未必与库存匹配,利润未必与成本对得上,同样的问题再问一次,还可能给出另一个数。
大发娱乐的混合模拟设计把这条路径拆成五次交接。下面沿着这个例子逐个走一遍,每一次交接都回答一个问题:这一步到底该由谁负责。
第一次交接:把含糊的话变成可以讨论的意图
这一步属于大模型,也是大发娱乐AI里离玩家最近的一层。它读取玩家的指令和一份很小的上下文摘要(门店位置、当前价格区间、周边人群标签),输出的不是数字,而是意图描述:目标客群是学生,优先目标是增加到店人次,约束是月度利润不低于某个下限,需要玩家确认的模糊点是“别亏太多”的具体金额。
注意这里模型可以做的事情:追问、归类、补全常识。学生下午放学后客流最高,价格敏感度高于上班族,这些是语言层面的常识,正适合它。模型不能做的事是给出“会多来多少人”的结论,因为那要看这一区域此刻有多少学生、他们的预算、竞争对手的价格,这些数据都在模拟器手里。
第二次交接:意图落成结构化计划
模型接着把意图转成一份格式固定的计划,例如“对指定的三款商品,在指定的时间段,价格调整幅度在某个区间内;同时开启放学时段的备货增量”。计划是一个有字段、有取值范围的结构,而不是一段散文。
这样做的原因很实际:只有结构化的东西,才能被程序检查、被回放、被对比。散文式的计划无法自动判断它有没有越界,结构化计划则可以逐字段核对。同时,字段的取值范围由游戏规则预先声明,模型只能在范围内挑选,这是把“开放式生成”收窄成“有限选择”的第一道约束。
第三次交接:校验器不听解释,只查规则
校验器是普通的程序。它检查的内容包括:预算是否够、库存能否覆盖备货增量、价格是否触碰当地的限价规则、计划涉及的门店是否属于玩家。不通过时,它返回明确的原因,例如“备货增量超过冷藏容量”,让模型修正计划,而不是自己去猜测或悄悄改数。
这一步看似朴素,却是混合架构里最不能省的部分。研究里已有类似的提醒:Bansal等人于2025年在Magentic Marketplace一文中报告,他们测试的所有模型都表现出“首个报价偏差”,即倾向选择最先收到的报价,复杂度上升后表现明显下降。这说明大模型做出的市场决策带有系统性偏向,不能默认它“理性”,需要外部规则去约束它能做什么。
第四次交接:模拟器按固定顺序逐步计算
通过校验的计划交给模拟器。这里才有真正的计算:每个模拟步里,消费者按各自的预算与偏好决定是否到店,门店库存扣减,收入与成本入账,竞争对手观察到价格后决定是否跟进。所有环节遵守同一套守恒规则:卖出的每一块面包,都必须来自库存,付出的每一分钱,都必须进入某个账户。
这一步的核心性质是可复现。给定同一份世界状态、同一个随机种子和同一份计划,结果必须完全一致。因为只有这样,调试才有意义:出现异常时可以回放;调整参数后,可以确认变化来自参数,而不是模型这一次刚好换了措辞。
这里的数字同样只是示例:假设放学时段有一批学生,价格下调后到店人次上升,但由于第三天备货不足而出现断货,部分顾客转向邻近竞争对手,对手在第四天选择跟价。这些连锁反应全部来自模拟器的规则,不来自模型的想象。
第五次交接:把结果压成摘要,再交回大模型
模拟器输出的是上千行状态变化,模型不需要也不应该读完。系统把它压成一份摘要:本周到店人次相对上周变化方向、毛利率变化、断货发生的时间与次数、对手是否跟价。大模型读的是这份摘要,然后用玩家能理解的话说明发生了什么,并提出下一步的建议,比如“建议把周三的备货提前,或缩小折扣覆盖的商品数”。
摘要还有一个副作用:它限制了模型能“看到”的世界。模型看不到全量状态,就无法在叙述里编造一个并不存在的数据。摘要里没有的东西,它只能说“不清楚”。
同一条指令,为什么每次得到的计划可以不一样
有一点需要说清:第一、第二次交接里,模型的输出允许有变化。同一句“抢占学生客群”,这一次它可能提议降价,下一次它可能提议做联名套餐。这是有意保留的,因为玩家要的正是多个思路。但变化只允许发生在“计划”层,一旦计划通过校验、写入世界,后面的一切就变成确定的。
所以系统会把通过校验的计划连同当时的随机种子一起存进存档。读档重放时,用的是存下来的计划,而不是让模型重新想一遍。这样,“计划的多样性”与“世界的可复现”两个要求就不再打架:前者发生在写入之前,后者发生在写入之后。
另一个与之相关的设计是保留“被否决的计划”。玩家可能问:为什么系统没有建议我做联名套餐?把候选计划和被校验器拒绝的原因保存下来,就可以如实回答:这个方案在预算或冷藏容量上不成立。这比让模型事后编一个理由可靠得多。
反过来行不行:让模型直接算,或只用模拟器
| 工作 | 归属 | 原因 |
|---|---|---|
| 听懂含糊的指令 | 大模型 | 需要语言与常识,规则难以穷举 |
| 提出多个候选策略 | 大模型 | 开放式组合,适合生成 |
| 检查计划是否合法 | 校验器 | 必须确定、可解释 |
| 库存、资金、人口的增减 | 模拟器 | 要求守恒与可复现 |
| 消费者是否到店 | 模拟器 | 取决于大量状态变量,需批量计算 |
| 用人话解释结果 | 大模型 | 依据摘要生成叙述 |
只用模拟器的问题是“听不懂人话”。玩家必须学会一套精确的菜单式指令,游戏变得像填表。只用大模型的问题则相反:世界看起来生动,账却是糊涂的。库存可能凭空出现,价格可能不听规则,同一局游戏读档重来结果全变。这两种失败,在大发娱乐官网的AI模拟工作流里,都被当作要避开的反面情形。同一套分工也适用于大发娱乐战略模拟:玩家说“向北方稳步推进”,模型负责把它翻译成路线与阶段目标,兵力消耗、补给天数和地形通行则全部由模拟器结算。
交接处最常出问题的三个地方
- 模型输出了非法计划。常见表现是字段越界、引用了不存在的商品、把两件互相冲突的事同时安排。处理方式是校验失败就返回原因、限定重试次数,超过次数则退回玩家手动确认,而不是放行。
- 模型的叙述与模拟结果不一致。例如摘要里利润下降,叙述却说“整体表现良好”。对策是让叙述的每个数字都必须引用摘要字段,并在输出后做一次自动比对。
- 摘要压缩丢了关键信息。若断货只发生在一个下午,被平均掉之后模型就会误判原因。所以摘要里要保留“异常事件清单”,与均值分开存放。
这三类问题都可以用验证与校准的办法追踪:记录每一次交接的输入与输出,在异常时回放。
还有一个实践上的好处:因为交接点是清楚的,替换其中一环的成本很低。把负责规划的模型换成另一个,只要它仍然输出符合字段定义的计划,模拟器与校验器一行都不用改;反过来,调整消费者行为规则,也不会影响模型如何理解玩家的话。大发娱乐大模型的迭代和模拟规则的迭代因此可以各走各的节奏,用验证与校准里的检查在中间兜底。
大发娱乐这样划分并不是不信任大模型,而是让它做擅长的事:理解、提议、解释。至于每块面包卖了多少、每笔钱去了哪里,交给一个不会改口的模拟器,玩家才能放心地把一局游戏玩上一百周。