前言
之前学习了一些模型API调用,以及一些文本分类和内容生成的一些基础技巧和案例,接下来实操一下 Prompt Engineering 相关技巧
Prompt Engineering
Prompt Engineering(提示词工程)是设计和优化用于与AI语言模型交互的输入提示的过程,目的是引导模型产生更准确、相关和有用的输出
这个常用AI工具都知道,平时和AI对话的内容就是提示词,根据不同场景使用不同的对话方式和提问技巧,AI模型才会根据不同提示词回答不同的结果
基本原则
- 明确性:清晰表达需求
- 具体性:提供详细信息
- 上下文:给出必要背景
- 示例:提供参考样例
- 约束:设定输出限制
这方面就不多说了,瞎给AI说,让AI去猜的话,Ta的回答也是瞎掰,这些都是基本使用技巧,我们主要还是看代码中是如何使用的
基础实践
零样本提示
零样本提示(Zero-shot Prompting)是指在没有任何示例的情况下,直接给模型一个任务描述,让模型根据描述完成任务
例如直接问豆包,"判断以下文本的情感:今天的天气真糟糕,一切都不顺利!",模型会根据描述直接回答
如果是问豆包"今天北京的天气怎么样?",这个回答是查了相关天气API然后回答的
下面看代码的情况
python
import os
from dotenv import load_dotenv
from openai import OpenAI
# 加载环境变量
load_dotenv()
# 初始化客户端
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "user", "content": "判断以下文本的情感:今天的天气真糟糕,一切都不顺利!"}
]
)
print(f"情感判断结果: {response.choices[0].message.content}")
输出情感结果:负面,并说明了理由

和文本分类,文本生成代码用法一样,只是 content 参数中的内容变了
少样本提示
少样本提示(Few-shot Prompting),就是提供少量示例引导模型的回答
看下面这个例子
python
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "user", "content": "将以下文本分类为积极、消极或中性:\n1. 这部电影太棒了!→ 积极\n2. 今天下雨了。→ 中性\n3. 我讨厌排队。→ 消极\n4. 这家餐厅的食物很美味。→"}
]
)
print(response.choices[0].message.content)
提供了三种类型的分类示例,让模型分析提供的句子属于哪种分类结果

思维链提示
思维链提示(Chain-of-Thought Prompting),就是在提示中包含一系列中间步骤,引导模型逐步思考和解决问题
在一些需要多步骤操作推理的场景中,例如在编码中也常见,例如要实现一个复杂的函数功能,提示中可以包含函数的实现步骤,引导模型逐步编写代码
不过现在的AI模型似乎已经能够把很多需求自己分析理解直接干活了,很多时候直接在 Antigravity,Trae CN,等AI编辑器中直接描述需要的结果的就行(工程师彻底化身需求描述师)
好了,看个日常行程规划的例子,里面涉及到因果推理
python
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "user", "content": "问题:小红要在周日完成以下事情:①洗衣服(30 分钟)、②做饭(40 分钟)、③打扫房间(25 分钟)、④看电影(1 小时)。请帮她规划最省时的顺序,并说明原因。请分步分析哪些事情可以同时做,再计算总耗时"}
]
)
print(response.choices[0].message.content)
模型分析的很好,给出回答的同时,还考虑了实际场景中的时间冲突问题,例如在做饭时要高度专注等,会降低并行程度

角色设定
角色设定(Role-playing Prompting),就是在提示中指定模型的角色和行为
例如,让它扮演专业客服,回答用户问题时要专业、友好;扮演一名专业老师,根据用户问题,用专业的语言回答
日常我们在AI编辑器中用的最多的就是角色设定,前提都是让模型扮演专业的资深工程师,然后根据问题回答对应的编码问题
下面看一个简单的代码例子
python
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "system", "content": "你是一位专业的英语教师,请用简单易懂的方式解释语法。"},
{"role": "user", "content": "请解释现在完成时的用法。"}
]
)
print(response.choices[0].message.content)
注意! 上面的代码明显参数多了内容,``message` 中包含了系统角色和用户角色的内容
虽然问题简单,模型的回答很丰富,还会进行下一步引导提示,完整输出如下
shell
(venv) w@GYW:~/AIProjects/ai-agent-project$ python test_openai.py
下面用简单的方式解释现在完成时(present perfect)。
1) 结构
- 肯定句:主语 + have/has + 过去分词(V3)
- I have finished. / She has eaten. / They have gone.
- 否定句:主语 + have/has not + 过去分词
- I have not seen it. / He hasn't finished yet.
- 疑问句:Have/Has + 主语 + 过去分词?
- Have you visited Paris? / Has she eaten?
小提醒:动词的过去分词要记,规则动词用-ed,不规则动词要记形。
2) 现在完成时的常见用法(要点)
- 用法A:到现在为止的"经历"。不指明具体时间,强调已经做过某事的经验或经历。
- 例:I have been to Japan. / Have you ever tasted sashimi?
- 用法B:从过去一直持续到现在,可能还在继续。常用 since/for 表示起点或持续时间。
- 例:She has lived here for five years. / He has worked at the company since 2010.
- 用法C:最近发生,对现在有影响/结果。
- 例:I have just finished my homework. / They have already left.
- 常用词:just(刚刚)、recently/recent(最近)、already(已经)
- 用法D:在还没结束的时间段内发生过多次(或仍在发生)。
- 例:This week I have seen three movies. / I have visited three museums today.(时间段还没结束)
- 用法E:与时间信号词搭配时的用法
- 信号词:ever, never, just, already, recently, lately, so far, up to now, for, since, this week, today
- 注意:带具体过去时间的词(yesterday、last year 等)通常用一般过去时,而不是现在完成时。
3) 与一般过去时的区别(要点对比)
- 现在完成时关注"直到现在的影响、经验或结果",不特别说具体哪一天发生了什么。
- 一般过去时讲的是"在过去某一具体时间发生并结束的事"。
- 例:I lived in Paris for two years.(过去的经历,但已经结束) vs I have lived in Paris for two years.(到现在还可能还住在巴黎,强调持续到现在)
4) 常见错误及要点
- 错写过去分词:I have went(错,正确:gone)/ I have eaten(对)
- 不该和具体时间一起用现在完成时:有具体时间点的事用一般过去时,如 Yesterday I came home早;不过如果强调"从那时到现在的影响",也可用现在完成时但较少见。
- "have/has + been" 的用法:与地点、状态相关时常用 be 的过去分词(been)来表示去过某地或经历过某事。
- I have been to China.(去过,回来) vs I have gone to China.(去中国了,可能还没回)
5) 快速练习(请用现在完成时写出英文句子)
- 你到过日本吗? → Have you ever been to Japan?
- 他从两年前一直住在这里。 → He has lived here for two years.(如果现在不再住这里,用过去时:lived here for two years and moved away)
- 我刚吃完晚饭。 → I have just eaten dinner.
- 我们这一周看过三部电影。 → We have seen three movies this week.
如果你愿意,我可以给你一组练习题和答案,或者根据你的水平给出更多例句练习。需要的话告诉我你的母语、希望重点练习的场景(如旅行、工作、考试等)。
偏专业化的问答时,非常适合这种角色设定模式
约束条件
这个可太常见了,例如让代码生成一段 草帽lufei 的自我介绍,让它限制字数,例如100字以内
python
response = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "user", "content": "请给'草帽lufei'这个公众号博主写一段100字的介绍,他近期专注研究AI Agent相关应用和开发内容。"},
]
)
print(response.choices[0].message.content)

日常生活中,提供资料让AI写总结,输出格式为Word,或者代码输出为JSON,或者使用其他语言实现等都是约束条件
小结
提示词工程师充分发挥AI大模型能力的关键,通过精心设计的提示词可以让模型更好的理解我们的需求,并生成符合需求的内容
像一些图片,视频的生成就需要更专业的提示词去调教,才能出一些更符合需求的作品,因为强专业性的门槛,也出现了专门卖提示词的一些平台
总之,提示词工程既然是一个工程,就是一个长期学习测试总结的一个过程,只有不断尝试,才能很好的掌握相关的技巧

欢迎留言交流,如果觉得有帮助,可以
点个赞支持一下公众号:草帽lufei