existir Manus
No início do projeto, a equipe se deparou com uma decisão crítica: treinar um modelo de agente de ponta a ponta com base em modelos de código aberto ou aproveitar os recursos avançados de "aprendizagem contextual" dos modelos de ponta para criar o agente?
Voltando uma década atrás, os desenvolvedores não tinham sequer uma opção no campo do processamento de linguagem natural. Na época em que ele fazia parte do BERT
Na era da tecnologia, qualquer modelo deve ser ajustado e avaliado durante semanas para novas tarefas. Para um aplicativo que busca iterar rapidamente e ainda não encontrou a adequação ao mercado do produto (PMF), esse ciclo de feedback lento pode ser fatal. Essa foi uma lição difícil aprendida na última startup, quando os modelos foram treinados do zero para a extração de informações abertas e a pesquisa semântica, mas como o GPT-3
responder cantando Flan-T5
do surgimento desses modelos de autopesquisa foi eliminado quase da noite para o dia. Ironicamente, foram esses novos modelos que deram início à era da aprendizagem contextual e apontaram o caminho para uma trajetória totalmente nova.
Essa lição fez com que Manus
A escolha fica clara: apostar na engenharia contextual. Isso reduz o ciclo de aprimoramento do produto de semanas para horas e mantém o produto em si "ortogonal" ao desenvolvimento do grande modelo subjacente - se o progresso do modelo é uma maré crescente, então ele é uma maré crescente, e o produto em si é uma maré crescente, e o produto em si é uma maré crescente.Manus
Ser um barco na água, não um poste ancorado no fundo do mar.
Entretanto, a engenharia contextual está longe de ser simples. Ela se assemelha mais a uma ciência experimental.Manus
A estrutura do agente foi completamente reconstruída quatro vezes, cada vez que a equipe descobriu uma maneira melhor de moldar o contexto. Esse processo manual, uma mistura de pesquisa de arquitetura, depuração de palavras-chave e suposições empíricas, foi apelidado pela equipe de Stochastic Graduate Descent (Descida de Graduação Estocástica), que é deselegante, mas eficaz.
Esta publicação compartilhará a solução local ideal que a equipe obteve por meio do "SGD". Se você estiver criando seu próprio agente de IA, esperamos que esses princípios o ajudem a convergir mais rapidamente.
Projetando em torno do cache KV
Se apenas um indicador puder ser selecionado, então KV
A taxa de acerto do cache é, sem dúvida, a métrica mais importante para medir agentes de IA de nível de produção, pois afeta diretamente a latência e o custo. Para entender isso, primeiro você precisa entender como um agente típico opera.
Ao receber a entrada do usuário, o agente conclui a tarefa por meio de uma série de chamadas de ferramentas. Em cada iteração, o modelo seleciona um comportamento de um espaço de ação predefinido com base no contexto atual, que é definido no ambiente (por exemplo, o Manus
da sandbox da VM) é executado na sandbox da VM para produzir uma observação. Posteriormente, o comportamento e a observação são anexados ao contexto e se tornam a entrada para a próxima iteração. Esse loop continua até que a tarefa seja concluída.
É evidente que o contexto aumenta a cada etapa, enquanto a saída - geralmente uma chamada de função estruturada - é relativamente curta. Isso leva a um grave desequilíbrio na proporção de Token de entrada e saída para o agente, em contraste com um chatbot comum. No Manus
A proporção média é de cerca de 100:1.
Felizmente, os contextos com o mesmo prefixo podem aproveitar as vantagens da função KV
Mecanismo de cache.KV
O armazenamento em cache reduz significativamente o tempo de geração do primeiro token (TTFT) e os custos de inferência, armazenando pares de chave-valor computados e reduzindo drasticamente a sobrecarga computacional de processar os mesmos prefixos novamente. Isso representa uma enorme economia de custos, quer você esteja usando um modelo auto-hospedado ou chamando uma API de inferência. Pegue Claude Sonnet
Por exemplo, o custo de um token de entrada armazenado em cache é de US$ 0,30 por milhão de tokens, enquanto o custo de um token não armazenado em cache é de US$ 3 por milhão de tokens, uma diferença de dez vezes.
De uma perspectiva de engenharia contextual, o aprimoramento KV
Há várias práticas importantes a serem seguidas para armazenar os acessos em cache:
1. manter a estabilidade dos prefixos das palavras-chave. Devido à natureza autorregressiva do modelo de linguagem grande, uma diferença em até mesmo um token pode fazer com que todos os caches após esse token sejam invalidados. Um erro comum é incluir registros de data e hora até o segundo no início do prompt do sistema. Embora isso permita que o modelo informe a hora atual, ele também destrói completamente os acessos ao cache.
2. tornar o contexto "aditivo". Evite modificar o comportamento ou as observações anteriores. Além disso, certifique-se de que o processo de serialização seja determinístico. Muitas linguagens de programação e bibliotecas não garantem uma ordem estável de chaves ao serializar objetos JSON, o que pode quebrar silenciosamente o cache.
3. marque explicitamente os pontos de interrupção do cache quando necessário. Alguns fornecedores de modelos ou estruturas de inferência não oferecem suporte ao cache de prefixo incremental automático e exigem a inserção manual de pontos de interrupção de cache no contexto. Ao definir os pontos de interrupção, leve em conta o possível tempo de expiração do cache e, pelo menos, certifique-se de que o ponto de interrupção contenha o final do prompt do sistema.
Além disso, se estiver usando vLLM
etc. modelos auto-hospedados de estrutura, certifique-se de que o cache de prefixo/dica esteja ativado e que as solicitações sejam encaminhadas de forma consistente pelos nós de trabalho distribuídos usando técnicas como IDs de sessão.
Mascarar em vez de remover
À medida que os agentes se tornam cada vez mais capazes, seu espaço comportamental naturalmente se torna cada vez mais complexo e, para ser franco, o número de ferramentas explode. A recente popularidade do Protocolo de Contexto de Modelo (MCP) aumenta o problema. Depois de permitir que os usuários configurem as ferramentas, sempre haverá centenas de ferramentas estranhas e malucas que alguém pode colocar no seu espaço comportamental cuidadosamente selecionado. Como resultado, é mais provável que os modelos escolham a ferramenta errada ou sigam um caminho ineficiente, e um agente fortemente armado se torna "mais burro".
Uma resposta imediata é projetar um espaço comportamental dinâmico, por exemplo, usando algo como RAG
(Retrieval Enhancement Generation), ferramenta de carregamento sob demanda.Manus
Essa abordagem também foi tentada, mas a conclusão dos experimentos é clara: adicionar e remover ferramentas dinamicamente no meio de uma iteração deve ser evitado, a menos que seja absolutamente necessário. Há dois motivos para isso:
1. as definições de ferramentas geralmente estão localizadas na parte frontal do contexto. Na maioria dos grandes modelos de linguagem, as definições de ferramentas são serializadas para seguir imediatamente as dicas do sistema. Portanto, qualquer alteração resultará em todos os comportamentos e observações subsequentes do KV
Invalidação do cache.
2. os modelos podem ser confusos. Os modelos podem se confundir se comportamentos e observações anteriores se referirem a ferramentas que não existem mais no contexto atual. Na ausência de decodificação de restrições, isso geralmente leva a erros de formatação ou ao modelo alucinando chamadas de ferramentas inexistentes.
Para resolver esse problema.Manus
não remove a ferramenta, mas usa uma máquina de estado com reconhecimento de contexto para gerenciar a disponibilidade da ferramenta. Ele impede ou força o modelo a escolher determinadas ações com base no estado atual, mascarando (mascarando) os logits de um determinado token durante a fase de decodificação.
Na prática, a maioria dos fornecedores de modelos e estruturas de inferência oferece suporte a alguma forma de pré-população de resposta, o que permite restringir o espaço comportamental sem modificar a definição da ferramenta. Pegue NousResearch
(usado em uma expressão nominal) Hermes
Como exemplo, geralmente há três modos de chamada de função:
- Automático (Auto): O modelo pode decidir por si mesmo se deve ou não chamar a função. Ao preencher previamente o campo
<|im_start|>assistant
Realização. - Necessário: O modelo deve chamar uma função, mas não há restrição sobre qual delas exatamente chamar. Ao preencher previamente o campo
<|im_start|>assistant<tool_call>
Realização. - Especificado: O modelo deve chamar alguma função no subconjunto especificado. Isso é feito preenchendo previamente o início do nome da função, por exemplo
<|im_start|>assistant<tool_call>{"name": “browser_
.
Usando esse mecanismo, é fácil restringir a seleção de ações mascarando os logits de token. Por exemplo, quando o usuário fornece uma nova entrada, oManus
deve responder imediatamente em vez de executar a ação. A equipe também projetou deliberadamente nomes de ações com prefixos consistentes, por exemplo, todas as ferramentas do navegador começam com browser_
começa com a ferramenta de linha de comando que começa com shell_
start. Isso facilita forçar um agente a selecionar apenas um determinado conjunto de ferramentas em um determinado estado sem precisar usar um manipulador de logits com estado.
Esses projetos garantem que, mesmo com arquiteturas orientadas por modelos, oManus
O ciclo de proxies permanece estável.
Usando o sistema de arquivos como um contexto
Os modelos modernos de linguagem grande de ponta oferecem janelas de contexto de 128K ou até mais longas, mas em cenários de aplicativos de agentes reais isso geralmente não é suficiente e, às vezes, até se torna um fardo. Há três pontos problemáticos principais:
1. as observações podem ser muito grandes. Quando os agentes interagem com dados não estruturados, como páginas da Web, PDFs, etc., é fácil exceder o limite de comprimento do contexto.
2) O desempenho do modelo diminui com o aumento do comprimento do contexto. Mesmo que seja tecnicamente compatível, o desempenho do modelo tende a se degradar além de um determinado comprimento.
3. alto custo de insumos longos. Mesmo com o cache de prefixo, os desenvolvedores ainda precisam pagar pela transmissão e pelo preenchimento prévio de cada token.
Para lidar com esses problemas, muitos sistemas proxy empregam truncamento de contexto ou estratégias de compactação. Mas a compactação excessivamente agressiva leva inevitavelmente à perda de informações. Esse é um problema fundamental: é da natureza de um agente prever seu próximo movimento com base em todos os estados anteriores, e não é possível prever com segurança qual observação dez passos à frente se tornará crítica mais tarde. Logicamente, qualquer compressão irreversível traz riscos.
Portanto.Manus
Pense no sistema de arquivos como o contexto definitivo: ele tem capacidade infinita, é inerentemente persistente e pode ser manipulado diretamente pelos agentes. O modelo aprende a ler e gravar arquivos sob demanda, usando o sistema de arquivos não apenas como armazenamento, mas como memória externa estruturada.
Manus
A estratégia de compactação da Web é sempre projetada para ser recuperável. Por exemplo, o conteúdo da página da Web pode ser descartado do contexto, desde que o URL seja preservado; o conteúdo do documento pode ser omitido, desde que o caminho do arquivo permaneça na sandbox. Isso permite que o Manus
O comprimento do contexto pode ser efetivamente reduzido sem perda permanente de informações.
Um pensamento interessante durante o desenvolvimento desse recurso foi: como um modelo de espaço de estado (SSM) funciona de forma eficiente em um ambiente de agente? Com o Transformer
Ao contrário dos SSMs, os SSMs não têm atenção global e têm dificuldade para lidar com longas dependências de backtracking. Mas se elas conseguirem dominar a memória baseada em arquivos - externalizando o estado de longo prazo em vez de mantê-lo no contexto - sua velocidade e eficiência poderão abrir uma classe totalmente nova de agentes. Nesse ponto, as SSMs com agentes podem se tornar as verdadeiras sucessoras das Máquinas de Turing Neurais.
Manipulação da atenção por meio de "recontagem".
Se você tiver usado Manus
Ao lidar com tarefas complexas, ele tende a criar uma todo.md
documentar e atualizar progressivamente e marcar os itens concluídos à medida que a tarefa avança.
Não se trata apenas de um comportamento antropomórfico, mas de um mecanismo elaborado de manipulação da atenção.
existir Manus
em que uma tarefa típica requer, em média, cerca de 50 chamadas de ferramentas, o que é um ciclo bastante longo. Como Manus
Dependendo de grandes modelos de linguagem para a tomada de decisões, é fácil se desviar ou esquecer os objetivos iniciais em contextos longos ou tarefas complexas.
Ao reescrever constantemente a lista de tarefas, oManus
Isso é equivalente a "reafirmar" a meta principal no final do contexto. Isso leva o plano global à atenção imediata do modelo, evitando efetivamente o problema da "perda no meio do caminho" e reduzindo o desvio de metas. Na verdade, isso usa a linguagem natural para direcionar a atenção do próprio modelo para o objetivo da tarefa, sem nenhuma alteração arquitetônica especial.
Manter um registro de falhas
Os agentes cometem erros. Isso não é uma falha, é um fato. Os modelos de linguagem criam ilusões, os ambientes retornam erros, as ferramentas externas funcionam mal e todos os tipos de casos extremos inesperados são abundantes. Em tarefas de várias etapas, a falha não é a exceção, é parte do ciclo.
No entanto, um impulso comum entre os desenvolvedores é ocultar esses erros: limpar os rastros, tentar novamente a ação ou redefinir o estado do modelo e esperar que um parâmetro mágico de "temperatura" resolva o problema. Isso parece mais seguro e mais controlável, mas tem um custo: ao apagar a falha, você apaga a evidência. Sem evidências, o modelo não pode se adaptar e aprender.
solo Manus
Em nossa experiência, uma das maneiras mais eficazes de melhorar o comportamento do agente é surpreendentemente simples: manter as tentativas incorretas no contexto. Quando o modelo vê uma ação fracassada e a observação ou o rastreamento de pilha resultante, ele atualiza implicitamente suas "crenças" internas, reduzindo assim sua preferência por comportamentos semelhantes e diminuindo a probabilidade de repetir o erro.
De fato, a capacidade de se recuperar de erros é um dos indicadores mais claros da verdadeira inteligência do agente. No entanto, isso ainda é muito subestimado na maioria dos estudos acadêmicos e testes públicos de referência, que tendem a se concentrar apenas no sucesso da tarefa em condições ideais.
Cuidado com a armadilha da "amostra menos"
O "prompting de poucos disparos" é uma técnica comum para melhorar a qualidade do resultado de grandes modelos de linguagem, mas pode ser um tiro pela culatra de maneiras sutis em sistemas de agentes.
Os modelos de linguagem são excelentes imitadores e imitarão padrões de comportamento em seu contexto. Se o seu contexto estiver repleto de pares semelhantes de "comportamento-observação", o modelo tenderá a seguir esse padrão, mesmo que ele não seja mais a melhor opção.
Isso pode ser muito perigoso em tarefas que envolvem decisões ou ações repetitivas. Por exemplo, ao usar Manus
Ao analisar um lote de 20 currículos, os agentes geralmente entram em um ritmo, repetindo ações semelhantes várias vezes simplesmente porque as veem no contexto. Isso pode levar a desvios de comportamento, generalização excessiva e, às vezes, até alucinações.
A solução é aumentar a diversidade.Manus
Um pequeno número de variantes estruturadas foi introduzido nos comportamentos e nas observações, como o uso de diferentes modelos de serialização, redação alternativa e pequenos ruídos na ordem ou no formato. Essa aleatoriedade controlada ajuda a quebrar padrões solidificados e a ajustar a atenção do modelo.
Em outras palavras, não se permita cair em uma dependência de caminho "menos amostra". Quanto mais uniforme for o contexto, mais frágil será o comportamento do agente.
A engenharia contextual ainda é uma ciência emergente, mas, para os sistemas de agentes, ela já é a base do sucesso. Os modelos podem se tornar mais fortes, mais rápidos e mais baratos, mas nenhum aumento na potência bruta pode substituir o design cuidadoso da memória, do contexto e do feedback. A forma como você molda o contexto determina, em última análise, como seu agente age: com que velocidade ele é executado, quão resiliente ele é e até que ponto ele é dimensionado. O futuro do agente será construído a partir de um contexto cuidadosamente projetado após o outro.