paint-brush
Claude Sonnet 3.5 系统提示泄漏:法医分析经过@tyingshoelaces
5,809 讀數
5,809 讀數

Claude Sonnet 3.5 系统提示泄漏:法医分析

经过 tyingshoelaces.com9m2024/06/24
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

对 Claude Sonnet 3.5 系统提示泄漏的取证分析。工件之于结构化输出任务(例如代码生成)就像矢量搜索之于 rag(用于定义输出的搜索和检索系统)。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Claude Sonnet 3.5 系统提示泄漏:法医分析
tyingshoelaces.com HackerNoon profile picture
0-item

目录

  • 介绍 Artifacts

    结构化输出生成向前迈了一步。


  • 思维

    逻辑思维是生成过程的关键部分。


  • 标识符和搜索

    搜索和检索文物是系统提示的关键部分。


  • 模板语言结构

    根据输入变量而变化的渲染模板


  • 结论

    对于克劳德来说,这是一个小小的神器,而对于人工智能来说,这是一次巨大的飞跃。


  • 克劳德3.5系统

    系统提示

介绍 Artifacts

结构化输出生成向前迈了一步。


这是对Claude 3.5 Sonnet 系统提示生成的分析。此分析的代码链接可在底部找到,并附有源代码。此分析的主要重点是引入工件的概念,以及它如何作为智能分类和检索系统的一部分发挥作用。


“工件是指用户可能修改或重复使用的大量、独立的内容。


工件是一种范式转变,因为它形式化了一个新概念。持久数据的概念。持久数据是我们访问高度策划和结构化的内容库的垫脚石。通过提供固定引用,我们解除了迭代的阻碍,并能够逐步改进和完善输出。这是控制冗长的 LLM 输出的短暂性的一步。


生成式人工智能在代码补全等功能性任务中存在的一个固有问题是,它们经常会因为简单的更改而重复整个文件。人们对“差异”功能的需求巨大,我们可以通过此功能输出前后差异,而不是重复相同的内容。


因此,工件具有双重用途;首先,它们充当我们需要输出的方式和位置的参考点。这就像范围的设置或参考点的定义。这将阻止 LLM 失去对原始问题的关注,同时保持输出中的结构和分类的持久性。


作为加分项,我们还提供了自动完成功能。通过定义“基本”代码和更改范围,我们现在已指导我们的 LLM 以有主见和精心策划的方式专注于特定任务或问题。这可以阻止缩放中的不稳定变化,还可以将整个正在进行的工作提供给提示。任何不小心用“其余代码在这里”擦除其代码的工程师都会感谢您。我们可以在此处看到范围的设置:


“独立、复杂的内容,无需对话背景就能理解


我们正在将焦点从不受控制的冗长输出转移到具体的工件上。值得注意的是,明确指示忽略对话的上下文。这是一种通过参考精选数据来确保质量的方法。它是一种质量控制机制,可控制输入的冗长和潜在的随机特性。


所有这些都与检索架构相契合。通过拥有一个深度精选工件库,我们现在可以指导我们的系统从受控数据集中进行检索。我们知道,所有大型人工智能提供商都在大力投资高质量的精选数据。工件是朝着用结构化方式构建详细输入和输出迈出的一步。


我们可以看到焦点从输入转移到提示中的系统定义的研究。以下是一些排除标准的示例:


“依赖当前对话上下文的内容才是有用的。

用户不太可能修改或迭代的内容。

来自用户的请求似乎是一次性的问题。


提示积极关注系统上下文和手头的任务。提示明确尝试过滤与特定输出无关的输入。因此,工件既在生成的文本中充当具体的参考点,又在幕后充当结构化数据。这使我们能够快速准确地检索和集中注意力。这对...非常有帮助。

思维

逻辑思维是生成过程的关键部分。


及时的工程师们一直告诉我们,获得可靠成果的关键之一是强制 LLM 形成一个多步骤、结构化且合乎逻辑的思维过程。我们在提示中看到了对此的正式认可。


“1. 在调用工件之前,先在 <antthinking> 标签中想一句话,看看它如何根据好工件和坏工件的标准进行评估。考虑一下如果没有工件,内容是否也能正常工作。如果它值得工件,再用另一句话确定它是新工件还是对现有工件的更新(最常见)。对于更新,请重用先前的标识符。


在这里,我们强制我们的系统采用结构化的多步骤流程来分析任务和输出。再次,转向对冗长内容的强定义,并暗示用于工件的搜索和检索系统。


“<antthinking>创建一个用于计算阶乘的 Python 脚本符合优秀工件的标准。它是一段独立的代码,可以单独理解,并且很可能被重复使用或修改。这是一个新的对话,因此没有预先存在的工件。因此,我正在创建一个新的工件。</antthinking>


<antthinking>此请求是对现有阶乘计算器工件的直接修改。这不是新工件,而是为了使脚本更加健壮而进行的更新。我将重用阶乘计算器标识符以保持连续性并展示我们代码的演变。</antthinking>


在这里,我们可以看到生成定义输出的逻辑思维过程的实现。通过确保我们的算法经过相同的逻辑步骤,我们拥有了智能且可重复的生成过程的种子。


我们可以将这种逻辑映射到人的思维过程。首先,我们有一个合乎逻辑和理性的解决问题的方法。我们用硬件工件来补充这一点。LLM 数据集是大脑,但工件是使我们能够达到某种输出的技能和知识。


如果我们想象一下所有竞争模型,我们可以得出它们依赖于逻辑思维过程的复制。我们本质上是在创造一个机器人大脑来模仿人类的逻辑思维过程。我们正在构建大脑缺失的部分、知识、结构和检索过程。


这使得系统提示和指令成为极其宝贵的资产。对“逻辑思维”的理解和提炼是生成过程的关键部分。


我们可以在代码中看到这种结构化思维的一些基本实现......

标识符和搜索

搜索和检索文物是系统提示的关键部分。


“<antartifact identifier="factorial-script" type="application/vnd.ant.code" language="python" title="简单的 Python 阶乘脚本"> def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)


那么 application/vnd.ant.code 是什么?Application 很简单,VND 是供应商,ANT 将是 Anthropic(Claude 的创建者)和代码;这是对其架构的洞察。我希望有某种分类法和结构化数据,列出人们试图用 LLM 实现的任务。


  1. 编码任务

  2. 演示文稿

  3. 文件

  4. 分析

  5. 还有很多...


例如,我们可以创建一些伪代码来尝试进行 PowerPoint 演示。

 <antartifact identifier="powerpoint-presentation" type="application/vnd.ant.presentation" purpose="business" title="Simple powerpoint presentation"> Slide 1: Title slide Slide 2: Introduction Slide 3: Problem statement Slide 4: Solution </antartifact>


这几乎肯定与生产代码完全不同,但是一种有趣的思维范式。为了控制和构造冗长的输出,我们必须遇到逻辑和合理的过程来对输入和输出进行分类和标准化。


我怀疑这意味着当输入进来时,它们会运行单独的经过实战考验的算法,这些算法会运行实体提取和分类。然后,这些结构化数据会经过资产搜索和检索过程。对于文本,我们使用矢量数据库;对于其他定义的输出,我们现在引入了工件的概念。例如,React Code 任务可以像这样进行。


 "INPUT: Create a react component for a metrics dashboard", "ENTITY_EXTRACTION: Coding, React, Metrics Dashboard", "ENTITY_SEARCH: Retrieve code artifacts for Metrics Dashboard where type = React", "SYSTEM_PROMPT: create_system_prompt(artifact_id='metrics-dashboard-component', type='application/vnd.ant.code', language='react')"


有很多事情正在进行,我们可以看到幕后需要付出艰苦的努力,才能为理论上无限的任务池挑选出高质量的示例和分类法。幕后将与其他 AI 分类算法进行迭代,以实现自动化。


但就我们所见,它的核心是一个基于专有模板语言的搜索和检索系统。

模板语言结构

根据输入变量而转变的渲染模板。


多年前,我以 Drupal 开发人员的身份开始了自己的职业生涯。阅读提示时,我首先想到的词是 TWIG。Twig 是一种 HTML 模板语言,通常用于从 PHP 渲染 HTML 模板。Claude 几乎肯定会使用某种等效方法,根据结构化数据(可能在 LLM 之外提取)定制输入和上下文。


看起来 Claude Sonnet 3.5 使用了类似的东西,这很有道理。给定 LLM 的文本输入,我们需要系统地生成文本块。这些是组合在一起生成提示的动态标签。


  1. <antartifact></antartifact>

  2. <artifacts_info><artifacts_info/>

  3. <示例> </示例>

  4. <用户查询> </用户查询>

  5. <示例文档字符串></示例文档字符串>

  6. <assistant_response></assistant_response>


这将利用一种函数调用方法。每个标签都有特定的用途。然后,当我们指导模型为每个特定用途找到正确的类别和类型时,这将充当抽象。我想象提示构造是这样的。大量推测性伪代码即将到来……


 function generate_reference() { context=artifact_type, artifact_id, task examples = search_examples_by_type('react', 'hooks', 'current_ids') return structured_data } function generate_system_instruction(structured_data) { <antartifact> <artifacts_info {{ attribute(version, '1.00') }}> <% artifact_introduction %> <% artifact_selection %> <% artifact_elimination %> <% artifact_usage %> <% artifact_instruction {{ type(code, 'data-code') }} {{ type(react, 'data-react') }} %> </ artifacts_info/> <example {{ for react_example in react_code_artifact }}>{react_example }</example> <example_docstring {{ for example_thought_process in curated_artifact_generation_example }}>{example_thought_process }<example_docstring /> <user_query>{sanitized_user_query}</user_query> <assistant_response>{sanitized_user_query}</assistant_response> </antartifact }


所以,我们把思维过程分解成块。实体提取与高级搜索和检索映射。逻辑思维过程的构建块。基础数据是输出质量的关键。

结论

对于克劳德来说,这是一个小小的神器,而对于人工智能来说,这是一次巨大的飞跃。


工件对于结构化输出(例如代码生成)的作用就如同向量搜索对于 rag 的作用一样。它是结构化输出的搜索和检索系统。


我们在 Claude 3.5 中看到了结构化和理性思维过程的证据。我们一直认为这在生成式人工智能中很重要,但这是形式证明。


我可以想象大批开发人员和营销人员建立精心策划的文物库。这个库通过分类、搜索和检索任务来访问。但真正的进步是持久性的概念。


通过使用工件,我们拥有超越短暂存在的参考点。这些参考点可以得到改进和重复使用。我们已经有了思想和详细的输出。现在,我们拥有了记忆和专业知识……

克劳德3.5系统

系统提示完整