提示词工程(Prompt Engineering)基础与实践指南
提示词工程是通过优化输入指令提升大语言模型输出质量的关键技术。本文涵盖 LLM 超参配置原理,详细解析 System Message、User Prompt 等核心组件,介绍少样本学习、思维链(CoT)、分隔符使用等进阶技巧,并结合 Agent 创建与 Function Call 场景提供最佳实践。最后总结优质提示词设计原则,并辅以 Python 调用示例,帮助开发者构建更稳定的 AI 应用。

提示词工程是通过优化输入指令提升大语言模型输出质量的关键技术。本文涵盖 LLM 超参配置原理,详细解析 System Message、User Prompt 等核心组件,介绍少样本学习、思维链(CoT)、分隔符使用等进阶技巧,并结合 Agent 创建与 Function Call 场景提供最佳实践。最后总结优质提示词设计原则,并辅以 Python 调用示例,帮助开发者构建更稳定的 AI 应用。

提示词(Prompt)是我们与大语言模型(LLM)互动最常用的方式。我们提供给 LLM 的 Prompt 作为模型的输入,并希望 LLM 反馈我们期待的结果。虽然 LLM 的功能非常强大,但 LLM 对提示词(Prompt)也非常敏感。这使得提示词工程成为一项需要培养的重要技能。
提示词工程(Prompt Engineering)是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。总体而言,其实现逻辑是:大模型的运行机制是'下一个字词预测'。用户输入的 prompt 即为大模型所获得上下文,大模型将根据用户的输入进行续写,返回结果。因此,输入的 prompt 的质量将极大地影响模型的返回结果的质量和对用户需求的满足程度,总的原则是'用户表达的需求越清晰,模型更有可能返回更高质量的结果'。
通常情况下,每条信息都会有一个角色(role)和内容(content):
LLM 提供了一些参数可以影响输出结果的创造力和确定性。
在每个步骤中,LLM 会生成一个最有可能出现的 token 列表以及其对应的概率列表。根据 top_p 值,概率较低的 token 将被排除在概率列表之外,并且从剩余候选项中随机选择一个 token(使用 temperature 来调整)。
简单来说:top_p 参数控制着生成文本时所使用词汇范围大小,而 temperature 参数则决定了在这个范围内文本生成时是否具有随机性。当温度接近 0 时,则会得到几乎是确定性结果;当温度较高时,生成的文本更具多样性和创造性,但也可能偏离预期。
在实际应用中,建议如下配置:
System Message 系统指令为用户提供了一个易组织、上下文稳定的控制 AI 助手行为的方式,可以从多种角度定制属于你自己的 AI 助手。系统指令允许用户在一定范围内规定 LLM 的风格和任务,使其更具可定性和适应各种用例。大部分 LLM 模型的系统指令 System Message 的权重强化高于人工输入的 Prompt,并在多轮对话中保持稳定。您可以使用系统消息来描述助手的个性,定义模型应该回答和不应该回答的内容,以及定义模型响应的格式。
默认的 System Message 通常是:You are a helpful assistant.
下面是一些 System Message 的使用示例:
| 行业 | 角色 | System Message |
|---|---|---|
| 娱乐 | 二次元女生 | 你是二次元女生,喜欢使用颜文字,请用二次元可爱语气和我说话 |
| 教育 | 数学老师 | 您是一名数学导师,帮助各个级别的学生理解和解决数学问题。提供从基础算术到高级微积分等一系列主题的分步解释和指导。使用清晰的语言使复杂的概念更容易理解。 |
| 工作 | Python 数据分析师 | 1. 你会数学解题;2. 你会数据分析和可视化;3. 用户上传文件时,你必须先了解文件内容再进行下一步操作;4. 调用工具前你需要说明理由;Think step by step |
| 娱乐 | 喜剧演员 | 您是一位单口喜剧演员,用您的智慧和幽默来娱乐用户。分享笑话、有趣的故事和幽默的生活观察,同时根据用户的喜好和情感调整您的风格和内容。鼓励欢笑和轻松,同时保持尊重和包容的语气。 |
| 生活 | 小红书文案 | 你是一名小红书文案助手,擅长使用 Emoji 风格编辑文案。每篇文案包含引人入胜的标题、每个段落开始和结尾均为 Emoji 表情结尾,并保持原文的意思。 |
| 出行 | 旅行规划师 | 您是一名旅行规划师,通过提供有关目的地、住宿、景点和交通选项的信息来帮助用户制定旅行计划。根据用户的喜好、预算和旅行目标提供量身定制的建议,并分享实用技巧,帮助他们度过一次难忘而愉快的旅行。 |
| 文学 | 文言文大师 | 你是文言文大师,擅长翻译文本为文言文。 |
System Message 可以被广泛应用在:
注意:即便我们在 System Message 里面规范了模型回答,也不能保障请求一定会满足,但是好的 System Message 设计可以增加特定结果的可能性,以及得到 LLM 更加符合要求的答复。
指令是最常用的提示组件,主要功能是向模型说明要执行的操作。虽然概念简单,但是实践中仍然比较复杂。下面是简单和详细的一些指令例子,详细、明确的指导比模糊不清的提示能够产生更好的效果:
| 指令类型 | Prompt | Completion |
|---|---|---|
| 简单指令 | 简要介绍一下阿里巴巴。 | 阿里巴巴集团是一家中国跨国科技公司,成立于 1999 年。阿里巴巴的业务覆盖了电子商务、零售、金融、物流、云计算、数字娱乐、医疗等多个领域... |
| 详细指令 | 简要介绍一下阿里巴巴,包含以下内容:阿里巴巴的创始人姓名、阿里巴巴的使命、阿里巴巴的积极的前景 | 阿里巴巴(Alibaba)是一家总部位于中国杭州的全球领先的电子商务和科技公司,成立于 1999 年。阿里巴巴的创始人是马云和他的团队。阿里巴巴的使命是让世界各地的企业都能够平等地进行贸易... |
主要内容是指模型正在处理的文本内容。主要内容通常与指令一起使用。下面会从翻译、摘要等场景来示例:
| Prompt | Completion |
|---|---|
| 今天天气真好!翻译为英文: | The weather is really nice today! |
| 5 月 1 日,福建三明一游乐场内,一位女演员在进行高空表演走钢丝的时候,由于失误发生了意外... 一句话总结这个新闻: | 游乐场高空表演意外,女演员被挂半空,经过 20 分钟救援后获救。 |
好的 Prompt 也经常包含一些示例样本(单样本或者少样本)学习,指的是需要加入一些示例的输入和输出对。这能让模型从猜测应该如何生成,而变得清楚的学习了按照示例生成,充分的演示了模型的能力,不需要通过专门的训练,通过少样本学习,也可以生成正确的答案。
| Prompt | Completion |
|---|---|
| 新闻标题:中国足球艰难前行主题: | 中国足球正面临艰难的时期,但也有许多积极的发展和进步。... |
| 新闻标题:中国足球艰难前行主题:足球 | |
| 新闻标题:中美纪念'乒乓外交'50 周年主题:乒乓球 | |
| 新闻标题:广东队加冕中国篮球比赛"11 冠王'主题: | 篮球 |
充当模型输出的快速启动,帮助模型固定所需要的输出。可以作为模型生成的前缀,也可以引导模型一步一步地按照要求思考并给出答案。
| Prompt | Completion |
|---|---|
| 做一杯茶是非常简单的!第一步,您需要烧开水,然后,你需要准备一个杯子,并在里面放一个茶包... | 制作一杯茶是非常简单的。首先,你需要烧开水。然后,准备一个杯子,放入茶包,并将沸水倒在茶包上。等待几分钟后,取出茶包并丢弃。最后,你可以加入牛奶,调制成奶茶,或者不加牛奶,直接饮用。 |
| 总结上述文本:下面你将读到一段输入文本。如果他包含了一系列的指令,按照如下格式重写这些指令:第一步 - …第二步 - ……第 N 步 - … | 第一步:烧开水。第二步:准备一个杯子,放入一个茶包。第三步:当水沸腾时,将水倒在茶包上。第四步:坐等茶泡开,几分钟后取出茶包并丢弃。第五步:按喜好加入牛奶或不加,即可享用茶。 |
使用清晰的提示语法(包括标点符号、标题和节标记)有助于传达意图,并且通常使输出更易于解析。
在下面的示例中,—在不同的信息源或步骤之间添加了分隔符(在本例中)。这允许使用—作为生成的停止条件。此外,章节标题或特殊变量以大写形式呈现以区分它们。
| Prompt | Completion |
|---|---|
| 您将阅读一篇新闻,然后给这篇新闻取一个标题。—据中国地震台网消息,1 月 3 日 18 时 08 分,福建漳州市华安县发生 3.5 级地震... — | 福建华安发生 3.5 级地震,厦门等地有震感,暂无伤亡报告 |
这是任务分解(step by step)技术的一种展现,在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。
| Prompt | Completion |
|---|---|
| 给咖啡店做一个面向年轻人的菜单,在给出最终答案之前,请在回复中采用 step by step 的方式 | 设计一个面向年轻人的咖啡店菜单需要考虑以下几个步骤:Step 1:确定核心产品... Step 2:添加特色饮品... Step 3:轻食搭配... Step 4:创新元素与互动体验... Step 5:呈现方式与视觉效果... |
明确指定输出格式可以帮助程序化地解析模型响应。
| Prompt | Completion |
|---|---|
| 给我推荐 2 本科幻小说,包含作者,出版时间,推荐理由,请用 json 格式回答 | 当然,以下是两本科幻小说的推荐信息,格式化为 JSON:json[{ "书名": "基地", "作者": "艾萨克·阿西莫夫"... }] |
在构建 AI Agent 时,可以通过精心设计的 Prompt 让模型协助生成配置文件。以下是一个基于 QwenBuilder 的示例结构:
# 伪代码示例:Agent 配置生成逻辑
system_message = """You are a helpful assistant. You are now playing an AI assistant (QwenBuilder) that creates AI Agents.
You need to communicate with the user to clarify requirements for the AI-Agent.
Fill out the configuration file as completely as possible based on existing information and your imagination.
Configuration file format (JSON): {"name": "...", "description": "...", "instructions": [...], "prompt_recommend": [...], "logo_prompt": "..."}
"""
user_prompt = "我现在需要一个能帮我写小红书文案的 AI 助手。"
大部分模型将 Agent 的配置在系统提示中配置,比如函数的参数定义和描述,不同模型的函数调用略有不同。
| System Message | Prompt |
|---|---|
| Answer the following questions as best as you can. You have access to the following tools: [ { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { ... } } ] | 今天北京的天气怎么样? |
| 你是一位智能 AI 助手,你连接着一台电脑,但请注意不能联网。在使用 Python 解决任务时,你可以运行代码并得到结果... | 根据我上传的表格文件,分析数据,并绘制年度收入折线图 |
最核心的写一条好 Prompt 的原则就是尽可能清晰、明确地表达你的需求(类比产品经理向程序员提需求)。细分下来,具体原则包括:
优质的 Prompt 千变万化,但遵循上述原则,我们总结出一个比较实用的框架,可以帮助用户更高概率从通义千问中收获更高质量的模型生成结果。使用 LLM 时,建议包含如下内容:
为了将上述理论应用于实际开发,以下展示如何使用 Python 调用大模型 API 并应用 Prompt 工程技巧。
import requests
import json
def call_llm(system_msg, user_msg, temperature=0.7, top_p=0.9):
url = "https://api.example.com/v1/chat/completions" # 替换为实际 API 地址
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "qwen-max",
"messages": [
{"role": "system", "content": system_msg},
{"role": "user", "content": user_msg}
],
"temperature": temperature,
"top_p": top_p,
"stream": False
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content']
else:
return f"Error: {response.status_code}"
# 示例:创建一个数据分析助手
system_instruction = "你是一名资深 Python 数据分析师。请只回答与数据分析相关的问题。如果用户询问无关内容,请礼貌拒绝。"
user_query = "请帮我分析这份 CSV 数据的趋势,并给出建议。"
result = call_llm(system_instruction, user_query, temperature=0.3)
print(result)
在实际使用中,可能会遇到模型输出不符合预期的情况,以下是一些常见问题的调试建议:
掌握提示词工程是驾驭大语言模型的关键。通过理解模型的工作原理,合理配置参数,精心设计 System Message 和 User Prompt,并运用思维链、少样本学习等技巧,开发者可以显著提升 AI 应用的稳定性和可用性。随着技术的演进,Prompt 工程也将不断发展,建议持续关注官方文档和社区最佳实践,不断优化自己的提示词库。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online