AI塔罗小程序抽牌设计复盘,为何坚持程序洗牌+用户点选而非让大模型生成牌面

一款基于韦特体系的AI塔罗小程序「星语塔罗」上线后引发关注,其核心设计选择——由程序执行洗牌与正逆位判定、用户亲手点选牌面、AI仅负责解读——背后有明确的技术与体验考量。作者通过10万次抽牌模拟验证算...

人工智能

在AI应用快速渗透日常生活的当下,塔罗占卜这一传统神秘学实践也迎来了技术重构。近期上线的微信小程序「星语塔罗丨AI塔罗解读」并未采用“用户提问→大模型直接生成牌面与解读”的常见路径,而是将抽牌环节完全交由程序控制,用户仅需在洗好的牌阵中亲手点选。这一看似反直觉的设计,实则源于对随机性本质、用户体验一致性及模型能力边界的深度权衡。

该应用采用标准韦特塔罗体系,覆盖78张牌(22张大阿卡那+56张小阿卡那),支持单牌、三张牌阵等常见占卜形式。其完整流程被严格划分为四步:程序洗牌并预设正逆位;用户点选确定具体牌面;程序查取对应牌义词条;AI结合问题与牌义生成个性化解读。其中,前两步构成“物理抽牌”环节,是整套设计的基石。

为什么不让大模型“自己抽牌”?

一种直观做法是向大模型发出指令:“请为我抽三张牌并解读我是否该换工作”。模型可能回应:“我为你抽到了星星正位、女皇逆位、隐士正位……”——但这种“抽到”仅是语言生成结果,不等于真实执行了从78张牌中等概率抽取的操作。

文章配图

大模型的文本生成具有内在随机性,但该随机性作用于词元选择层面,受提示词结构、训练数据分布及温度参数影响,无法保证每张牌出现概率均等。若未接入外部工具调用,所谓“抽牌”实质是模型基于统计规律的拟合输出,存在系统性偏差风险。例如,在特定提问下,模型可能更倾向生成“高辨识度”或“积极意象”牌面(如太阳、星星),而回避“晦涩”牌(如死神、月亮逆位),从而削弱占卜的客观性与仪式感。

为此,开发者选择将抽牌行为彻底剥离出模型推理链,交由确定性程序实现。

Fisher–Yates 洗牌与正逆位预设

洗牌算法采用经典的Fisher–Yates置换法,确保在理想随机源下,所有78!种牌序出现概率严格相等。代码实现简洁高效,关键在于使用Math.random()作为随机源——虽非密码学安全级别,但对塔罗应用场景已足够可靠。

值得注意的是, 正逆位判定最初设计为“用户点选时实时翻转”,后调整为“洗牌阶段统一预设”。此举并非出于统计差异(两种方式下正/逆位理论占比均为50%),而是为了还原实体塔罗的真实流程:牌在洗牌过程中即可能发生翻转,用户伸手选取时,牌的朝向早已确定。这种细节处理强化了操作的仪式感与心理预期一致性。

为验证实现效果,开发者进行了三轮各10万次的抽牌模拟测试。以“抽取第一张牌”为样本,统计每张牌出现频次,计算卡方统计量。结果显示:三轮卡方值分别为77.2、70.2、59.6,均低于自由度77、显著性水平0.05下的临界值98.48;逆位占比稳定在49.98%~50.15%之间。这表明在当前实现下,未发现显著偏离均匀分布的证据。

图中柱状图清晰呈现了78张牌在10万次模拟中的实际抽中次数区间(1190–1369),理论期望值为1282次/张,整体分布平稳。该自检机制为产品上线提供了基础可靠性保障。

牌义词库与规则化提示工程

第二步“查牌义”同样避免依赖模型记忆。开发者整理了一份结构化韦特牌义词库:每张牌的正位与逆位各含5个关键词及1句释义。当用户选定牌面后,系统自动提取对应词条,连同用户问题一并输入模型。

此举有双重优势:一是确保解读基准统一,避免因模型知识偏差导致同一张牌在不同会话中解释矛盾;二是将模型角色限定为“分析者”而非“百科全书”,迫使其聚焦于问题与牌面的关联推理,而非复述固定文本。

第三步则通过精细化的系统提示词(System Prompt)规范AI输出。提示词分为四部分:角色定位(温和理性的塔罗师)、输出模板(单牌/多牌阵结构化分段)、风格约束(避免绝对化断言、强调可能性)、边界声明(不替代专业建议)。例如,三张牌阵的解读严格按“一句话定调→牌阵概览→逐张解读→整体洞察→行动建议”五步展开,确保信息密度与可读性平衡。

用户交互与延伸功能

最终呈现给用户的界面是一排背面朝上的牌阵,点击后翻开所选牌面,随即触发AI解读。用户可围绕同一组牌继续追问,形成对话式占卜流。该设计保留了“亲手参与”的主动性,区别于纯被动接收结果的黑盒式AI服务。

类似思路亦见于海外产品FlipTarot:它支持拍照识别实体牌阵,同样强调“用户主导抽牌过程”,AI仅负责整合牌位、正逆位与问题进行系统性解读。两者共同指向一个趋势——在AI赋能的神秘学应用中,人机协作的边界正被重新定义:技术负责可验证的确定性环节(洗牌、查义),人类保留选择权与诠释主导权。

上线后的反馈与待优化点

据作者透露,上线初期曾观察到两类问题:一是部分用户误以为“AI在后台偷偷改牌”,需加强流程说明;二是模型在复杂牌阵(如凯尔特十字)中偶有忽略牌位关系,过度聚焦单张牌义。后续迭代计划包括增加抽牌动画反馈、引入牌位权重规则、开放牌义词条编辑权限等。

值得指出的是,此类应用明确标注“用于个人反思与娱乐,不保证未来结果”,符合行业惯例。其价值不在于预测准确性,而在于提供结构化自我对话的脚手架——借助塔罗符号系统,将模糊焦虑转化为具象议题,再由AI辅助梳理逻辑脉络。

技术上,该项目展示了轻量级AI应用的典型架构:前端交互 + 确定性算法模块 + 大模型推理层。它没有追求“全栈AI化”,反而通过刻意限制模型职责,提升了系统可控性与用户体验可信度。在生成式AI泛滥的今天,这种“克制式设计”或许更具长期生命力。