0Pricing
AI Engineering Academy · 课时

提示迭代与调试

建立系统化的提示测试与优化流程,识别失败模式,并在编写生产代码前使用 OpenAI Playground 快速迭代。

提示迭代与调试 是 CoddyKit 上的免费 AI Engineering Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Engineering Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Engineering Academy 课程共包含 4 节课。

提示工程是一门实证学科

有效的提示工程并不是寻找某个神奇公式,而是一种实证式、迭代式的过程,更接近调试,而不是写作。您编写提示词,使用测试输入运行它,观察它在哪些地方失败,推测失败原因,然后修改提示词来修复问题。仅凭直觉并不可靠;您需要数据。

许多开发者会犯这样的错误:只用一两个手工编写的示例测试提示词,看到结果不错就部署到生产环境,结果发现提示词在 30% 的真实输入上都会失败。系统化的评估流程会在提示词正式上线前,将其置于多样且具有代表性的示例中,从而避免这一问题。

先构建测试集

在编写提示词之前,请先构建一个黄金测试集:收集 20 到 100 个具有代表性的输入示例,并为每个示例配上预期输出或通过标准。这个测试集会成为评估任何提示词修改的事实基准。

优秀的测试集应包括:典型输入、边界情况(空字符串、超长输入、含义模糊的情况)、专门用于破坏提示词的对抗性输入,以及来自不同用户群体的输入。测试集越多样,您就越能确信提示词的修改是真正的改进,而不是针对少数预想示例的过拟合。

简单的评估工具

编写一个简单的评估脚本只需一小时,却能节省数天排查生产环境问题的时间。该脚本会让提示词运行于每个测试用例,将输出与预期结果进行比较,并报告通过率。之后,您可以迭代提示词,并立即查看修改是否提高了总体得分。

import openai

client = openai.OpenAI()

# Golden test set: (input, expected_output)
test_cases = [
    ('The product is excellent and very fast.', 'Positive'),
    ('Arrived damaged and customer service ignored me.', 'Negative'),
    ('Delivery was on time.', 'Neutral'),
    ('Worst purchase of my life. Never again!', 'Negative'),
    ('Good value for the price.', 'Positive'),
]

def evaluate_prompt(system_prompt):
    correct = 0
    for text, expected in test_cases:
        resp = client.chat.completions.create(
            model='gpt-4o-mini',
            messages=[
                {'role': 'system', 'content': system_prompt},
                {'role': 'user', 'content': text}
            ],
            max_tokens=10
        )
        prediction = resp.choices[0].message.content.strip()
        if expected.lower() in prediction.lower():
            correct += 1
        else:
            print(f'FAIL: "{text}" -> got "{prediction}", expected "{expected}"')
    return correct / len(test_cases)

score = evaluate_prompt('Classify sentiment as Positive, Negative, or Neutral. Reply with one word only.')
print(f'Score: {score:.0%}')

对失败模式进行分类

当提示词在测试用例上失败时,请按类型对失败进行分组,以识别其中的规律。常见的失败模式包括:

  • 格式失败:模型给出了正确答案,但格式错误
  • 歧义失败:模型对任务的理解与您的意图不同
  • 边界情况失败:模型处理典型输入没有问题,但处理异常输入时失败
  • 幻觉失败:模型自信地生成错误的事实性内容
  • 忽略指令:模型部分遵循指令,却遗漏了具体限制条件

每种失败类型都需要不同的修复方法。格式失败需要更明确的输出指令;歧义失败需要更清晰的任务定义或示例。

用于快速迭代的 OpenAI Playground

OpenAI Playground(platform.openai.com/playground)是在不编写代码的情况下迭代提示词的最快工具。它可以让您切换模型、使用滑块调整参数、保存提示词版本,并排比较输出结果。

请在提示词开发的探索阶段使用 Playground:尝试不同的措辞,以交互方式测试边界情况,并培养对有效方法的直觉。当您得到一个有希望的提示词后,请转入代码,并使用评估工具在完整测试集上进行系统验证,然后再正式上线。

提示词版本管理

提示词就是代码。它们应当像应用代码一样进行版本控制、审查,并以同等严格的标准部署。最基本的做法是将提示词模板以字符串形式存放在代码仓库的常量文件中,这样修改就会被记录在 Git 中,并且需要经过代码审查。

更成熟的做法包括:将提示词存储在专用的提示词管理数据库中(LangSmith、PromptLayer 或简单的 Supabase 表),为版本添加标签,并在生产环境中对不同提示词版本运行 A/B 测试。当多个团队成员共同维护提示词,或需要回滚导致生产质量下降的提示词修改时,这一点尤其重要。

# prompts/sentiment.py
# Version 2.1 - Added explicit tie-breaking rule for mixed reviews
SENTIMENT_V2_1 = '''You are a sentiment classification assistant.
Classify the customer review sentiment as exactly one of: Positive, Negative, or Neutral.

Rules:
- Positive: overall satisfaction, praise, or recommendation
- Negative: disappointment, complaint, or warning to others
- Neutral: factual statements without strong sentiment, or equal positive and negative content
- If the review contains both positive and negative elements, choose based on the DOMINANT tone

Respond with ONLY the single word classification. No explanation.'''

# Usage:
# from prompts.sentiment import SENTIMENT_V2_1

系统地比较提示词变体

当您有两个相互竞争的提示版本时,请使用完整测试集分别运行它们并比较得分。对于每天处理数千个请求的生产系统,即使准确率只提升 5%,评估所投入的精力也是值得的。绝不要根据一两个手动测试的示例来选择提示——务必在完整测试集上进行比较。

对于没有唯一正确答案的主观质量指标(例如语气、实用性或创造力),您可以使用 LLM-as-judge:提示 GPT-4o 这样的强大模型,让它评估两个回答中哪一个更符合您的质量标准。这样可以将评估规模扩展到人工审核难以应对的程度。

调试不一致的输出

默认情况下,LLM 的输出并非确定性的。将 temperature=0 设为 0 会使输出几乎具有确定性(每一步都选择最可能的令牌),这对调试至关重要,因为这样您可以运行两次相同的提示并得到相同的输出。调试时,请始终将 temperature 设为 0,以便确定输出变化究竟是由提示的修改导致的,还是仅仅源于随机波动。

修复提示后,如果您的使用场景需要多样性(创意写作、头脑风暴),请在生产环境中重新启用一定程度的 temperature;但对于结构化提取和分类任务,如果您希望输出一致且可重复,请将 temperature 保持为 0。

import openai

client = openai.OpenAI()

# Deterministic mode for debugging
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[
        {'role': 'system', 'content': 'Classify sentiment: Positive, Negative, or Neutral.'},
        {'role': 'user', 'content': 'The product looks nice but broke after two days.'}
    ],
    temperature=0,   # deterministic
    seed=42          # optional reproducibility seed
)
print(response.choices[0].message.content)

调试幻觉

如果您的提示生成了虚构的事实,请添加一些能增加幻觉生成难度的约束。有效的反幻觉技术包括:

  • 引用来源:'只能根据所提供的上下文回答。如果答案不在上下文中,请说“我不知道”。'
  • 量化置信度:'请将您的置信度从 1 到 5 进行评分。如果低于 3,请不要回答。'
  • 验证步骤:'回答之前,请验证您计划使用的每个事实都存在于所提供的文档中。'

没有任何技术能够彻底消除幻觉,但将检索(RAG)与严格的提示约束结合起来,可以显著减少知识密集型应用中的幻觉。

提示长度与指令放置位置

研究表明,与提示中间的指令相比,LLM 会更加关注提示开头和结尾的指令。这被称为中间遗失问题。如果您的提示很长,重要指令被上下文包围并埋在中间,模型可能无法可靠地遵循这些指令。

最佳实践是:将最重要的指令(任务定义、关键约束)放在系统提示的最开头,并在结尾再次强调关键约束。对于作为上下文注入的长文档,请将用户问题放在文档之后而不是之前,因为模型会更加重视最近的内容。

从探索到生产

提示开发生命周期分为三个阶段:

  • 探索:使用 Playground 自由进行实验。重点是理解哪些方法在概念上有效,而不是立即获得完美输出。
  • 评估:构建测试集和评估工具。使用完整测试集运行候选提示并衡量通过率。不断迭代,直到达到质量阈值。
  • 生产:对最终提示进行版本控制,添加监控以跟踪生产环境中的质量指标,并设置质量下降警报。为模型版本变化时的后续迭代做好规划。

跳过评估阶段是生产环境中提示质量退化最常见的原因。为合适的测试集投入时间,往往能带来数倍的回报。

快速检查

测试您对本课 AI 工程概念的理解。

课程回顾

在本课中,您学到了:提示工程需要黄金测试集和评估工具,才能可靠地衡量改进效果;应对失败模式进行分类,以便为每种类型确定正确的修复方法;以及temperature 设为 0 对调试至关重要,而提示版本控制和生产监控则构成完整的质量闭环。接下来,我们将探索 LLM 如何通过令牌处理文本,以及令牌数量为何会影响成本和上下文。

常见问题解答

「提示迭代与调试」课时是免费的吗?

是的 — 「提示迭代与调试」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Engineering Academy 课程的其余内容,请升级到 CoddyKit PRO。 AI Engineering Academy 课程共包含 4 节课。

「提示迭代与调试」这节课中我会学到什么?

建立系统化的提示测试与优化流程,识别失败模式,并在编写生产代码前使用 OpenAI Playground 快速迭代。 你通过在浏览器中直接运行的动手代码来练习 AI Engineering Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Engineering Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Engineering Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「提示迭代与调试」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Engineering Academy 课中编写并运行代码吗?

能。每节 AI Engineering Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 零样本与少样本提示
  2. 思维链与分步推理
  3. 系统提示与角色设定
  4. 提示迭代与调试
← 返回 AI Engineering Academy