Artigos

O hype da IA é real, mas pelo motivo errado

TL;DR IA não é inteligente, não pensa, não entende nada e não está prestes a virar um ser super inteligente. A IA generativa consegue transformar caos em dados bem definidos, e isso é enorme! Com LLMs multimodais, qualquer coisa pode virar entrada de um sistema que antes só aceitava tipos de dado específicos e limitados. Não é tão chamativo quanto a conversa sobre um ser super inteligente, mas vai mudar tudo. Bem-vindo à revolução dos dados estruturados.

As origens da estrutura

Nosso mundo é puro caos. É um fluxo infinito de dados não estruturados vindos de todo lado: conversas, imagens, experiências. A história das revoluções tecnológicas é a história de impor estrutura nesse caos. Veja a Revolução Industrial: ela transformou trabalho manual livre em processos definidos. As pessoas deixaram de fabricar produtos inteiros para puxar uma alavanca ou montar uma única peça, repetidamente.

Ilustração de processos estruturados

A internet fez isso de novo. Pegou o jeito bagunçado e orgânico com que as pessoas interagem e transformou em unidades estruturadas: curtidas, comentários, tweets. Remodelou a comunicação humana, reduzindo trocas sociais complexas a métricas e ações predefinidas. A beleza e a utilidade dessa transformação estão na simplicidade, mesmo que ela sacrifique nuance. Ao enquadrar as interações num formato estruturado e previsível, a internet tornou tudo isso programável e escalável.

Exemplo de interações estruturadas na internet

O paradigma do software

Construir software moderno é a mesma ideia: pegar a complexidade do mundo real e martelar até ela caber em casos de uso rígidos e específicos.

O trabalho é mais sobre abstração do que sobre escrever código. Cada funcionalidade de um app ou sistema é uma decisão de recortar uma fatia da realidade e congelar essa fatia em lógica. Por trás de todo botão de “salvar” existe um conjunto de suposições sobre fluxos, tipos de dado e comportamento do usuário. O desafio do desenvolvimento de software moderno é decidir quais partes da realidade modelar e quais ignorar. É essa redução deliberada que torna os sistemas úteis.

exemplo aleatório de diagrama de casos de uso

Mas essa abordagem tem limite. A complexidade do mundo real costuma resistir a esse tipo de redução. Pense em edge cases, inconsistências ou cenários imprevistos, coisas que não encaixam direitinho nas caixinhas predefinidas. A IA estende o alcance do software estruturado em vez de substituí-lo. Ela dá conta do ambíguo e do não estruturado, das partes da realidade que o software tradicional nunca conseguiu domar.

A revolução dos dados estruturados

A revolução que a IA traz expande esses processos já conhecidos em vez de substituí-los. A IA transforma conteúdo não estruturado em dado estruturado e, o que importa tanto quanto, faz o caminho de volta. É a próxima camada em cima do jeito como construímos tecnologia até aqui, e ela alcança lugares que a tecnologia não conseguia tocar antes.

Estou muito otimista com o futuro porque isso derruba a barreira entre “online” e “offline”. Durante décadas gastamos bilhões tentando arrastar empresas e pessoas para o mundo digital. Agora não precisamos mais; a IA faz essa ponte pra gente.

O poder de conectar qualquer coisa ao sistema é grande demais. Isso viabiliza ou escala muito mais casos de negócio.

Novo poder

Vamos pensar em alguns problemas que antes eram impossíveis de escalar ou medir. Foco nos casos em que só uma pessoa consegue entender o contexto, mas agora dá para ter uma pista ou pelo menos priorizar antes de alguém olhar.

  1. Quer medir as métricas das calls? Com a transcrição da reunião, dá para extrair as métricas que importam para a sua empresa.

    
    transcript = <<~TRANSCRIPT
    salesperson: Hi there! ...
    lead: Hello, my name is ...
    salesperson: Nice to meet you, ...
    ...
    TRANSCRIPT
    puts ActiveAI::DataExtractor.call(
      transcript,
      {
        salesperson_demonstrates_active_listening: {
          type: 'Integer',
          max: 10,
          min: 1
        },
        next_clear_step: {
          type: 'String',
          enum: ['Schedule a demo', 'Send a proposal', 'Follow-up in 3 days']
        }
      }
    )
    # { salesperson_demonstrates_active_listening: 8, next_clear_step: "Schedule a demo" }
            
  2. Quer montar um inventário sem ter um sistema? Beleza, tire uma foto todo dia de um papel com as anotações.

    
    inventory_notes = File.open('inventory_notes.jpg')
    markdown = ActiveAI::ImageTranscribe.call(picture)
    puts ActiveAI::DataExtractor.call(
      markdown,
      { quantity_of_apples: { type: 'Integer', min: 0 } }
    ) # => { quantity_of_apples: 3 }
            
  3. Tem um monte de relatórios de 1:1 e precisa ver todos, mas de forma priorizada?

    
    one_on_one_reports = [
      { score: nil, transcript: 'Overall, it\'s been all good...' },
      { score: nil, transcript: 'I noticed that you have been struggling...' },
      { score: nil, transcript: 'Last week I was on the beach...' },
    ]
    criteria = <<~CRITERIA
    Evaluate the internal NPS score based on the one-on-one report.
    Score 10 for positive and promoter employee and 0 for negative and detractor employee.
    CRITERIA
    one_on_one_reports.each_with_index do |report, index|
      one_on_one_reports[index][:score] = ActiveAI::Scorer.call(report, criteria)
    end
    
    prioritized_reports = one_on_one_reports.sort_by { |report| report[:score] }
            
  4. Ordenar uma lista de fretes mostrando primeiro o mais barato ou o mais rápido? Ranking:

    
    shipping_fees = [
      { name: 'Standard', price: 0, days: 5 },
      { name: 'Express', price: 10, days: 2 },
    ]
    criteria = <<~CRITERIA
    Choose the shipping option, act like a real customer and make a fair guess.
    The shipping is for a pen priced at $1.
    CRITERIA
    ranked_items = ActiveAI::EloRanking.call(shipping_fees, criteria)
    puts ranked_items
    # => [{ name: 'Standard', score: 1600 }, { name: 'Express', score: 1000 }]
    
    criteria = <<~CRITERIA
    Choose the shipping option, act like a real customer and make a fair guess.
    The shipping is for a MacBook priced at $1000.
    CRITERIA
    ranked_items = ActiveAI::EloRanking.call(shipping_fees, criteria)
    puts ranked_items
    # => [{ name: 'Express', score: 1580 }, { name: 'Standard', score: 1020 }]
            

Eu poderia continuar com muito mais exemplos, mas acho que você entendeu. A gente ganha um superpoder para trabalhar com o abstrato, criando determinismo onde antes não dava. Claro que não é perfeito e pode alucinar em alguns contextos. Mas isso não deveria ser um problema: o melhor lugar para a IA generativa é justamente onde a resposta não é explícita.

Leia mais sobre extração de dados

Abrace a flexibilidade

A IA vai comer o mundo, não porque é inteligente, mas porque é flexível. Vamos gerar e consumir muito mais dado, vindo de todo lugar, inclusive de mercados offline.

A revolução não é tão glamourosa quanto a mídia costuma pintar. Máquinas autônomas produzindo tudo pra gente soa incrível, mas não é a realidade. O algoritmo transformer que move a IA generativa é, por construção, incapaz de ser “inteligente” ou de estar vivo.

O que ele consegue fazer é gigante: criar dado estruturado a partir de qualquer coisa. Isso já está tendo um impacto enorme na sociedade, e eu acredito que para melhor. Quero fazer parte disso, e é por isso que produzo esse tipo de conteúdo e crio bibliotecas open source para ajudar outros engenheiros.

Bem-vindo à revolução dos dados estruturados!