Compartilhar via


Introdução à criação de soluções de IA generativa para desenvolvedores

A IA generativa, habilitada por Large Language Models (LLMs), abre novas possibilidades empolgantes para desenvolvedores e organizações de software. 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 dificuldade 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 em 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 em 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 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 tradicionais do 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
    • Componha ou melhore as comunicações comerciais por meio de sugestões ou geração completa de mensagens.
    • "Converse com seus dados", ou seja, 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.
    • Traduzir idiomas 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.

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 do qual suas organizações dependem.

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 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
  • Orquestrar chamadas para APIs e executar lógica de negócios
  • Armazenando e recuperando de armazenamentos de dados
  • Integrando entrada e resultados na experiência do usuário
  • Criação de APIs que podem ser chamadas 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 aprendizagem para ajudá-lo a iniciar sua jornada de desenvolvimento de IA generativa. Cada um destaca alguma preocupação ou responsabilidade importante necessária para construir uma solução de IA generativa. Para utilizar um determinado serviço, API ou recurso de forma eficaz, o desafio é garantir que você:

  • Entender as funções, funções e responsabilidades típicas em um determinado tipo de recurso de IA generativa? Por exemplo, como discutimos detalhadamente em artigos conceituais que descrevem sistemas de bate-papo baseados em RG (Geração Aumentada por Recuperação), há muitas responsabilidades arquitetônicas no sistema. É importante que você entenda o domínio e as restrições do problema intimamente antes de projetar um sistema que resolva o problema.
  • Entende que as APIs, os serviços e as ferramentas existem 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 com código personalizado ou usar ferramentas de baixo código/sem código existentes ou chamar APIs para serviços existentes.
  • Entenda as opções, incluindo soluções centradas em código e sem código/com pouco código. Você poderia construir tudo sozinho, mas isso é um uso eficiente de seu tempo e habilidade? Dependendo de seus requisitos, geralmente você pode unir uma combinação de tecnologias e abordagens (código, sem código, low-code, ferramentas).

O ponto aqui é que não existe 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 aplicação

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 fundamentais pré-treinados existentes, como GPT-4, fazendo chamadas de API para serviços hospedados existentes, como a API OpenAI do Azure. Dessa forma, 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 verdadeiramente como os LLMs funcionam requer uma compreensão profunda da ciência de dados e do conhecimento matemático 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, pode perceber que a maior parte do desenvolvimento de aplicativos acontece em uma "camada superior na pilha" de pesquisas e tecnologias. Você pode ter algum conhecimento 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 disponíveis 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 dos 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 simplificada das camadas de conhecimento necessárias para implementar recursos de IA generativa em um aplicativo novo ou existente:

Diagrama de camadas de conhecimento. Na parte inferior, uma caixa contendo as palavras ciência de dados fundamental, pesquisa de inteligência artificial, estatística e teoria da probabilidade. O próximo nível, as palavras treinando grandes modelos de linguagem. O próximo nível, criando serviços, ferramentas e desenvolvendo APIs. E no nível mais alto, camada de aplicação, padrões e processos.

No nível mais baixo, você tem cientistas de dados que estão fazendo pesquisas em 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 pode aceitar entradas (prompts) e gerar resultados (conclusões). O processo computacional de composição de conclusões com base em prompts é conhecido como inferência. Existem aqueles que são responsáveis por implementar o 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 hospedados em grandes data centers, o acesso programático a esses modelos é fornecido por meio de APIs REST, e às vezes são "encapsulados" por SDKs e 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, existem padrões e processos emergentes para ajudar as empresas a criar funcionalidades de negócios confiáveis com base em IA generativa. Por exemplo, existem padrões emergentes 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 esse nível de compreensão requer um novo conjunto de habilidades que muitas vezes estão disponíveis apenas academicamente. 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), concentre-se em tópicos da camada de aplicação como:

  • Entender as APIs e SDKs disponíveis, o que está disponível, o que os vários endpoints produzem, etc.
  • Entender as ferramentas e os 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 rápida, por exemplo, como obter os melhores resultados fazendo ou reformulando perguntas.
  • Entender onde surgem os gargalos e como dimensionar uma solução. Entender o que está envolvido no registro em log 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, principais diferenciações entre fornecedores e modelos produzidos por cada fornecedor, etc.) para escolher o modelo certo para as necessidades da sua empresa.
  • Entenda 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 de baixo código e sem código disponíveis na 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 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 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 executar todas as funções típicas de um LLM, como criar incorporações, criar uma experiência de bate-papo etc. com acesso total às 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 um 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) Essa plataforma pode hospedar as interfaces da web ou APIs por meio das quais os usuários interagem com o sistema RAG-chat. Ele oferece suporte ao rápido desenvolvimento, implantação e dimensionamento de aplicativos da Web, facilitando o gerenciamento dos componentes front-end do sistema.
Azure Functions Use a computação sem servidor para lidar com tarefas orientadas a eventos no sistema RAG-chat. 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 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 treinar, testar e implantar modelos de aprendizado de máquina personalizados que podem aprimorar o sistema RAG-chat. 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
Azure AI Search Este serviço pode ser utilizado para pesquisar com eficiência 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 o mais informativas e contextualmente relevantes possível.
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 RAG-chat 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 RAG-chat. É 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 RAG-chat, garantindo que os dados estejam 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 generativa, permitindo que os desenvolvedores usem o melhor dos recursos de nuvem e das 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 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, os SDKs específicos da linguagem ou da plataforma operam como "wrappers" em torno das chamadas à API REST para tornar a experiência mais idiomática.

Se um SDK de linguagem ou plataforma não estiver disponível, o pior cenário é que você deve fazer chamadas REST diretamente para a API Web. No entanto, a maioria dos desenvolvedores está familiarizada com a forma de chamar APIs 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 na OpenAI:

  • API de conclusão de bate-papo: essa 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 e humanos. Ele é 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 resumo, preenchimento automático, escrita de documentos, análise de texto, tradução e assim por diante. É o ponto de entrada para recursos de visã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 no texto, fornecendo uma ferramenta para garantir interações mais seguras do usuário, detectando 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. 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 e de alta qualidade 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: Esta API fornece acesso ao modelo de áudio da OpenAI, projetado 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 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 chat, 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 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 desenvolver sua compreensão e habilidade, pois o desenvolvimento com IA generativa apresenta desafios únicos. Por exemplo, no desenvolvimento de software tradicional, você pode contar com a saída determinística – para qualquer conjunto de entradas, você pode esperar exatamente a mesma saída todas as vezes. No entanto, o Generativo não é determinístico – 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: Seja 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 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: Jogue com os pontos fortes dos LLMs.

  • Entenda as limitações e preconceitos dos LLMs: Embora os LLMs sejam poderosos, eles têm limitações e preconceitos inerentes. Conhecer as limitações e os 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 seus recursos de tomada de decisão e recursos discriminativos 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: Os melhores resultados começam com 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 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 chat usando seu próprio exemplo de dados para Python. Existem 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 aplicativos:

  • 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 elas atenderem aos requisitos do seu projeto, avaliando a compensação 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.