paint-brush
Vazamento do prompt do sistema Claude Sonnet 3.5: uma análise forensepor@tyingshoelaces
5,809 leituras
5,809 leituras

Vazamento do prompt do sistema Claude Sonnet 3.5: uma análise forense

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

Muito longo; Para ler

Uma análise forense do vazamento imediato do sistema Claude Sonnet 3.5. Os artefatos estão para tarefas de saída estruturadas, como geração de código, assim como a pesquisa vetorial está para o rag, o sistema de pesquisa e recuperação para saída definida.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Vazamento do prompt do sistema Claude Sonnet 3.5: uma análise forense
tyingshoelaces.com HackerNoon profile picture
0-item

Índice

  • Apresentando artefatos

    Um passo à frente na geração de resultados estruturados.


  • Pensamento

    O pensamento lógico é uma parte fundamental do processo de geração.


  • Identificadores e Pesquisa

    A pesquisa e recuperação de artefatos é uma parte fundamental do prompt do sistema.


  • Estrutura de linguagem de modelagem

    Um modelo de renderização que mudará com base nas variáveis de entrada


  • Conclusão

    Um pequeno artefato para Claude, um salto gigante para a IA.


  • Sistema Claude 3.5

    O sistema solicita por completo

Apresentando artefatos

Um passo à frente na geração de resultados estruturados.


Esta é uma análise da geração de prompts do sistema para Claude 3.5 Sonnet. O link para o código desta análise está disponível na parte inferior junto com a fonte. O foco principal desta análise é a introdução do conceito de artefatos e como isso pode funcionar como parte de um sistema inteligente de categorização e recuperação.


“Os artefatos são para conteúdo substancial e independente que os usuários podem modificar ou reutilizar.


Um artefato é uma mudança de paradigma porque formaliza um novo conceito. O conceito de dados persistentes. Dados persistentes são um trampolim para acessarmos uma biblioteca de conteúdo altamente organizada e estruturada. Ao fornecer referências fixas, desbloqueamos a iteração e a capacidade de melhorar e refinar gradativamente a saída. Este é um passo para controlar a natureza efêmera da produção detalhada do LLM.


Um dos problemas inerentes à IA generativa para tarefas funcionais, como a conclusão de código, é que eles geralmente repetem arquivos inteiros para alterações simples. Há uma enorme demanda por um recurso 'diff', onde produzimos a diferença entre o antes e o depois, em vez de repetir o mesmo conteúdo.


Os artefatos servem, portanto, a um propósito duplo; em primeiro lugar, funcionam como um ponto de referência sobre como e onde necessitamos de resultados. É como definir o escopo ou definir um ponto de referência. Isso impedirá que o LLM perca o foco do problema original e também manterá persistente a estrutura e a categorização no resultado.


Como bônus, também temos um recurso de preenchimento automático. Ao definir o código 'base' e o escopo das mudanças, agora direcionamos nosso LLM para focar em uma tarefa ou problema específico, de forma opinativa e com curadoria. Isso impede mudanças erráticas no zoom e também fornece todo o trabalho em andamento ao prompt. Qualquer engenheiro que acidentalmente apagou seu código com "Resto do código aqui" agradece. Podemos ver a configuração do escopo aqui:


“Conteúdo complexo e independente que pode ser entendido por si só, sem contexto da conversa


Estamos direcionando o foco da saída detalhada não controlada para um artefato concreto. Vale ressaltar a instrução explícita para ignorar o contexto da conversa. Este é um método para garantir a qualidade por referência a dados selecionados. É um mecanismo de controle de qualidade que controla as características detalhadas e potencialmente aleatórias da entrada.


Tudo isso se encaixa em uma arquitetura de recuperação. Por ter uma biblioteca profunda de artefatos selecionados, agora podemos direcionar nosso sistema para recuperação de um conjunto de dados controlado. Sabemos que todos os grandes fornecedores de IA estão se concentrando fortemente em investir em dados selecionados de alta qualidade. Os artefatos são um passo para enquadrar a entrada e a saída detalhadas com uma estrutura.


Podemos ver o foco longe da entrada e do mapeamento para a pesquisa definida pelo sistema no prompt. Aqui está um exemplo de alguns dos critérios de exclusão:


“Conteúdo que depende do contexto conversacional atual para ser útil.

Conteúdo que provavelmente não será modificado ou repetido pelo usuário.

Solicitação de usuários que parece ser uma pergunta única.


O prompt concentra-se ativamente no contexto do sistema e na tarefa em questão. O prompt tenta explicitamente filtrar entradas que não são relevantes para uma saída muito específica. Assim, o artefato atua como um ponto de referência concreto tanto no texto gerado quanto como dados estruturados nos bastidores. Isso nos dá uma recuperação e foco rápidos e precisos. Algo que é muito útil para...

Pensamento

O pensamento lógico é uma parte fundamental do processo de geração.


Os engenheiros imediatos há muito nos dizem que uma das chaves para uma produção confiável é obrigar os LLMs a formar um processo de pensamento lógico e estruturado em várias etapas. Vemos o reconhecimento formal disso no prompt.


“1. Brevemente antes de invocar um artefato, pense em uma frase nas tags <antthinking> sobre como ele é avaliado em relação aos critérios para um artefato bom e ruim. Considere se o conteúdo funcionaria bem sem um artefato. Se for digno de artefato, em outra frase determine se é um novo artefato ou uma atualização de um já existente (mais comum). Para atualizações, reutilize o identificador anterior.


Aqui, estamos obrigando nosso sistema a realizar um processo estruturado de várias etapas para analisar a tarefa e o resultado. Novamente, caminhando em direção à definição forte de conteúdo detalhado e aludindo a um sistema de busca e recuperação de artefatos.


“<antthinking>Criar um script Python para calcular fatoriais atende aos critérios para um bom artefato. É um trecho de código independente que pode ser entendido por si só e provavelmente será reutilizado ou modificado. Esta é uma conversa nova, portanto não há artefatos pré-existentes. Portanto, estou criando um novo artefato.</antthinking>


<antthinking>Esta solicitação é uma modificação direta do artefato existente da calculadora fatorial. Não é um artefato novo, mas uma atualização para tornar o script mais robusto. Reutilizarei o identificador da calculadora fatorial para manter a continuidade e mostrar a evolução do nosso código.</antthinking>


Aqui podemos ver a implementação de um processo de pensamento lógico para a geração de resultados definidos. Ao garantir que nosso algoritmo siga as mesmas etapas lógicas, temos as sementes de um processo de geração inteligente e repetível.


Podemos mapear essa lógica para o processo de pensamento de uma pessoa. Em primeiro lugar, temos uma abordagem lógica e racional de resolução de problemas. Complementamos isso com artefatos rígidos. O conjunto de dados LLM é o cérebro, mas os artefatos são as habilidades e o conhecimento que nos permitem chegar a um determinado resultado.


Se imaginarmos todos os modelos concorrentes, podemos deduzir que eles dependem da replicação de processos de pensamento lógico. Estamos essencialmente criando um cérebro robótico para imitar o processo de pensamento lógico de um ser humano. Estamos construindo as partes que faltam, o conhecimento, as estruturas e os processos de recuperação que alimentam o cérebro.


Isso torna os prompts e instruções do sistema ativos incrivelmente valiosos. A compreensão e o refinamento do “pensamento lógico” são uma parte fundamental do processo de geração.


Podemos ver algumas implementações básicas desse pensamento estruturado no código...

Identificadores e Pesquisa

A pesquisa e recuperação de artefatos é uma parte fundamental do prompt do sistema.


“<identificador antartifact="factorial-script" type="application/vnd.ant.code" idioma="python" title="Script fatorial Python simples"> def factorial(n): se n == 0: retorne 1 senão : retornar n * fatorial (n - 1)


Então, o que é application/vnd.ant.code? A aplicação é bastante simples, VND é o fornecedor, ANT será Anthropic (os criadores de Claude) e código; isso é uma visão de sua arquitetura. Eu esperaria algum tipo de taxonomia e dados estruturados que listem as tarefas que as pessoas estão tentando realizar com LLMs.


  1. Tarefas de codificação

  2. Apresentações

  3. Documentos

  4. Análise

  5. Muito mais...


Poderíamos, por exemplo, criar algum pseudocódigo para uma tentativa de apresentação em 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>


É quase certo que isso não se parece em nada com o código de produção, mas é um paradigma mental interessante. Para controlar e estruturar a saída detalhada, temos que encontrar processos lógicos e racionais para categorizar e padronizar a entrada e a saída.


Suspeito que isso significa que, quando as entradas chegam, elas executam algoritmos separados e resistentes à batalha que executam a extração e categorização de entidades. Esses dados estruturados são então executados por meio de um processo de busca e recuperação de ativos. Onde, para texto, utilizamos bancos de dados vetoriais; para outros resultados definidos, introduzimos agora este conceito de artefatos. Por exemplo, uma tarefa React Code poderia ser mais ou menos assim.


 "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')"


Há muita coisa acontecendo e podemos ver o esforço necessário nos bastidores para selecionar exemplos e taxonomias de alta qualidade para o que é essencialmente um conjunto teórico ilimitado de tarefas. Haverá iteração com outros algoritmos de classificação de IA nos bastidores para automatizar isso.


Mas é, em sua essência, até onde podemos ver, um sofisticado sistema de busca e recuperação, baseado em uma linguagem de modelos proprietária.

Estrutura de linguagem de modelagem

Um modelo de renderização que mudará com base nas variáveis de entrada.


Comecei minha carreira há muitos anos como desenvolvedor Drupal. Lendo o prompt, a palavra que me chamou a atenção foi TWIG. Twig é uma linguagem de modelagem HTML comumente usada para renderizar modelos em HTML a partir de PHP. Claude quase certamente usará alguma abordagem equivalente que adapte a entrada e o contexto com base em dados estruturados (provavelmente extraídos fora do LLM).


Parece que Claude Sonnet 3.5 usa algo semelhante, o que faz todo o sentido. Dada a entrada de texto no LLM, precisamos gerar sistematicamente blocos de texto. Estas são as tags dinâmicas reunidas para gerar o prompt.


  1. <antartifact></antartifact>

  2. <artifacts_info><artifacts_info/>

  3. <exemplo></exemplo>

  4. <user_query></user_query>

  5. <example_docstring></example_docstring>

  6. <assistant_response></assistant_response>


Isso alavancará uma espécie de abordagem de chamada de função. Cada tag tem uma finalidade específica. Isso serve então como uma abstração enquanto direcionamos nosso modelo para encontrar a categoria e o tipo corretos para cada finalidade específica. Imagino que a construção imediata seja mais ou menos assim. Pseudocódigo massivamente especulativo chegando…


 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 }


Então, aí está, um processo de pensamento dividido em blocos. Extração de entidades mapeadas com pesquisa e recuperação avançadas. Os blocos de construção para um processo de pensamento lógico. Os dados subjacentes são fundamentais para a qualidade do resultado.

Conclusão

Um pequeno artefato para Claude, um salto gigante para a IA.


Os artefatos estão para a saída estruturada, como a geração de código, o que a pesquisa vetorial está para atrapalhar. É o sistema de busca e recuperação de resultados estruturados.


Vemos evidências de um processo de pensamento estruturado e racional em Claude 3.5. Algo que sempre esperamos que fosse importante na IA Generativa, mas esta é uma prova formal.


Posso imaginar exércitos de desenvolvedores e profissionais de marketing construindo bibliotecas de artefatos selecionados. Esta biblioteca é acessada por meio de tarefas de classificação e, em seguida, de pesquisa e recuperação. Mas o verdadeiro avanço é o conceito de persistência.


Ao trabalhar com artefatos, temos pontos de referência que existem para além do efêmero. Aqueles que podem ser refinados e reutilizados. Já tínhamos uma saída pensada e detalhada. Agora, temos memórias e conhecimentos...

Sistema Cláudio 3.5

O prompt do sistema completo