跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

提示词工程(Prompt Engineering)基础与实践指南

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

二进制发布于 2025/2/7更新于 2026/10/2398 浏览
提示词工程(Prompt Engineering)基础与实践指南

提示词工程(Prompt Engineering)基础与实践指南

引言

提示词(Prompt)是我们与大语言模型(LLM)互动最常用的方式。我们提供给 LLM 的 Prompt 作为模型的输入,并希望 LLM 反馈我们期待的结果。虽然 LLM 的功能非常强大,但 LLM 对提示词(Prompt)也非常敏感。这使得提示词工程成为一项需要培养的重要技能。

提示词工程(Prompt Engineering)是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。总体而言,其实现逻辑是:大模型的运行机制是'下一个字词预测'。用户输入的 prompt 即为大模型所获得上下文,大模型将根据用户的输入进行续写,返回结果。因此,输入的 prompt 的质量将极大地影响模型的返回结果的质量和对用户需求的满足程度,总的原则是'用户表达的需求越清晰,模型更有可能返回更高质量的结果'。

通常情况下,每条信息都会有一个角色(role)和内容(content):

  • 系统角色(system)用来向语言模型传达开发者定义好的核心指令。
  • 用户角色(user)则代表着用户自己输入或者产生出来的信息。
  • 助手角色(assistant)则是由语言模型自动生成并回复出来。

LLM 的超参配置

LLM 提供了一些参数可以影响输出结果的创造力和确定性。

在每个步骤中,LLM 会生成一个最有可能出现的 token 列表以及其对应的概率列表。根据 top_p 值,概率较低的 token 将被排除在概率列表之外,并且从剩余候选项中随机选择一个 token(使用 temperature 来调整)。

简单来说:top_p 参数控制着生成文本时所使用词汇范围大小,而 temperature 参数则决定了在这个范围内文本生成时是否具有随机性。当温度接近 0 时,则会得到几乎是确定性结果;当温度较高时,生成的文本更具多样性和创造性,但也可能偏离预期。

在实际应用中,建议如下配置:

  • Temperature: 对于事实性问答、代码生成等任务,建议设置为 0.0 到 0.3,以保证准确性;对于创意写作、头脑风暴,建议设置为 0.7 到 1.0。
  • Top_p: 通常设置为 0.8 到 0.9,配合 Temperature 使用,可以过滤掉低概率的噪声词,同时保留多样性。

提示词核心组件详解

1. System Message 系统指令

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 可以被广泛应用在:

  • 角色扮演:在系统指令中告诉模型你需要它扮演的角色,即可沉浸式和该角色对话交流。
  • 语言风格:简单调整 LLM 的语言风格。
  • 任务设定:比如旅行规划,小红书文案助手这样的专项任务处理。
  • 边界控制:System Message 也可以被用于规定 LLM 的答复范围,并设定具体的行为。例如:'你是一名深度学习的老师,可以回答深度学习领域相关的问题... 仅回答深度学习领域的知识'。

注意:即便我们在 System Message 里面规范了模型回答,也不能保障请求一定会满足,但是好的 System Message 设计可以增加特定结果的可能性,以及得到 LLM 更加符合要求的答复。

2. 用户提示词(User Prompt)

指令(Instruction)

指令是最常用的提示组件,主要功能是向模型说明要执行的操作。虽然概念简单,但是实践中仍然比较复杂。下面是简单和详细的一些指令例子,详细、明确的指导比模糊不清的提示能够产生更好的效果:

指令类型PromptCompletion
简单指令简要介绍一下阿里巴巴。阿里巴巴集团是一家中国跨国科技公司,成立于 1999 年。阿里巴巴的业务覆盖了电子商务、零售、金融、物流、云计算、数字娱乐、医疗等多个领域...
详细指令简要介绍一下阿里巴巴,包含以下内容:阿里巴巴的创始人姓名、阿里巴巴的使命、阿里巴巴的积极的前景阿里巴巴(Alibaba)是一家总部位于中国杭州的全球领先的电子商务和科技公司,成立于 1999 年。阿里巴巴的创始人是马云和他的团队。阿里巴巴的使命是让世界各地的企业都能够平等地进行贸易...
主要内容(Context)

主要内容是指模型正在处理的文本内容。主要内容通常与指令一起使用。下面会从翻译、摘要等场景来示例:

PromptCompletion
今天天气真好!翻译为英文:The weather is really nice today!
5 月 1 日,福建三明一游乐场内,一位女演员在进行高空表演走钢丝的时候,由于失误发生了意外... 一句话总结这个新闻:游乐场高空表演意外,女演员被挂半空,经过 20 分钟救援后获救。
少样本学习(Few-Shot Learning)

好的 Prompt 也经常包含一些示例样本(单样本或者少样本)学习,指的是需要加入一些示例的输入和输出对。这能让模型从猜测应该如何生成,而变得清楚的学习了按照示例生成,充分的演示了模型的能力,不需要通过专门的训练,通过少样本学习,也可以生成正确的答案。

PromptCompletion
新闻标题:中国足球艰难前行主题:中国足球正面临艰难的时期,但也有许多积极的发展和进步。...
新闻标题:中国足球艰难前行主题:足球
新闻标题:中美纪念'乒乓外交'50 周年主题:乒乓球
新闻标题:广东队加冕中国篮球比赛"11 冠王'主题:篮球
更加明确的提示(Explicit Guidance)

充当模型输出的快速启动,帮助模型固定所需要的输出。可以作为模型生成的前缀,也可以引导模型一步一步地按照要求思考并给出答案。

PromptCompletion
做一杯茶是非常简单的!第一步,您需要烧开水,然后,你需要准备一个杯子,并在里面放一个茶包...制作一杯茶是非常简单的。首先,你需要烧开水。然后,准备一个杯子,放入茶包,并将沸水倒在茶包上。等待几分钟后,取出茶包并丢弃。最后,你可以加入牛奶,调制成奶茶,或者不加牛奶,直接饮用。
总结上述文本:下面你将读到一段输入文本。如果他包含了一系列的指令,按照如下格式重写这些指令:第一步 - …第二步 - ……第 N 步 - …第一步:烧开水。第二步:准备一个杯子,放入一个茶包。第三步:当水沸腾时,将水倒在茶包上。第四步:坐等茶泡开,几分钟后取出茶包并丢弃。第五步:按喜好加入牛奶或不加,即可享用茶。
善用分隔符(Delimiters)

使用清晰的提示语法(包括标点符号、标题和节标记)有助于传达意图,并且通常使输出更易于解析。

在下面的示例中,—在不同的信息源或步骤之间添加了分隔符(在本例中)。这允许使用—作为生成的停止条件。此外,章节标题或特殊变量以大写形式呈现以区分它们。

PromptCompletion
您将阅读一篇新闻,然后给这篇新闻取一个标题。—据中国地震台网消息,1 月 3 日 18 时 08 分,福建漳州市华安县发生 3.5 级地震... —福建华安发生 3.5 级地震,厦门等地有震感,暂无伤亡报告
思维链提示(Chain of Thought)

这是任务分解(step by step)技术的一种展现,在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。

PromptCompletion
给咖啡店做一个面向年轻人的菜单,在给出最终答案之前,请在回复中采用 step by step 的方式设计一个面向年轻人的咖啡店菜单需要考虑以下几个步骤:Step 1:确定核心产品... Step 2:添加特色饮品... Step 3:轻食搭配... Step 4:创新元素与互动体验... Step 5:呈现方式与视觉效果...
对输出格式的明确要求

明确指定输出格式可以帮助程序化地解析模型响应。

PromptCompletion
给我推荐 2 本科幻小说,包含作者,出版时间,推荐理由,请用 json 格式回答当然,以下是两本科幻小说的推荐信息,格式化为 JSON:json[{ "书名": "基地", "作者": "艾萨克·阿西莫夫"... }]

最佳实践案例

1. Agent 场景:使用 Prompt 实现 Agent Create

在构建 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 助手。"

2. Agent 场景:使用 System Message + Prompt 实现 Function Call

大部分模型将 Agent 的配置在系统提示中配置,比如函数的参数定义和描述,不同模型的函数调用略有不同。

System MessagePrompt
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 中的 In-Context Learning)。
  • 善用符号和语法:使用清晰的标点符号,标题,标记有助于转达意图,并使输出更加容易被解析。
  • 让模型一步一步地思考:在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。
  • 激励模型反思和给出思路:可以在 Prompt 中用一些措辞激励模型给出理由,这样有助于我们更好地分析模型生成结果,同时,思维过程的生成,也有助于其生成更高质量的结果。
  • 给容错空间:如模型无法完成指定的任务,给模型提供一个备用路径,比如针对文本提问,可以加入如果答案不存在,则回复'无答案'。
  • 让模型给出信息来源:在模型结合搜索或者外部知识库时,要求模型提供他的答案的信息来源,可以帮助 LLM 的答案减少捏造,并获取到最新的信息。

优质的提示词典型框架

优质的 Prompt 千变万化,但遵循上述原则,我们总结出一个比较实用的框架,可以帮助用户更高概率从通义千问中收获更高质量的模型生成结果。使用 LLM 时,建议包含如下内容:

  1. System Message:你希望大模型扮演什么角色,来解决你当前的问题。大模型具有较强的角色扮演能力,相比直接回答往往表现更好。System Message 中也可以规定大模型的回答范围。
  2. Prompt
    • 指令:明确说明你希望大模型做什么事情,不要含糊其辞。
    • 例子:如果可能,提供尽可能丰富的例子信息。
    • 原因:详细解释你希望模型做这件事情的原因、动机、希望的结果等,这样大模型能更好地理解你的想法,执行需求。
    • Step by Step:对于复杂任务,让大模型一步一步地思考,可以给出更加合理的答案。
    • 对于输出格式的形容:对于部分场景,明确大模型输出格式的要求,可以更好地获取到更加结构化,适合系统调用的答案。

Python 调用示例

为了将上述理论应用于实际开发,以下展示如何使用 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)

常见问题与调试

在实际使用中,可能会遇到模型输出不符合预期的情况,以下是一些常见问题的调试建议:

  1. 模型回答太啰嗦:在 Prompt 末尾增加约束,如'请用简洁的语言回答,不超过 100 字'。
  2. 模型不遵守格式:增加 Few-Shot 示例,展示期望的输出格式,并使用分隔符明确界定输入输出区域。
  3. 幻觉严重:在 System Message 中加入'仅依据提供的资料回答,不知道就说不知道',并要求模型引用来源。
  4. 多轮对话记忆丢失:确保在每次请求时将完整的对话历史(History)传递给模型,而不仅仅是最后一句。

结语

掌握提示词工程是驾驭大语言模型的关键。通过理解模型的工作原理,合理配置参数,精心设计 System Message 和 User Prompt,并运用思维链、少样本学习等技巧,开发者可以显著提升 AI 应用的稳定性和可用性。随着技术的演进,Prompt 工程也将不断发展,建议持续关注官方文档和社区最佳实践,不断优化自己的提示词库。

目录

  1. 提示词工程(Prompt Engineering)基础与实践指南
  2. 引言
  3. LLM 的超参配置
  4. 提示词核心组件详解
  5. 1. System Message 系统指令
  6. 2. 用户提示词(User Prompt)
  7. 指令(Instruction)
  8. 主要内容(Context)
  9. 少样本学习(Few-Shot Learning)
  10. 更加明确的提示(Explicit Guidance)
  11. 善用分隔符(Delimiters)
  12. 思维链提示(Chain of Thought)
  13. 对输出格式的明确要求
  14. 最佳实践案例
  15. 1. Agent 场景:使用 Prompt 实现 Agent Create
  16. 伪代码示例:Agent 配置生成逻辑
  17. 2. Agent 场景:使用 System Message + Prompt 实现 Function Call
  18. 写好 Prompt 的一些原则总结
  19. 优质的提示词典型框架
  20. Python 调用示例
  21. 示例:创建一个数据分析助手
  22. 常见问题与调试
  23. 结语

更多推荐文章

查看全部
  • 攻防世界 Web 题解:SQL 注入与文件包含漏洞分析
  • FPGA 摄像头到屏幕完整链路:从 OV5640 采集到 HDMI 实时显示
  • 一次红队渗透实战项目记录
  • 亚马逊开源 RAGChecker:诊断与提升 RAG 模型准确性工具
  • MySTL:C++ 标准库精简实现与源码解析
  • C++ 递归算法实战:汉诺塔问题详解
  • AI Agent 学习路线与核心文章精选
  • NewStarCTF2025 Week2 Web 题目解析
  • 大模型提示工程实战指南:掌握提问驱动 AI
  • 前端 EME DRM 反录屏原理与实战代码
  • Proxmox VE 部署 Kali Linux 完整实战指南
  • 基于 Unity 与 AI 工具快速开发简易小游戏
  • Claude Code 本地化部署教程:接入 Ollama 实现离线开发
  • Web 项目自动化测试实战:从零搭建博客系统 UI 框架
  • Google 发布 Gemini Embedding 2 及 MuleRun 自进化 AI 助手
  • 使用 MCP 协议实现 Dify 与 MySQL 的深度整合
  • C 语言反转链表前 K 个节点:辅助链表法
  • VS Code 远程开发时 GitHub Copilot 失效排查指南
  • GitNexus:纯本地代码知识图谱与可视化关系网工具
  • DeepSeek 大模型微调理论详解与参数配置

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online