从零开始掌握Prompt工程:大模型调教指南

清晰指令 + 逐步推理 = 让AI真正理解你的意图

写在前面

最近在深入学习和使用大语言模型的过程中,发现一个很有意思的现象:同样的模型,不同人用起来效果天差地别。有时候不是模型不够强,而是我们的"沟通方式"出了问题。

今天就来聊聊如何写好Prompt,以及如何用Python优雅地封装LLM调用。这篇文章会带你从基础到进阶,掌握让AI乖乖听话的核心技巧。

一、Prompt核心九法

原则 核心要义
清晰具体 ≠ 精简,长 prompt 往往效果更好
引导逐步推理 (Chain-of-Thought),别让模型一步到位
给模型"退路" ------允许它说"不知道",防止幻觉
正向指令 > 负向指令
角色设定让回答聚焦
Few-shot:示例比描述更有效
结构化输出,方便程序解析
迭代优化------把 prompt 当代码来 Debug
temperature、max_tokens 参数控制

下面我们就结合这九大原则,从实战角度逐一攻破。


二、LLM API调用封装实战

2.1 基础配置

首先,我们需要初始化OpenAI风格的客户端(以DeepSeek为例):

python

ini 复制代码
from openai import OpenAI

# 实例化客户端
client = OpenAI(
    api_key="your-api-key-here",
    base_url="https://api.deepseek.com/v1"
)

2.2 函数封装技巧

python

ini 复制代码
def get_completion(prompt, model='deepseek-chat'):
    response = client.chat.completions.create(
        model=model,
        messages=[
            {"role": "user", "content": prompt}
        ],
        temperature=0.5,      # 原则九:随机性控制,0严谨,2随意
        max_tokens=1024       # 原则九:输出长度限制
    )
    return response.choices[0].message.content

# 测试一下
print(get_completion("写一首夏天游玩的七言诗"))

参数说明:

  • temperature:0-2之间。0表示确定性输出,2表示高随机性
  • max_tokens:控制输入+输出的总token数

三、九大原则实战演练

原则一:清晰具体 ≠ 精简

❌ 不好的提问:

text

复制代码
写首诗

✅ 好的提问:

text

复制代码
写一首关于夏天游湖的七言诗,要求意境优美,包含荷花、清风等元素

关键点:不要把"清晰"等同于"精简" 。很多时候,更长的Prompt反而能提供更完整的背景信息,让输出更贴合需求。

python

ini 复制代码
text = """
你应当通过尽可能清晰、具体的指令,来明确你希望模型完成的任务。
这能引导模型产出符合预期的结果,同时降低回复内容偏离主题的概率。
不要把编写清晰的提示词和精简提示词混为一谈。
"""

prompt = f"""
将三个反引号之间的文本总结为一句话
'''{text}'''
"""

原则二:引导逐步推理

复杂任务拆解成多步,让模型按步骤思考(Chain-of-Thought):

python

ini 复制代码
text = """
在一座风光宜人的小村庄里,姐弟俩杰克和吉尔动身前往山顶的水井取水。
两人一路欢歌向上攀登,不料意外发生
------杰克被石头绊倒,滚下山坡,吉尔也跟着摔了下去。
二人虽受了些轻伤,还是回到了家中,得到家人温柔的安抚。
"""

prompt = f"""
执行以下操作:
1. 将文本概括为一句话
2. 把这句话翻译成法语
3. 列出法语摘要中出现的所有人名
4. 输出JSON对象,包含字段:french_summary、num_names

文本:'''{text}'''
"""

原则三:给模型"退路"------防止幻觉

当模型遇到不熟悉的内容,可能会"一本正经地胡说八道":

python

ini 复制代码
# ❌ 不加限制时,模型可能编造信息
prompt = "介绍一下博依品牌的喜多多饮料"

# ✅ 正确的做法:让模型明确表示"不知道"
prompt = """
如果你不确定答案,请直接说"未找到相关信息",不要编造。

介绍一下博依品牌的喜多多饮料
"""

原则四:正向指令 > 负向指令

❌ 负向指令(模型容易困惑):

text

复制代码
不要写太长的诗,不要用生僻字,不要写悲伤的内容

✅ 正向指令(清晰明确):

text

复制代码
写一首短诗,使用常见汉字,表达欢乐的情感

原则五:角色设定让回答聚焦

python

ini 复制代码
prompt = """
你是一位资深的茶叶品鉴师,拥有20年从业经验。

请介绍如何泡好一杯龙井茶。
"""

角色设定能让模型从特定视角回答问题,输出更专业、更聚焦。

原则六:Few-shot学习(示例比描述更有效)

给模型提供示例,让它学习你的"风格":

python

ini 复制代码
prompt = """
你的任务是保持统一的行文风格作答

提问:请讲讲何为耐心
回答:能凿出幽深峡谷的江河,源自涓涓细流;
      恢弘壮阔的交响乐,起于单个音符;
      精美繁复的织锦,始于一缕丝线。

请问:请讲讲何为韧性
"""

print(get_completion(prompt))

输出:

能承受千钧之重的古藤,生于石缝间的幼苗;

历经烈火淬炼的利剑,成于反复锻打的铁坯;

穿越千年风沙的胡杨,长于寸草不生的荒漠。

原则七:结构化输出

让模型按指定格式返回,方便程序解析:

python

ini 复制代码
prompt = """
请列出四大名著,并标注对应的作者与书籍类型。
使用JSON格式呈现,需包含以下字段:
- book_id(书籍编号)
- title(书名) 
- author(作者)
- genre(书籍类型)

【注意】必须输出合法的JSON格式
"""

response = get_completion(prompt)
print(response)

输出示例:

json

json 复制代码
{
    "book_id": 1,
    "title": "红楼梦",
    "author": "曹雪芹",
    "desc": "以贾、史、王、薛四大家族的兴衰为背景...",
    "genre": "古典小说(世情小说)"
}

原则八:迭代优化------把prompt当代码来Debug

python

ini 复制代码
# 版本1:太模糊
prompt_v1 = "分析这段文本"

# 版本2:添加具体任务
prompt_v2 = "分析这段文本的情感倾向"

# 版本3:明确输出格式
prompt_v3 = """
分析以下文本的情感倾向,输出JSON格式:
{"sentiment": "positive/negative/neutral", "confidence": 0.0-1.0}

文本:{text}
"""

# 像调试代码一样,持续优化你的prompt

原则九:temperature与max_tokens参数控制

场景 推荐Temperature 原因
代码生成、数学题 0.1-0.3 需要精确性
创意写作、诗歌 0.7-1.0 需要多样性
头脑风暴 1.0-1.5 需要发散思维
事实问答 0.0-0.2 需要确定性

四、综合实战:步骤化处理

当输入包含操作指令时,可以让模型重新整理格式:

python

ini 复制代码
text = """
泡一杯茶其实很简单!首先把水烧开。烧水的同时,拿出茶杯,放入茶包。
水烧开后,将热水冲入杯中浸泡茶包。静置片刻让茶香析出。
几分钟后,根据个人口味,还可以加入糖或牛奶。
"""

prompt = f"""
【原则二:引导逐步推理】
你将收到三个引号之间的文本,若文本中包含一系列操作指令
请按照下述格式重新整理这些指令:
步骤一...
步骤二...
步骤n...

【原则三:给模型退路】
如果没有操作指引,输出:**没有提供步骤**

【原则四:正向指令】
请使用简洁、积极的语言描述每个步骤

'''{text}'''
"""

print(get_completion(prompt))

输出:

text

复制代码
步骤一:把水烧开。
步骤二:烧水的同时,拿出茶杯,放入茶包。
步骤三:水烧开后,将热水冲入杯中浸泡茶包。
步骤四:静置片刻让茶香析出。
步骤五:根据个人口味,加入糖或牛奶。

五、避坑指南速查表

常见错误 正确做法
指令过于模糊 提供具体约束和示例
要求一步完成复杂任务 拆解成多步,引导推理
模型编造信息 明确允许说"不知道"
用"不要做X" 改成"请做Y"
没有角色设定 添加角色让回答更专业
只描述不示范 用Few-shot给示例
输出格式随意 要求结构化输出
Prompt写一次就放弃 持续迭代优化
忽略temperature参数 根据场景调整

总结

写好Prompt的九字真言:

清、步、退、正、角、例、构、迭、参

翻译一下:

  1. 晰具体 ≠ 精简
  2. 引导逐步推
  3. 给模型退
  4. 向指令
  5. 角色设
  6. Few-shot示
  7. 结构化
  8. 迭代优化(
  9. (temperature + max_tokens)

记住:你不是在使用AI,而是在和AI协作。沟通越清晰,协作越高效。

相关推荐
人道领域2 小时前
从单兵作战到军团协作:多智能体 AI Agent 开发实战指南
人工智能·agent
我不介意孤独3 小时前
01-多Agent系统为什么总是过早宣布完成
agent·多agent·agent infra·symbio
LienJack3 小时前
《Re0 Build Harness》第三章 系统边界:ChatBot、Workflow、Agent、Harness 的区别
agent
feiwuw5 小时前
Agent和传统大模型的区别以及目前的困境和解决
人工智能·agent·智能体
大强同学5 小时前
我用 Claude Code,把 NotebookLM 变成了 Obsidian 插件
人工智能·agent·claude·skill·notebooklm
L3S5 小时前
Claude Code 配置 Skills 的三种姿势:从手动拖放、skills.sh 一键安装到官方 Plugin
agent
guyoung5 小时前
BoxAgnts介绍(6)——Agent多轮对话及Tool、Skill调用
agent·ai编程