全网最细提示词工程教程(小白友好版)|附可直接运行代码,大二计算机生踩坑总结
全网最细提示词工程教程(小白友好版)
大家好,我是一名大二计算机专业的学生,目前正在深耕AI相关技术,这段时间踩了无数坑,终于把提示词工程(Prompt Engineering)摸透了。
作为小白,我一开始手里握着GPT-4、文心一言这些顶级大模型,却只会干巴巴问“帮我写个Python代码”“帮我解释个概念”,结果AI输出的东西要么驴唇不对马嘴,要么没法直接用,浪费了大量时间;后来又跟风背各种“高级提示词模板”,却不知道底层逻辑,换个场景就废了。
经过半个多月的实战、踩坑、复盘,我终于搞明白:提示词工程根本不是玄学,也不用死记硬背,是有固定方法论、能落地、能复制的技术。
今天这篇文章,我以一个计算机专业小白的视角,把自己踩过的坑、总结的实战经验全掏出来,从0到1讲透提示词工程,附可直接复制运行的代码案例,不管你是大二、大三的同学,还是刚入门AI的新手,跟着学,就能把AI的利用率从10%提到90%,少走我走过的弯路。
(全文纯实战、无废话、无复杂概念,所有代码均亲测可运行,小白放心冲!)
一、先搞懂:提示词工程到底是个啥?(小白必看)
别被“工程”两个字唬住,说白了就是:用精准的语言,告诉AI“你要做什么、怎么做、输出什么格式”,让AI的输出100%符合你的预期,而不是让AI猜你的想法。
举个我刚开始踩的坑:
❌ 我当初写的提示词:“帮我写个Python排序代码”
结果AI输出的代码没有注释、没有处理边界情况,甚至用的是我没学过的语法,根本没法直接用,还要自己改半天。
✅ 后来我改的提示词:“用Python写一个快速排序函数,要求:1. 包含详细中文注释(适合新手理解)2. 处理空列表、重复值这两种边界情况 3. 输出可直接运行的测试用例 4. 只返回代码,不输出多余解释”
结果AI输出的代码直接能用,注释清晰,测试用例也写好了,省了我大量时间。
这就是提示词工程的核心:结构化、明确化、可验证,把你想让AI做的事,拆解得越细,AI越能get到你的需求。
二、提示词工程的核心原则(记死这5条,避开80%的坑)
这5条原则是我踩了无数坑总结出来的,新手不用记复杂的模板,先把这5条吃透,就能写出高质量提示词。
1. 角色设定:先给AI“贴标签”
让AI知道自己的身份,输出会更精准,尤其是技术类需求。比如:
-
“你是一位擅长Python基础教学的老师,讲解通俗易懂,代码注释详细,适合计算机专业新手”
-
“你是一位严谨的测试工程师,擅长找出Python代码中的边界漏洞,给出修改建议”
踩坑提醒:不要不给AI设角色,默认角色输出的内容太笼统,不适合新手直接用。
2. 任务描述:越具体越好,别模糊
拒绝“帮我写个脚本”“帮我解释个概念”这种模糊的描述,要把需求拆解得越细越好。比如:
❌ 模糊提示词:“帮我写个读取Excel的脚本”
✅ 具体提示词:“帮我写一个读取Excel文件(xlsx格式)的Python脚本,要求:1. 只读取‘姓名’‘手机号’两列 2. 过滤掉手机号为空、手机号长度不是11位的数据 3. 将过滤后的数据输出到新的Excel文件,文件名设为‘筛选后数据.xlsx’ 4. 只用Python内置模块,不使用第三方库(如pandas)”
3. 输出格式:强制AI按你的要求来
指定输出格式,能直接省去后续整理的时间,尤其是代码、数据类需求。比如:
-
代码:要求“函数+详细注释+可运行测试用例”
-
文本:要求“分点说明,每点不超过50字”“JSON格式”“Markdown表格”
-
数据:要求“键值对形式,字段名:id、name、price,price保留2位小数”
4. 约束条件:提前堵死AI的“偷懒空间”
新手容易忽略这一点,导致AI输出的内容不符合预期,比如:
-
“代码必须兼容Python3.8及以上版本”
-
“禁止使用第三方库,仅用Python内置模块(新手还没学第三方库)”
-
“回答字数不超过200字,只讲核心逻辑,不用多余铺垫”
5. 示例引导:少样本学习(Few-shot)
如果需求比较复杂,比如分类、格式转换,光靠文字描述,AI容易理解错,这时候给1-2个示例,AI能瞬间get到你的意图。(后面有具体代码案例,一看就会)
三、实战:从基础到进阶的代码案例(可直接复制运行)
说明:以下案例基于OpenAI API(国内的同学可以替换为文心一言、通义千问API,核心逻辑完全一致,替换代码里的调用方式即可)。
前置准备:环境搭建(小白也能搞定,步骤详细,跟着来)
1. 安装依赖
打开cmd(Windows)或终端(Mac/Linux),输入以下命令,一键安装依赖:
pip install openai python-dotenv # openai库(调用大模型)+ 环境变量管理(存API Key)
2. 配置API Key
新建一个文本文件,重命名为“.env”(注意前面有个点),打开后写入你的API Key,保存即可:
OPENAI_API_KEY=你的api_key_here # 替换成你自己的API Key
补充:OpenAI的API Key需要注册账号获取(需科学上网);国内的同学可以用文心一言、通义千问,直接在官网获取API Key,替换代码里的调用逻辑即可(后面会简单说明替换方法)。
案例1:基础版——让AI生成规范的Python代码(小白入门必练)
需求
生成一个“计算文件夹下所有文件大小,并按大小排序”的Python脚本,要求:规范、有详细注释(适合新手理解)、有测试用例、处理边界情况(文件夹不存在、无访问权限)。
完整代码(可直接复制运行)
import os
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量(读取.env文件里的API Key)
load_dotenv()
# 初始化OpenAI客户端
client = OpenAI()
# 核心:编写高质量提示词(按前面讲的5条原则来写)
def get_code_prompt():
prompt = """
你是一位擅长Python基础教学的老师,讲解通俗易懂,代码注释详细,适合计算机专业新手。
请完成以下任务:
1. 编写一个Python函数,功能是:遍历指定文件夹(包含子文件夹),计算每个文件的大小(单位:MB)
2. 将结果按文件大小从大到小排序,返回列表格式,每个元素包含:文件路径、文件大小(MB,保留2位小数)
3. 处理边界情况:文件夹不存在、无访问权限、空文件(分别给出提示信息)
4. 具体要求:
- 函数名:calculate_file_sizes
- 参数:folder_path(字符串,传入文件夹路径)
- 包含详细的中文注释(每个步骤都要注释,方便新手理解)
- 输出可直接运行的测试代码,测试当前目录下的文件
5. 输出格式要求:
- 先输出函数代码
- 再输出测试代码
- 只输出代码,不输出任何多余解释(比如不要说“以下是代码”之类的话)
"""
return prompt
# 调用OpenAI API,生成代码
def generate_code(prompt):
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo", # 新手用这个,性价比高,免费额度足够用
messages=[
{"role": "user", "content": prompt} # 传入提示词
],
temperature=0.1, # 0-1之间,越小越精准,越大越有创造性,技术类需求设0.1-0.3即可
max_tokens=1000 # 生成内容的最大长度,1000足够用
)
# 返回AI生成的内容
return response.choices[0].message.content
except Exception as e:
# 捕获异常,方便新手排查问题
return f"代码生成出错:{str(e)}"
# 主函数,执行代码生成
if __name__ == "__main__":
# 获取提示词
prompt = get_code_prompt()
# 生成代码
code = generate_code(prompt)
# 打印生成的代码
print("生成的可直接运行代码:")
print("-" * 50)
print(code)
运行结果示例(亲测可用)
# 生成的函数代码
import os
def calculate_file_sizes(folder_path):
"""
遍历指定文件夹(包含子文件夹),计算每个文件的大小并按大小降序排序
适合计算机专业新手,注释详细,处理常见边界情况
:param folder_path: 字符串,传入需要遍历的文件夹路径
:return: 列表,按文件大小降序排列,每个元素为[文件路径, 文件大小(MB)]
"""
# 用于存储文件路径和对应大小的列表
file_sizes = []
# 边界情况1:检查文件夹是否存在
if not os.path.exists(folder_path):
print(f"错误:文件夹 {folder_path} 不存在,请检查路径是否正确!")
return file_sizes
# 遍历文件夹(包含子文件夹)
for root, dirs, files in os.walk(folder_path):
for file in files:
# 拼接完整的文件路径
file_path = os.path.join(root, file)
try:
# 获取文件大小(单位:字节),转换为MB(1MB = 1024*1024字节),保留2位小数
file_size = os.path.getsize(file_path) / (1024 * 1024)
file_sizes.append([file_path, round(file_size, 2)])
except PermissionError:
# 边界情况2:无访问权限,给出提示,跳过该文件
print(f"警告:无访问权限,跳过文件 {file_path}")
except Exception as e:
# 其他异常情况,给出提示
print(f"警告:处理文件 {file_path} 时出错:{str(e)}")
# 按文件大小降序排序(lambda x: x[1] 表示按列表第二个元素排序,reverse=True表示降序)
file_sizes.sort(key=lambda x: x[1], reverse=True)
return file_sizes
# 测试代码(可直接运行,测试当前目录下的文件)
if __name__ == "__main__":
# 测试当前目录(./ 表示当前目录,新手不用改)
test_folder = "./"
# 调用函数,获取结果
result = calculate_file_sizes(test_folder)
# 打印结果
print("文件大小排序结果(从大到小):")
for file_path, size in result:
print(f"{file_path} - {size} MB")
关键解释(小白必看)
-
temperature=0.1:技术类需求(写代码、查bug),一定要设为低数值(0.1-0.3),保证AI输出的代码精准、规范,不会天马行空;如果是创意类需求(比如写文案),可以设为0.7-0.9。
-
提示词里明确了“角色(Python基础老师)、任务(文件大小计算)、边界情况(文件夹不存在、无权限)、输出格式(只输出代码)”,所以AI的输出直接可用,不用二次修改。
-
国内同学替换API:如果用文心一言,只需把“OpenAI”相关代码替换为文心一言的调用逻辑,提示词不变,比如:
# 文心一言替换示例(需先安装依赖:pip install baidu-aip)
from aip import AipNlp
client = AipNlp(appId, apiKey, secretKey) # 替换为你的文心一言appId、apiKey、secretKey
# 后续调用逻辑稍作修改,提示词完全不变
案例2:进阶版——结构化输出(JSON格式),方便程序处理
很多时候,我们需要AI输出的数据能直接被程序解析(比如做项目、写作业),这时候强制AI输出JSON格式就很重要,这也是我踩过的一个坑(之前没指定格式,AI输出的文本没法直接解析)。
需求
让AI分析一段用户评论,提取“情感倾向、核心诉求、建议解决方案”,并以JSON格式输出,方便后续Python程序解析处理。
完整代码(可直接复制运行)
import os
import json # 用于解析JSON格式
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量,初始化客户端
load_dotenv()
client = OpenAI()
# 待分析的用户评论(可以替换成任意评论,比如APP反馈、商品评价)
user_comment = """
这个APP太卡了!打开要等30秒,而且支付功能经常闪退,我昨天付款的时候卡了5分钟,最后还扣款失败了。
希望你们能优化一下性能,修复支付的bug,不然真的没法用了。
"""
# 进阶提示词:强制JSON输出,避免格式错乱
def get_analysis_prompt(comment):
prompt = f"""
你是一位专业的用户体验分析师,擅长分析用户评论并提取核心信息,输出精准、简洁。
请分析以下用户评论:
{comment}
具体要求:
1. 情感倾向:只能是“负面”“正面”“中性”中的一个,不能有其他表述
2. 核心诉求:提取用户最核心的2-3个问题,每个诉求不超过20字,用列表形式呈现
3. 建议解决方案:针对每个核心诉求,给出具体、可落地的解决方案,用列表形式呈现
4. 输出格式:严格按照以下JSON格式输出,不要添加任何多余内容(包括解释、空格、换行),否则会导致解析失败
{{
"sentiment": "情感倾向",
"core_demands": ["诉求1", "诉求2"],
"solutions": ["方案1", "方案2"]
}}
"""
return prompt
# 调用API并解析JSON(关键:处理格式错误,避免程序崩溃)
def analyze_comment(prompt):
try:
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.0, # 结构化输出(JSON/表格)必须设为0,保证格式绝对正确
)
# 提取AI输出的内容,并解析为JSON格式
result = response.choices[0].message.content
return json.loads(result) # 解析JSON,返回字典
except json.JSONDecodeError:
# 踩坑提醒:如果AI输出格式错误,会触发这个异常,返回错误提示
return {"error": "AI输出格式不符合要求,请检查提示词中的格式约束"}
except Exception as e:
return {"error": f"分析失败:{str(e)}"}
# 主函数,执行评论分析
if __name__ == "__main__":
prompt = get_analysis_prompt(user_comment)
analysis_result = analyze_comment(prompt)
# 打印分析结果,格式化输出,更易读
print("用户评论分析结果(JSON格式):")
print(json.dumps(analysis_result, ensure_ascii=False, indent=2))
运行结果(亲测可用)
{
"sentiment": "负面",
"core_demands": [
"APP打开卡顿,启动速度慢",
"支付功能闪退,扣款失败"
],
"solutions": [
"优化APP启动流程,压缩资源包,提升启动速度",
"修复支付模块BUG,增加支付异常兜底和退款机制"
]
}
关键解释(小白必看)
-
temperature=0.0:结构化输出(JSON、表格)必须设为0,避免AI乱加多余内容(比如换行、解释),导致JSON解析失败(这是我之前踩过的大坑,一定要注意)。
-
提示词里直接给出了JSON模板,明确了每个字段的要求,AI不会偏离格式,解析起来更顺畅。
-
加入了异常捕获(JSONDecodeError),防止AI输出格式错误导致程序崩溃,新手也能轻松排查问题。
案例3:高手版——少样本学习(Few-shot),复杂需求必用
如果需求比较复杂,比如“给用户问题分类”,光靠文字描述规则,AI容易理解错,这时候给1-2个示例,AI能瞬间get到你的意图,这也是提示词工程的“杀手锏”。
需求
让AI识别用户问题的类型,分为“账号问题、功能问题、支付问题、其他问题”四类,直接输出分类结果,方便后续做智能客服相关作业/项目。
完整代码(可直接复制运行)
import os
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量,初始化客户端
load_dotenv()
client = OpenAI()
# 少样本提示词:给示例让AI学习,比纯文字描述规则更有效
def get_few_shot_prompt(user_question):
prompt = f"""
你是一位智能客服分类师,需要将用户问题分为以下4个类别,严格按照类别名称输出,不能自创类别:
- 账号问题:登录、注册、密码找回、账号封禁、账号绑定相关问题
- 功能问题:APP/软件功能使用、功能故障、功能建议相关问题
- 支付问题:充值、扣款、退款、支付失败、提现相关问题
- 其他问题:不属于以上三类的所有问题
示例(一定要参考示例的分类逻辑):
1. 用户问题:我的密码忘了,怎么找回? → 分类:账号问题
2. 用户问题:APP的搜索功能用不了,一直加载失败 → 分类:功能问题
3. 用户问题:昨天充值的钱没到账,怎么回事? → 分类:支付问题
4. 用户问题:你们的客服电话是多少? → 分类:其他问题
请分析以下用户问题,只输出分类结果(比如“账号问题”),不要输出任何多余内容,否则会影响程序解析:
用户问题:{user_question}
"""
return prompt
# 测试不同的用户问题,验证效果
def test_few_shot():
# 准备3个测试问题(覆盖不同类别)
test_questions = [
"我的账号被封了,能解封吗?",
"提现的时候提示系统错误,怎么办?",
"你们的软件支持Windows11系统吗?"
]
# 遍历测试问题,逐个分类
for question in test_questions:
prompt = get_few_shot_prompt(question)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.0 # 分类需求,设为0保证精准
)
# 打印结果
print(f"用户问题:{question}")
print(f"分类结果:{response.choices[0].message.content}")
print("-" * 30) # 分隔线,更易读
# 主函数,执行测试
if __name__ == "__main__":
test_few_shot()
运行结果(亲测可用)
用户问题:我的账号被封了,能解封吗?
分类结果:账号问题
------------------------------
用户问题:提现的时候提示系统错误,怎么办?
分类结果:支付问题
------------------------------
用户问题:你们的软件支持Windows11系统吗?
分类结果:其他问题
关键解释(小白必看)
-
少样本学习的核心:不用写复杂的规则描述,给1-5个示例,覆盖核心场景,AI就能模仿示例的逻辑进行分类,比纯文字描述更高效、更精准。
-
示例数量不用多,1-5个足够,新手不用准备太多示例,重点是示例要贴合你的需求。
-
提示词里明确“只输出分类结果”,避免AI输出多余内容,方便后续程序处理(比如做智能客服的自动分流)。
四、小白避坑指南:我踩过的5个致命错误(必看)
这5个错误是我刚开始学习提示词工程时,反复踩的坑,浪费了很多时间,大家一定要避开!
1. 提示词太简短,需求模糊
❌ 错误做法:只说“帮我写代码”“帮我分析评论”,不说需求、约束、格式。
✅ 正确做法:按“角色+任务+格式+约束”四要素写提示词,越具体越好。
2. 不设角色,AI输出质量低
❌ 错误做法:不给AI贴标签,默认AI是“通用助手”,输出的内容太笼统,不适合技术类需求。
✅ 正确做法:给AI设明确的角色(比如“Python基础老师”“测试工程师”),输出会更精准。
3. 结构化输出不控温
❌ 错误做法:让AI输出JSON/表格时,temperature设为0.5以上,导致AI乱加内容,格式错乱,解析失败。
✅ 正确做法:结构化输出(JSON、表格),temperature必须设为0,保证格式绝对正确。
4. 忽略边界条件
❌ 错误做法:让AI写代码时,不提“文件夹不存在”“无访问权限”“空数据”等边界情况,生成的代码全是坑,运行就报错。
✅ 正确做法:在提示词里明确写出需要处理的边界条件,AI生成的代码才能直接用。
5. 追求“炫技”,死记硬背模板
❌ 错误做法:一开始就背各种复杂的提示词模板,却不知道底层逻辑,换个场景就不会用。
✅ 正确做法:先吃透“角色+任务+格式+约束”四要素,再结合自己的需求调整,模板只是参考,不用死记硬背。
五、小白专属:提示词模板(直接套用,不用动脑)
我总结了一个万能模板,不管是写代码、分析文本、分类,还是做其他需求,按这个模板写,就能避开80%的坑,直接套用即可:
你是一位【角色】,擅长【技能】,输出内容【风格,比如“通俗易懂、注释详细”“精准简洁”】。
请完成以下任务:【详细描述需求,越具体越好,拆分成1、2、3点】
约束条件:【列出所有限制,比如“Python3.8兼容”“不使用第三方库”“输出不超过200字”】
输出格式:【明确输出格式,比如“函数+注释+测试用例”“JSON格式”“只输出分类结果”】
(可选,复杂需求用)示例:【1-2个示例,帮助AI理解】
六、总结(小白必看)
作为一名大二计算机专业的学生,我想说:提示词工程真的不难,不用怕自己是小白,也不用怕踩坑,只要掌握核心逻辑,多实战、多调整,就能快速上手。
最后再强调3个核心点,记牢就能少走弯路:
-
提示词工程的核心不是“背模板”,而是“把需求说清楚”,结构化、明确化是关键;
-
新手入门先掌握“角色+任务+格式+约束”四要素,再进阶学习少样本、思维链等技巧;
-
所有技巧最终要落地到代码里,控制temperature、强制输出格式,是保证AI输出可用的关键。
我也是从踩坑过来的,知道小白学习AI技术的迷茫,希望这篇文章能帮助到更多和我一样的计算机专业学生、AI新手,少走弯路,快速掌握提示词工程,真正用好AI这个工具。
如果大家有具体的场景想做提示词优化(比如写作业、做小项目),可以在评论区留需求,我会尽力帮大家解答,一起进步!
✨ 最后,麻烦大家点赞+收藏,后续我会持续更新AI新手实战教程,感谢支持!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)