Open Roo Cline Ao definir o provedor de serviços modelo como OpenRouter, você verá as seguintes configurações:
Ele o guiará pelo que são as transformações do OpenRouter. Explicação simples: quando você encontrar um contexto muito longo, ele o ajudará a remover a parte do meio antes de enviá-lo ao modelo.
Explicado em detalhes abaixo OpenRouter e o papel das transformações do meio para fora.
Histórico do problema: limitações de comprimento do contexto do modelo
Em primeiro lugar, você precisa entender um conceito:Limite de comprimento do contexto do modelo.
- Os modelos de linguagem grandes (LLMs) não têm memória ilimitada do diálogo anterior ao processar o texto.
- Cada modelo tem um comprimento máximo de contexto (entendido como uma janela de "memória") além do qual o modelo não consegue se lembrar de entradas anteriores.
- Por exemplo, um modelo pode ter 8k tokens (que é cerca de 6.000 palavras) no contexto. Se você inserir mais de 8 mil tokens de texto, o modelo poderá esquecer a primeira parte do texto, resultando em uma resposta de qualidade inferior.
A solução do OpenRouter: transformações
Para resolver esse problema, o OpenRouter fornece um parâmetro de transformação que permite que você pré-processe os prompts enviados ao modelo para a finalidade principal:
- Trata os prompts que estão fora do comprimento do contexto: Se seus prompts (incluindo o histórico de diálogo) forem muito longos para o comprimento do contexto do modelo, o OpenRouter poderá compactar ou truncar os prompts para que se ajustem às restrições do modelo por meio do parâmetro transforms.
- Manuseio de tacos personalizados: transforms não lida apenas com limites de comprimento, mas pode, no futuro, fornecer mais funcionalidades para trabalhar com dicas, por exemplo:
- Alertas de tradução automática
- Adição de instruções específicas
conversão do meio para fora
middle-out é a única transformação disponível atualmente em transforms:Comprimir ou remover mensagens no meio do prompt para se ajustar ao limite de comprimento do contexto do modelo.
Especificamente, ele funciona da seguinte forma:
- Detecta comprimento excessivo: O middle-out verifica se o comprimento total do seu prompt (ou lista de mensagens) excede o comprimento do contexto do modelo.
- Comprima a seção central: Se for excedido, o middle-out comprimirá ou excluirá preferencialmente a mensagem na parte central do prompt. Isso se baseia na observação de que o LLM tende a prestar mais atenção ao início e ao fim e menos à parte do meio ao processar o texto. Portanto, sacrificar a seção do meio da mensagem geralmente garante a qualidade da resposta do modelo.
- Mantenha a cabeça e a cauda: O meio-termo tentará manter as partes inicial e final do prompt o máximo possível, pois essa parte geralmente contém informações importantes, como:
- instrução primordial
- Entrada de usuário recente
- Reduzir o número de mensagens: Além de comprimir o comprimento, o middle-out também reduz o número de mensagens na lista de mensagens porque alguns modelos (como o Anthropic Claude) Há também um limite para o número de mensagens.
Comportamento padrão e desativação do middle-out
- Ativado por padrão: Se você usar um ponto de extremidade do OpenRouter com um comprimento de contexto menor ou igual a 8k, a conversão do meio para fora será ativada por padrão. Ou seja, se o seu prompt exceder o comprimento do contexto, o OpenRouter o compactará automaticamente para você.
- Explicitamente desativado: Se não quiser que o OpenRouter comprima automaticamente seus prompts, você pode definir transforms: [] no corpo da solicitação para indicar que nenhuma transformação será usada.
Quando usar o middle-out
- A história do diálogo é muito longa: Quando você tem várias rodadas de diálogo, com um histórico acumulado que pode exceder a duração contextual do modelo, o middle-out pode ajudá-lo a manter a coerência do diálogo.
- Comprimento do contexto do modelo menor: Quando você usa um modelo com um comprimento de contexto pequeno, o middle-out permite que você insira um texto mais longo sem fazer com que o modelo "esqueça" a entrada anterior.
- Evite a perda de informações: Embora o middle-out remova algumas informações intermediárias, ele foi projetado com o objetivo de maximizar a retenção de informações importantes e minimizar o impacto da perda de informações.
Quando não usar o middle-out
- Manuseio personalizado: Se desejar ter controle total sobre como os prompts são tratados ou usar um algoritmo de compactação personalizado, você pode optar por não usar o middle-out e, em seguida, tratar o comprimento dos prompts por conta própria.
- É necessário um contexto completo: Há alguns cenários em que o contexto completo pode ser necessário, e a remoção das informações no meio causaria sérios problemas, e pode não ser apropriado usar o middle-out nesse momento.
resumos
O principal objetivo das transformações e do middle-out é:
- Simplificar o tratamento de solicitações de comprimento fora do contextoO gerenciamento manual e o truncamento de prompts evitados permitem que o modelo lide com textos e históricos de diálogo mais longos.
- Aprimoramento da experiência do usuárioEspecialmente para modelos com pequenos comprimentos de contexto, o que facilita para os usuários aproveitarem os recursos do modelo.
- Otimização da qualidade das respostas do modeloRetenha o máximo possível de informações importantes em um contexto de duração limitada para reduzir o esquecimento do modelo.