Introdução à criação de soluções de IA generativas 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 função 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. Desenvolver 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 aprimorarem 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ções internas e muito mais.
- Processamento de Idioma Natural
- Compor ou melhorar a comunicação empresarial 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.
- Resumo, organização e simplificação de grandes volumes 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.
- Tradução de linguagem para aumentar o alcance e acessibilidade do conteúdo.
- Análise de dados
- Analisar mercados e identificar tendências em dados.
- Modele cenários "e se" para ajudar as empresas a planejar 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 ao software no qual suas organizações confiam.
Como você cria esses tipos de aplicativos?
Enquanto o LLM (Large Language Model) faz o trabalho pesado, você cria sistemas que integram, orquestram e monitoram os resultados. Embora haja muito o que 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
- Armazenando e recuperando de armazenamentos de dados
- Integrando entradas e resultados na experiência do usuário
- Criando APIs que podem ser chamadas a partir de LLMs
Dessa forma, o desenvolvimento de soluções de IA generativa se baseia em suas habilidades existentes.
Quais ferramentas e serviços estão disponíveis?
A Microsoft investe no desenvolvimento de ferramentas, serviços, APIs, exemplos e recursos de aprendizado para ajudá-lo ao 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 é garantir que:
- Entender 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 descrevendo 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 aspecto do sistema sozinho com código personalizado ou usar ferramentas low-code / no-code existentes, ou chamar APIs para serviços existentes.
- Entenda 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 seus requisitos, 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 os trade-offs.
Comece com foco na camada de aplicativo
Você não precisa entender tudo sobre os trabalhos 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 o GPT-4, fazendo chamadas de API em serviços hospedados existentes, como a API do Azure OpenAI. Dessa forma, adicionar recursos de IA generativa em um aplicativo existente não é diferente de adicionar qualquer outra funcionalidade com base 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 formação 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 perceber que a maioria do desenvolvimento de aplicativos acontece em uma "camada mais alta na pilha" de pesquisa e tecnologias. Você pode ter alguma compreensão de cada camada, mas provavelmente se especializa na camada de desenvolvimento de aplicativos, com foco em uma linguagem e plataforma de programação específicas (APIs disponíveis, ferramentas, padrões e assim por diante).
O mesmo vale para o campo 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 generativo em sua empresa.
Aqui está uma representação 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 da 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 um software prático que possa aceitar entradas (prompts) e gerar resultados (completações). O processo computacional de compor compleções com base em prompts é conhecido como inferência. Há quem seja responsável por implementar a forma como os neurônios da rede neural preveem 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 elas às vezes são "encapsuladas" por SDKs e disponibilizadas aos desenvolvedores de aplicativos para facilitar o 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 nessas APIs para implementar a funcionalidade de negócios.
Além de solicitar os modelos programaticamente, há padrões e processos surgindo para ajudar as empresas a criar funcionalidades de negócios confiáveis com base em IA generativa. Por exemplo, há padrões surgindo para ajudar as empresas a garantir que o texto, código, imagens e som gerados estejam em conformidade com os padrões éticos e de segurança, bem como com 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 ganhar esse nível de compreensão requer um novo conjunto de habilidades que muitas vezes só estão disponíveis por meio 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 na pilha" (por assim dizer), então você pode querer se concentrar em entender as coisas na camada de aplicativo como:
- Entender APIs e SDKs disponíveis, o que está disponível, o que os vários endpoints produzem, etc.
- Compreender 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 obter os melhores resultados fazendo ou reformulando perguntas.
- Entender onde os gargalos surgem e como escalar uma solução. Entender o que está envolvido no registro ou na obtenção de telemetria sem violar as preocupações de privacidade do cliente.
- Entender as características dos diversos LLMs (seus pontos fortes, casos de uso, quais são os benchmarks e o que eles medem, principais diferenciações 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
Há 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 essenciais, cada um contribuindo para a eficiência, escalabilidade e robustez da solução:
API e SDKs para abordagem centrada em código
No centro 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 o GPT-4.
Product | Descrição |
---|---|
OpenAI do Azure | 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 a IA generativa aos aplicativos da sua organização, você precisa de algum lugar para hospedar e executar essa lógica.
Product | Descrição |
---|---|
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 oferece suporte ao rápido desenvolvimento, implantação e dimensionamento de aplicativos Web, facilitando o gerenciamento dos componentes front-end do sistema. |
Azure Functions | Use computação sem servidor para lidar com tarefas orientadas a eventos no sistema de bate-papo RAG. Por exemplo, use-o para disparar processos de recuperação de dados, processar consultas de usuário 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 criada rapidamente e hospedada de forma confiável por soluções low-code ou no-code.
Product | Descrição |
---|---|
Estúdio de IA do Azure | 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 vetoriais
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.
Product | Descrição |
---|---|
IA do Azure Search | Este serviço pode ser utilizado para uma busca eficiente 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 | Esse 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 idioma e armazenar interações do usuário para análise posterior. |
Cache Redis do Azure | 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 PostgreSQL Servidor Flexível | 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 Web RESTful. Você pode usar literalmente qualquer linguagem de programação moderna para chamar essas APIs. Em muitos casos, há 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 alimentadas por 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. Ele é otimizado para casos de uso interativos, incluindo suporte ao cliente, assistentes pessoais e ambientes de aprendizado interativos. No entanto, ele também é usado para todos os cenários de geração de texto, incluindo resumo, 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 visualização (ou seja, carregar uma imagem e fazer perguntas sobre ela).
- API de moderação: essa 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, detectando automaticamente material ofensivo, inseguro ou inadequado.
- API de incorporação: 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. Ele captura 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 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 aplicativos que exigem 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 nos concentrando em soluções de IA generativa baseadas em texto. Isso abrange cenários como bate-papo, resumo e assim por diante.
Como começar a desenvolver aplicativos 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 construir 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 sempre. No entanto, o Generative não é determinista – você nunca obterá exatamente a mesma resposta duas vezes para um determinado prompt, o que está na raiz de muitos novos desafios. Ao começar, considere as seguintes dicas antes de ir longe demais:
Dica #1: Tenha claro 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 outra coisa? 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 corresponder às expectativas deles, sejam usuários casuais ou especialistas em um campo específico.
Dica #2: Jogue com os pontos fortes dos LLMs.
- Entenda 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, resumo, 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 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 com diferentes prompts para ver como eles afetam a saída. Seja conciso, mas descritivo.
- Confirme 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 suas decisões de design de aplicativo
Aqui está uma pequena lista de coisas a serem consideradas e outras conclusões deste artigo que afetam suas decisões de design de aplicativo:
- Defina o espaço e o público do problema 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 eles atenderem aos requisitos do seu projeto, avaliando o trade-off 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.