全网最细提示词工程教程(小白友好版)

大家好,我是一名大二计算机专业的学生,目前正在深耕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")
关键解释(小白必看)
  1. temperature=0.1:技术类需求(写代码、查bug),一定要设为低数值(0.1-0.3),保证AI输出的代码精准、规范,不会天马行空;如果是创意类需求(比如写文案),可以设为0.7-0.9。

  2. 提示词里明确了“角色(Python基础老师)、任务(文件大小计算)、边界情况(文件夹不存在、无权限)、输出格式(只输出代码)”,所以AI的输出直接可用,不用二次修改。

  3. 国内同学替换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,增加支付异常兜底和退款机制"
  ]
}
关键解释(小白必看)
  1. temperature=0.0:结构化输出(JSON、表格)必须设为0,避免AI乱加多余内容(比如换行、解释),导致JSON解析失败(这是我之前踩过的大坑,一定要注意)。

  2. 提示词里直接给出了JSON模板,明确了每个字段的要求,AI不会偏离格式,解析起来更顺畅。

  3. 加入了异常捕获(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. 少样本学习的核心:不用写复杂的规则描述,给1-5个示例,覆盖核心场景,AI就能模仿示例的逻辑进行分类,比纯文字描述更高效、更精准。

  2. 示例数量不用多,1-5个足够,新手不用准备太多示例,重点是示例要贴合你的需求。

  3. 提示词里明确“只输出分类结果”,避免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个核心点,记牢就能少走弯路:

  1. 提示词工程的核心不是“背模板”,而是“把需求说清楚”,结构化、明确化是关键;

  2. 新手入门先掌握“角色+任务+格式+约束”四要素,再进阶学习少样本、思维链等技巧;

  3. 所有技巧最终要落地到代码里,控制temperature、强制输出格式,是保证AI输出可用的关键。

我也是从踩坑过来的,知道小白学习AI技术的迷茫,希望这篇文章能帮助到更多和我一样的计算机专业学生、AI新手,少走弯路,快速掌握提示词工程,真正用好AI这个工具。

如果大家有具体的场景想做提示词优化(比如写作业、做小项目),可以在评论区留需求,我会尽力帮大家解答,一起进步!

✨ 最后,麻烦大家点赞+收藏,后续我会持续更新AI新手实战教程,感谢支持!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐