Soluções de IA generativa para desenvolvedores
A IA generativa, habilitada por LLMs (grandes modelos de linguagem), abre novas possibilidades interessantes para desenvolvedores e organizações de software. Serviços como o Serviço OpenAI do Azure tornam o desenvolvimento de IA acessível com APIs fáceis de usar. Os desenvolvedores em todos os níveis de habilidade podem integrar a funcionalidade avançada de IA em seus aplicativos sem conhecimento especializado ou investimento em hardware.
Como desenvolvedor de aplicativos, talvez você queira entender qual função você pode desempenhar e onde você se encaixa. Por exemplo, talvez você se pergunte em que nível na "pilha de IA" concentrar seu aprendizado. Ou você pode se perguntar o que é capaz de construir com as tecnologias existentes.
Para responder a essas perguntas, é importante que você primeiro desenvolva um modelo mental que mapeie como 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.
Em uma série de artigos, mostramos como sua experiência atual de desenvolvimento de software se aplica à IA generativa. Os artigos também definem uma base de palavras-chave e conceitos para criar à medida que você começa a desenvolver suas primeiras soluções de IA generativas.
Como as empresas se beneficiam do uso da IA gerativa
Para entender como sua experiência atual de desenvolvimento de software se aplica à IA generativa, é importante entender como as empresas pretendem se beneficiar do uso da IA generativa.
As empresas veem a IA generativa como um meio de melhorar o envolvimento do cliente, aumentar a eficiência operacional e aprimorar a resolução de problemas e a criatividade. A integração da IA generativa aos sistemas existentes abre oportunidades para as empresas aprimorarem seus ecossistemas de software. Ele pode complementar as funcionalidades de software tradicionais com funcionalidades avançadas de IA, como recomendações personalizadas para usuários ou um agente inteligente que pode responder perguntas específicas sobre uma organização ou seus produtos ou serviços.
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. Esse cenário pode ser útil para marketing, vendas, TI, comunicações internas e muito mais.
Processamento de linguagem natural:
- Componha ou melhore as comunicações comerciais por meio de sugestões ou geração completa de mensagens.
- Use "chat com seus dados". Ou seja, permitir que um usuário faça perguntas em uma experiência de chat usando dados armazenados nos bancos de dados ou documentos da organização como base para respostas.
- Resumo, organização e simplificação de grandes corpos de conteúdo para tornar o conteúdo mais acessível.
- Use a pesquisa semântica. Ou seja, permitir que os usuários pesquisem documentos e dados sem usar correspondências exatas de palavra-chave.
- Traduza o idioma para aumentar o alcance e a acessibilidade do conteúdo.
Análise de dados:
- Analise mercados e identifique tendências nos dados.
- Modele cenários hipotéticos 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.
Um desenvolvedor de software tem a oportunidade de aumentar drasticamente seu impacto integrando aplicativos de IA generativos e funcionalidade no software em que sua organização depende.
Como criar aplicativos de IA generativos
Embora a LLM faça o trabalho pesado, você cria sistemas que integram, orquestram e monitoram os resultados. Há muito o que aprender, mas você pode aplicar as habilidades que já tem, incluindo como:
- Fazer chamadas para APIs usando REST, JSON ou SDKs (kits de desenvolvimento de software) específicos de linguagem.
- Orquestrar chamadas para APIs e executar lógica de negócios
- Armazenar e recuperar de armazenamentos de dados
- Integrar entrada e resultados à experiência do usuário
- Criar APIs que podem ser chamadas pelas LLMs
O desenvolvimento de soluções de IA geradoras baseia-se em suas habilidades existentes.
Ferramentas e serviços para desenvolvedores
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 uma grande preocupação ou responsabilidade necessária para construir uma solução de IA generativa. Para usar um determinado serviço, API ou recurso efetivamente, o desafio é garantir que você:
- Entenda as funções, os papéis e as responsabilidades típicas em um determinado tipo de recurso de IA generativo. Por exemplo, conforme discutimos longamente em artigos conceituais que descrevem sistemas de chat baseados em RAG (geração aumentada de recuperação), há muitas responsabilidades arquitetônicas no sistema. É importante que você entenda o domínio do problema e as restrições intimamente antes de criar um sistema que resolva o problema.
- Entenda as APIs, os serviços e as ferramentas existentes para uma determinada função, função ou responsabilidade. Agora que você entende o domínio e as restrições do problema, pode optar por criar esse aspecto do sistema por conta própria usando código personalizado ou ferramentas de baixo código/sem código existentes ou pode chamar APIs para serviços existentes.
- Entenda as opções, incluindo soluções focadas em código e soluções sem código e de pouco código. Você pode construir tudo por conta própria, mas isso é um uso eficiente de seu tempo e habilidades? Dependendo de seus requisitos, geralmente você pode unir uma combinação de tecnologias e abordagens (código, sem código, low-code, ferramentas).
Não há uma única maneira correta de criar recursos de IA generativos em seus aplicativos. Você pode escolher entre muitas ferramentas e abordagens. É importante avaliar as compensações de cada uma delas.
Comece com a camada de aplicativo
Você não precisa entender tudo sobre como a IA gerativa funciona para começar e ser produtiva. Como indicado anteriormente, você provavelmente já sabe o suficiente. Você pode usar APIs e aplicar habilidades existentes para começar.
Por exemplo, você não precisa treinar seu próprio LLM do zero. O treinamento de uma LLM requer tempo e recursos que a maioria das empresas não está disposta a investir. Em vez disso, baseize-se em modelos fundamentais pré-treinados existentes, como GPT-4, fazendo chamadas à API em serviços hospedados existentes, como a API openai do Azure. Adicionar recursos de IA generativos a um aplicativo existente não é diferente de adicionar qualquer outra funcionalidade com base em uma chamada à API.
Pesquisar como as LLMs são treinadas ou como elas funcionam pode satisfazer sua curiosidade intelectual, mas entender completamente como uma LLM funciona requer uma compreensão profunda da ciência de dados e da formação matemática que a suporta. Obter esse entendimento pode incluir cursos de nível de pós-graduação sobre estatísticas, probabilidades e teoria da informação.
Se você tiver uma experiência em ciência da computação, poderá apreciar que a maioria do desenvolvimento de aplicativos ocorre em uma camada mais alta na "pilha" de pesquisa e tecnologias. Você pode ter alguma compreensão de cada camada, mas provavelmente é especialista na camada de desenvolvimento de aplicativos, com foco em uma linguagem e plataforma de programação específicas, como APIs disponíveis, ferramentas e padrões.
O mesmo vale para o campo da IA. Você pode entender e apreciar a teoria que se baseia em LLMs, mas provavelmente concentrará sua atenção na camada de aplicativos ou ajudará a implementar padrões ou processos para habilitar 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 generativos em um aplicativo novo ou existente:
No nível mais baixo, os cientistas de dados estão fazendo pesquisas de ciência de dados para resolver ou melhorar a IA com base em uma profunda compreensão matemática das estatísticas, da teoria da probabilidade e assim por diante.
Uma camada acima, com base na camada fundamental mais baixa, os cientistas de dados implementam conceitos teóricos em LLMs, criando as redes neurais e treinando os pesos e preconceitos para fornecer uma parte prática de software que pode aceitar entradas (solicitações) e gerar resultados (conclusões). O processo computacional de composição de conclusões com base em prompts é chamado de inferência. Os cientistas de dados determinam como os neurônios da rede neural preveem a próxima palavra ou pixel a ser gerado.
Considerando a quantidade de energia de processamento necessária para treinar modelos e gerar resultados com base em uma entrada, os modelos geralmente são treinados e hospedados em datacenters grandes. É possível treinar ou hospedar um modelo em um computador local, mas os resultados geralmente são lentos. A velocidade e a eficiência vêm com placas de vídeo de GPU dedicadas que ajudam a lidar com a computação necessária para gerar resultados.
Quando hospedado em datacenters grandes, o acesso programático a esses modelos é fornecido por meio de APIs REST. Às vezes, as APIs são "encapsuladas" por SDKs e estão disponíveis para 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 para essas APIs para implementar a funcionalidade de negócios.
Além de solicitar os modelos programaticamente, padrões e processos estão surgindo para ajudar as organizações a criar funcionalidades de negócios confiáveis com base na IA generativa. Por exemplo, padrões são emergentes que ajudam as empresas a garantir que o texto, o código, as imagens e o som gerados estejam em conformidade com os padrões éticos e de segurança e com compromissos com a privacidade dos dados do cliente.
Nesta pilha de preocupações ou camadas, se você for um desenvolvedor de aplicações responsável pela criação de funcionalidades de negócios, é possível avançar além da camada de aplicação para desenvolver e treinar sua própria LLM. Mas esse nível de compreensão requer um novo conjunto de habilidades que muitas vezes é desenvolvido apenas por meio da educação avançada.
Se você não conseguir se comprometer a desenvolver competência em ciência de dados academicamente para ajudar a criar a próxima camada abaixo na pilha, poderá se concentrar em desenvolver seu conhecimento sobre tópicos da camada de aplicativos:
- APIs e SDKs: o que está disponível e o que os vários pontos de extremidade produzem.
- Ferramentas e serviços relacionados para ajudá-lo a criar todos os recursos necessários para uma solução de IA geradora pronta para produção.
- Engenharia de prompts: como obter os melhores resultados formulando ou reformulando perguntas.
- Onde surgem gargalos e como dimensionar uma solução. Essa área inclui entender o que está envolvido no registro ou na obtenção de telemetria sem violar as preocupações dos clientes com privacidade.
- As características das várias LLMs: seus pontos fortes, casos de uso, parâmetros de comparação e o que eles medem e diferenciações fundamentais entre fornecedores e modelos produzidos por cada fornecedor. Essas informações ajudam você a escolher o modelo certo para as necessidades da sua organização.
- Os padrões, fluxos de trabalho e processos mais recentes que você pode usar para criar recursos de IA geradores eficazes e resilientes em seus aplicativos.
Ferramentas e serviços da Microsoft
Você pode usar ferramentas e serviços de IA geradoras de baixo código e sem código da Microsoft para ajudá-lo a criar algumas ou todas as suas soluções. Vários serviços do Azure podem desempenhar funções fundamentais. Cada um contribui para a eficiência, escalabilidade e robustez da solução.
API e SDKs para uma abordagem centrada em código
No centro de cada solução de IA generativa está um modelo LLM. O Azure OpenAI fornece acesso a todos os recursos disponíveis em modelos como GPT-4.
Product | Descrição |
---|---|
OpenAI do Azure | Um serviço hospedado que fornece acesso a modelos de linguagem poderosos como GPT-4. Você pode usar várias APIs para executar todas as funções típicas de uma LLM, incluindo a criação de inserções e a criação de uma experiência de chat. Você tem acesso total às configurações e personalizações para obter os resultados desejados. |
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 um serviço 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) | Essa plataforma pode hospedar interfaces web ou APIs por meio das quais os usuários interagem com o sistema de chat RAG. Ele dá suporte ao desenvolvimento rápido, implantação e dimensionamento de aplicativos Web, portanto, é mais fácil gerenciar os componentes front-end do sistema. |
Azure Functions | Use a computação sem servidor para lidar com tarefas controladas por eventos no sistema de chat RAG. Por exemplo, use-o para acionar 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 escalonável para criar o back-end do sistema. |
Soluções de baixo código e sem código
Parte da lógica de que você precisa para implementar sua visão de IA gerativa pode ser criada rapidamente e ser hospedada de forma confiável usando uma solução de baixo código ou sem código.
Product | Descrição |
---|---|
Foundry de IA do Azure | Você pode usar o Azure AI Foundry para treinar, testar e implantar modelos personalizados de machine learning para aprimorar um sistema de chat RAG. Por exemplo, use o Azure AI Foundry para personalizar a geração de resposta ou melhorar a relevância das informações recuperadas. |
Banco de dados vetoriais
Algumas soluções de IA generativas podem exigir armazenamento e recuperação de dados usados para aumentar a geração. Um exemplo é um sistema de chat baseado em RAG que permite 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 |
---|---|
Azure AI Search | Você pode usar esse serviço para pesquisar com eficiência grandes conjuntos de dados para encontrar informações relevantes que informem as respostas geradas pelo modelo de linguagem. É útil para o componente de recuperação de um sistema RAG, portanto, as respostas geradas são tão informativas e contextualmente relevantes quanto possível. |
Azure Cosmos DB | Esse serviço de banco de dados multimodelo distribuído globalmente pode armazenar as grandes quantidades de dados estruturados e não estruturados que o sistema de chat RAG precisa acessar. Seus recursos rápidos de leitura e gravação o tornam ideal para fornecer dados em tempo real para o modelo de linguagem e para 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 chat 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 do aplicativo, incluindo logs, perfis de usuário e dados históricos de chat. Sua flexibilidade e escalabilidade dão suporte às necessidades dinâmicas de um sistema de chat RAG para que os dados fiquem consistentemente disponíveis e seguros. |
Cada um desses serviços do Azure contribui para a criação de uma arquitetura abrangente, escalonável e eficiente para uma solução de IA geradora. Eles ajudam os desenvolvedores a acessar e usar o melhor dos recursos de nuvem do Azure e das tecnologias de IA.
Desenvolvimento de IA gerativo centrado em código usando a API do Azure OpenAI
Nesta seção, nos concentramos na API OpenAI do Azure. Conforme mencionado 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, SDKs específicos de linguagem ou de plataforma operam como wrappers em torno das chamadas à API REST para tornar a experiência mais idiomática.
Aqui está a lista de wrappers da API REST do Azure OpenAI:
- Biblioteca de clientes OpenAI do Azure para .NET
- Biblioteca de clientes OpenAI do Azure para Java
- Biblioteca de clientes OpenAI do Azure para JavaScript
- Módulo de cliente OpenAI do Azure para Go
- Use o pacote OpenAI Python e altere várias opções. O Python não oferece uma biblioteca de clientes específica do Azure.
Se um SDK de plataforma ou idioma não estiver disponível, o pior cenário é que você deve fazer chamadas REST diretamente para as APIs Web:
A maioria dos desenvolvedores está familiarizada com como chamar APIs Web.
O Azure OpenAI oferece uma variedade de APIs projetadas para facilitar diferentes tipos de tarefas alimentadas por IA, para que os desenvolvedores possam integrar funcionalidades avançadas de IA em seus aplicativos. Aqui está uma visão geral das principais APIs disponíveis na OpenAI:
- API de Conclusões de Chat: Essa API é focada em cenários de geração de texto, incluindo capacidades de conversação para dar suporte à criação de chatbots e assistentes virtuais que podem participar de diálogos naturais, semelhantes aos humanos. Ele é otimizado para casos de uso interativos, incluindo suporte ao cliente, assistentes pessoais e ambientes de aprendizagem interativos. No entanto, ele é usado para todos os cenários de geração de texto, incluindo resumo, preenchimento automático, gravação de documentos, análise de texto e tradução. É o ponto de entrada para recursos de visão que estão atualmente em versão prévia (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 dentro do texto. É uma ferramenta que ajuda a garantir interações mais seguras do usuário detectando automaticamente material ofensivo, não seguro ou inadequado.
- Inserções de AP: as inserções de API geram as representações de vetor de entradas de texto. Converte 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 Imagem: use esta API para gerar imagens originais de alta qualidade e arte a partir de descrições textuais. É baseado no DALL· E, que pode criar imagens que correspondem a uma ampla variedade de estilos e assuntos com base nos prompts que recebe.
- API de Áudio: essa API fornece acesso ao modelo de áudio do OpenAI e foi projetada para reconhecimento automático de fala. Ele pode transcrever a linguagem falada em texto ou texto em fala, suportando vários idiomas e dialetos. É útil para aplicativos que exigem comandos de voz, transcrição de conteúdo de áudio e muito mais.
Embora você possa usar a IA generativa para trabalhar com muitas modalidades de mídia diferentes, no restante deste artigo, nos concentramos em soluções de IA geradoras baseadas em texto. Essas soluções incluem cenários como chat e resumo.
Introdução ao desenvolvimento com IA gerativa
Os desenvolvedores de software que são novos em uma linguagem desconhecida, API ou tecnologia geralmente começam a aprender seguindo tutoriais ou módulos de treinamento que demonstram como criar aplicativos pequenos. 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. O desenvolvimento de aplicativos usando IA gerativa tem desafios exclusivos. Por exemplo, no desenvolvimento de software tradicional, você pode contar com a saída determinística. Ou seja, para qualquer conjunto de entradas, você pode esperar exatamente a mesma saída todas as vezes. Mas a IA generativa não é determinística. Você nunca obtém exatamente a mesma resposta duas vezes para um determinado prompt, que está na raiz de muitos novos desafios.
Ao começar, considere essas dicas.
Dica 1: seja claro sobre o que você deseja 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 saída da IA para atender às suas expectativas, sejam usuários casuais ou especialistas em um campo específico.
Dica 2: Usar os pontos fortes de LLMs
- Entenda as limitações e os vieses das LLMs: embora as LLMs sejam poderosas, elas têm limitações e vieses inerentes. Conhecer as limitações e os vieses pode ajudá-lo a projetar em torno deles ou incorporar mitigações.
- Entenda onde as LLMs se destacam: LLMs se destacam em tarefas como criação de conteúdo, resumo e tradução de idioma. Embora seus recursos de tomada de decisão e funcionalidades discriminativas estejam ficando mais fortes a cada nova versão, pode haver outros tipos de IA mais apropriados para seu cenário ou caso de uso. Escolha a ferramenta certa para o trabalho.
Dica 3: para obter bons resultados, use bons prompts
- Aprenda as melhores práticas de engenharia rápida: 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 os resultados 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 gerativa imediatamente, recomendamos que você dê uma olhada em Introdução ao chat usando sua própria amostra de dados para Python. O tutorial também está disponível para .NET, Javae javaScript.
Considerações finais para o design do aplicativo
Aqui está uma pequena lista de coisas a serem consideradas e outras conclusões deste artigo que podem afetar suas decisões de design de aplicativo:
- Defina o espaço de problema e o público claramente para alinhar os recursos da IA com as expectativas do usuário. Otimize a eficácia da solução para o caso de uso pretendido.
- Use plataformas de baixo código/sem código para criação rápida de protótipos e desenvolvimento se atenderem aos requisitos do projeto. Avalie a troca entre a velocidade de desenvolvimento e a 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.