A jornada da Shopify na estruturação de dados: de One-Shot LLM para uma arquitetura agêntica baseada em DSPy
(youtube.com)A Shopify migrou de uma abordagem One-Shot LLM para uma arquitetura multiagente especializada baseada em DSPy para converter milhões de dados de e-commerce não estruturados (páginas de lojas, políticas etc.) em dados estruturados. Nesse processo, em vez de modelos grandes no nível do GPT-4/5, a empresa passou a usar modelos Qwen auto-hospedados (na faixa de 32B/72B) e o otimizador Japa do DSPy, alcançando redução de custo em 75 vezes e melhoria de 2 vezes na qualidade da extração de dados. Em especial, o caso mostra que uma estrutura de subagentes especializada para finalidades específicas (detecção de fraude, perfilamento de lojas etc.), em vez de um agente único, foi decisiva para melhorar o desempenho.
Análise aprofundada (Deep Dive)
1. Contexto do problema: a enxurrada de dados não estruturados
A Shopify oferece flexibilidade extrema aos merchants. Isso significa que a estrutura HTML, o idioma e a forma de apresentar políticas variam completamente de uma loja para outra. Mesmo perguntas simples como "Esta loja vende celulares?" ou "Qual é a política de devolução?" eram muito difíceis de responder de forma padronizada em toda a empresa.
2. Evolução da solução
- Etapa 1: One-Shot LLM (abordagem inicial)
- Extraía-se o texto das páginas principais da loja e ele era enviado ao GPT-4 (depois GPT-5) para solicitar a extração do esquema.
- Limitações: por causa do limite da janela de contexto, não era possível enviar todas as páginas (se a página de política de devolução fosse omitida, não havia como responder). À medida que novos campos eram adicionados, o prompt ficava mais frágil (Fragile) e o custo crescia exponencialmente.
- Etapa 2: abordagem agêntica (Agentic) e adoção do DSPy
- Em vez de entregar todos os dados ao LLM, a arquitetura foi alterada para um agente ReAct com 'ferramentas (Browsing, Investigation)' que explora a loja e busca sozinho as informações necessárias.
- Nesse processo, foi adotado o DSPy para tentar uma otimização programática, em vez de ajuste manual de prompts.
- Etapa 3: subagentes especializados (Specialized Sub-Agents)
- Em vez de um único agente executar todos os objetivos (fraude, impostos, perfilamento), a solução foi dividida em três agentes especializados.
- Fraud Agent: usa ferramentas de busca em sites externos de reviews.
- Profile Agent: foca na análise de políticas internas.
- Cada agente é otimizado de forma independente via DSPy, garantindo uma estrutura em que o desempenho pode ser melhorado sem interferência mútua.
3. Solução técnica: Eval Reliability & Snapshotting
Quando agentes rastreiam sites em tempo real, qualquer mudança no conteúdo do site compromete a confiabilidade do conjunto de avaliação (Golden Dataset). Para resolver isso, a Shopify criou um serviço de snapshot chamado 'ShopNap'.
- Congela estaticamente o estado da loja no momento da rotulagem (Frozen context).
- O otimizador do DSPy roda sobre esse snapshot fixo, garantindo avaliação e treinamento reproduzíveis.
4. Arquitetura de infraestrutura
Para um processamento eficiente, a operação é separada em 3 camadas.
- Batch Layer (Flink): gerencia mais de 150 mil solicitações diárias de processamento de lojas.
- Agent Layer (Kubernetes): executa a lógica dos agentes, parsing de HTML e chamadas de ferramentas em um cluster baseado em CPU.
- LLM Layer (GPU Cluster): fornece modelos Qwen auto-hospedados via vLLM etc.
Principais dados e benchmarks
Estes são os números de comparação de desempenho e custo antes e depois da mudança de arquitetura divulgados pela Shopify.
| Item | One-Shot (estimado com GPT-5) | Agentic + DSPy + Qwen |
|---|---|---|
| Custo (Cost) | Referência (alto) | reduzido para 1/75 |
| Qualidade (Quality) | Referência | cerca de 2x (melhoria de 100%) |
| Cobertura de lojas | Parcial (limitada por custo) | todas as lojas (Full Coverage) |
| Escalabilidade | exige revalidação completa ao adicionar novos campos | expansão simples com adição de subagentes |
Principais lições
- Monolithic vs specialized: quanto mais complexa a tarefa, mais vantajosos são subagentes com separação de responsabilidades (Separation of Concerns) do que um agente único [21:59].
- Architecture over Tuning: em vez de corrigir a redação de prompts individuais, definir a arquitetura correta do sistema e aplicar otimização automatizada (DSPy) garante desempenho sustentável [23:24].
- Small Models Win: em tarefas de domínio específico, modelos pequenos e médios otimizados (auto-hospedados) podem superar modelos grandes de uso geral tanto em custo-benefício quanto em desempenho [23:54].
1 comentários
Parece que tenho ouvido falar de DSPy de vez em quando; mais alguém já usou? Fiquei curioso para saber opiniões.