本文来自于 Anthropic 组织的线下分享会,从时间上看应该是 5 月前组织的线下分享会,里面不仅有 Claude 工程和算法团队的分享,还包括 Google、Amazon、Manus 甚至是创业者和学生的分享,特别值得观看,这里把其中我认为比较优质的视频内容整理出来分享给大家。本篇文章来自于视频 Prompt 101,以下为原视频精华。

你有没有过这样的经历:想让AI帮你做点事,结果它却给出了一个让你哭笑不得的答案?别担心,你不是一个人。这恰恰说明了“提示词工程”(Prompt Engineering)的重要性。

简单来说,Prompt工程就是我们与大型语言模型(比如Claude)沟通的艺术。它不仅仅是下达一个命令,更是关于如何清晰地描述任务、提供足够的上下文、并巧妙地组织信息,从而引导AI交出我们真正想要的完美答卷。

理论听起来有点枯燥,对吧?最好的学习方式永远是亲自动手。所以,今天我们不聊空泛的概念,而是跟着Anthropic应用AI团队的专家Hannah和Christian,通过一个真实的客户案例,一步步搭建一个高质量的Prompt。

初始挑战:一张瑞典语的事故报告单

想象一下,你是一家瑞典保险公司的理赔员。每天,你都要处理大量的汽车保险索赔。今天,你手上有两份材料:

  1. 一份手填的事故报告表:上面用瑞典语写着事故发生的各种情况,勾选了一些选项。
  2. 一张手绘的事故草图:潦草地画着两辆车是怎么撞上的。

我们的目标是让Claude分析这两份图像材料,搞清楚事故经过,并判断谁是责任方。听起来是个不错的自动化方案,对吧?

Round 1: 最天真的尝试——直接把图片丢给AI

大多数人刚开始可能都会这么做:把两张图片上传,然后给一个超级简单的指令,比如:

“请审查这份事故报告和草图,告诉我发生了什么,以及谁的责任。”

(示意图:简单的指令界面)

结果呢?Claude的回答让人大跌眼镜。它认为这是一起发生在瑞典一条著名商业街上的滑雪事故

等等,滑雪?

这当然是个无辜的错误。在我们极其简单的指令里,没有给AI任何场景信息。它看到了模糊的手绘线条和表格,做出了一个不那么离谱的猜测。这个结果虽然不对,但它告诉我们一个关键道理:你不能指望AI读懂你的心思,你得把舞台先为它搭好。

Prompt工程的核心:迭代与优化

这次失败恰恰是Prompt工程的起点。它就像一门实验科学,你需要不断尝试、观察结果、然后迭代优化你的指令。我们的第一个优化目标很明确:得让Claude知道,我们处理的是车辆事故,不是什么滑雪运动。

为了做到这一点,我们需要一个更专业的Prompt结构。Anthropic的专家们推荐了一个屡试不爽的黄金结构:

  1. 设定角色和任务:告诉Claude它是什么身份,需要完成什么工作。
  2. 提供上下文/文档:给出完成任务所需的背景信息或固定文档。
  3. 动态内容:这是每次请求都会变化的部分,比如我们这次的事故报告图片。
  4. 详细步骤/指令:像写SOP一样,告诉它一步步该怎么做。
  5. 提供范例 (Few-shot):如果可能,给一两个已完成的“标准答案”作为参考。
  6. 最后提醒和输出格式要求:在最后,再次强调关键规则,并指定你想要的输出格式。

听起来有点复杂?别急,我们一步步来拆解。

Round 2: 设定角色与基调——“你是专业的理赔助理”

在第一次失败的基础上,我们来丰富一下指令,加入“角色设定”和“基调要求”。

你是一名AI理赔助理,正在帮助人类理赔员审查瑞典的汽车事故报告。你的任务是分析提供的事故报告表(手填表格)和事故草图(手绘图)。

你的分析必须基于事实,保持自信。如果你对信息不确定,或无法看清内容,请直接说明,不要猜测。你的目标是判断事故责任方。

这次,我们明确了几个关键点:

  • 角色:AI理赔助理。
  • 领域:瑞典汽车事故。
  • 输入:手填表格和手绘图。
  • 基调:实事求是,不确定就别瞎说。

再次运行后,结果好多了!Claude准确地识别出这是一起汽车事故,还看出了A车和B车分别勾选了表格中的第1项和第12项。

但是,它最后补充道:“由于信息不足,我无法自信地判断谁是责任方。”

这是一个巨大的进步!它没有再犯“滑雪事故”那样的错误,并且严格遵守了我们“不确定就不猜测”的指令。现在的问题是,如何给它足够的信息,让它变得“确定”?

Round 3: 提供背景知识——把“说明书”喂给AI

那份瑞典事故报告表,虽然每次填写的内容不同,但表格本身的格式和每个选项的含义是固定的。这部分信息就是完美的“背景知识”,可以预先提供给Claude。

我们决定把这份“说明书”放进**系统提示(System Prompt)**里。这样,AI在处理任何请求前,就已经把这份知识内化于心了。我们还使用了XML标签(比如``)来组织信息,这能让AI更好地理解不同信息块的作用。

系统提示词(System Prompt)里大概是这样写的:

点击查看系统提示词精简示例

我们在用户指令(User Prompt)中保持不变,但现在Claude有了这份“说明书”撑腰。它不再需要每次都费力地去现场解读表格上每个瑞典单词的意思,而是可以直接调用这些预置知识。

再次运行,奇迹发生了!

Claude不仅准确识别了勾选的选项,还结合“说明书”理解了它们的含义。最重要的是,它自信地给出了结论:“根据表格和草图,车辆B明显是责任方。” 这和人类理赔员的判断完全一致。

(示意图:成功分析并判断责任方的结果)

迈向完美:精细化指令与格式化输出

我们已经得到了正确的答案,但这还不够。在真实的业务流程中,我们可能需要AI遵循特定的思考路径,并以固定的格式输出结果,方便后续的程序调用。

Round 4: 指导思考顺序与最终要求

我们发现,一个合理的分析顺序至关重要。就像人类理赔员一样,应该先看信息更明确的表格,建立对事故的基本认知,然后再用这份认知去解读相对模糊的草图

于是,我们在用户指令的最后,加入了一段非常详细的步骤说明和最终提醒:


  
    请仔细检查事故报告表。逐一确认17个选项中,车辆A和车辆B分别勾选了哪些。把你的发现列成清单。
  
  
    在分析完表格后,再去检查手绘草图。结合你从表格中获得的信息来解读草图,分析事故是如何发生的。
  
  
    综合以上所有信息,给出一个最终的事故摘要和责任方判断。
  



  - 你的摘要必须清晰、简洁、准确。
  - 只依赖你看到的图像信息,不要自己编造细节。
  - **最后,请将你的最终结论包裹在和标签内。**

这一步做了三件事:

  1. 规定了思考顺序:先看表,再看图,最后总结。这被称为“思维链”(Chain of Thought)的一种引导,能显著提高复杂任务的准确性。
  2. 强化了核心原则:再次提醒它要实事求是。
  3. 指定了输出格式:要求用XML标签包裹最终结论,这样我们的后端系统就能轻松地抓取final_verdict里的内容,而忽略掉AI的其它分析过程。

运行最终版的Prompt,我们得到了一个堪称完美的输出。它不仅分析过程井井有条,最终还给出了一个干净、可供机器直接读取的结论。



  根据所提供的事故报告表和草图,车辆B在倒车时撞上了正常行驶的车辆A,因此车辆B为责任方。

更多高级技巧

在这个案例中我们没有用到,但同样强大的技巧还包括:

  • 提供范例 (Few-shot Prompting):在系统提示词中加入几个完整的“输入-输出”范例,特别是针对那些模棱两可或容易出错的边缘案例。这能极大地校准AI的判断标准。
  • 预填充回答 (Prefill Responses):你可以让AI的回答从一个你指定的开头起笔,比如直接以{ "fault_party": 开头,来强制它输出JSON格式。
  • 利用模型的“思考过程”:一些模型允许你查看它的“草稿纸”(Scratchpad),看看它是如何一步步推理的。这对于调试和优化你的Prompt来说,是一个宝藏功能。

总结一下

从一个啼笑皆非的“滑雪事故”,到一个能无缝集成到业务系统中的精准判断,我们见证了Prompt工程的真正威力。

这趟旅程告诉我们,与AI高效合作的秘诀在于:

  1. 别想当然:清晰地设定场景和角色。
  2. 授人以渔:提供必要的背景知识和“说明书”。
  3. 结构为王:用XML标签或Markdown等工具组织你的指令。
  4. 引导思考:告诉AI分析问题的正确步骤。
  5. 迭代,迭代,再迭代:把Prompt工程当成一门实验科学,不断优化。

下一次,当你觉得AI“不够聪明”时,不妨停下来想一想:我是不是可以写一个更好的Prompt,来解锁它的全部潜能呢?