AI工程越来越成熟,面试官要看你脱离"写个好prompt"的笼统层面,进到具体技巧和取舍。这道题区分"AI游客"和"真部署过LLM系统的工程师"。
Zero-shot:直接描述任务。对强模型+直白任务有效,是起点。
Few-shot:prompt里塞2-5个输入输出例子。任务格式非直观(从杂乱文本提结构化字段、套特定风格)时有效。代价是每次请求token更多。
思维链(CoT):要求"一步步思考"再给答案。多步推理、数学、代码分析有大幅提升。注意:新推理模型(o1、o3)内部已做,外加CoT反而有害。
结构化输出:要求JSON输出且符合schema。用厂商的JSON模式或函数调用API,不要让LLM"输出一段JSON"然后解析。这是生产可靠性的最大杠杆。
角色/系统prompt:在system message里设人设、语气、硬约束。和用户消息分开,用户输入不能覆盖指令。安全关键护栏必须放system prompt。
生产环境的prompt工程不在措辞多巧,而在系统化的模式和明确的取舍。Zero-shot是默认——直白描述任务。强模型+常规任务大多数情况够用。Few-shot——塞2-5个输入输出示例——在输出格式不直观或领域特殊时有效,比如从杂乱文本提结构化字段、套特定写作风格。代价是token开销,且示例必须有代表性——偏见示例会产生偏见输出。思维链CoT加"先一步步思考再给最终答案"这类指令。多步推理、数学、代码分析能有显著提升,因为模型有输出token空间把问题想清楚。注意:o1、o3这类新推理模型把思考放内部的隐藏reasoning tokens里,外加CoT反而掉点。要知道自己用的是哪类模型。结构化输出是生产里最高杠杆的技巧。不是"请输出JSON格式"然后解析,而是用厂商的JSON模式或函数调用API——OpenAI的response_format={"type": "json_schema", "schema": ...}、Anthropic的tool use、或者支持constrained decoding的模型。模型被保证输出符合schema的合法JSON,消除解析失败,让下游管道健壮。角色prompting——system message设人设、语气、硬约束——把静态指令和用户输入分开。安全关键的护栏进system;用户输入进user message。我常用的模式:system prompt = 角色("你是细心的数据分析师…")+ 输出格式("按schema X的JSON回答")+ 约束("超出范围就回答'out of scope'")。User prompt只放清洗过的用户问题。RAG长context里prompt位置也有讲究:模型对context开头和结尾注意力更高("lost in the middle"效应),关键指令放system,最重要的检索块放context末尾。真正的纪律是有eval。在三个测试case上work的prompt可能在生产流量上悄悄回归。我维护一个带版本的golden set(输入+期望输出),每次改prompt都跑一遍打分。
提到JSON模式/结构化输出是生产经验的最强信号,大多数候选人漏掉。
知道推理模型(o1、o3)让传统CoT失效,说明跟进了2024-2026的变化。
长context的"lost in the middle"效应是具体好记的谈点。
临场忘了厂商JSON模式语法,即答侠可以提示response_format / tool use。
不是——增加成本有时也过度约束模型。零样本就能做好的任务加few-shot反而会掉。
对非推理模型有用但加token加延迟。对推理模型反而有害。超过模型推理能力上限的难题,CoT只会产出更长的错误答案。
用户输入绝不放system指令里。用结构化输入、验证输出、高风险输出再用一个LLM做安全检查。