Skip to content

[TASK] Classificador de complexidade para roteamento de LLMs (planning ou executor) #12

Description

@rmarcacini

Contexto

O custo de execução de agentes baseados em LLMs cresce rapidamente quando todas as tarefas são enviadas diretamente para modelos fortes. Esse problema é ainda mais crítico em agentes de browser e de sistema operacional, pois a execução envolve múltiplas chamadas ao modelo, ações sequenciais, observações visuais ou estruturadas, histórico de navegação, recuperação de erros e, em alguns casos, necessidade de planejamento de longo horizonte.

A literatura recente sobre model cascading e model routing mostra que é possível reduzir custo ao rotear consultas entre modelos fracos e fortes de acordo com dificuldade esperada, qualidade prevista ou risco de erro. Trabalhos como FrugalGPT, RouteLLM e Cascade Routing são referências importantes, mas normalmente assumem tarefas de pergunta e resposta, geração textual ou seleção de modelo por consulta isolada.

Este projeto desloca essa ideia para o cenário de agentes interativos, onde a unidade de roteamento pode ser a tarefa inteira, um passo do agente, uma ação crítica ou uma recuperação após erro.

O objetivo desta tarefa é desenvolver um proxy LLM com um classificador embutido capaz de estimar a complexidade de uma solicitação e rotear a execução para diferentes níveis de agente, modelo ou estratégia de controle. Idealmente, atividades de planning devem ser roteadas para uma LLM de maior capacidade, enquanto outras atividades para LLMs de menor capacidade. O proxy deve funcionar como uma camada intermediária entre o usuário e o agente, recebendo a tarefa, classificando seu nível de complexidade e decidindo se a execução deve usar um agente leve, intermediário ou forte.

Objetivo de pesquisa

Investigar se um proxy LLM com classificador de complexidade pode reduzir custo na execução de agentes de browser e de sistema operacional sem perda significativa de taxa de sucesso.

Questões de pesquisa

  1. Quais características da tarefa são mais úteis para prever complexidade em agentes de browser e OS?
  2. O roteamento baseado apenas na instrução inicial é suficiente ou é necessário observar os primeiros passos do agente?
  3. Um classificador treinado em tarefas sintéticas, como MiniWoB++, transfere para tarefas mais realistas, como WebArena, WorkArena ou OSWorld?
  4. O roteamento por níveis de complexidade reduz custo sem degradar significativamente a taxa de sucesso?
  5. O melhor critério de roteamento é complexidade da tarefa, risco de falha, incerteza do agente, custo esperado ou uma combinação desses fatores?
  6. Quando vale mais a pena usar roteamento direto e quando vale mais a pena usar cascata, começando por um agente barato e escalando apenas em caso de baixa confiança?

Hipótese de pesquisa

Classificador de complexidade consegue reduzir o custo médio de execução de agentes interativos ao enviar tarefas simples para modelos ou políticas mais baratas e reservar modelos fortes para tarefas de maior complexidade, mantendo desempenho próximo ao agente forte usado em todas as tarefas.

Escopo do protótipo

Desenvolver um proxy LLM com os seguintes componentes:

  • API compatível com chamadas de chat completion.
  • Módulo de classificação de complexidade.
  • Módulo de roteamento para diferentes modelos ou agentes.
  • Módulo de logging de prompts, decisões, custos, latência, ações e resultado final.
  • Módulo de avaliação offline sobre benchmarks.
  • Dashboard simples ou relatório tabular com os resultados dos experimentos.

Arquitetura proposta

Entrada do usuário
→ Proxy LLM
→ Extração de features da tarefa
→ Classificador de complexidade
→ Decisor de roteamento
→ Agente leve, intermediário ou forte
→ Execução no ambiente
→ Coleta de métricas
→ Avaliação de sucesso, custo e latência
→ Registro para treinamento e análise

Features candidatas para o classificador

Features da instrução

  • tamanho da instrução;
  • número de verbos de ação;
  • número de entidades mencionadas;
  • presença de múltiplos objetivos;
  • presença de restrições;
  • presença de comparação, busca, navegação, preenchimento, edição ou decisão;
  • ambiguidade lexical;
  • similaridade com tarefas conhecidas;
  • embedding da instrução.

Features do ambiente

  • número de elementos clicáveis;
  • número de campos de formulário;
  • profundidade estimada de navegação;
  • presença de tabelas, menus, abas ou janelas;
  • necessidade de scroll;
  • presença de conteúdo visual;
  • densidade de texto na página ou tela;
  • tipo de aplicação.

Features dos primeiros passos

  • ação inválida;
  • repetição de ação;
  • baixa confiança do agente;
  • mudança pequena no estado após ação;
  • erro de ferramenta;
  • tempo por passo;
  • número de passos já executados;
  • divergência entre plano e execução.

Benchmarks de avaliação

Fase inicial

MiniWoB++ via BrowserGym.

Justificativa:

  • ambiente controlado;
  • tarefas rápidas;
  • boa variedade de padrões de interação;
  • adequado para gerar dados supervisionados de dificuldade;
  • permite rodar muitos experimentos em pouco tempo.

Fase intermediária

WebArena ou WebArena Verified.

Justificativa:

  • tarefas web mais realistas;
  • workflows longos;
  • maior proximidade com uso real;
  • avaliação por sucesso funcional.

Fase aplicada a trabalho de escritório

WorkArena.

Justificativa:

  • tarefas de conhecimento em ambiente empresarial;
  • bom caso para avaliar agentes em fluxos mais próximos de produtividade;
  • útil para medir roteamento em tarefas com múltiplas etapas.

Fase opcional para sistema operacional

OSWorld ou subconjunto simplificado do OSWorld.

Justificativa:

  • tarefas em ambiente de desktop;
  • interação com aplicações reais;
  • permite avaliar se o proxy também funciona fora do browser.

Métricas de avaliação

Métricas principais

  • taxa de sucesso da tarefa;
  • custo total em tokens ou custo monetário estimado;
  • latência total;
  • número médio de chamadas ao LLM;
  • número médio de ações executadas;
  • taxa de escalação para modelo forte;
  • economia relativa em comparação com baseline forte;
  • perda de desempenho em comparação com baseline forte.

Métricas secundárias

  • erro de classificação por nível de complexidade;
  • matriz de confusão do classificador;
  • precisão, recall e F1 por classe de complexidade;
  • calibração da confiança do classificador;
  • custo por tarefa bem-sucedida;
  • latência por tarefa bem-sucedida;
  • número de ações inválidas;
  • número de loops ou repetições;
  • taxa de falha recuperada por escalação.

Subtasks

Preparação teórica

  • Ler FrugalGPT com foco em cascata, custo e seleção de modelos.
  • Ler RouteLLM com foco em roteamento supervisionado por preferência.
  • Ler Cascade Routing com foco em decisão ótima, estimador de qualidade e comparação entre roteamento e cascata.
  • Ler referências sobre BrowserGym, MiniWoB++, WebArena, WorkArena e OSWorld.
  • Produzir uma tabela comparando roteamento, cascata e roteamento adaptativo para agentes.
  • Escrever uma seção curta com a lacuna científica do projeto.

Definição experimental

  • Definir quais modelos serão usados como agente leve, intermediário e forte.
  • Definir quais ambientes serão usados no primeiro ciclo experimental.
  • Definir quais tarefas do MiniWoB++ serão usadas no primeiro conjunto de treino.
  • Definir critério inicial de complexidade das tarefas.
  • Definir formato dos logs de execução.
  • Definir métrica de custo.
  • Definir métrica de sucesso.
  • Definir métrica de latência.
  • Definir métrica de escalação.

Implementação do proxy

  • Criar API mínima do proxy.
  • Criar esquema de entrada e saída compatível com chat completion.
  • Implementar roteador fixo por configuração.
  • Implementar roteador baseado em regra simples.
  • Implementar roteador baseado em classificador.
  • Implementar modo cascata.
  • Implementar logs estruturados por chamada.
  • Implementar logs estruturados por tarefa.
  • Implementar suporte a múltiplos modelos.
  • Implementar suporte a múltiplos agentes.

Classificador de complexidade

  • Criar dataset inicial a partir das tarefas do benchmark.
  • Extrair features textuais da instrução.
  • Extrair embeddings da instrução.
  • Extrair features do ambiente inicial quando disponível.
  • Extrair features da trajetória nos primeiros passos.
  • Treinar baseline com regressão logística ou árvore.
  • Treinar classificador com modelo baseado em embeddings.
  • Comparar classificação em 2 classes e 3 classes.
  • Calibrar limiares de confiança.
  • Avaliar matriz de confusão por tipo de tarefa.

Agentes e execução

  • Integrar agente simples de browser.
  • Integrar agente intermediário de browser.
  • Integrar agente forte de browser.
  • Criar interface comum para os agentes.
  • Implementar limite máximo de passos.
  • Implementar detecção simples de loop.
  • Implementar detecção de ação inválida.
  • Implementar mecanismo de escalação.
  • Registrar trajetória completa da execução.
  • Registrar estado final e sucesso da tarefa.

Avaliação

  • Rodar baseline fraco.
  • Rodar baseline forte.
  • Rodar roteamento por regra fixa.
  • Rodar roteamento por classificador offline.
  • Rodar roteamento adaptativo.
  • Rodar cascata com limiar de qualidade.
  • Comparar taxa de sucesso.
  • Comparar custo total.
  • Comparar latência.
  • Comparar custo por tarefa bem-sucedida.
  • Analisar falhas por tipo de tarefa.
  • Analisar quando o roteador erra.
  • Analisar quando a escalação ajuda.
  • Analisar quando a escalação aumenta custo sem benefício.

Relatório e escrita

  • Escrever introdução do projeto.
  • Escrever revisão de literatura.
  • Escrever metodologia.
  • Escrever descrição da arquitetura.
  • Escrever descrição dos benchmarks.
  • Escrever descrição das métricas.
  • Escrever resultados experimentais.
  • Escrever discussão crítica.
  • Escrever limitações.
  • Escrever próximos passos.
  • Preparar apresentação final.

Cronograma de 3 meses com entregas semanais

Semana 1: revisão e desenho inicial

Entrega:

  • resumo dos artigos principais;
  • definição do problema;
  • primeira versão das questões de pesquisa;
  • desenho inicial da arquitetura.

Atividades:

  • ler FrugalGPT, RouteLLM e Cascade Routing;
  • mapear diferenças entre roteamento, cascata e roteamento adaptativo;
  • definir escopo mínimo do protótipo;
  • escolher primeiro benchmark.

Semana 2: ambiente experimental

Entrega:

  • ambiente rodando com benchmark simples;
  • primeiro script de execução;
  • documentação de instalação.

Atividades:

  • instalar BrowserGym;
  • rodar tarefas simples do MiniWoB++;
  • registrar sucesso, falha, tempo e número de ações;
  • criar estrutura inicial do repositório.

Semana 3: baseline de agente

Entrega:

  • baseline fraco e baseline forte executando no mesmo conjunto de tarefas;
  • tabela inicial de sucesso, custo e latência.

Atividades:

  • definir modelos candidatos;
  • criar interface comum para agentes;
  • rodar subconjunto de tarefas simples, médias e difíceis;
  • salvar logs em formato padronizado.

Semana 4: dataset de complexidade

Entrega:

  • dataset inicial com tarefas rotuladas por complexidade;
  • script de extração de features textuais.

Atividades:

  • criar rótulos iniciais de complexidade;
  • extrair features da instrução;
  • gerar embeddings;
  • criar primeira análise exploratória.

Semana 5: primeiro classificador

Entrega:

  • classificador inicial;
  • matriz de confusão;
  • relatório curto de desempenho.

Atividades:

  • treinar baseline simples;
  • testar classificação binária e ternária;
  • avaliar precisão, recall e F1;
  • identificar tarefas mal classificadas.

Semana 6: proxy funcional

Entrega:

  • proxy LLM executando roteamento por regra e por classificador;
  • logs completos de decisão.

Atividades:

  • implementar API do proxy;
  • conectar proxy aos agentes;
  • implementar roteador por regra;
  • implementar roteador por classificador;
  • registrar decisão, confiança, modelo escolhido e resultado.

Semana 7: avaliação do roteamento offline

Entrega:

  • comparação entre baseline fraco, baseline forte e roteador classificado;
  • primeira tabela de economia de custo.

Atividades:

  • rodar experimentos controlados;
  • comparar custo e sucesso;
  • calcular custo por tarefa bem-sucedida;
  • revisar thresholds do classificador.

Semana 8: roteamento adaptativo e cascata

Entrega:

  • implementação de escalação;
  • comparação entre roteamento direto e cascata.

Atividades:

  • implementar escalonamento por baixa confiança;
  • implementar escalonamento por ação inválida;
  • implementar escalonamento por excesso de passos;
  • comparar roteamento direto com cascata.

Semana 9: análise de erros

Entrega:

  • relatório de falhas;
  • taxonomia de erros do roteador e dos agentes.

Atividades:

  • separar erros de classificação, planejamento, percepção e execução;
  • identificar tarefas em que o classificador subestima complexidade;
  • identificar tarefas em que o classificador superestima complexidade;
  • propor ajustes de features e limiares.

Semana 10: benchmark mais realista

Entrega:

  • experimento piloto em WebArena, WorkArena ou subconjunto equivalente;
  • análise de transferência do classificador.

Atividades:

  • selecionar subconjunto pequeno de tarefas realistas;
  • adaptar scripts de execução;
  • testar se features e classificador transferem;
  • comparar com resultados do MiniWoB++.

Semana 11: consolidação experimental

Entrega:

  • resultados finais;
  • tabelas e gráficos;
  • versão preliminar do relatório.

Atividades:

  • consolidar todos os experimentos;
  • gerar tabelas finais;
  • gerar gráficos de custo, sucesso e latência;
  • escrever metodologia e resultados.

Semana 12: fechamento

Entrega:

  • relatório técnico final;
  • apresentação final;
  • repositório organizado;
  • lista de próximos passos para continuidade científica.

Atividades:

  • revisar código;
  • revisar documentação;
  • revisar relatório;
  • preparar apresentação;
  • registrar limitações;
  • definir possíveis extensões para artigo ou dissertação.

Tabelas mínimas esperadas nos resultados

Tabela 1: comparação dos métodos

Colunas:

  • método;
  • taxa de sucesso;
  • custo médio;
  • latência média;
  • chamadas ao LLM;
  • ações médias;
  • economia contra baseline forte;
  • perda contra baseline forte.

Tabela 2: desempenho por complexidade

Colunas:

  • nível de complexidade;
  • número de tarefas;
  • sucesso do agente fraco;
  • sucesso do agente intermediário;
  • sucesso do agente forte;
  • sucesso do roteador;
  • custo médio do roteador.

Tabela 3: matriz de decisão do roteador

Colunas:

  • classe real;
  • classe prevista;
  • modelo escolhido;
  • sucesso;
  • custo;
  • observação.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions