Soluções de IA generativa para desenvolvedores
A IA generativa, habilitada por grandes modelos de linguagem (LLMs), abre novas e empolgantes possibilidades para desenvolvedores de software e organizações. Serviços como o Azure OpenAI Service tornam o desenvolvimento de IA acessível com APIs fáceis de usar. Desenvolvedores em todos os níveis de habilidade podem integrar funcionalidades avançadas de IA em seus aplicativos sem conhecimento especializado ou investimento em hardware.
Como desenvolvedor de aplicativos, você pode querer entender qual papel você pode desempenhar e onde você se encaixa. Por exemplo, talvez você se pergunte em que nível na "pilha de IA" para 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 a nova terminologia e as 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 estabelecem uma base de palavras-chave e conceitos para desenvolver à medida que você começa a desenvolver suas primeiras soluções de IA generativa.
Como as empresas se beneficiam do uso de IA generativa
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 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 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çã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.
- Use "conversar com seus dados". Ou seja, permitir que um usuário faça perguntas em uma experiência de bate-papo usando dados armazenados nos bancos de dados ou documentos da organização 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.
- Use a pesquisa semântica. Ou seja, permitindo que os usuários pesquisem documentos e dados sem usar correspondências exatas de palavras-chave.
- Traduzir 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 "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.
Um desenvolvedor de software tem a oportunidade de aumentar drasticamente seu impacto, integrando aplicativos e funcionalidades de IA generativa no software em que sua organização confia.
Como construir aplicações de IA generativas
Embora o LLM faça o trabalho pesado, você cria sistemas que integram, orquestram e monitoram os resultados. Há muito a aprender, mas você pode aplicar as habilidades que já tem, incluindo como:
- Faça chamadas para APIs usando REST, JSON ou kits de desenvolvimento de software (SDKs) específicos da linguagem
- Orquestre chamadas para APIs e execute lógica de negócios
- Armazenar e recuperar de bases de dados
- Integre entradas e resultados na experiência do usuário
- Crie APIs que podem ser chamadas a partir de LLMs
O desenvolvimento de soluções de IA generativa baseia-se nas suas competências 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 que é necessária para construir uma solução de IA generativa. Para usar um determinado serviço, API ou recurso de forma eficaz, o desafio é garantir que você:
- Compreenda as funções, papéis e responsabilidades típicas em um determinado tipo de recurso de IA generativa. Por exemplo, como discutimos em detalhe em artigos conceptuais que descrevem sistemas de chat baseados em geração aumentada por recuperação (RAG), existem muitas responsabilidades a nível arquitetónico 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.
- Compreender as APIs, serviços e ferramentas que existem para uma dada função, papel ou responsabilidade. Agora que você entende o domínio do problema e as restrições, você pode optar por criar esse aspeto do sistema usando código personalizado ou ferramentas low-code/no-code existentes, ou você pode chamar APIs para serviços existentes.
- Compreenda as opções, incluindo soluções centradas em código e de baixo código/sem necessidade de código. Você pode construir tudo sozinho, mas isso é um uso eficiente do seu tempo e habilidades? Dependendo de suas necessidades, você geralmente pode costurar uma combinação de tecnologias e abordagens (código, no-code, low-code, ferramentas).
Não há uma única maneira certa de criar recursos de IA generativa em seus aplicativos. Você pode escolher entre muitas ferramentas e abordagens. É importante avaliar os trade-offs de cada um deles.
Comece com a camada de aplicativo
Você não precisa entender tudo sobre como a IA generativa funciona para começar e ser produtivo. Como dito anteriormente, você provavelmente já sabe o suficiente. Você pode usar APIs e aplicar as habilidades existentes para começar.
Por exemplo, você não precisa treinar seu próprio LLM do zero. Treinar um LLM requer tempo e recursos que a maioria das empresas não está disposta a investir. Em vez disso, crie 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 OpenAI do Azure. Adicionar recursos generativos de IA a 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 entender completamente como um LLM funciona requer uma compreensão profunda da ciência de dados e da formação matemática que a suporta. Obter essa compreensão pode incluir cursos de pós-graduação em estatística, probabilidades e teoria da informação.
Se você tem 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, como APIs, ferramentas e padrões disponíveis.
O mesmo se aplica ao domínio da IA. Você pode entender e apreciar a teoria que envolve a construção com base em LLMs, mas provavelmente concentrará sua atenção na camada de aplicações ou ajudará a implementar padrões ou processos para viabilizar uma iniciativa de IA generativa na 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, os cientistas de dados estão fazendo pesquisa de ciência de dados para resolver ou melhorar a IA com base em uma profunda compreensão matemática de estatística, teoria de probabilidades e assim por diante.
Uma camada acima, com base na camada fundamental mais baixa, os cientistas de dados 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 (finalizações). O processo computacional de elaborar conclusões com base em prompts é chamado inferência. Os cientistas de dados determinam 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 datacenters. É 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 GPU dedicadas que ajudam a lidar com a computação necessária para gerar resultados.
Quando hospedado em grandes datacenters, o acesso programático a esses modelos é fornecido por meio de APIs REST. Às vezes, as APIs são "empacotadas" 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 estimular os modelos programaticamente, padrões e processos estão surgindo para ajudar as organizações a construir funcionalidades de negócios confiáveis com base em IA generativa. Por exemplo, estão a surgir padrões que ajudam as empresas a garantir que o texto, o código, as imagens e o som gerados cumprem as normas éticas e de segurança e 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 este nível de compreensão requer um novo conjunto de competências que, muitas vezes, só é desenvolvido através da educação avançada.
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, você pode se concentrar em desenvolver seu conhecimento dos tópicos da camada de aplicação:
- APIs e SDKs: o que está disponível e o que os vários endpoints produzem.
- 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.
- Engenharia imediata: Como alcançar os melhores resultados fazendo ou reformulando perguntas.
- Onde surgem gargalos e como escalar uma solução. Esta área inclui compreender o que está envolvido no registo ou na obtenção de telemetria sem violar as preocupações de privacidade do cliente.
- As características dos vários LLMs: seus pontos fortes, casos de uso, benchmarks e o que eles medem, e diferenciações-chave entre fornecedores e modelos produzidos por cada fornecedor. Estas informações ajudam-no 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 generativa eficazes e resilientes em seus aplicativos.
Ferramentas e serviços da Microsoft
Pode usar as ferramentas e serviços de IA generativa low-code e no-code da Microsoft para o ajudar a criar parte ou toda a sua solução. 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 coração 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.
Produto | Description |
---|---|
Azure OpenAI | 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 um LLM, incluindo a criação de incorporações e a criação de uma experiência de bate-papo. 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 IA generativa aos aplicativos da sua organização, você precisa de um serviço 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 chat RAG. Ele suporta rápido desenvolvimento, implantação e dimensionamento de aplicativos Web, para que seja mais fácil gerenciar os 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 chat 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. |
Soluções low-code e no-code
Parte da lógica que você precisa para implementar sua visão generativa de IA pode ser construída rapidamente e ser hospedada de forma confiável usando uma solução low-code ou no-code.
Produto | Description |
---|---|
Azure AI Foundry | Você pode usar o Azure AI Foundry para treinar, testar e implantar modelos de aprendizado de máquina personalizados para aprimorar um sistema de chat RAG. Por exemplo, use o Azure AI Foundry para personalizar a geração de respostas ou para melhorar a relevância das informações recuperadas. |
Banco de dados vetorial
Algumas soluções de IA generativa 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.
Produto | Description |
---|---|
Azure AI Search | Você pode usar esse serviço para pesquisar eficientemente grandes conjuntos de dados para encontrar informações relevantes que informam as respostas geradas pelo modelo de linguagem. É útil para o componente de recuperação de um sistema RAG, para que as respostas geradas sejam tão informativas e contextualmente relevantes quanto possível. |
Azure Cosmos DB | Este 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 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 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 bate-papo RAG. É especialmente útil para armazenar dados de sessão, preferências do usuário e consultas comuns. |
Servidor Flexível do Banco de Dados do Azure para 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 para 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. Eles ajudam os desenvolvedores a acessar e usar o melhor dos recursos de nuvem do Azure e tecnologias de IA.
Desenvolvimento de IA generativa centrado em código usando 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, SDKs específicos do idioma ou da plataforma operam como wrappers em torno das chamadas da API REST para tornar a experiência mais idiomática.
Aqui está a lista de wrappers da API REST do Azure OpenAI:
- Biblioteca de cliente do Azure OpenAI para .NET
- Biblioteca de cliente do Azure OpenAI para Java
- Biblioteca de cliente do Azure OpenAI para JavaScript
- Módulo de cliente do Azure OpenAI para Go
- Use o pacote OpenAI Python e altere várias opções. O Python não oferece uma biblioteca de cliente específica do Azure.
Se um SDK de idioma ou plataforma não estiver disponível, o pior cenário é que você deve fazer chamadas REST diretamente para as APIs da Web:
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, 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 no OpenAI:
- Chat Completions API: Esta API é focada em cenários de geração de texto, incluindo recursos de conversação para dar suporte à criação de chatbots e assistentes virtuais que podem se envolver em diálogos naturais e semelhantes aos humanos. É 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 sumarização, preenchimento automático, escrita de documentos, análise de texto e tradução. É o ponto de entrada para os recursos de visão que estão atualmente em fase de pré-visualização, isto é, para carregar uma imagem e fazer perguntas sobre ela.
- da API de moderação: esta API foi projetada para ajudar os desenvolvedores a identificar e filtrar conteúdo potencialmente prejudicial no texto. É uma ferramenta que ajuda a garantir interações mais seguras do usuário, detetando automaticamente material ofensivo, inseguro ou inadequado.
- Embeddings API: A Embeddings API gera representações vetoriais de entradas de texto. Ele 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. Capta o significado subjacente e as relações semânticas no texto.
- Image Generation API: Use esta API para 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.
- Audio API: Esta API fornece acesso ao modelo de áudio da OpenAI e foi projetada 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 você possa usar IA generativa para trabalhar com muitas modalidades de mídia diferentes, no resto deste artigo, nos concentramos em soluções de IA generativa baseadas em texto. Essas soluções incluem cenários como bate-papo e sumarização.
Comece a desenvolver 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 que demonstram como 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.
Ao começar, é melhor começar pequeno, prometer pouco, iterar e desenvolver sua compreensão e habilidade. Desenvolver aplicações usando IA generativa tem desafios únicos. Por exemplo, no desenvolvimento de software tradicional, você pode confiar na 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 é determinista. 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 estas dicas.
Dica 1: Seja claro sobre o que você quer 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: Use 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, sumarização e tradução de idiomas. 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: Para obter bons resultados, use 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 os resultados para refinar ainda mais os 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 que você dê uma olhada em Introdução ao bate-papo 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 considerar e outras conclusões deste artigo que podem afetar 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. Otimize 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. Avalie 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.