【AI基础专题】提示词管理
上一节我们已经可以和大模型进行连续对话了,这节我们通过简单的例子来演示一下提示词管理的能力,直观的感受下相同的一个问题,不同的提示词,Agent 的“性格”和“能力”将会彻底不同。。
我们新建一个文件src/prompt/system.ts,内置三个不同的系统提示词。
1 | export const PROMPTS = { |
然后我们在src/index.ts中引入这个提示词,并且通过命令行参数来选择不同的提示词:
1 | // 省略引入依赖部分 |
现在我们来试试三种提示词的表现:
根据上图结果,我们也直观感受到了提示词对模型的巨大影响,所以我们单独开了一个小节来做了这个对比,就是希望大家能深刻的体会到提示词的重要性。
之前在别的文章中看到了提示词的四个原则,现在搬运过来,仅供参考:
原则一:角色即行为边界
system 消息不是装饰,是硬边界。对比“你是一个助手”和“你是一个只回答前端问题的助手”,后者对后端问题的拒绝率显著更高。读者可以立刻在 system.ts 里加限定词验证。
原则二:格式指令必须具体到反例
原则三:少样本是最高效的微调
文章里会演示:让 LLM 做代码审查时,在提示词里塞一对“坏代码 → 好审查意见”的例子,输出质量碾压纯文本指令。少样本示例本质上是用实例做梯度下降,只不过梯度更新在上下文的注意力里,不在模型权重里。
原则四:越近越重
消息数组里,靠后的消息对输出的影响远大于靠前的。如果 system 说“简洁”,但倒数第二条用户说“请详细展开”,LLM 会听用户的。这是提示词冲突的默认裁决机制,理解这一点才能在设计复杂 Agent 时不出诡异行为。
发散点:
- 提示词的动态拼接与注入
- 提示词注入防御