![Do React ao HTML-First: Microsoft Edge estreia ‘WebUI 2.0’](https://optimuscloud.com.br/wp-content/uploads/2024/05/1717096925_Do-React-ao-HTML-First-Microsoft-Edge-estreia-‘WebUI-20-150x150.jpg)
Do React ao HTML-First: Microsoft Edge estreia ‘WebUI 2.0’
30 de maio de 2024![Como os bancos de dados em nuvem evoluíram para a era da IA](https://optimuscloud.com.br/wp-content/uploads/2024/05/1717109045_Como-os-bancos-de-dados-em-nuvem-evoluiram-para-a-150x150.jpg)
Como os bancos de dados em nuvem evoluíram para a era da IA
30 de maio de 2024Quando trabalhei na agregação de calendários comunitários, não queria apenas resolver o que continua sendo um problema sem solução. Eu também queria ensinar às comunidades como pensar computacionalmente. “Vamos ensinar todos a programar” tornou-se um mantra. Para alguns de nós, isso significava familiarizar pessoas não técnicas com ideias-chave – da ciência da informação e da construção de software – que considerávamos úteis para todos.
Graças à IA, a distinção entre dados e não dados começou a confundir-se.
A ideia que eu mais queria popularizar era a troca sindicalizada de informações estruturadas. O garoto-propaganda desse conceito foi, obviamente, o RSS. Eu pessoalmente mostrei a muitas pessoas como publicar e assinar feeds RSS, então sabia que isso era ensinável. O agregador de calendários da comunidade era apenas RSS para calendários. Exceto, para calendários, havia um sistema mais antigo para troca de informações estruturadas: o padrão RFC 2445 iCalendar publicado em 1998. Google, Microsoft e muitos outros calendários sempre foram capazes de ler e escrever nesse formato. Pensei que, se as pessoas comuns pudessem entender o padrão de publicação/assinatura RSS, eu também poderia mostrar-lhes como os aplicativos de calendário que usavam todos os dias incorporavam o mesmo padrão e permitiriam a agregação flexível de calendários em escala comunitária (ou municipal).
Existem vários motivos pelos quais isso ainda não aconteceu. Mas um dos principais obstáculos parece superável agora. Naquela época, ao apresentar o conceito de agregação de calendário baseado em iCalendar, eu explicaria pacientemente a diferença entre dados e não dados.
Dados eram o que podia ser lido por uma máquina. O feed iCalendar do seu calendário do Google eram dados.
Não-dados era o que as máquinas não conseguiam ler. O pôster do evento que você grampeou em um poste telefônico não é um dado.
“Claro que são dados”, diriam as pessoas. “Podemos ver claramente: sábado, 18 de maio, 10h, centro de Santa Rosa”.
Não. Se um pôster de evento é sua principal forma de promoção, eu disse a eles, você estava fazendo errado. Para serem cidadãos de primeira classe de um ecossistema de calendário, seus eventos tinham que fluir como feeds legíveis por máquina. Os pôsteres dos eventos são coloridos, vibrantes e deliciosamente diferentes uns dos outros. Esta é uma forma de arte urbana, não um sistema de informação.
As pessoas não estavam erradas em esperar o contrário; simplesmente não era possível então. Agora, felizmente, a distinção entre dados e não-dados começou a confundir-se.
O plug-in de extração de conjunto de dados
O plugin envia o esquema junto com as informações do evento não estruturado (como texto ou imagem) para o ChatGPT, que retorna os dados estruturados que o plugin insere no banco de dados.
Confira este pequeno clipe que replica a impressionante demonstração de Simon Willison mostrando como um plugin Datasette apoiado por LLM, dataset-extract, pode converter imagens de pôsteres de eventos em dados estruturados.
Encorajo você a replicar a demonstração completa; é uma revelação. Se você fizer isso, depois de instalar o conjunto de dados, junto com o plug-in de extração de conjunto de dados, certifique-se de iniciar conjunto de dados com o -raiz argumento para que você obtenha o URL autenticado que ativa o botão “Ações do banco de dados” que leva à opção fornecida pelo plug-in para “Criar tabela com dados extraídos de IA”.
Ao ativar essa opção, você será solicitado a definir um esquema para uma nova tabela SQLite, juntamente com dicas opcionais; por exemplo, que data do evento está relacionado ao padrão “AAAA-MM-DD”. Você também pode fornecer instruções como, na demonstração de Simon, para pular eventos somente online. Em seguida, você pode colar o texto copiado da página da web de um evento ou fazer upload de uma imagem de um pôster do evento.
O plugin envia o esquema junto com as informações do evento não estruturado (como texto ou imagem) para o ChatGPT, que retorna os dados estruturados que o plugin insere no banco de dados.
O plugin não está restrito a dados de eventos; você pode definir qualquer tipo de esquema que deseja que o ChatGPT preencha. O código para o extrato de conjunto de dados plugin define uma “ferramenta” que usa “chamada de função” e retorna dados em “argumentos” — três termos que neste contexto não significam o que você espera que signifiquem. A “ferramenta” não é uma função como get_weather neste exemplo.
Veja o código no Gist.
Lá, get_weather é uma função Python real. Porque chamada_função = “automático”a API pode decidir — com base no definição_de_função – que é a função certa para ajudá-lo a responder a uma pergunta sobre o clima. E se for assim, nos convida a chamar a função em seu nome.
O extrato_conjunto de dados plugin significa outra coisa por “função”: uma “ferramenta” desse tipo, chamada extrair_dados. Não existe tal função Python; é mais como uma noção abstrata de função. Os parâmetros — neste caso, o esquema para uma linha de dados a ser inserida em uma tabela SQLite — são descritos de forma semelhante. O código então pede à API para usar essa “ferramenta” abstrata para extrair dados em conformidade com o esquema dos dados de imagem incluídos. É confuso que os dados extraídos apareçam no função.argumentos objeto retornado da API.
Um extrator de eventos simplificado
O exemplo de Simon não apenas faz uso sofisticado da API OpenAI, mas também faz coisas sofisticadas com Python IO assíncrono, não apenas para gerenciar a interação de streaming com OpenAI, mas também para coordenar com o conjunto de dados mecanismo que recebe os dados extraídos.
Quão importante é usar a abordagem da “ferramenta”? Evidentemente não é crítico; aqui está uma alternativa simples que apenas envia o esquema, os dados da imagem e um prompt básico.
Veja o código no Gist.
Parece analisar a imagem igualmente bem e, neste caso, fornece gentilmente a saída no formato iCalendar.
python event.py rose-parade.jpg
Based on the schema provided and the information from the image, here's how the event can be represented in iCalendar format: BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Your Organization//Your Product//EN BEGIN:VEVENT UID:20240518T100000Z-1@yourdomain.com DTSTAMP:20231001T000000Z DTSTART;TZID=America/Los_Angeles:20240518T100000 DTEND;TZID=America/Los_Angeles:20240518T210000 SUMMARY:The Luther Burbank Rose Parade and Festival DESCRIPTION:The Luther Burbank Rose Parade and Festival will take place on May 18, 2024. The parade starts at 10:00 AM, followed by the festival. LOCATION:Downtown Santa Rosa END:VEVENT END:VCALENDAR
Extração de eventos apontar e clicar
Não imaginei uma ferramenta que pudesse não apenas ler datas, horários, títulos e descrições, mas também fazer suposições razoáveis sobre como combinar elementos da foto com o esquema do banco de dados.
Antigamente, o sonho era poder apontar a câmera do celular para o pôster de um evento e transformar a imagem em um registro em um aplicativo de calendário. Envolver o extrator simplificado parecia possível, mas difícil. Mas talvez um GPT personalizado seja suficiente? Com certeza, sim. Aqui está aquele cenário há muito imaginado, agora tornado realidade.
Um detalhe notável: ChatGPT inicia uma instância do Python e falha por qualquer motivo ao carregar o módulo iCalendar, então ele recorre a outra estratégia:
Parece que iCalendário módulo não está disponível. Em vez disso, gerarei o arquivo iCalendar (.ics) manualmente.
Isso foi uma exceção. Geralmente pode carregar iCalendário, mas é fascinante ver esse tipo de resiliência e flexibilidade. Esse não é um cenário que eu já imaginei. Nem imaginei uma ferramenta que pudesse não apenas ler datas, horas, títulos e descrições, mas também fazer suposições razoáveis sobre como combinar os elementos da foto com os espaços RESUMO, DESCRIÇÃO e LOCALIZAÇÃO no esquema. Considere esta imagem.
Aqui está o mapeamento extraído da foto.
SUMMARY:Collages - Artists Reception DESCRIPTION:In the Small Works Gallery. Information and entry forms are at www.santarosaartscenter.org on the Small Works Collage page. LOCATION:Santa Rosa Arts Center, 312 South A Street, Santa Rosa
Você pode fazer escolhas diferentes, mas há disse escolhas que estão sendo feitas aqui, e elas são de fato razoáveis.
Por fim, nunca imaginei que criar e implantar esse pequeno aplicativo prático não exigiria que eu, ou qualquer pessoa, fosse capaz de escrever código, porque uma descrição verbal da saída desejada seria suficiente.
O pensamento computacional ainda é uma forma amplamente relevante de alfabetização digital? Sim, mas talvez não da maneira que imaginamos. Você não deveria precisar saber ou se preocupar com formatos de arquivo e bibliotecas Python para enfrentar um desafio como este. Mas o princípio motivador permanece o mesmo: a informação não estruturada torna-se mais útil quando transformada em dados estruturados. Todos deveriam saber disso e poder orientar os auxiliares das máquinas que farão a transformação.
A postagem Como LLMs podem unir promoção de eventos analógicos e calendários digitais apareceu pela primeira vez em The New Stack.