此前我们用 RAG 为助手接入了版本攻略,但大模型偶尔还是会说车轱辘话。问题出在哪儿?不是知识不够,而是“问的方式不对”。这一篇,我将拆解自己为 TFT 助手设计的几套提示词模板,看看好的提示词如何把同一个模型从“废话生成器”调教成条理清晰、具体可操作的赛季教练。
一、有了 RAG,为什么回答还是不够好?
在上一篇里,我用retrieve(query)从本地知识库中找到了相关文档,然后这样让大模型回答:
prompt = f"""你是一个校园助手,请根据以下参考资料回答用户问题。 参考资料: {context} 用户问题:{question} 回答:"""这个 prompt 可以“抑制幻觉”,但远远谈不上“专业”。当我问“我这套阵容接下来该怎么运营?”时,模型给出的回答往往类似:
“建议您根据局势合理分配经济,适时提升等级或刷新商店。”
这话没错,但说了等于没说。问题根源在于:prompt 没有告诉模型“你要以什么身份、按什么结构、从哪些维度、给出什么粒度的建议”。这就需要我们系统性地设计提示词。
二、提示词工程的三个核心技巧
在实际调试中,我总结了三条让 TFT 助手回答质量立竿见影的技巧:
| 技巧 | 作用 | 示例 |
|---|---|---|
| 角色设定 | 约束语气、知识范围 | “你是云顶之弈 Set 16 的职业教练,曾指导过多名挑战者选手。” |
| 结构化输出 | 强制分点、分节 | “请按以下格式输出:① 阶段判断 ② 经济建议 ③ 装备优先级 ④ 站位调整” |
| Few-shot 示例 | 校准回答风格和深度 | “例如,当阵容为 4 Bruiser + 3 Dragon 时,你应这样建议:……” |
下面我把这三招逐一拆开,展示它们在 TFT 场景中的实际写法。
三、角色设定:一句话让模型入戏
角色设定是 prompt 的第一句话,也是最容易被忽视的一句话。对比实验:
Prompt A(无角色):
根据以下资料,给玩家一些云顶之弈的建议。
Prompt B(有角色):
你是云顶之弈 Set 16 的职业教练,擅长分析阵容过渡、装备分配和站位博弈。请用简洁、自信的口吻给出建议,避免模棱两可。
两套 prompt 用同一个模型、同一份参考资料,回答差距显著。Prompt B 的建议会主动使用“你应该在 3-2 拉 6 级后开始 D 牌找 XX”这种具体指令,而 Prompt A 往往是“建议合理管理经济”。
实战版本(整合进 RAG 流程):
SYSTEM_ROLE = """你是云顶之弈 Set 16 职业教练,专精阵容运营与装备分配。 你的回答必须基于提供的参考资料,如果资料中没有相关答案,请如实说明。 语气:自信、直接、具体,像教练在指导学员,不要说“可能”“也许”。"""四、结构化输出:让回答拿来就能用
玩家来问助手,不是来读散文的。所以我的 prompt 会明确要求模型按固定结构输出,这样前端还能进一步解析成卡片。
实战 prompt 模板:
ANALYSIS_TEMPLATE = """{role} 当前阵容信息: - 英雄列表:{champions} - 激活羁绊:{traits} - 装备一览:{items} - 当前人口:{team_size} 参考资料: {context} 请严格按以下 4 个部分输出分析: 【阶段判断】 当前属于早期/中期/后期,并给出依据。 【经济运营】 下一步升级或 D 牌的时机建议。 【装备优先级】 接下来优先合成的装备(列出 3 件并说明理由)。 【站位调整】 简要的站位优化建议(前排/后排分配)。 注意:每个部分用 2~3 句话,不要长篇大论。"""这样的强制分段,不仅让用户阅读更轻松,还为后续的多 Agent 拆分埋下了伏笔(经济 Agent、战力 Agent、站位 Agent 恰好对应这些部分)。
五、Few-shot 示例:给模型一个“标准答案”参考
有些时候,即使有角色和格式要求,模型的回答风格仍然会飘。这时直接在 prompt 里塞一个示例,效果立竿见影。
EXAMPLE = """ 示例: 【阶段判断】 中期(3-4 阶段),因为阵容已到 7 人口,且核心羁绊 4 Bruiser 已激活。 【经济运营】 当前经济 42 金币,建议存到 50 后用利息拉 8 人口,不要过早 D 牌。 【装备优先级】 ① 饮血剑(给 Aatrox)② 泰坦的坚决(给 Riven)③ 鬼索的狂暴之刃(给后排)。 【站位调整】 前排 3 个 Bruiser 站中间吸收伤害,后排 Aphelios 和 Samira 放角落防刺客。 """ final_prompt = f"{ANALYSIS_TEMPLATE}\n\n{EXAMPLE}\n\n用户问题:{question}"有了这个示例,模型几乎不再跑偏。这其实是一种隐式的梯度下降——你用示例把“好的输出”的分布锚定住了。
六、提示词工程与 RAG、Agent 的关系
到这里,我们手里已经有了:
知识供给层:RAG 检索到的版本攻略(保证信息时效性)。
输出控制层:精心设计的提示词(保证回答专业性)。
两者结合,单个 LLM 就足以充当一个“教练 Agent”。但现实是:一套阵容分析涉及经济、战力、站位三个维度的深度推演,全塞进一个 prompt 里,模型容易顾此失彼(比如重点分析了装备,却忽略了站位)。下一篇,我们将把这三个维度拆成三个独立的 Agent,每个 Agent 使用各自专属的提示词模板,再通过消息总线协同工作——从一个“全栈教练”升级为一支“专家团队”。