零基础入门提示词工程

张开发
2026/4/11 11:46:10 15 分钟阅读

分享文章

零基础入门提示词工程
零基础入门提示词工程作者的话这篇教程专为零基础小白编写我会用最通俗的语言带你从零理解什么是提示词工程。不需要编程基础跟着读就能懂第一章先搞清楚——什么是提示词工程1.1 生活中的类比想象你在公司点外卖普通说法效果不好“帮我点个饭”→ 结果收到了一份你不爱吃的盖浇饭还没饮料提示词工程思维效果很好“帮我点一份清淡的要求1午餐要求2预算30元以内要求3不要辣要求4送到3号楼要求5。同事上次点的那家粤菜馆就不错参考示例。”→ 结果收到一份符合你口味的白切鸡饭配例汤核心区别不是随便提需求而是结构化地引导对方按你的思路交付。1.2 AI世界的真相很多人以为跟AI对话就是聊天这大错特错残酷现实AI没有智商情商的概念同一个问题用不同方式问答案天差地别AI会一本正经地胡说八道幻觉提示词工程的目的通过精心设计的指令模板让AI进入专家模式按照我们规定的步骤思考输出高质量、可预期的结果。第二章代码整体架构——三个核心组件打开prompt_engineer.py你会看到三个核心类类名类比作用AIIdentity给AI发工作证告诉AI你是谁专家/新手/设计师/程序员ChainOfThought给AI定工作流程告诉AI按什么步骤思考SelfChecker给AI设质检环节告诉AI交付前要自查三者关系用户问题 ↓ [AIIdentity] 赋予身份 → 你是资深工程师 ↓ [ChainOfThought] 思维链 → 按5个步骤思考 ↓ [大模型生成初稿] ↓ [SelfChecker] 自我检查 → 检查准确性/完整性... ↓ [最终答案输出]第三章逐行解读代码——AIIdentity身份赋予3.1 为什么要给AI设定身份实验对比问同一个问题“如何实现一个登录功能”身份A实习生可能回答写个表单提交到后端验证一下用户名密码…身份B资深架构师可能回答需要考虑HTTPS传输加密、密码bcrypt加盐存储、JWT Token设计、防暴力破解限流、SQL注入防护、会话过期策略、异地登录检测…结论同样的AI模型设定不同身份回答质量天壤之别3.2 代码解读dataclassclassAIIdentity:AI身份配置类# 核心属性role:str资深软件工程师# 角色名称expertise:List[str]field(default_factorylambda:[# 专业领域列表Python/Java/Go 多语言开发,系统架构设计,代码审查与优化,])traits:List[str]field(default_factorylambda:[# 性格特点注重代码质量与可维护性,考虑边界情况和异常处理,])experience_years:int10# 工作年限逐行解释代码白话解释dataclassPython的装饰器自动生成一些常用方法省得我们写一堆样板代码role: str ...变量role是字符串类型默认值是资深软件工程师expertise: List[str]这是一个字符串列表存放AI的专业技能field(default_factorylambda: [...])当创建对象时如果不传这个参数就用lambda函数返回的列表作为默认值experience_years: int 10告诉AI你有10年经验让它回答时更有底气3.3 build_identity_prompt方法详解defbuild_identity_prompt(self)-str:构建身份提示词# 把专业领域列表转成带换行的字符串# [A, B] → - A\n - Bexpertise_str\n.join([f -{e}foreinself.expertise])traits_str\n.join([f -{t}fortinself.traits])# 用f-string格式化字符串拼接最终提示词returnf# 身份设定 你是一位拥有{self.experience_years}年经验的{self.role}。 ## 专业领域{expertise_str}## 工作特点{traits_str}## 行为准则 - 始终以工程师思维分析问题先理解需求再设计方案最后实现 - 回答要技术严谨同时通俗易懂 - 主动考虑边界情况、性能影响和潜在风险 - 如果不确定坦诚说明不臆测 请以上述身份回答接下来的问题。 生成的提示词长什么样# 身份设定 你是一位拥有10年经验的资深软件工程师。 ## 专业领域 - Python/Java/Go 多语言开发 - 系统架构设计 - 代码审查与优化 ## 工作特点 - 注重代码质量与可维护性 - 考虑边界情况和异常处理 ## 行为准则 - 始终以工程师思维分析问题先理解需求再设计方案最后实现 - 回答要技术严谨同时通俗易懂 - 主动考虑边界情况、性能影响和潜在风险 - 如果不确定坦诚说明不臆测 请以上述身份回答接下来的问题。 小技巧你可以把这段提示词复制到ChatGPT/Claude里试试你会发现AI的回答立刻变得专业了很多第四章逐行解读代码——ChainOfThought思维链4.1 为什么要强制AI分步思考心理学背景诺贝尔奖得主丹尼尔·卡尼曼提出人类有两种思考模式——系统1快思考凭直觉快速但容易出错系统2慢思考深思熟虑慢但准确AI默认是快思考模式我们要通过提示词强迫它进入慢思考模式。实验让AI直接回答数学题 vs 要求它一步步算问题17 × 24 ? 快思考回答可能是408错误 慢思考回答 17 × 24 17 × (20 4) 17×20 17×4 340 68 408 ✓正确4.2 代码解读classThinkingStep(Enum):思维链步骤类型UNDERSTAND理解问题ANALYZE分析问题DESIGN设计方案IMPLEMENT实现思路VERIFY验证思路Enum是什么想象它是一个选项标签本UNDERSTAND 标签上写着理解问题ANALYZE 标签上写着分析问题…用Enum的好处是强制你只能从这5个选项里选不会拼错单词。4.3 ChainOfThought类详解dataclassclassChainOfThought:思维链配置类# 默认的5个思考步骤按顺序steps:List[ThinkingStep]field(default_factorylambda:[ThinkingStep.UNDERSTAND,ThinkingStep.ANALYZE,ThinkingStep.DESIGN,ThinkingStep.IMPLEMENT,ThinkingStep.VERIFY])enforce_output:boolTrue# 是否强制输出思考过程为什么是这5个步骤这是根据软件工程方法论设计的理解问题需求分析 ↓ 分析问题技术选型 ↓ 设计方案架构设计 ↓ 实现思路编码实现 ↓ 验证思路测试验证和真实工作中的流程完全一致4.4 build_cot_prompt方法详解这是最核心的方法它生成的提示词决定了AI如何思考defbuild_cot_prompt(self,question:str)-str:构建思维链提示词# 定义每个步骤的具体引导问题step_descriptions{ThinkingStep.UNDERSTAND: 【1. 理解问题】 - 用户问题的核心是什么 - 问题的背景和业务场景是什么 - 是否有隐含需求或未明确的前提条件,ThinkingStep.ANALYZE: 【2. 分析问题】 - 这个问题涉及哪些技术领域 - 可能的解决方案有哪些 - 各方案的优缺点是什么 - 有哪些潜在的技术难点或风险,# ... 其他步骤类似}为什么要在每个步骤设置引导问题想象你在教一个实习生❌ 差劲的指导“你去把这个功能做了”✅ 好的指导“做之前先想清楚用户真正需要什么有几种实现方案各自的优缺点是什么选哪个方案遇到XX问题怎么办”这些引导问题就是思维框架帮助AI全面思考。4.5 输出格式控制## 思考格式要求请严格按照以下格式输出thinking_process[在这里写出你的逐步思考过程包含上述5个步骤]/thinking_processfinal_answer[在这里输出最终回答]/final_answer为什么要规定格式因为我们需要结构化地提取AI的思考过程thinking_process和/thinking_process之间的内容 → 提取为思考过程final_answer和/final_answer之间的内容 → 提取为最终答案这样可以把AI的黑盒思考变成白盒可观测第五章逐行解读代码——SelfChecker自我检查5.1 为什么要让AI自查人都会犯错AI也一样。即使是最强的大模型也会记错API用法遗漏边界情况比如没处理空值写出有bug的代码解决方案让AI像代码Review一样自查一遍。5.2 代码解读dataclassclassSelfChecker:自我检查配置类# 5个检查维度软件工程行业标准check_aspects:List[str]field(default_factorylambda:[准确性内容是否正确有无事实错误,完整性是否完整回答了问题有无遗漏,清晰性表达是否清晰易懂逻辑是否通顺,可行性方案是否可实际执行,安全性是否存在安全隐患])为什么是这5个维度这是我在8年工程实践中总结的技术方案评估标准维度检查什么反面例子准确性技术概念是否正确把TCP和UDP混淆完整性是否漏掉关键环节设计方案没考虑异常处理清晰性别人能看懂吗逻辑跳跃缺少解释可行性真的能实现吗方案成本太高无法落地安全性有漏洞吗SQL注入、XSS等安全问题5.3 build_check_prompt方法详解defbuild_check_prompt(self,original_answer:str)-str:returnf# 自我检查要求 你刚才给出了以下回答现在请进行自我检查 ## 原回答{original_answer}## 检查格式 请按以下格式输出检查结果 self_check 【准确性】 - 评估... - 问题...如有 - 修正...如有 【完整性】 - 评估... - 问题...如有 - 修正...如有 ...其他维度... /self_check final_output [整合所有必要修正后的最终输出] /final_output 设计要点给AI看它自己写的答案—— 没有对比就没有伤害要求具体指出问题和修正—— 不能只说不好要说哪里不好“怎么改”输出修正后的版本—— 把检查结果落地为改进后的答案第六章PromptEngineer主类—— orchestrate编排一切6.1 设计模式 orchestrator编排器classPromptEngineer:提示词工程主类def__init__(self,identityNone,cotNone,checkerNone):self.identityidentityorAIIdentity()self.cotcotorChainOfThought()self.checkercheckerorSelfChecker() 工程经验用编排器模式管理复杂性。就像一个项目经理不直接写代码不直接生成prompt而是调度各个专家组合identity/cot/checker把控流程节点分阶段调用LLM6.2 两阶段流程详解defprocess_with_llm(self,question,llm_caller,verboseFalse):# 阶段1身份 思维链生成 stage1_promptself.build_full_prompt(question)# 组装提示词stage1_responsellm_caller(stage1_prompt)# 调用大模型thinking_processself._extract_thinking(stage1_response)# 阶段2自我检查 可选ifself.enable_self_check:check_promptself.build_check_prompt(stage1_response)stage2_responsellm_caller(check_prompt)# 再次调用大模型self_check,final_answerself._extract_check_and_final(stage2_response)return{thinking_process:thinking_process,self_check:self_check,final_answer:final_answer}为什么要分两个阶段┌─────────────────────────────────────────────┐ │ 阶段1: 生成初稿 │ │ prompt 身份设定 思维链要求 用户问题 │ │ AI输出: 思考过程 初步答案 │ └─────────────────┬───────────────────────────┘ ↓ 把初稿传给阶段2 ┌─────────────────────────────────────────────┐ │ 阶段2: 自我检查 │ │ prompt 阶段1输出 检查要求 │ │ AI输出: 检查结果 修正后的最终答案 │ └─────────────────────────────────────────────┘类比就像写文章先写初稿阶段1放一晚上第二天再看“自检”发现问题修改完善阶段2第七章小白上手指南7.1 快速开始3分钟上手步骤1复制下面这段代码保存为test.py# 导入模块fromprompt_engineerimportPromptEngineer,AIIdentity# 创建提示词工程师engineerPromptEngineer(identityAIIdentity(rolePython专家,# 设定身份experience_years5# 设定经验))# 生成提示词question如何实现一个装饰器promptengineer.build_full_prompt(question)print( 生成的提示词 )print(prompt)print()步骤2把生成的提示词复制到ChatGPT/Claude里步骤3对比效果直接问“如何实现一个装饰器”用提示词工程生成的prompt问你会发现第二种方式得到的回答结构更清晰、内容更完整7.2 进阶玩法自定义思考步骤fromprompt_engineerimportPromptEngineer,ChainOfThought,ThinkingStep# 只保留理解和设计两个步骤适合快速回答场景short_cotChainOfThought(steps[ThinkingStep.UNDERSTAND,ThinkingStep.DESIGN])engineerPromptEngineer(cotshort_cot)7.3 进阶玩法自定义身份fromprompt_engineerimportAIIdentity# 创建一个产品经理身份pm_identityAIIdentity(role资深产品经理,expertise[需求分析,用户调研,Axure原型设计],traits[擅长挖掘用户真实需求,注重产品体验细节],experience_years6)engineerPromptEngineer(identitypm_identity)第八章常见误区避坑指南❌ 误区1提示词越长越好真相提示词要精准而非冗长。❌ 错误做法你是一个AI助手你要认真回答我的问题你要... 写了500字废话✅ 正确做法# 身份 10年后端工程师 # 要求 - 先给出核心结论 - 再展开解释原因 - 附代码示例❌ 误区2一次把需求说完真相复杂任务要分步引导。❌ 错误做法帮我设计一个电商系统包括用户模块、订单模块、 支付模块、库存模块还要考虑高并发、安全性...✅ 正确做法第一步先帮我梳理电商系统的核心模块有哪些 等AI回答完 第二步针对用户模块帮我设计数据库表结构 等AI回答完 第三步...❌ 误区3不问AI怎么想真相一定要要求AI展示思考过程。这就是Chain-of-Thought的价值——让AI出声思考你可以发现AI的推理错误学习AI的解题思路拦截AI的幻觉内容第九章从提示词工程到AI工程9.1 工程化思维初级玩法写个prompt复制粘贴到ChatGPT工程化玩法版本管理用Git管理prompt模板A/B测试测试不同prompt的效果监控指标追踪AI回答的准确率灰度发布新prompt先给10%用户使用回滚机制新prompt效果不好能快速回退9.2 实际业务中的架构用户请求 ↓ [Prompt选择器] → 根据场景选合适的模板 ↓ [变量填充] → 把用户输入填入模板 ↓ [Prompt拼接] → 身份 思维链 问题 ↓ [调用大模型API] ↓ [后处理] → 提取结构化数据 ↓ [返回给用户]结语给你的建议先忘掉提示词工程这个词把它理解为如何提问能得到好答案本质是沟通技巧不是黑科技从模仿开始先用别人写好的prompt模板慢慢理解为什么这么写最后形成自己的风格重视思维链这是提示词工程中最有价值的部分强制分步思考是提升质量的关键多实验多记录同样的prompt不同模型效果不同建立一个prompt效果对比表记住最终目标提示词工程只是手段最终目标是用AI解决实际问题最后的最后提示词工程的本质是把模糊的需求转化为可执行的指令。这个能力不仅在AI时代有用在任何需要把想法说清楚的场景都有用。

更多文章