Sua organização requer um Chatbot Inteligente Multicanal e um mecanismo de busca capaz de compreender diversos tipos de dados espalhados por vários locais. Além disso, o chatbot conversacional deve ser capaz de fornecer respostas às dúvidas, juntamente com a fonte e uma explicação de como e onde a resposta foi obtida. Em outras palavras, você deseja um ChatGPT privado e seguro para sua organização, que possa interpretar, compreender e responder perguntas sobre seus dados de negócios .
O objetivo do POC é mostrar/comprovar o valor de um Assistente Virtual GPT construído com Serviços Azure, com seus próprios dados em seu próprio ambiente. Os resultados são:
API Backend Bot construída com Bot Framework e exposta a vários canais (Web Chat, MS Teams, SMS, Email, Slack, etc)
Aplicativo da web front-end com interface de pesquisa e bot.
O repositório foi feito para ensinar passo a passo como construir um mecanismo de pesquisa inteligente baseado em OpenAI. Cada Notebook é construído um sobre o outro e termina na construção dos dois aplicativos.
Para Microsoft FTEs: Este é um VBD financiado pelo cliente, abaixo dos ativos para entrega.
Item | Descrição | Link |
---|---|---|
Informações e folha de dados do SKU VBD | O CSAM deve despachá-lo como “Investido pelo Cliente” contra créditos/horas do Contrato de Suporte Unificado. O cliente decide se 3 ou 5 dias. | Página SKU ESXP |
Credenciamento VBD para CSAs | Links para CSAs obterem o credenciamento necessário para ministrar o workshop | Ligação 1, Ligação 2 |
VBD Ativo POC (IP) de 3 a 5 dias | O MVP a ser entregue (este repositório GitHub) | Azure-Cognitive-Search-Azure-OpenAI-Accelerator |
Plataforma de workshop VBD | A apresentação apresentando e explicando o workshop | Introdução ao AOAI GPT Azure Smart Search Engine Accelerator.pptx |
Vídeo de treinamento CSA | Treinamento de 2 horas para CSAs da Microsoft | Gravação de treinamento POC VBD (novo vídeo em breve!) |
Pré-requisitos Cliente POC de 3 a 5 dias
Assinatura Azure
Aplicativo aceito para Azure Open AI, incluindo GPT-4o. Se o cliente não tiver a aprovação GPT-4o, os CSAs da Microsoft poderão emprestar a sua durante o workshop
Os membros da Microsoft devem ser adicionados preferencialmente como convidados nos clientes Azure AD. Se não for possível, os clientes poderão emitir IDs corporativos para membros da Microsoft
Um Grupo de Recursos (RG) precisa ser definido para este POC do Workshop, no locatário do cliente Azure
A equipe do cliente e a equipe da Microsoft devem ter permissões de Colaborador neste grupo de recursos para que possam configurar tudo duas semanas antes do workshop
Uma conta de armazenamento deve ser definida no RG.
Os dados/documentos do cliente devem ser carregados na conta de armazenamento de blob pelo menos duas semanas antes da data do workshop
Um registro de aplicativo multilocatário (principal de serviço) deve ser criado pelo cliente (salve o ID do cliente e o valor secreto).
O cliente deve fornecer à equipe da Microsoft de 10 a 20 perguntas (fáceis a difíceis) que deseja que o bot responda corretamente.
Para colaboração e padronização do IDE durante o workshop, serão utilizadas instâncias de computação AML com Jupyper Lab, para isso, o Azure Machine Learning Workspace deve ser implantado no RG
Nota: Certifique-se de que tem uma quota de computação central suficiente no seu espaço de trabalho Azure Machine Learning
O usuário faz uma pergunta.
No aplicativo, um OpenAI LLM usa um prompt inteligente para determinar qual fonte usar com base na entrada do usuário
Cinco tipos de fontes estão disponíveis:
Transcrições dos diálogos de todos os episódios do Programa de TV: FRIENDS
90.000 resumos de publicações sobre a Covid
4 livros PDF longos
3a. Banco de Dados SQL do Azure – contém estatísticas relacionadas à COVID nos EUA.
3b. API Endpoints - API RESTful OpenAPI 3.0 contendo estatísticas atualizadas sobre a Covid.
3c. API Azure Bing Search - fornece acesso à internet permitindo cenários como: QnA em sites públicos.
3d. Azure AI Search - contém documentos enriquecidos com IA do Blob Storage:
3f. Arquivo tabular CSV - contém estatísticas relacionadas ao COVID nos EUA.
O aplicativo recupera o resultado da fonte e elabora a resposta.
A tupla (Pergunta e Resposta) é salva no CosmosDB como memória persistente e para análise posterior.
A resposta é entregue ao usuário.
https://gptsmartsearchapp.azurewebsites.net/
100% Python.
Usa os Serviços Cognitivos do Azure para indexar e enriquecer documentos não estruturados: OCR sobre imagens, Chunking e vetorização automatizada.
Usa recursos de pesquisa híbrida do Azure AI Search para fornecer a melhor resposta semântica (pesquisa de texto e vetor combinada).
Usa LangChain como wrapper para interagir com Azure OpenAI, armazenamentos de vetores, construção de prompts e criação de agentes.
Multilíngue (ingere, indexa e entende qualquer idioma)
Multi-Índice -> vários índices de pesquisa
Perguntas e respostas sobre dados tabulares com arquivos CSV e bancos de dados SQL
Usa Azure AI Document Intelligence SDK (antigo Form Recognizer) para analisar documentos PDF complexos/grandes
Usa a API de Pesquisa do Bing para potencializar pesquisas na Internet e perguntas e respostas em sites públicos.
Conecta-se a fontes de dados de API convertendo perguntas de linguagem natural em chamadas de API.
Usa CosmosDB como memória persistente para salvar as conversas do usuário.
Usa Streamlit para construir o aplicativo web Frontend em python.
Usa Bot Framework e Bot Service para hospedar o back-end da API do Bot e expô-lo a vários canais, incluindo MS Teams.
Usa também LangServe/FastAPI para implantar uma API de back-end alternativa com recursos de streaming
Nota: (Pré-requisito) Você precisa ter um serviço Azure OpenAI já criado
Bifurque este repositório para sua conta do Github.
No estúdio Azure OpenAI, implemente estes modelos (modelos mais antigos que os indicados abaixo não funcionarão):
"gpt-4o"
"gpt-4o-mini"
"text-embedding-ada-002 (ou mais recente)"
Crie um Grupo de Recursos onde ficarão todos os ativos deste acelerador. O Azure OpenAI pode estar em um RG diferente ou em uma assinatura diferente.
Clique ABAIXO para criar toda a infraestrutura do Azure necessária para executar os Notebooks (Azure AI Search, Serviços Cognitivos, etc.):
Observação : se você nunca criou uma Azure AI Services Multi-Service account
antes, crie uma manualmente no portal do Azure para ler e aceitar os termos de IA responsável. Depois de implantado, exclua-o e use o botão de implantação acima.
Clone seu repositório bifurcado para sua instância de computação AML. Se o seu repositório for privado, veja abaixo na seção Solução de problemas como clonar um repositório privado.
Certifique-se de executar os notebooks em um ambiente conda Python 3.10 ou mais recente
Instale as dependências em sua máquina (certifique-se de executar o comando pip abaixo no mesmo ambiente conda em que você executará os notebooks. Por exemplo, na execução da instância de computação AZML:
conda activate azureml_py310_sdkv2 pip install -r ./common/requirements.txt
Você pode receber alguns erros de dependências de pip, mas tudo bem, as bibliotecas foram instaladas corretamente, independentemente do erro.
Edite o arquivo credentials.env
com seus próprios valores dos serviços criados na etapa 4.
Para BLOB_SAS_TOKEN e BLOB_CONNECTION_STRING. Vá para Conta de Armazenamento>Segurança + rede>Assinatura de acesso compartilhado>Gerar SAS
Execute os Notebooks em ordem . Eles se acumulam um em cima do outro.
Por que usar o mecanismo Azure AI Search para fornecer o contexto para o LLM e não ajustar o LLM?
R: Citando a documentação da OpenAI: "O GPT-3 foi pré-treinado em uma grande quantidade de texto da Internet aberta. Quando recebe uma solicitação com apenas alguns exemplos, muitas vezes ele pode intuir qual tarefa você está tentando executar e gerar uma conclusão plausível. Isso geralmente é chamado de "aprendizado em poucos minutos". O ajuste fino melhora o aprendizado em poucas tentativas, treinando em muito mais exemplos do que cabem no prompt, permitindo que você obtenha melhores resultados em um amplo número de tarefas. Depois que um modelo for ajustado, você não precisará mais fornecer exemplos no prompt. Isso economiza custos e permite solicitações de menor latência "
No entanto, o ajuste fino do modelo requer o fornecimento de centenas ou milhares de tuplas de prompt e conclusão, que são essencialmente amostras de resposta a consulta. O objetivo do ajuste fino não é fornecer ao LLM conhecimento dos dados da empresa, mas fornecer exemplos para que ele possa executar tarefas muito bem, sem exigir exemplos em cada prompt.
Há casos em que o ajuste fino é necessário, como quando os exemplos contêm dados proprietários que não devem ser expostos em prompts ou quando a linguagem usada é altamente especializada, como em saúde, farmácia ou outros setores ou casos de uso em que a linguagem usada não é comumente encontrado na internet.
Etapas para clonar um repositório privado:
No seu Terminal, cole o texto abaixo, substituindo pelo seu endereço de e-mail do GitHub. Gere uma nova chave SSH.
ssh-keygen -t ed25519 -C "[email protected]"
Copie a chave pública SSH para sua área de transferência. Adicione uma nova chave SSH.
cat ~/.ssh/id_ed25519.pub# Em seguida, selecione e copie o conteúdo do arquivo id_ed25519.pub# exibido no terminal para sua área de transferência
No GitHub, vá para Configurações-> Chaves SSH e GPG-> Nova chave SSH
No campo “Título”, adicione um rótulo descritivo para a nova chave. "Computação AML". No campo “Chave”, cole sua chave pública.
Clone seu repositório privado
git clone [email protected]:SEU-NOME DE USUÁRIO/SEU-REPOSITÓRIO.git
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, verificação de status, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marcas da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão nem implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.