1.2 提示词工程 面试题
提示词工程Prompt Engineering面试和RAG面试风格不太一样——RAG考的是系统链路而提示词工程考的是对模型行为的理解和精准控制能力。下面按高频考点分模块整理附代码案例。一、基础概念篇开场必问Q1什么是提示词工程核心价值是什么面试官追问写提示词和做提示词工程有什么区别核心答题框架提示词工程不是“随便写几句话”而是系统化地设计、优化和测试输入文本以引导大语言模型生成更准确、相关和高效的输出。区别在于写提示词凭感觉写完就完事提示词工程有方法论、有评估、有迭代加分回答 “同样一个模型换一种提问方式答案质量天差地别。这不是玄学而是一套可以被拆解、验证、复用的工程方法。”Q2提示词的基本结构包括哪些部分核心要素要素说明示例角色设定Role明确模型身份和专业领域“你是一位资深数据分析师”任务描述Task清晰说明要做什么“分析以下销售数据”上下文Context提供背景信息“这是2024年Q4的销售报表”约束条件Constraints明确限制和边界“输出不超过200字”输出格式Format指定返回格式“用Markdown表格输出”示例ExamplesFew-shot样例提供1-3个输入输出对代码案例结构化的Prompt模板defbuild_prompt(role:str,task:str,context:str,constraints:list,format_spec:str)-str:构建结构化Promptpromptf # 角色设定 你是一位{role}。 # 任务{task}# 上下文信息{context}# 约束条件{chr(10).join([- cforcinconstraints])}# 输出格式{format_spec}请严格按照以上要求执行。 returnprompt# 使用示例promptbuild_prompt(role有5年经验的电商运营专家,task分析这份销售数据找出增长机会,context这是某品牌2025年Q1的电商销售数据包含各渠道GMV、转化率、客单价,constraints[只分析数据中呈现的趋势,不臆测未提供的信息,输出不超过300字],format_spec分三点列出每点包含现象数据支撑建议)print(prompt)二、核心方法篇必考三件套Q3Zero-Shot、Few-Shot、Chain-of-ThoughtCoT的区别这是最高频的送分题但要在面试中拿高分需要说清楚什么时候用哪个。方法定义适用场景示例Zero-Shot不给示例直接给指令简单任务模型已有相关知识“把’Hello’翻译成中文”Few-Shot给2-5个输入输出示例需要特定格式、边界模糊的任务给3个分类示例后再分类新样本CoT在Few-Shot基础上展示推理步骤数学、逻辑、多步推理任务“先算A再算B最后得出C”代码案例三种方法的对比# 场景将用户反馈分类为【投诉】【建议】【咨询】# 1. Zero-Shot零样本zero_shot_prompt 将以下用户反馈分类为投诉、建议、咨询。 反馈你们的APP登录太慢了每次都要等10秒 分类 # 2. Few-Shot少样本few_shot_prompt 将以下用户反馈分类为投诉、建议、咨询。 示例1 反馈你们的客服态度太差了我要投诉 分类投诉 示例2 反馈建议增加夜间模式晚上用太刺眼了 分类建议 示例3 反馈请问你们的会员价格是多少 分类咨询 现在请分类 反馈你们的APP登录太慢了每次都要等10秒 分类 # 3. Chain-of-Thought思维链cot_prompt 将以下用户反馈分类为投诉、建议、咨询并解释推理过程。 示例 反馈你们的客服态度太差了我要投诉 分析用户明确表达了不满情绪(太差了)并使用了投诉这个词表达的是对现有服务的不满。 分类投诉 反馈建议增加夜间模式晚上用太刺眼了 分析用户提出了具体的改进方向(增加夜间模式)没有表达不满而是提出建设性意见。 分类建议 现在请分类并给出推理 反馈你们的APP登录太慢了每次都要等10秒 分析 加分回答 “Few-Shot不是越多越好一般2-5个示例最优。示例太多会浪费token、增加延迟还可能让模型‘过拟合’到示例格式上。CoT的核心价值在于强制模型生成中间推理步骤这些步骤成为后续token的上下文大幅降低推理错误。”Q4指令微调Instruction Tuning如何影响Prompt设计核心答题框架经过指令微调的模型如ChatGPT、Claude对Zero-Shot指令的理解能力大幅增强。这意味着不需要再堆砌复杂的Few-Shot示例Prompt设计更倾向于清晰、明确的自然语言指令但仍然需要结构化设计因为模型只是“更听话”不是“会读心”三、设计原则篇体现方法论Q5设计高效Prompt的核心原则有哪些六大原则清晰明确Clarity指令无歧义避免“帮我写点东西”这种模糊表述提供上下文Context给足背景信息减少模型“臆测”设定角色Role Playing角色越具体输出越精准分解任务Task Decomposition复杂任务拆成多个子步骤指定格式Output Formatting明确JSON、Markdown、表格等格式负面提示Negative Prompting明确告诉模型“不要做什么”代码案例优化一个烂Prompt# ❌ 坏Prompt太模糊bad_prompt写点关于人工智能的东西。# ✅ 好Prompt结构化角色格式good_prompt 你是一位科技专栏作家擅长用通俗易懂的语言向普通读者解释复杂技术。 # 任务 写一篇关于人工智能的科普短文。 # 要求 1. 主题人工智能如何改变日常生活聚焦在AI助手、推荐算法、智能家居三个领域 2. 受众对技术感兴趣但非专业背景的普通读者 3. 风格轻松、有趣、避免专业术语 4. 长度300-400字 # 输出格式 - 标题15字以内 - 正文分3个小节每节配一个小标题 - 结尾一句总结性的话 # 负面约束 - 不要讨论AI伦理、就业替代等争议性话题 - 不要使用“深度学习”“神经网络”等术语 - 不要超过400字 加分回答 “面试官如果追问‘你加哪个词之后效果变化最大’我会说角色设定。把‘你是专家’换成‘你是5年经验的ToB SaaS产品经理’输出质量会有质的飞跃——因为角色自带了一整套默认规则。”四、高级技巧篇拉开差距Q6Temperature参数是什么怎么调核心答题框架参数值效果适用场景低0-0.3输出确定性强、可预测事实问答、代码生成、格式提取中0.5-0.7平衡创造性和确定性一般对话、内容生成高0.8-1.0输出多样、有创造性创意写作、头脑风暴代码案例importopenaidefgenerate_with_temperature(prompt:str,temp:float)-str:不同temperature下的生成对比responseopenai.ChatCompletion.create(modelgpt-4,messages[{role:user,content:prompt}],temperaturetemp,max_tokens200)returnresponse.choices[0].message.content prompt写一句关于春天的诗print(Temperature0.1确定性:,generate_with_temperature(prompt,0.1))print(Temperature0.9创造性:,generate_with_temperature(prompt,0.9))Q7如何处理模型输出跑题/幻觉核心策略角色锚定明确身份和边界约束量化“只回答X相关的问题”“超出范围直接说不知道”Few-shot规范用示例锚定输出格式和风格负面约束明确“不要出现什么”后处理验证代码校验输出格式和内容代码案例带约束的System Promptsystem_prompt # 身份 你是XX餐饮的官方AI客服助手。 # 能力范围 仅能回答和本品牌相关的问题包括 - 门店地址和营业时间 - 会员规则和积分查询 - 餐品价格和菜单 - 优惠券使用说明 # 严格约束 1. 如果用户问的是超出以上范围的问题请直接回复 抱歉这个问题我暂时无法解答你可以联系人工客服 400-888-8888 2. 不要编造任何关于品牌、价格、活动的信息 3. 不确定时引导用户联系人工客服 # 输出风格 - 友好、礼貌 - 用您称呼用户 - 每次回答不超过150字 Q8如何设计System Prompt关键要素system_prompt # 角色定义 - 身份专业的AI编程导师 - 领域Python编程、算法基础 - 风格耐心、引导式教学、不直接给答案 # 能力说明 - 可以解释编程概念 - 可以指出代码中的错误 - 可以提供思路引导 # 行为准则 1. 面向初学者用通俗语言解释 2. 不直接给出完整代码先引导思考 3. 不确定时主动承认不编造 # 输出格式 - 先给思路 → 再给提示 → 最后才给参考答案 - 代码块使用标注 - 错误信息包含原因解决方向 加分回答 “System Prompt和User Prompt的分工是System定义‘你是谁’和‘游戏规则’User提出‘具体任务’。好的System Prompt让模型一进场就知道自己该干嘛。”五、工程实践篇体现系统思维Q9如何评估Prompt的质量三层评估框架层级评估方式指标离线评估用测试集跑分准确率、格式合规率、一致性人工评估抽样人工打分相关性、完整性、可用性线上监控生产环境数据用户反馈、任务完成率、点踩率代码案例Prompt A/B测试框架importjsonfromtypingimportList,DictclassPromptABTest:def__init__(self):self.results{}deftest_prompts(self,prompts:Dict[str,str],test_cases:List[str])-Dict:对多个Prompt版本进行A/B测试scores{name:[]fornameinprompts}forcaseintest_cases:forname,promptinprompts.items():full_promptf{prompt}\n\n输入{case}# 调用模型获取结果此处省略API调用# 计算准确率/格式合规率等scoreself._evaluate(full_prompt)# 假设返回0-1分数scores[name].append(score)# 计算平均分return{name:sum(scores[name])/len(scores[name])fornameinscores}def_evaluate(self,prompt:str)-float:# 实际项目中接入评估逻辑pass# 使用示例ab_testPromptABTest()prompts{v1_basic:将以下文本翻译成英文{text},v2_role:你是一位专业翻译将以下中文翻译成地道的英文{text},v3_fewshot:示例你好-Hello现在翻译{text}}resultsab_test.test_prompts(prompts,[今天天气真好,我要去吃饭])print(results)# {v1_basic: 0.72, v2_role: 0.85, v3_fewshot: 0.81}Q10你和Prompt工程师的区别是什么面试官追问这个岗位是AI应用工程师不是纯Prompt工程师你怎么看核心答题框架维度Prompt工程师AI应用工程师关注点提示词本身的设计和优化把Prompt融入完整的应用系统工作范围写Prompt、调参整合API、设计系统架构、处理工程问题输出高质量的Prompt模板可上线的AI功能模块加分回答 “我不只是写Prompt我还关心这个Prompt如何在系统里跑——怎么动态生成、怎么缓存、怎么降级、怎么监控效果。Prompt是我的工具不是我的全部工作。”六、面试避坑总结常见扣分点正确做法只会说“加角色、给例子、加限制”讲清楚为什么加、加在哪、效果怎么验证背方法论但不举例每个方法论配一个真实的优化前后对比只讲Prompt不讲评估主动提怎么衡量Prompt好不好把Prompt当玄学强调可迭代、可验证、可工程化面试官最爱追问的一句话“你加了哪个词之后模型的输出发生了什么具体变化”——提前准备好一个真实的优化案例讲清楚改动前→改动后→为什么有效。掌握以上10个核心问题 配套代码足以应对绝大多数提示词工程面试场景。核心心法Prompt Engineering不是写句子是给AI写“精准操作说明书”。