![Como construímos um serviço em nuvem baseado em VectorDB em 6 meses](https://optimuscloud.com.br/wp-content/uploads/2024/03/1709312364_Como-construimos-um-servico-em-nuvem-baseado-em-VectorDB-em-150x150.jpg)
Como construímos um serviço em nuvem baseado em VectorDB em 6 meses
1 de março de 2024![Notícias dos desenvolvedores: equipe Google/Stack Overflow se unem, IA economiza tempo e bun debugs](https://optimuscloud.com.br/wp-content/uploads/2024/03/Noticias-dos-desenvolvedores-equipe-GoogleStack-Overflow-se-unem-IA-economiza-150x150.png)
Notícias dos desenvolvedores: equipe Google/Stack Overflow se unem, IA economiza tempo e bun debugs
2 de março de 2024Expressões regulares (regex) nesta era da IA são uma área interessante, porque certamente a IA pode analisar texto bem o suficiente para tornar a própria ferramenta redundante. O único problema é que, como desenvolvedores, queremos extrair respostas para nossos fluxos de trabalho, e não permanecer em uma solução centrada no usuário, como o OpenAI. Sabemos que os fornecedores de IA vão querer que você permaneça em seu ambiente enquanto buscam monetizar totalmente seu trabalho e serão menos úteis para aqueles que desejam usar IA apenas para uma parte de seu sistema.
Vejamos um problema simples. Quero responder rapidamente a uma pergunta simples sobre viajar em Londres. Quero extrair o ponto de partida e o destino desta frase: “Olá, qual a melhor forma de viajar de Walthamstow para Pimlico?”
Agora, esta não é uma pergunta difícil, e se você colocá-la em uma IA, obterá uma resposta excelente, indo muito além da pergunta, se desejar. É claro que você não receberá nenhuma informação atualizada.
O ChatGPT também pode interrogar a frase quanto ao significado de maneira muito simples:
Claro, a resposta está em texto e este é um serviço direto ao usuário – não se pretende que você intervenha. É importante separar a capacidade de compreender o texto (que é confuso, mesmo que pareça preciso) da capacidade de extrair informações com exatidão de um algoritmo. Eles têm objetivos diferentes – o último é frágil quando usado na vida real. O primeiro não é necessariamente confiável, pois não podemos assumir que a resposta está correta (o mesmo é verdade se eu pedir informações casualmente a um humano).
O que realmente queremos fazer é simplesmente capturar o texto entre as palavras “de” e “para”. Esta é uma solução regex simples:
/from ((A-Z)(a-z)*) to ((A-Z)(a-z)*)/
Usando regex101.com podemos confirmar esta solução:
Podemos ver pelas informações coletadas abaixo que os dois grupos de captura capturaram o ponto de partida e o destino conforme esperado:
Posso então passar isso para o resto do meu sistema, seja ele qual for.
Portanto, supondo que queremos encontrar uma regex semelhante à acima, podemos acessar as várias ferramentas de IA e ver se elas podem ajudar. Mas o que esperamos que a IA nos ofereça em geral?
- Nosso principal interesse é permitir que um usuário gere a expressão regular correta e depois adapte-a em seu próprio código.
- De facto, podemos usar a IA para compreender o sentimento da frase e confirmar que estamos a olhar para direções, através de um ponto de partida e de um destino. Vimos o ChatGPT fazer isso acima.
- O usuário pode aprender expressões regulares rapidamente enquanto trabalha com código.
- Como resultado natural do uso da ferramenta, podemos ver outras possibilidades ou possíveis problemas. As ideias vêm da observação dos efeitos colaterais.
- Também podemos analisar as diferentes maneiras pelas quais esses aplicativos abordam os problemas que pretendem resolver.
O primeiro site que visitei foi regex.ai; obviamente, o nome de domínio me dá a confiança de que viemos ao lugar certo.
Este site tem uma abordagem interessante: eu crio uma frase, adiciono as palavras que quero extrair e o site produz várias tentativas de regex. Vamos usar nosso exemplo de viagem:
Como você pode ver, isolei o ponto de partida e o destino conforme necessário.
Abaixo disso, pressiono o botão executar, espero alguns segundos e obtenho o seguinte:
Agora você pode ver que os quatro agentes diferentes fizeram quatro tentativas diferentes, com a expressão regular no topo da coluna e o resultado abaixo. Como você pode ver, apenas um obteve a resposta correta (os dois grupos de captura do Agente B estão corretos), mas mesmo as falhas são educativas.
Curiosamente, se eu clicar na tentativa do Agente B, recebo este diálogo:
Isso prova que a IA realmente entendeu corretamente o sentimento da frase, embora não tenha entendido bem que Eu destaquei o ponto de partida e o destino. Os outros três agentes têm diferentes compreensões do significado, que são bastante interessantes por si só.
Quão boa foi a tentativa correta? Tecnicamente, era mais preciso do que a minha solução simples, porque usava a palavra limite (o b
no início) e a correspondência de espaço em branco (s
) em vez de apenas um espaço. Como não existem nomes de lugares válidos com apenas uma letra maiúscula, usando (A-Z)(a-z)+
é mais sensato do que (A-Z)(a-z)*
mas isso é menor.
Vamos fazer o mesmo exercício com outro site. RegExGPT parece promissor, embora, ao contrário do Regex.ai, não use grupos de captura como o aplicativo anterior. Ele usa outro método:
Esta é uma mistura bastante inovadora – então em vez de focar na captura, posso perguntar o que quero fazer em inglês, indicando a área a que me refiro. Não só isso, mas também me dá uma solução de código funcional. E funcionou bem:
Em primeiro lugar, ele até nomeou a função “extractRoute”, que é um belo efeito colateral da compreensão do contexto.
Ele também forneceu uma explicação completa para a expressão regular usada:
…e até um exemplo de uso em JavaScript:
Embora a expressão regular em si seja um pouco complexa, o fato de ter explicado completamente o seu raciocínio é muito impressionante. O que complicou um pouco a solução é o grupo não capturador indicado por (?: )
. Como as expressões regulares usam colchetes para dar prioridade a uma expressão e eles são usados para capturar, o grupo que não captura é usado para fazer o primeiro sem a sobrecarga do segundo. O “de” e o “para” não precisam disso, mas o outro uso é interessante.
Enquanto a expressão (w+(?:sw+)*)
parece complexo, o que ele faz é permitir que uma expressão com várias palavras seja capturada, sem errar no grupo de captura. Digamos que em vez de Walthamstow, tivéssemos que viajar de Green Park:
Observe que o espaço em branco em “Green Park” não causou problema, o que aconteceria em outras soluções. Muito bem.
Embora eu não tenha certeza se alguma dessas ferramentas gratuitas tornou o regex necessariamente mais fácil de usar por si só, ambas fizeram um trabalho muito bom ao explorar a área do problema e a solução. Lembro-me de uma daquelas críticas de filmes que só podemos apreciar plenamente depois de ver o filme pela primeira vez. Não é bem a intenção, mas mesmo assim é interessante. E não precisámos de esperar numa estação de metro por um comboio da linha Victoria para chegar ao nosso destino.
A postagem Usando IA para ajudar os desenvolvedores a trabalhar com expressões regulares apareceu pela primeira vez em The New Stack.