Introdução à criação de soluções de IA generativa para desenvolvedores
A IA generativa, habilitada por Large Language Models (LLMs), abre novas e empolgantes possibilidades para desenvolvedores de software e organizações. Serviços como o Azure OpenAI democratizam o desenvolvimento de IA oferecendo APIs fáceis de usar, permitindo que desenvolvedores de qualquer nível de habilidade integrem funcionalidades avançadas de IA em seus aplicativos sem precisar de conhecimento especializado ou exigir que as organizações invistam em hardware.
Como desenvolvedor de aplicativos, você pode ter dificuldades para entender qual papel pode desempenhar e onde se encaixa. Por exemplo, talvez você esteja se perguntando em que nível na "pilha de IA" você deve focar seu aprendizado? Ou você pode se perguntar o que você é capaz de construir dadas as tecnologias existentes?
Para responder a essas perguntas, é importante que você primeiro desenvolva um modelo mental que mapeie como todas as novas terminologias e tecnologias se encaixam no que você já entende. O desenvolvimento de um modelo mental ajuda você a projetar e criar recursos de IA generativa em seus aplicativos. Para esse fim, o objetivo desta série de artigos é mostrar como sua experiência atual de desenvolvimento de software se aplica à IA generativa. Os artigos também fornecem um conjunto de níveis sobre palavras-chave e conceitos à medida que você começa a desenvolver suas primeiras soluções de IA generativa.
O que as empresas esperam alcançar com a IA generativa?
Para entender como sua experiência atual de desenvolvimento de software se aplica à IA generativa, é importante começar entendendo como as empresas pretendem se beneficiar dela.
As empresas veem a IA generativa como um meio de melhorar o envolvimento do cliente, aumentar a eficiência operacional e melhorar a resolução de problemas e a criatividade. A integração da IA generativa em sistemas existentes abre oportunidades para as empresas melhorarem seus ecossistemas de software. Ele pode complementar as funcionalidades tradicionais de software com recursos avançados de IA, como recomendações personalizadas para usuários ou um agente inteligente que pode responder a perguntas específicas da organização ou do produto.
Aqui estão alguns cenários comuns em que a IA generativa pode ajudar as empresas:
- Geração de conteúdo
- Gere texto, código, imagens e som. Isso pode ser útil para marketing, vendas, TI, comunicação interna e muito mais.
- Processamento de Linguagem Natural
- Componha ou melhore as comunicações comerciais através de sugestões ou geração completa de mensagens.
- "Converse com seus dados", ou em outras palavras, permitir que um usuário faça perguntas em uma experiência de bate-papo usando dados armazenados em bancos de dados ou em documentos como base para respostas.
- Sumarização, organização e simplificação de grandes corpos de conteúdo para tornar o conteúdo mais acessível.
- "Pesquisa semântica", ou melhor, permitindo que os usuários pesquisem documentos e dados sem usar correspondências exatas de palavras-chave.
- Traduzir a linguagem para aumentar o alcance e a acessibilidade dos conteúdos.
- Análise de dados
- Analise mercados e identifique tendências nos dados.
- Modele cenários "e se" para ajudar as empresas a planear possíveis mudanças ou desafios em todas as áreas do negócio.
- Analise o código para sugerir melhorias, corrigir bugs e gerar documentação.
Como você pode ver, os desenvolvedores de software têm a oportunidade de aumentar drasticamente seu impacto, integrando aplicativos e funcionalidades de IA generativa no software em que suas organizações confiam.
Como você cria esses tipos de aplicativos?
Enquanto o Large Language Model (LLM) faz o trabalho pesado, você cria sistemas que integram, orquestram e monitoram os resultados. Embora haja muito a aprender, você pode aplicar as habilidades que já conhece:
- Fazer chamadas para APIs usando REST, JSON ou SDKs (Software Development Kits) específicos da linguagem
- Orquestrando chamadas para APIs e executando lógica de negócios
- Armazenamento e recuperação de armazenamentos de dados
- Integração de entradas e resultados na experiência do utilizador
- Criação de APIs que podem ser chamadas a partir de LLMs
Desta forma, o desenvolvimento de soluções de IA generativa baseia-se nas suas competências existentes.
Que ferramentas e serviços estão disponíveis?
A Microsoft investe no desenvolvimento de ferramentas, serviços, APIs, exemplos e recursos de aprendizagem para ajudá-lo a iniciar sua jornada de desenvolvimento de IA generativa. Cada um destaca alguma grande preocupação ou responsabilidade que são necessárias para construir uma solução de IA generativa. Para utilizar um determinado serviço, API ou recurso de forma eficaz, o desafio é certificar-se de que:
- Entende as funções, papéis e responsabilidades típicas em um determinado tipo de recurso de IA generativa? Por exemplo, como discutimos longamente em artigos conceituais que descrevem sistemas de bate-papo baseados em Geração Aumentada de Recuperação (RAG), há muitas responsabilidades arquitetônicas no sistema. É importante que você entenda o domínio do problema e as restrições intimamente antes de projetar um sistema que resolva o problema.
- Entende que as APIs, serviços e ferramentas existem para uma determinada função, função ou responsabilidade? Agora que você entende o domínio do problema e as restrições, você pode optar por criar esse aspeto do sistema você mesmo com código personalizado ou usar ferramentas low-code / no-code existentes, ou chamar APIs para serviços existentes.
- Compreenda as opções, incluindo soluções centradas em código e no-code/low-code. Você poderia construir tudo sozinho, mas isso é um uso eficiente do seu tempo e habilidade? Dependendo de suas necessidades, você geralmente pode costurar uma combinação de tecnologias e abordagens (código, no-code, low-code, ferramentas).
O ponto aqui é que não há uma única maneira certa de criar recursos de IA generativa em seus aplicativos. Existem muitas ferramentas e abordagens. É importante avaliar as compensações.
Comece com foco na camada de aplicativo
Você não precisa entender tudo sobre o trabalho de IA generativa para começar e ser produtivo. Como dito anteriormente, você provavelmente já sabe o suficiente, pois pode usar APIs e aplicar as habilidades existentes.
Por exemplo, você não precisa treinar seu próprio LLM do zero. Treinar um LLM exigiria tempo e recursos que a maioria das empresas não está disposta a comprometer. Em vez disso, você cria com base em modelos básicos pré-treinados existentes, como GPT-4, fazendo chamadas de API em serviços hospedados existentes, como a API OpenAI do Azure. Dessa forma, adicionar recursos generativos de IA em um aplicativo existente não é diferente de adicionar qualquer outra funcionalidade baseada em uma chamada de API.
Pesquisar como os LLMs são treinados ou como eles funcionam pode satisfazer sua curiosidade intelectual, mas realmente entender como os LLMs funcionam requer uma compreensão profunda da ciência de dados e da matemática para apoiá-la. Isso pode incluir cursos de pós-graduação em estatística, probabilidades e teoria da informação.
Se você vem de uma formação em ciência da computação, você pode apreciar que a maioria do desenvolvimento de aplicativos acontece em uma "camada mais alta na pilha" de pesquisa e tecnologias. Você pode ter algum entendimento de cada camada, mas provavelmente se especializa na camada de desenvolvimento de aplicativos, com foco em uma linguagem de programação e plataforma específicas (APIs, ferramentas, padrões e assim por diante disponíveis).
O mesmo se aplica ao domínio da IA. Você pode entender e apreciar a teoria que envolve a construção em cima de LLMs, mas provavelmente concentrará sua atenção na camada de aplicação ou ajudará a implementar padrões ou processos para permitir um esforço de IA generativa em sua empresa.
Aqui está uma representação muito simplificada das camadas de conhecimento necessárias para implementar recursos de IA generativa em um aplicativo novo ou existente:
No nível mais baixo, você tem cientistas de dados que estão fazendo pesquisa de ciência de dados para resolver ou melhorar a IA com base em uma compreensão matemática profunda de estatística, teoria de probabilidade e assim por diante. Uma camada acima, com base na camada fundamental mais baixa, você tem cientistas de dados que implementam conceitos teóricos em LLMs, construindo as redes neurais e treinando os pesos e vieses para fornecer uma peça prática de software que pode aceitar entradas (prompts) e gerar resultados (conclusãos). O processo computacional de compor composições com base em prompts é conhecido como inferência. Há aqueles que são responsáveis por implementar a forma como os neurônios da rede neural predizem a próxima palavra ou pixel a ser gerado.
Dada a quantidade de poder de processamento necessária para treinar modelos e gerar resultados com base em uma entrada, os modelos geralmente são treinados e hospedados em grandes data centers. É possível treinar ou hospedar um modelo em um computador local, mas os resultados geralmente são lentos (sem placas de vídeo GPU dedicadas para ajudar a lidar com a computação necessária para gerar resultados).
Quando hospedado em grandes data centers, o acesso programático a esses modelos é fornecido por meio de APIs REST, e essas às vezes são "encapsuladas" por SDKs e estão disponíveis para desenvolvedores de aplicativos para facilidade de uso. Outras ferramentas podem ajudar a melhorar a experiência do desenvolvedor, fornecendo observabilidade ou outros utilitários. Os desenvolvedores de aplicativos podem fazer chamadas para essas APIs para implementar a funcionalidade de negócios.
Além de avisar os modelos programaticamente, há padrões e processos surgindo para ajudar as empresas a construir funcionalidades de negócios confiáveis com base em IA generativa. Por exemplo, há padrões emergentes para ajudar as empresas a garantir que o texto, o código, as imagens e o som gerados cumpram as normas éticas e de segurança, bem como os compromissos com a privacidade dos dados dos clientes.
Nessa pilha de preocupações ou camadas, se você for um desenvolvedor de aplicativos responsável pela criação de funcionalidades de negócios, é possível ir além da camada de aplicativos para desenvolver e treinar seu próprio LLM. Mas obter este nível de compreensão requer um novo conjunto de competências que, muitas vezes, só estão disponíveis através de um ambiente académico. Se você não pode se comprometer a desenvolver competência em ciência de dados academicamente para ajudar a construir a "próxima camada abaixo na pilha" (por assim dizer), então você pode querer se concentrar em entender coisas na camada de aplicativo como:
- Compreender as APIs e SDKs disponíveis, o que está disponível, o que os vários endpoints produzem, etc.
- Compreender as ferramentas e serviços relacionados para ajudá-lo a criar todos os recursos necessários para uma solução de IA generativa pronta para produção.
- Compreender a engenharia imediata, como alcançar os melhores resultados fazendo ou reformulando perguntas.
- Entender onde os gargalos surgem e como escalar uma solução. Compreender o que está envolvido no registo ou na obtenção de telemetria sem violar as preocupações de privacidade do cliente.
- Compreender as características dos vários LLMs (seus pontos fortes, casos de uso, quais são os benchmarks e o que eles medem, diferenciações chave entre fornecedores e modelos produzidos por cada fornecedor, etc.) para escolher o modelo certo para as necessidades da sua empresa.
- Compreenda os padrões, fluxos de trabalho e processos mais recentes usados para criar recursos de IA generativa eficazes e resilientes em seus aplicativos.
Serviços e ferramentas disponíveis da Microsoft
Existem ferramentas e serviços de IA generativa low-code e no-code disponíveis da Microsoft para ajudá-lo a criar parte ou toda a sua solução. Vários serviços do Azure podem desempenhar funções fundamentais, cada um contribuindo para a eficiência, escalabilidade e robustez da solução:
API e SDKs para abordagem centrada em código
No coração de cada solução de IA generativa está um modelo LLM, e o Azure OpenAI fornece acesso a todos os recursos disponíveis em modelos como GPT-4.
Produto | Description |
---|---|
Azure OpenAI | Um serviço hospedado que fornece acesso a modelos de linguagem poderosos, como GPT-4. Existem várias APIs diferentes que permitem que você execute todas as funções típicas de um LLM, como criar incorporações, criar uma experiência de bate-papo, etc., com acesso total a configurações e ajustes para personalizar os resultados conforme necessário. |
Ambientes de execução
Como você está criando lógica de negócios, lógica de apresentação ou APIs para integrar IA generativa nos aplicativos da sua organização, você precisa de um lugar para hospedar e executar essa lógica.
Produto | Description |
---|---|
Serviço de Aplicativo do Azure (ou um dos vários serviços de nuvem baseados em contêiner) | Esta plataforma pode hospedar as interfaces web ou APIs através das quais os usuários interagem com o sistema de bate-papo RAG. Ele suporta rápido desenvolvimento, implantação e dimensionamento de aplicativos Web, facilitando o gerenciamento dos componentes front-end do sistema. |
Funções do Azure | Use computação sem servidor para lidar com tarefas controladas por eventos dentro do sistema de bate-papo RAG. Por exemplo, use-o para disparar processos de recuperação de dados, processar consultas de usuários ou lidar com tarefas em segundo plano, como sincronização e limpeza de dados. Ele permite uma abordagem mais modular e escalável para construir o back-end do sistema. |
Low-code / No-code
Como alternativa, parte da lógica exigida pela solução pode ser construída rapidamente e hospedada de forma confiável por soluções low-code ou no-code.
Produto | Description |
---|---|
Azure AI Studio | O Azure AI Studio pode ser usado para treinamento, teste e implantação de modelos personalizados de aprendizado de máquina que podem aprimorar o sistema de bate-papo RAG. Por exemplo, use o Azure AI Studio para personalizar a geração de respostas ou melhorar a relevância das informações recuperadas. |
Banco de dados vetorial
Certas soluções de IA generativa podem exigir armazenamento e recuperação de dados usados para aumentar a geração (por exemplo, sistemas de bate-papo baseados em RAG que permitem que os usuários conversem com os dados da sua organização). Nesse caso de uso, você precisa de um armazenamento de dados vetoriais.
Produto | Description |
---|---|
Azure AI Search | Este serviço pode ser utilizado para pesquisar eficientemente através de grandes conjuntos de dados para encontrar informações relevantes que podem ser usadas para informar as respostas geradas pelos modelos de linguagem. É útil para o componente de recuperação de um sistema RAG, garantindo que as respostas geradas sejam tão informativas e contextualmente relevantes quanto possível. |
Cosmos DB | Este serviço de banco de dados multimodelo distribuído globalmente poderia armazenar as grandes quantidades de dados estruturados e não estruturados que o sistema de bate-papo RAG precisa acessar. Seus recursos rápidos de leitura e gravação o tornam ideal para fornecer dados em tempo real ao modelo de linguagem e armazenar interações do usuário para análise posterior. |
Cache do Azure para Redis | Esse armazenamento de dados na memória totalmente gerenciado pode ser usado para armazenar em cache informações acessadas com frequência, reduzindo a latência e melhorando o desempenho do sistema de bate-papo RAG. É especialmente útil para armazenar dados de sessão, preferências do usuário e consultas comuns. |
Banco de Dados do Azure para Servidor Flexível PostgreSQL | Esse serviço de banco de dados gerenciado pode armazenar dados de aplicativos, incluindo logs, perfis de usuário e dados históricos de bate-papo. Sua flexibilidade e escalabilidade suportam as necessidades dinâmicas de um sistema de bate-papo RAG, garantindo que os dados estejam consistentemente disponíveis e seguros. |
Cada um desses serviços do Azure contribui para criar uma arquitetura abrangente, escalável e eficiente para uma solução de IA generativa, permitindo que os desenvolvedores usem o melhor dos recursos de nuvem e tecnologias de IA do Azure.
Desenvolvimento de IA generativa centrada em código com a API OpenAI do Azure
Nesta seção, nos concentramos na API do Azure OpenAI. Como dito anteriormente, você acessa a funcionalidade LLM programaticamente por meio de uma API da Web RESTful. Você pode usar literalmente qualquer linguagem de programação moderna para chamar essas APIs. Em muitos casos, existem SDKs específicos de linguagem ou plataforma que operam como "wrappers" em torno das chamadas de API REST para tornar a experiência mais idiomática.
- Biblioteca de cliente do Azure OpenAI para .NET
- Biblioteca de cliente Azuew OpenAI para Java
- Biblioteca de cliente do Azure OpenAI para JavaScript
- Módulo de cliente do Azure OpenAI para Go
- Python não tem nenhuma biblioteca de cliente específica do Azure. Você usa o pacote OpenAI Python e altera várias opções.
Se um SDK de idioma ou plataforma não estiver disponível, o pior cenário é que você deve fazer chamadas REST diretamente para a API da Web. No entanto, a maioria dos desenvolvedores está familiarizada com como chamar APIs da Web.
O Azure OpenAI oferece uma variedade de APIs projetadas para facilitar diferentes tipos de tarefas baseadas em IA, permitindo que os desenvolvedores integrem funcionalidades avançadas de IA em seus aplicativos. Aqui está uma visão geral das principais APIs disponíveis no OpenAI:
- API de conclusão de bate-papo: esta API é focada em cenários de geração de texto, incluindo recursos de conversação, permitindo a criação de chatbots e assistentes virtuais que podem se envolver em diálogos naturais semelhantes aos humanos. É otimizado para casos de uso interativos, incluindo suporte ao cliente, assistentes pessoais e ambientes de aprendizagem interativos. No entanto, ele também é usado para todos os cenários de geração de texto, incluindo sumarização, preenchimento automático, escrita de documentos, análise de texto, tradução e assim por diante. É o ponto de entrada para os recursos de visão atualmente em pré-visualização (ou seja, carregar uma imagem e fazer perguntas sobre ela).
- API de moderação: esta API foi projetada para ajudar os desenvolvedores a identificar e filtrar conteúdo potencialmente prejudicial no texto, fornecendo uma ferramenta para garantir interações mais seguras do usuário ao detetar automaticamente material ofensivo, inseguro ou inadequado.
- API de incorporações: a API de incorporações gera representações vetoriais de entradas de texto, convertendo palavras, frases ou parágrafos em vetores de alta dimensão. Essas incorporações podem ser usadas para pesquisa semântica, clustering, análise de similaridade de conteúdo e muito mais. Capta o significado subjacente e as relações semânticas no texto.
- API de geração de imagens: esta API permite gerar imagens e arte originais e de alta qualidade a partir de descrições textuais. É baseado no DALL da OpenAI· Modelo E, que pode criar imagens que correspondem a uma grande variedade de estilos e assuntos com base nos prompts que recebe.
- API de áudio: Esta API fornece acesso ao modelo de áudio da OpenAI, projetado para reconhecimento automático de fala. Pode transcrever a linguagem falada em texto, ou texto em fala, suportando várias línguas e dialetos. É útil para aplicações que requerem comandos de voz, transcrição de conteúdo de áudio e muito mais.
Embora a IA generativa possa ser usada para trabalhar com muitas modalidades diferentes de mídia, passamos o restante deste artigo focando em soluções de IA generativa baseadas em texto. Isso abrange cenários como bate-papo, sumarização e assim por diante.
Como começar a desenvolver aplicações com IA generativa
Os desenvolvedores de software que são novos em uma linguagem, API ou tecnologia desconhecida geralmente começam a aprendê-la seguindo tutoriais ou módulos de treinamento para criar pequenos aplicativos. Alguns desenvolvedores de software preferem adotar uma abordagem autoguiada e criar pequenos aplicativos experimentais. Ambas as abordagens são válidas e úteis.
À medida que você começa, é melhor começar pequeno, prometer pouco, iterar e construir sua compreensão e habilidade, já que desenvolver com IA generativa apresenta desafios únicos. Por exemplo, no desenvolvimento de software tradicional, você pode confiar na saída determinística – para qualquer conjunto de entradas, você pode esperar exatamente a mesma saída todas as vezes. No entanto, Generative é não-determinista – você nunca obterá exatamente a mesma resposta duas vezes para um determinado prompt, que está na raiz de muitos novos desafios. Ao começar, considere as seguintes dicas antes de ir longe demais:
Dica #1: Fique claro sobre o que você está tentando alcançar.
- Seja específico sobre o problema que você está tentando resolver: a IA generativa pode resolver uma ampla gama de problemas, mas o sucesso vem da definição clara do problema específico que você pretende resolver. Você está tentando gerar texto, imagens, código ou algo mais? Quanto mais específico você for, melhor poderá adaptar a IA para atender às suas necessidades.
- Entenda seu público: conhecer seu público ajuda a adaptar a produção da IA para atender às suas expectativas, sejam usuários casuais ou especialistas em um campo específico.
Dica #2: Jogue com os pontos fortes dos LLMs.
- Compreender as limitações e vieses dos LLMs: Embora os LLMs sejam poderosos, eles têm limitações e vieses inerentes. Conhecer as limitações e vieses pode ajudá-lo a projetar em torno deles ou incorporar mitigações.
- Entenda onde os LLMs se destacam: os LLMs se destacam em tarefas como criação de conteúdo, sumarização, tradução de idiomas e assim por diante. Embora suas capacidades de tomada de decisão e capacidades discriminativas estejam ficando mais fortes a cada nova versão, pode haver outros tipos de IA que são mais apropriados para o seu cenário ou caso de uso. Escolha a ferramenta certa para o trabalho.
Dica #3: Os melhores resultados começam com bons prompts.
- Aprenda as melhores práticas de engenharia imediata: Criar prompts eficazes é uma arte. Experimente diferentes prompts para ver como eles afetam a saída. Seja conciso, mas descritivo.
- Comprometa-se com o refinamento iterativo: muitas vezes, o primeiro prompt pode não produzir o resultado desejado. É um processo de tentativa e erro. Use as saídas para refinar ainda mais seus prompts.
Crie sua primeira solução de IA generativa
Se você quiser começar a experimentar a criação de uma solução de IA generativa imediatamente, recomendamos dar uma olhada em Introdução ao bate-papo usando sua própria amostra de dados para Python. Há versões do tutorial também disponíveis em .NET, Java e JavaScript.
Considerações finais que podem influenciar as decisões de design do aplicativo
Aqui está uma pequena lista de coisas a considerar e outras conclusões deste artigo que afetam suas decisões de design de aplicativo:
- Defina o espaço do problema e o público claramente para alinhar os recursos da IA com as expectativas do usuário, otimizando a eficácia da solução para o caso de uso pretendido.
- Use plataformas low-code/no-code para prototipagem e desenvolvimento rápidos se atenderem aos requisitos do seu projeto, avaliando o compromisso entre velocidade de desenvolvimento e personalização. Explore as possibilidades de soluções low-code e no-code para partes do seu aplicativo para acelerar o desenvolvimento e permitir que membros não técnicos da equipe contribuam para o projeto.