LLM队友提示设计思路
LLM队友提示设计思路
一、设计目标
在BOSS战中,为玩家提供一个可选的AI助手,能够根据当前牌局状态给出战术建议。这个功能旨在帮助新手理解游戏,或为所有玩家提供不同的思考角度,但不强制使用,且调用次数有限以避免成本失控。
二、时机选择
建议采用“玩家主动请求”模式,而非自动每轮触发。理由:
- 成本可控:玩家只在需要时调用LLM,如每场BOSS战限制2-3次。
- 尊重玩家:有些玩家喜欢自己思考,不想被干扰;有些玩家在困惑时才需要提示。
- 延迟可接受:玩家主动请求时,愿意等待几秒钟获取建议。
三、需要给LLM的信息
要让LLM给出合理建议,必须提供当前牌局的关键信息。以下是最低必要信息:
- 玩家手牌:各类型牌的数量(善/恶/中立/万能)。
- BOSS手牌总数:玩家可观察到的BOSS剩余牌数。
- 桌面牌堆数量:当前累积的未质疑牌数。
- 上一轮BOSS宣称的类型(如果是玩家回应轮次)或玩家自己的宣称(如果是BOSS回应轮次)。
- 当前是谁的回合:玩家需要出牌还是回应。
- 游戏规则简要:让LLM理解质疑、跟牌、不跟的后果,以及万能牌的作用。
此外,可选信息:
- 最近几轮的历史宣称(可帮助LLM推断模式)。
- 万能牌剩余(玩家已知)。
四、提示词模板设计
可以将上述信息转化为自然语言描述,例如:
你是一位经验丰富的修仙者,正在帮助一位道友(玩家)进行一场心魔对战。
游戏规则:
- 双方轮流出牌,每轮出牌者扣着出1-3张牌,并宣称一个类型(善/恶/中立),可用万能牌冒充任何类型。
- 对方可以选择质疑(翻开验证)、跟牌(自己也出牌)或不跟(清空桌面)。
- 先出完手牌者胜。
当前牌局状态:
- 你的手牌:善X张,恶Y张,中立Z张,万能W张。
- 对方手牌剩余:?张。
- 桌面累积牌数:?张。
- 上一轮对方宣称了【类型】。
- 现在轮到你【出牌/回应】。
请根据以上信息,给出简短实用的建议(一句话即可),例如“对方可能在虚张声势,建议质疑”或“你善牌较多,可以跟牌宣称善”。
五、实现方式
可以封装为一个函数:
def get_llm_hint(game_state, player_hand):
"""
根据当前游戏状态构造提示词,调用LLM返回建议。
游戏状态包含:boss_hand_count, table_pile_count, last_claim, is_player_turn, etc.
player_hand: 玩家手牌分布(字典)
"""
prompt = f"""
你是一位经验丰富的修仙者,正在帮助一位道友(玩家)进行一场心魔对战。
游戏规则:
- 双方轮流出牌,每轮出牌者扣着出1-3张牌,并宣称一个类型(善/恶/中立),可用万能牌冒充任何类型。
- 对方可以选择质疑(翻开验证)、跟牌(自己也出牌)或不跟(清空桌面)。
- 先出完手牌者胜。
当前牌局状态:
- 你的手牌:善{player_hand.get('good',0)}张,恶{player_hand.get('evil',0)}张,中立{player_hand.get('neutral',0)}张,万能{player_hand.get('wild',0)}张。
- 对方手牌剩余:{game_state.boss_hand_count}张。
- 桌面累积牌数:{game_state.table_pile_count}张。
- 上一轮对方宣称了【{game_state.last_claim}】。
- 现在轮到你【{"出牌" if game_state.is_player_turn else "回应"}】。
请根据以上信息,给出简短实用的建议(一句话即可),例如“对方可能在虚张声势,建议质疑”或“你善牌较多,可以跟牌宣称善”。
"""
# 调用LLM API...
return hint
六、调用频率控制
- 每场BOSS战限制调用次数(如2次),由前端记录并在玩家输入
/hint时检查。 - 调用前可简单检查,避免在明显局势下浪费(如只剩一张牌时无需建议)。
七、备选方案对比
你提出的两个备选时机:
- 备选1(BOSS出牌后):此时玩家需要决定如何回应,是质疑、跟牌还是不跟。这个时机很关键,LLM可以分析BOSS宣称的可信度。但若每轮都自动触发,成本高。可改为玩家在此时输入
/hint请求建议。 - 备选2(玩家出牌前):此时玩家需要决定出几张牌和宣称什么类型。LLM可以根据玩家手牌和局势给出出牌策略。同样,建议由玩家主动触发。
两种场景都需要,但可以通过同一个/hint命令根据当前回合状态自动适配。例如,如果是玩家出牌轮,就给出出牌建议;如果是玩家回应轮,就给出回应建议。
八、总结
- 时机:玩家主动输入命令触发,每场BOSS战限制次数。
- 信息:玩家手牌、BOSS手牌数、桌面牌堆、上一轮宣称、当前回合角色。
- 提示词:结构化描述,让LLM扮演经验丰富的修仙者,给出简短建议。
- 实现:封装为函数,由codebuddy实现,并考虑调用限制。
这样既能丰富游戏体验,又避免过度依赖LLM的成本和延迟问题。

浙公网安备 33010602011771号