Neste artigo, discutiremos em detalhes como desenvolver um Sistema de Agente pronto para produção (realizando uma tarefa complexa através da coordenação de vários modelos AI e GenAI diferentes) aplicação na Plataforma de Inteligência de Dados Databricks usando capacidades da plataforma como Pesquisa Vetorial, Serviço de Modelo, Gateway AI, Tabelas Online e Catálogo Unity. Também demonstraremos o uso da metodologia de Desenvolvimento Orientado à Avaliação para construir rapidamente aplicativos agênticos e melhorar iterativamente a qualidade do modelo.
A IA generativa oferece benefícios transformadores no desenvolvimento de aplicações empresariais, fornecendo capacidades avançadas de linguagem natural nas mãos dos Engenheiros de Software. Ele pode automatizar tarefas complexas como geração de conteúdo, análise de dados e sugestões de código, reduzindo significativamente o tempo de desenvolvimento e os custos operacionais. Ao aproveitar modelos avançados, as empresas podem criar experiências de usuário mais personalizadas, melhorar a tomada de decisões por meio de insights inteligentes de dados e otimizar processos como suporte ao cliente com chatbots impulsionados por IA.
Apesar de suas muitas vantagens, o uso de IA generativa no desenvolvimento de aplicações empresariais apresenta desafios significativos.
Precisão: Um grande problema é a precisão e confiabilidade dos resultados da IA, pois os modelos gerativos podem às vezes produzir resultados imprecisos ou tendenciosos.
Segurança: Garantir a segurança e o uso ético da IA também é uma preocupação, especialmente ao lidar com dados sensíveis ou aplicações em indústrias regulamentadas. A conformidade regulatória e a abordagem de vulnerabilidades de segurança permanecem preocupações críticas ao implantar a IA em escala.
Custo: Além disso, a escalabilidade dos sistemas de IA para estarem prontos para empresas requer infraestrutura robusta e expertise, o que pode ser intensivo em recursos. A integração da IA generativa em sistemas existentes também pode apresentar desafios de compatibilidade, enquanto a manutenção da transparência e responsabilidade nos processos orientados por IA é crucial, mas difícil de alcançar.
Mosaic AI Agent Framework oferece um conjunto abrangente de ferramentas para construir, implantar, avaliar e gerenciar aplicações de IA generativa de ponta. Alimentado pela Plataforma de Inteligência de Dados Databricks, o Mosaic AI permite que as organizações desenvolvam de forma segura e econômica sistemas complexos de IA prontos para produção, que são integrados de forma transparente com seus dados empresariais.
Pagadores na indústria de saúde são organizações — como provedores de planos de saúde, Medicare e Medicaid — que definem as taxas de serviço, coletam pagamentos, processam reivindicações e pagam as reivindicações dos provedores. Quando um indivíduo precisa de um serviço ou cuidado, a maioria liga para o representante de atendimento ao cliente de seu pagador e explica sua situação para obter uma estimativa do custo de seu tratamento, serviço ou procedimento.
Este cálculo é bastante padrão e pode ser feito de forma determinística uma vez que temos informações suficientes do usuário. Criar uma aplicação agente capaz de identificar as informações relevantes da entrada do usuário e, em seguida, recuperar o custo correto com precisão pode liberar os agentes de atendimento ao cliente para atender chamadas telefônicas mais importantes.
Neste artigo, vamos construir um Sistema GenAI de Agente usando as capacidades do Mosaic AI como Busca Vetorial, Serviço de Modelo, Gateway de IA, Tabelas Online e Catálogo Unity. Também demonstraremos o uso da metodologia de Desenvolvimento Orientado à Avaliação para construir rapidamente aplicações agentes e melhorar iterativamente a qualidade do modelo.
O cenário que estamos discutindo aqui é quando um cliente acessa um portal de Pagador e usa o recurso de chatbot para perguntar sobre o custo de um procedimento médico. A aplicação agente que criamos aqui é implantada como uma API REST usando Mosaic AI Model Serving.
Uma vez que o agente recebe uma pergunta, um fluxo de trabalho típico para a estimativa de custo do procedimento é como abaixo:
Na realidade, os pontos de dados para esta aplicação serão resultados de múltiplos fluxos de trabalho complexos de engenharia de dados e cálculos, mas faremos algumas suposições simplificadoras para manter o escopo deste trabalho limitado ao design, desenvolvimento e implantação da aplicação agente.
Os notebooks para este Acelerador de Soluções estão disponíveis aqui.
Usaremos o framework Mosaic AI Agent na plataforma Databricks Data Intelligence para construir essa solução. Um diagrama de arquitetura de alto nível é dado abaixo.
Construiremos a solução em várias etapas, começando pela preparação dos dados.
Nas próximas seções, falaremos sobre a preparação dos dados para nossa aplicação de Agente.
As Tabelas Delta abaixo conterão os dados sintéticos necessários para este Agente.
member_enrolment: Tabela contendo informações de inscrição do membro como cliente e plan_id
member_accumulators: Tabela contendo acumuladores de membros como dedutíveis e gastos fora do bolso
cpt_codes: Tabela contendo códigos CPT e descrições
procedure_cost: Tabela contendo o custo negociado de cada procedimento
sbc_details: Tabela contendo fragmentos derivados do pdf do Resumo de Benefícios
Você pode se referir a este notebook para detalhes de implementação.
Para recuperar o contrato apropriado relacionado à pergunta, precisamos primeiro analisar o Resumo do Documento de Benefícios de cada cliente em uma tabela delta. Esses dados analisados serão então usados para criar um Índice Vetorial para que possamos executar pesquisas semânticas nesses dados usando a pergunta do cliente.
Estamos presumindo que o Resumo do Documento de Benefícios tem a estrutura abaixo.
Nosso objetivo é extrair esses dados tabulares do PDF e criar um resumo completo de cada item de linha, de forma que capture os detalhes adequadamente. Abaixo está um exemplo
Para o item de linha abaixo, queremos gerar dois parágrafos como abaixo
Se você tem um teste, para teste diagnóstico (raio-x, exame de sangue) você pagará $10 de coparticipação por teste na Rede e 40% de co-seguro fora da Rede.
e
Se você fizer um exame, para Imagens (CT/PET scans, RMIs) você pagará $50 de coparticipação por exame na Rede e 40% de co-seguro Fora da Rede.
NOTA: Se o Resumo do Documento de Benefícios tiver formatos diferentes, teremos que criar mais pipelines e lógica de análise para cada formato. Este notebook detalha o processo de divisão.
O resultado deste processo é uma Tabela Delta que contém cada item da linha do documento de Resumo de Benefícios como uma linha separada. O client_id foi capturado como metadados do parágrafo de benefício. Se necessário, podemos capturar mais metadados, como product_id, mas para o escopo deste trabalho, vamos mantê-lo simples.
Consulte o código em este notebook para detalhes de implementação.
Mosaic AI Vector Search é um banco de dados de vetores integrado à Plataforma de Inteligência de Dados Databricks e integrado com suas ferramentas de governança e produtividade. Um banco de dados vetorial é otimizado para armazenar e recuperar incorporações, que são representações matemáticas do conteúdo semântico dos dados, geralmente texto ou dados de imagem.
Para esta aplicação, criaremos dois índices vetoriais.
Criar Índices de Vetor no Mosaic AI é um processo de dois passos.
Este notebook detalha o processo e contém o código de referência.
Uma tabela online é uma cópia somente leitura de uma Tabela Delta que é armazenada em um formato orientado a linhas otimizado para acesso online. As tabelas online são tabelas totalmente sem servidor que ajustam automaticamente a capacidade de throughput com a carga de solicitações e fornecem acesso de baixa latência e alto throughput a dados de qualquer escala. As tabelas online são projetadas para trabalhar com Mosaic AI Model Serving, Feature Serving e aplicaç ões agente que são usadas para consultas rápidas de dados.
Precisaremos de tabelas online para nossas tabelas de inscrição de membros, acumuladores de membros e custos de procedimentos.
Este notebook detalha o processo e contém o código necessário.
Agora que temos todos os dados necessários, podemos começar a construir nossa Aplicação de Agente. Seguiremos a metodologia de Desenvolvimento Orientado à Avaliação para desenvolver rapidamente um protótipo e melhorar iterativamente sua qualidade.
O Fluxo de Trabalho Orientado à Avaliação é baseado nas melhores práticas recomendadas pela equipe de Pesquisa Mosaic para a construção e avaliação de aplicações RAG de alta qualidade.
A Databricks recomenda o seguinte fluxo de trabalho orientado à avaliação:
Leia mais sobre Desenvolvimento Orientado à Avaliação no Databricks AI Cookbook.
Ao construir Agentes, podemos estar aproveitando muitas funções para realizar ações específicas. Em nossa aplicação, temos as seguintes funções que precisamos implementar
Ao desenvolver Aplicações Agente, é uma prática geral desenvolver funções reutilizáveis como Ferramentas para que o Agente possa usá-las para processar a solicitação do usuário. Essas Ferramentas podem ser usadas com execução de agente autônoma ou estrita.
Neste notebook, desenvolveremos essas funções como ferramentas LangChain para que possamos potencialmente usá-las em um agente LangChain ou como um estrito modelo personalizado PyFunc.
NOTA: Em um cenário da vida real, muitas dessas ferramentas poderiam ser funções complexas ou chamadas de API REST para outros serviços. O escopo deste notebook é ilustrar o recurso e pode ser estendido de qualquer maneira possível.
Um dos aspectos da metodologia de desenvolvimento orientada à avaliação é:
Isso é muito semelhante ao exercício de ajuste de hiperparâmetros no desenvolvimento clássico de ML.
Faremos exatamente isso com nossas ferramentas também. Vamos avaliar cada ferramenta individualmente e escolher os parâmetros que dão os melhores resultados para cada ferramenta. Este notebook explica o processo de avaliação e fornece o código. Novamente, a avaliação fornecida no notebook é apenas uma diretriz e pode ser expandida para incluir qualquer número de parâmetros necessários.
Montando o Agente
Agora que temos todas as ferramentas definidas, é hora de combinar tudo em um Sistema de Agentes.
Como fizemos nossos componentes como Ferramentas LangChain, podemos usar um AgentExecutor para executar o processo.
Mas, como é um processo muito direto, para reduzir a latência de resposta e melhorar a precisão, podemos usar um modelo PyFunc personalizado para construir nossa aplicação de Agente e implantá-la no Databricks Model Serving.
Função Python MLflow
A função Python do MLflow, pyfunc
, oferece flexibilidade para implantar qualquer código Python ou qualquer modelo Python. Os seguintes são cenários de exemplo onde você pode querer usar isso.
predict
do modelo.Você pode ler mais sobre a implantação de código Python com Model Serving aqui
CareCostCompassAgent
CareCostCompassAgent
é a nossa função Python que implementará a lógica necessária para o nosso Agente. Consulte este caderno para a implementação completa.
Existem duas funções obrigatórias que precisamos implementar:
load_context
- qualquer coisa que precise ser carregada apenas uma vez para o modelo operar deve ser definida nesta função. Isso é crítico para que o sistema minimize o número de artefatos carregados durante a função de previsão, o que acelera a inferência. Estaremos instanciando todas as ferramentas neste métodopredict
- esta função abriga toda a lógica que é executada toda vez que uma solicitação de entrada é feita. Implementaremos a lógica do aplicativo aqui.Entrada e Saída do Modelo
Nosso modelo está sendo construído como um Agente de Chat e isso determina a assinatura do modelo que vamos usar. Então, a solicitação será ChatCompletionRequest
Os dados de entrada para um modelo pyfunc
podem ser um DataFrame do Pandas, Series do Pandas, Array do Numpy, Lista ou um Dicionário. Para nossa implementação, esperaremos um DataFrame do Pandas como entrada. Como é um agente de Chat, ele terá o esquema de mlflow.models.rag_signatures.Message
.
Nossa resposta será apenas um mlflow.models.rag_signatures.StringResponse
Fluxo de trabalho
Implementaremos o fluxo de trabalho abaixo no método de previsão do modelo pyfunc. Os três fluxos abaixo podem ser executados paralelamente para melhorar a latência de nossas respostas.
Usaremos a biblioteca asyncio
para as operações de IO paralelas. O código está disponível neste notebook.
Agora que nossa aplicação de agente foi desenvolvida como uma classe Python compatível com MLflow, podemos testar e avaliar o modelo como um sistema de caixa preta. Embora tenhamos avaliado as ferramentas individualmente, é importante avaliar o agente como um todo para garantir que está produzindo a saída desejada. A abordagem para avaliar o modelo é praticamente a mesma que fizemos para as ferramentas individuais.
Este notebook mostra os passos que acabamos de cobrir.
Agora, temos algumas métricas preliminares de desempenho do modelo que podem se tornar o benchmark para futuras iterações. Vamos aderir ao fluxo de trabalho do Desenvolvimento Orientado à Avaliação e implantar este modelo para que possamos disponibilizá-lo a um conjunto selecionado de stakeholders de negócios e coletar feedbacks selecionados para que possamos usar essas informações em nossa próxima iteração.
Na plataforma de Inteligência de Dados Databricks, você pode gerenciar o ciclo de vida completo dos modelos no Catálogo Unity. Databricks fornece uma versão hospedada do Registro de Modelo MLflow no Catálogo Unity. Saiba mais aqui.
Uma rápida recapitulação do que fizemos até agora:
Agora é hora de registrar o modelo no Catálogo Unity e criar a primeira versão do modelo.
O Catálogo Unity fornece uma solução unificada de governança para todos os dados e ativos de IA no Databricks. Saiba mais sobre o Catálogo de Unidades aqui. Modelos no Catálogo Unity estendem os benefícios do Catálogo Unity para modelos de ML, incluindo controle de acesso centralizado, auditoria, linhagem e descoberta de modelos em diferentes espaços de trabalho. Modelos no Catálogo Unity são compatíveis com o cliente Python de código aberto MLflow.
Quando registramos um modelo no Catálogo Unity, precisamos garantir que incluímos todas as informações necessárias para empacotar o modelo e executá-lo em um ambiente autônomo. Forneceremos todos os detalhes abaixo:
Agora usaremos o mlflow.pyfunc.log_model método para registrar e logar o modelo no Catálogo Unity. Consulte este notebook para ver o código.
Uma vez que o modelo é registrado no MLflow, podemos implantá-lo no Mosaic AI Model Serving. Como a implementação do Agente é uma simples função Python que chama outros endpoints para executar chamadas LLM, podemos implantar esta aplicação em um endpoint de CPU. Usaremos o Mosaic AI Agent Framework para
Leia mais sobre a implantação de aplicações de agentes usando a api de agentes Databricks aqui
Uma vez que a implantação esteja completa, você verá duas URLs disponíveis: uma para a inferência do modelo e a segunda para o aplicativo de revisão, que você pode agora compartilhar com seus stakeholders de negócios.
O dataframe de avaliação que usamos para a primeira avaliação do modelo foi montado pela equipe de desenvolvimento como um esforço para medir a qualidade preliminar do modelo e estabelecer um benchmark. Para garantir que o modelo atenda aos requisitos de negócios, será uma ótima ideia obter feedback dos stakeholders de negócios antes da próxima iteração do ciclo interno de desenvolvimento. Podemos usar o Review App para fazer isso.
O feedback coletado via Review App é salvo em uma tabela delta junto com a Tabela de Inferência. Você pode ler mais aqui.
Agora, temos informações críticas sobre o desempenho do agente que podemos usar para iterar rapidamente e melhorar a qualidade do modelo rapidamente.
Também podemos criar um novo dataframe de avaliação a partir das saídas do aplicativo de revisão para nossa próxima iteração. Você pode ver uma implementação de exemplo neste notebook.
Vimos que os Sistemas de Agentes lidam com tarefas de IA combinando vários componentes interativos. Esses componentes podem incluir várias chamadas para modelos, recuperadores ou ferramentas externas. Construir aplicações de IA como Sistemas de Agentes tem vários benefícios:
Os Sistemas de Agentes ainda são uma categoria em evolução de aplicações GenAI e introduzem vários desafios para desenvolver e produzir tais aplicações, como:
O Mosaic AI Agent Framework oferece um conjunto de ferramentas projetadas para ajudar os desenvolvedores a construir e implantar aplicativos Agent de alta qualidade que são consistentemente medidos e avaliados para serem precisos, seguros e governados. Com o Mosaic AI Agent Framework, é mais fácil para os desenvolvedores avaliar a qualidade de um aplicativo RAG, iterar rapidamente com a capacidade de testar hipóteses, reimplantar o aplicativo com facilidade e ter a governança e as barreiras apropriadas para garantir a qualidade contínua.
O Mosaic AI Agent Framework é perfeitamente integrado ao restante da Databricks Data Intelligence Platform. Isso significa que você tem tudo o que precisa para implantar um sistema RAG de ponta a ponta, de segurança e governança até integração de dados, bancos de dados vetoriais, avaliação de qualidade e implantação otimizada com um clique. Com a governança e as barreiras implementadas, você também pode evitar respostas tóxicas e garantir que seu aplicativo siga as políticas da sua organização.
(This blog post has been translated using AI-powered tools) Original Post