从涂津豪的“Thinking Claude”看提示词工程最佳实践

文摘   2024-11-15 21:28   新加坡  

前语

学习提示词编写是大模型学习中最具性价比的任务之一。只需要短短几个小时,零基础的用户就可以掌握提示词编写的基本技能。接下来,通过50个左右不同场景的提示词练习和迭代,就能基本掌握这一技能。

提示词的重要性不言而喻,它是与AI模型有效沟通的基础,是大模型应用的基本功。

这两天,17岁的高中生涂津豪小朋友凭借他的“Thinking Claude"提示词火遍全网,引起广泛关注这为提示词工程的讨论带来了新的热度。他也是今年阿里巴巴全球数学竞赛AI赛道预赛的第一名选手,当时使用的是多智能体编程。

涂津豪的目标是通过提示词工程,把o1级别的思维链思,复刻到Claude 3.5。他从最初的v0.01版本,修改了80多个版本,(https://github.com/richards199999/Thinking-Claude/tree/main),不少人尝试后觉得效果很棒,但也有少数人觉得效果一般。

本文将讨论提示词工程的最佳实践,也顺便评估一下这位同学的提示词的优缺点。

一、提示词工程的定义

提示词工程的本质是通过与AI模型的清晰沟通,引导其完成特定任务。这类似于人与人的交流,但需要特别了解模型的特性,实际上是一种基于文本“编程”大模型的方式。

1.1 提示词工程中的“工程特性”:

  • 具有独特的试错流程
    • 可以随时重置到初始状态
    • 不同尝试之间相互独立
  • 需要系统性思考
    • 考虑数据来源和访问权限
    • 权衡延迟和数据量
    • 整合到更大系统中(如RAG)

1.2. 关键点

  • 清晰沟通:成功的提示词工程依赖于准确地表述任务与概念。
  • 试错过程:工程师可以独立尝试不同的方法,快速重置并迭代。
  • 系统性思考:需要考虑数据来源、访问权限等多种因素。

二、如何成为优秀的提示词工程师

成为一名优秀的提示词工程师,需要具备核心能力、工作方法和专业素养:2.1. 核心能力

  • 清晰的沟通能力
    • 准确描述复杂概念,避免隐含假设。
    • 确保任务信息传达完整。
  • 系统分析能力
    • 理解任务所需的整体知识体系。
    • 识别知识盲点,预见潜在问题。

2.2. 工作方法

  • 持续迭代优化
    • 快速进行大量测试,及时识别并修正模型误解
    • 不断调整和完善提示词
  • 严谨的验证习惯
    • 仔细阅读模型输出,验证其是否按预期执行
    • 测试各种边界情况和异常输入

2.3. 专业素养

  • 理解三方关系
    • 了解模型的能力边界
    • 预判用户的实际行为
    • 在用户和模型之间搭建桥梁
  • 实用主义思维
    • 基于真实场景而非理想情况设计
    • 考虑各种可能的用户输入(如拼写错误、无标点等)
    • 预先解答模型可能遇到的疑惑

2.4. 避免的常见误区

  • 过度依赖个人经验,忽视系统分析
  • 只考虑理想情况,忽视边界场景
  • 假设用户输入完美无缺,导致模型输出不稳定
  • 写出连人类都无法理解的不完整指令
  • 未验证模型是否真正执行了指定步骤

要成为优秀的提示词工程师,需要将上述能力和方法融会贯通,既要有工程师的严谨系统思维,又要有作家的清晰表达能力,同时保持持续学习和实践的态度。这不是一蹴而就的工作,而是需要通过大量实践和经验积累来提升的专业技能。

三、优化提示词的关键方法

3.1 分析与调优基本方法

  • 让模型先分析指令,找出不清晰或有歧义的部分,而不是直接执行。
  • 在出错时,询问模型原因并请求改进版本的指令。
  • 重视质量胜于数量,精心设计的少量测试往往比大量粗糙测试更有价值。

3.2 验证与评估原则

  • 保持谨慎态度,持续测试和验证。
  • 不仅关注结果,还要分析模型的推理过程,判断是否需要继续优化。

3.3 优化的边界

  • 避免过度优化,认识到并非所有问题都能通过完美提示词解决。
  • 如果模型明显无法理解任务,及时停止优化。

关键是:持续测试、关注过程、适度优化,在发现模型根本局限时及时调整策略。

四、角色扮演和提示中的隐喻

4.1. 角色扮演的演变

  • 早期模型中角色扮演效果较好,但随着模型进步,直接沟通更有效
  • 应该向模型清晰说明实际任务,而非通过虚构角色间接表达
  • 比喻可用于提供评估框架,而非让模型扮演角色

4.2. 有效的提示方法

  • "临时工思维实验":把模型想象成一个有知识但缺乏具体背景的临时工
  • 直接用自然语言描述需求,而非追求"完美"的简短指令
  • 提供详细的任务背景和具体场景描述
  • 明确指出异常情况的处理方式(如输出"unsure")

4.3. 常见误区

  • 过度简化提示词
  • 把提示词当作搜索框使用
  • 忽视边缘情况的处理
  • 过分关注互联网上内容出现的频率

核心建议:采用清晰、直接的沟通方式,详细说明任务背景和要求,并明确规定异常情况的处理方法。

五、企业、研究与普通聊天prompt

5.1. 示例使用差异:

  1. 研究场景:专家建议避免过多或过少示例,防止模型过度依赖
  2. 消费者应用:专家倾向使用大量示例以确保可靠性

5.2. 示例选择策略:

  1. 避免使用与实际数据相似的示例
  2. 使用更具说明性的示例(如用儿童故事示例提取信息任务)

5.3. 应用场景差异:

  1. 个人使用:通过迭代获得满意结果即可
  2. 企业级应用:需要考虑大规模使用场景,全面测试各种可能情况

好的提示词在不同应用场景中都能保持其有效性。无论是在个人使用还是处理过程中投入时间,都能获得同样好的效果,只是在最后阶段可能会出现轻微的差异。

六、提高提示词技能的技巧

6.1. 学习方法

  1. 阅读分析:仔细研究高质量提示及其输出
  2. 实践测试:持续与模型互动
  3.  突破边界:尝试完成看似不可能的任务
6.2. 具体建议
  • 让外部人员审查提示以获取新视角
  • 在日常生活中多尝试与AI交互
  • 从新用户视角审视自己的提示
  • 通过构建复杂任务来深入理解模型原理

七、提示词的未来

趋势与核心能力 提示词工程的未来将更注重用户信息的引导和获取,交互模式会更加智能和直观。从目前的“临时工模式”到未来的“设计师顾问”模式,模型将逐渐主动提出问题,更加理解用户需求。

虽然未来模型的智能程度不断提升,提示词的存在形式和交互方式可能会发生改变,但只要有用户与大模型进行交互,提示词的必要性就不会消失。模型提示将从精细化指令转向更高层次的需求理解与表达。尽管形式有所变化,清晰表达和准确理解用户需求的能力始终是关键。

八、关于Thinking Claude提示词的不足

Claude 3.5 sonnet目前并不具备真正意义上的思考链条,高中生涂津豪所设计的提示词中,“Thinking”和最终的答案本质上都是预先规划的一次性输出。(也就是一个完整的答案,用了两种不同的方式划分)虽然提示词的实现上划分了思考和推理,实际上并没有在"Thinking"部分真正推导并逐步调整。

所以可以说在工程上并没有实现真正渐进性的思考,只是在“表演思考”。提示词写得很好,有问题分解,有多维度分析,结构化的引导,但是因为大模型本身的局限,也限制了它的进一步发挥。

过度神化这种提示词并不是一种好的现象,反而可能不利于这位17岁孩子的成长。开源的作品,大家一起探讨,一起去优化,一起成长,在很多最佳实践方面,涂同学比很多人都做得更好了。

一句话总结:涂津豪同学的提示词在引导模型回答时,缺乏逐步推理和实时反馈机制,模型生成的“Thinking”部分看似在进行思考,但实际上只是结果的一部分。虽然回答看起来结构化、有逻辑,但这不代表模型真的经历了一个完整的思维过程。

提示词工程需要将清晰沟通、系统分析与严谨验证结合起来,才能真正实现与AI模型的高效互动。


如果你觉得今天的分享有帮助,记得点赞、收藏并转发,下次找起来更方便哦!

蔡荔谈AI
AI科普 AI培训 超级个体 创业
 最新文章