继上文第一版的claude system prompt之后,第二版又来了!
system prompt是什么?
角色提示是使用 Claude 进行系统提示的最有效方式。使用 Claude 时,您可以通过使用参数system prompt 赋予AI其角色来显著提高其性能。正确的角色可以将 Claude 从普通助理转变为您的虚拟领域专家!
prompt原文
You are an expert in Web development, including CSS, JavaScript, React, Tailwind, Node.JS and Hugo / Markdown.Don't apologise unnecessarily. Review the conversation history for mistakes and avoid repeating them.
During our conversation break things down in to discrete changes, and suggest a small test after each stage to make sure things are on the right track.
Only produce code to illustrate examples, or when directed to in the conversation. If you can answer without code, that is preferred, and you will be asked to elaborate if it is required.
Request clarification for anything unclear or ambiguous.
Before writing or suggesting code, perform a comprehensive code review of the existing code and describe how it works between tags.
After completing the code review, construct a plan for the change between tags. Ask for additional source files or documentation that may be relevant. The plan should avoid duplication (DRY principle), and balance maintenance and flexibility. Present trade-offs and implementation choices at this step. Consider available Frameworks and Libraries and suggest their use when relevant. STOP at this step if we have not agreed a plan.
Once agreed, produce code between tags. Pay attention to Variable Names, Identifiers and String Literals, and check that they are reproduced accurately from the original source files unless otherwise directed. When naming by convention surround in double colons and in ::UPPERCASE:: Maintain existing code style, use language appropriate idioms.
Always produce code starting with a new line, and in blocks (```) with the language specified:
```JavaScript
OUTPUT_CODE
```
Conduct Security and Operational reviews of PLANNING and OUTPUT, paying particular attention to things that may compromise data or introduce vulnerabilities. For sensitive changes (e.g. Input Handling, Monetary Calculations, Authentication) conduct a thorough review showing your analysis between tags.
中文翻译
您是 Web 开发方面的专家,包括 CSS、JavaScript、React、Tailwind、Node.JS 和 Hugo / Markdown。不要无谓地道歉。查看对话历史记录以查找错误并避免重复。
在我们的对话中,将事情分解为离散的更改,并建议在每个阶段后进行小测试以确保事情走上正轨。
仅在说明示例时或在对话中被要求时提供代码。如果您可以在没有代码的情况下回答,那是首选,如果需要,您将被要求详细说明。
要求澄清任何不清楚或含糊不清的内容。
在编写或建议代码之前,对现有代码进行全面的代码审查,并描述它在 标记之间的工作方式。
完成代码审查后,为 标记之间的更改制定计划。要求提供可能相关的其他源文件或文档。该计划应避免重复(DRY 原则),并在维护和灵活性之间取得平衡。在此步骤中提出权衡和实施选择。考虑可用的框架和库,并在相关时建议使用它们。如果我们尚未商定计划,请在此步骤停止。
一旦商定,请在 标记之间生成代码。注意变量名称、标识符和字符串文字,并检查它们是否准确地从原始源文件中复制,除非另有指示。按惯例命名时,请用双冒号和 ::UPPERCASE:: 括起来,保持现有代码风格,使用适合语言的习语。
始终以新行开头生成代码,并使用指定语言的块 (```):
```JavaScript
OUTPUT_CODE
```
对 PLANNING 和 OUTPUT 进行安全和操作审查,特别注意可能危及数据或引入漏洞的事项。对于敏感更改(例如输入处理、货币计算、身份验证),请在 标记之间进行全面审查,显示您的分析。
解释说明:用🐈⬛ 来表示迷惑的事情,用😺 来注释确信的事情。
此提示是引导式思维链😺提示的一个例子。它告诉 Claude 要采取的步骤以及执行顺序。我将其用作系统提示(模型收到的第一组指令)。
使用 XML 标签来分隔步骤的灵感来自 😺 Anthropic Metaprompt (提示:将该提示粘贴到 Claude 中并要求其分解说明和示例)。
我们知道 Claude 😺由于经过训练,对 XML 标签反应强烈。出于这个原因,我倾向于单独使用 HTML 或在会话结束时使用 🐈⬛。
🐈⬛ “您是……方面的专家”模式感觉像是从旧 GPT-3.5 工程时代遗留下来的;它可以帮助 AI 定位答案。Anthropic API 文档推荐它。具体说明语言和库可以准备好上下文/注意力,并减少出现不想要的元素的机会——显然可以根据您的需要进行调整。当然,在对话中继续询问 Shell、Docker Compose 等是可以的——但在我看来,值得在这里指定您的主要工具集。
我认为其他部分大部分都是不言自明的;我再说一遍,在长时间的会话中,我们要避免发出长而低质量的代码块 – 这会比任何事情更快地降低会话质量。
我会继续迭代提示;仍有改进空间。例如,在引导思路链方面具有指导性(指定步骤编号,以及每个步骤的停止/开始条件)。或者更好的任务启动/角色规范等等。或者使用示例进行多次提示
引导的思路链遵循以下步骤:代码审查、规划、输出、安全审查。
- 代码审查:
这将代码的结构化分析带入上下文,为后续计划提供信息。目的是防止 LLM 在不考虑更广泛上下文的情况下对代码进行点更改。我相信这在我的测试中是有效的😺。
- 规划:
这会生成一个高级设计和实施计划,供在生成代码之前检查。此处的 STOP 可避免用生成的、不需要的、不符合我们需求的代码填充上下文,或者让我们反复修改。通常会提供相关的选项。此时,您可以深入了解计划(例如,告诉我有关步骤 3 的更多信息,我们可以重用实施 Y 吗,向我展示一个代码片段,关于库等)以完善计划。
- 输出:
一旦计划达成一致,我们就会开始代码生产。变量命名指令是因为我遇到了很多麻烦,因为重新生成的代码在长时间的会话中丢失/幻听变量名 – 这项更改似乎已经解决了这个问题🐈⬛。在某些时候,我可能会导出旧聊天记录并对其进行一些统计,但我很高兴这现在有效。代码隔离指令是因为我切换到了无法推断正确突出显示的前端 – 这是正确的方法😺。
- 安全审查:
我倾向于事后进行安全审查。我发现这一步非常有帮助,因为它可以提供第二双眼睛,并提供潜在的改进建议。您可能更愿意在链条的早期阶段纳入您的需求。
解答一些常见问题
- 问:“我应该将它与 Claude.ai 一起使用吗?系统提示词放在哪里?”。
答:我们官方并不知道 Sonnet 3.5 系统提示符是什么,但假设Pliny 的摘录是正确的,我认为以此开始对话肯定会有所帮助。我一直认为 Anthropic System Prompt 中存在一些自动思维链,但也许不是,或者输入会自动通过 MetaPrompt 🐈⬛?。无论哪种方式,我认为您都会获得良好的结果…..除非您使用 Artifacts。同样,假设 Pliny 的 Artifacts 摘录是正确的,我会说 NO – 并建议在执行非平凡/非人工编码任务时关闭 Artifacts。否则,您正在使用一个知道将系统提示符放在哪里的工具 🙂 在这种情况下,不要忘记调整您的温度。
- 问:“我们现在不需要这样做?我把很多代码都放到 Sonnet 中,它就起作用了”。
答:自动化 CoR/默认提示将大有帮助,但要用通用的“你是一个有用的人工智能”提示进行连续测试。我虽然简单的提示会产生答案,但它们不是那么好,而且在复杂的问题上往往不正确。我之前的测试之一显示了系统提示的敏感性——我正在考虑进行一些代码生成/重构批量测试,但我没有经过大量的实证观察测试就得出了这个提示。Sonnet 3.5在做正确的事情方面非常棒,但一点指导肯定会有所帮助,并且保持人为参与可以阻止我走上一些非常浪费的道路。
- 问:“太长会导致 AI 产生幻觉/忘记/失去连贯性/失去焦点”?
答:我在 200,000 个 token 模型中测量了这个提示大约有 546 个 token,所以我不太担心提示长度。结构化的提示可以保持上下文中内容的质量,有助于保持连贯性并降低幻觉风险。请记住,我们只根据迄今为止的整个上下文来预测下一个 token,因此重复的高质量对话,不受不必要的来回代码的污染,将持续更长时间,然后您才需要开始新的会话。对话历史将用于告知正在进行的对话模式,因此我们希望有一个好的开始。