跳到主要内容

Rule (规则): 精确驾驭 AI 的指令集

在 Prompt Engineering 的世界里,如果说 Prompt 是我们的最终目的地,那么 Rule (规则) 就是我们手中那张最精确的地图和导航仪。

Rule 指的是你在一个 Prompt 中设定的一系列具体的、明确的指令、约束或指导原则,其目的是为了精确地控制 AI 模型的行为和输出结果。

简单理解:

如果说 Prompt 是要去完成的“考试卷”,那么 Rule 就是试卷开头加粗、下划线的“答题注意事项”(例如:必须用黑色水笔、选择题用2B铅笔填涂、作文不少于800字)。

没有这些规则,即使考生知识再渊博,交上来的答卷也可能因为格式错误而无效。规则将一个开放性的任务,变成了一个有明确交付标准的工程项目。

为何规则至关重要?

在与 AI 协作时,引入清晰的规则可以带来四大核心优势:

  1. 可预测性 (Predictability): 规则将 AI 的“自由发挥”限制在预设的轨道内,让输出结果不再是随机的“开盲盒”,而是稳定、可预测的。
  2. 一致性 (Consistency): 当你需要 AI 多次执行类似任务时(如批量处理数据),规则可以确保每次的输出都遵循相同的标准。
  3. 可用性 (Usability): 对于开发者而言,规则是获取机器可读(Machine-readable)输出的关键。通过规则强制输出 JSON 或特定格式,可以实现与后端程序的无缝对接。
  4. 安全性 (Safety): 在企业级应用中,规则可以用来确保 AI 的回答符合法律法规、公司政策或道德准则,防止生成有害或不合规的内容。

剖析一条好规则:核心构成要素

一条有效的规则通常具备以下特点:

  • 指令式语言 (Imperative): 使用明确的命令动词,如“必须(Must)”、“禁止(Do not)”、“确保(Ensure)”、“总是(Always)”。
  • 高度具体 (Specific): 避免模糊的描述。不要说“格式友好一点”,而要说“必须以 Markdown 表格格式输出”。
  • 结构化呈现 (Structured): 当有多条规则时,使用编号或项目符号列表,能让 AI 更清晰地理解和遵循。
  • 位置突出 (Prominently Placed): 将规则作为一个独立的、显眼的段落放在 Prompt 的结尾或开头,通常能获得更好的效果。

关键区别:Rule vs. Prompt

为了彻底理解,我们再次请出这张对比表格,但这次从 Rule 的视角出发:

对比维度Rule (规则)Prompt (提示词)
层级关系组件 (Component)
是 Prompt 中具体的、强制性的指令。
容器 (Container)
是整个输入请求的集合体。
核心作用定义“怎么做” (How)
设定任务的微观约束和执行标准。
定义“做什么” (What)
设定任务的宏观目标。
依赖关系必须依附于一个 Prompt 才能生效。可以独立存在(尽管效果可能不佳)。
开发者视角输入字符串中明确的指令部分,如 "Format as JSON"。整个 messages 数组或输入字符串。

一句话总结:Rule 是 Prompt 这把瑞士军刀里,那把最锋利、最精确的手术刀。

给开发者的深究:将规则转化为代码

对于开发者来说,规则是实现自动化工作流的基石。以下代码展示了如何在 API 调用中嵌入一系列强约束规则,以获取干净、可直接解析的 JSON 数据。

import openai
import json

# 建议从环境变量等安全位置获取你的 API 密钥
# openai.api_key = "YOUR_API_KEY"

# 定义一个包含清晰规则的 Prompt
prompt_content = """
分析以下用户评论,并提取关键信息。

用户评论: "我昨天刚买了你们的 Pro Max 耳机,音质超赞!但续航似乎没达到宣传的24小时,大概只有20小时左右。另外,APP 的连接速度有点慢。"

请严格遵守以下规则:
1. 最终输出必须是一个格式正确的 JSON 对象。
2. JSON 对象必须包含三个键: "product_name" (字符串), "positive_feedback" (字符串), 和 "negative_feedback" (一个字符串数组)。
3. 在你的回答中,除了这个 JSON 对象,不要包含任何其他文字、注释或 Markdown 的代码块标记。
"""

try:
response = openai.chat.completions.create(
model="gpt-4-turbo",
messages=[
{"role": "system", "content": "你是一个精确的数据提取助手,严格遵循用户指定的输出格式。"},
{"role": "user", "content": prompt_content}
],
temperature=0.0, # 使用最低的温度以确保输出的确定性,强制模型遵循规则
response_format={"type": "json_object"} # 对于支持的模型,可以直接请求JSON输出
)

# AI 的输出将是一个干净的 JSON 字符串,可以直接解析
extracted_data = json.loads(response.choices[0].message.content)

# 打印解析后的 Python 字典
print(extracted_data)
# 预期的输出:
# {
# "product_name": "Pro Max 耳机",
# "positive_feedback": "音质超赞",
# "negative_feedback": [
# "续航没达到宣传的24小时,大概只有20小时左右",
# "APP的连接速度有点慢"
# ]
# }

except Exception as e:
print(f"An error occurred: {e}")

在这个例子中,清晰的规则结合 temperature=0.0response_format 参数,最大限度地保证了 AI 输出的结构化和可靠性。


拓展

常见误区与最佳实践

  • 误区: 过度约束。设置太多或太严格的规则,可能会压制模型的创造力和解决问题的能力,导致输出僵化或直接拒绝回答。
  • 最佳实践: 必要且最小原则。只添加那些对实现目标至关重要的规则。在要求精确性和一致性的场景(如代码生成、数据提取)中多用规则;在需要创意和发散思维的场景(如头脑风暴、文案写作)中慎用规则。

推荐资源

  1. OpenAI's JSON mode: 官方文档,了解如何利用模型特性来强制执行 JSON 输出规则。

相关词条