简介
提示不仅仅是你在聊天框中输入的问题。它是向LLM告知要做什么、如何做以及以何种格式回应的唯一指令来源。与传统代码不同,编译器遵循确定性规则,LLM对你的提示的解释是概率性的——也就是说输出质量在很大程度上取决于你如何清晰表达意图。
清晰度与特异性
模糊的提示会带来模糊的结果。比如“写点关于Web应用程序的东西”这样的请求会给模型太多自由度,导致输出泛泛而且缺乏聚焦。具体的提示能够约束模型,减少歧义。
第二个提示之所以有效,是因为它定义了领域(Node.js REST API)、聚焦主题(带JWT的安全风险)、指定数量(前3名),并要求结构化输出(每条为一句话的缓解措施)。消除歧义就等于减少模型的猜测。
结构与角色分配
LLMs对结构化提示反应良好,这些提示分配角色、定义任务并设定约束。一个常见的模式是:Role — Task — Context — Constraints — Output Format。将这些层次按顺序叠放,通常比单一句子更易获得可预测的输出。
角色设定使模型具备特定视角。约束筛选掉不需要的建议。输出格式塑造回答的结构,便于你以编程方式解析——这在代理工作流中尤其重要,因为AI的输出将进入下一步。
LLMs 如何将指令与代码不同地解读
传统代码按自上而下的顺序执行,遵循严格的语法规则。一个 LLM 将整个提示作为自然语言的一个片段来读取,并预测最可能的后续内容。这意味着:词序很重要,提示中的示例会强烈影响输出风格,将关键指令放在冗长提示的末尾可能因为注意力漂移而“丢失”。
差异对人类而言微妙,但对模型而言却很显著。这也是为什么提示工程是一项技能——你需要学会预测模型如何对输入的每个部分进行加权。
实际示例:从随意到生产就绪
设想你正在构建一个 AI 代理,生成用于 React 表单库的表单验证规则。
随意提示可能返回散乱的段落、示例 HTML,或半成的模式。生产就绪的提示将返回一个完全可解析的代码块,你可以直接输入到你的构建流程中。
常见错误
初学者提示中反复出现三大错误。第一,在一个提示中混合多项无关任务——将它们拆分,否则模型会优先处理其中一项而忽略其他项。第二,省略输出格式——没有输出格式,模型会选择一种格式,你可能无法解析结果。第三,假设模型在长会话中完美记住早期对话上下文——在每个新提示中重新阐明关键约束。
摘要
有效的提示应清晰、具体、结构化。它们分配角色、陈述任务、提供上下文、应用约束、并定义输出格式。理解 LLMs 如何以概率方式解读语言——而非确定性执行——是从传统编程到这一心理转变的关键。在下节课中,我们将把这些基础应用于构建多步代理工作流。
课程检查点
巩固所学知识,获取作业反馈。