Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A integração do NLP (Processamento de Linguagem Natural) do OpenAI do Azure e dos recursos de conclusão oferece um potencial significativo para aumentar a produtividade do usuário. Ao aproveitar prompts e regras apropriados, um assistente de IA pode gerar com eficiência várias formas de comunicação, como mensagens de e-mail, mensagens SMS e muito mais. Essa funcionalidade leva a uma maior eficiência do usuário e fluxos de trabalho simplificados.
Embora esse recurso seja bastante poderoso por si só, pode haver casos em que os usuários precisem gerar conclusões com base nos dados personalizados da sua empresa. Por exemplo, você pode ter uma coleção de manuais de produtos que podem ser difíceis para os usuários navegarem quando estiverem ajudando os clientes com problemas de instalação. Como alternativa, você pode manter um conjunto abrangente de perguntas frequentes (FAQs) relacionadas aos benefícios de saúde que podem ser difíceis para os usuários lerem e obterem as respostas de que precisam. Nesses casos e em muitos outros, o Serviço OpenAI do Azure permite que você aproveite seus próprios dados para gerar conclusões, garantindo uma resposta mais personalizada e contextualmente precisa às perguntas do usuário.
Aqui está uma visão geral rápida de como o recurso "traga seus próprios dados" funciona na documentação do Azure OpenAI.
Observação
Um dos principais recursos do OpenAI do Azure com seus dados é a capacidade de recuperar e utilizar os dados para melhorar a saída do modelo. A OpenAI do Azure com seus dados, junto com a Pesquisa de IA do Azure, determina quais dados serão recuperados da fonte de dados designada com base na entrada do usuário e no histórico de conversas fornecido. Esses dados então são aumentados e reenviados como um prompt para o modelo do OpenAI, com informações recuperadas sendo acrescentadas ao prompt original. Embora os dados recuperados estejam sendo acrescentados ao prompt, a entrada resultante ainda é processada pelo modelo como qualquer outro prompt. Depois que os dados forem recuperados e o prompt tiver sido enviado ao modelo, o modelo usará essas informações para fornecer uma conclusão.
Neste exercício, você vai:
- Crie uma fonte de dados personalizada usando o portal do Azure AI Foundry.
- Implante um modelo de inserção usando o portal do Azure AI Foundry.
- Carregue documentos personalizados.
- Inicie uma sessão de chat no playground do Chat para experimentar a geração de conclusões com base em seus próprios dados.
- Explore o código que usa o Azure AI Search e o Azure OpenAI para gerar conclusões com base em seus próprios dados.
Vamos começar implantando um modelo de inserção e adicionando uma fonte de dados personalizada no Azure AI Foundry.
Adicionando uma fonte de dados personalizada ao Azure AI Foundry
Navegue até o Azure OpenAI Studio e entre com credenciais que tenham acesso ao recurso do Azure OpenAI.
Selecione Implantações no menu de navegação.
Selecione Selecionar Modelo de Implantação -->Implantar modelo base na barra de ferramentas.
Selecione o modelo text-embedding-ada-002 na lista de modelos e selecione Confirmar.
Selecione as seguintes opções:
- Nome da implantação: text-embedding-ada-002
- Versão do modelo: Padrão
- Tipo de implantação: Standard
- Definir o valor de Limite de Taxa de Tokens por Minuto (milhares) como 120K
- Filtro de Conteúdo: DefaultV2
- Habilitar aspas dinâmicas: Habilitado
Selecione o botão Implantar.
Depois que o modelo for criado, selecione Página Inicial no menu de navegação para ir para a tela de boas-vindas.
Localize o bloco Traga seus próprios dados na tela de boas-vindas e selecione Experimentar agora.
Selecione Adicionar seus dados seguidos por Adicionar uma fonte de dados.
Na lista suspensa Selecionar fonte de dados , selecione Carregar arquivos.
Na lista suspensa Selecionar recurso de Armazenamento de Blobs do Azure , selecione Criar um novo recurso de Armazenamento de Blobs do Azure.
Selecione sua assinatura do Azure na lista suspensa Assinatura .
Na lista suspensa Selecionar recurso de Armazenamento de Blobs do Azure , selecione Criar um novo recurso de Armazenamento de Blobs do Azure.
Isso o levará ao portal do Azure, onde você pode executar as seguintes tarefas:
- Insira um nome exclusivo para a conta de armazenamento, como byodstorage[Seu Sobrenome].
- Selecione uma região próxima à sua localização.
- Selecione Revisão seguida por Criar.
Depois que o recurso de armazenamento de blobs for criado, volte para a caixa de diálogo Azure AI Foundry e selecione o recurso de armazenamento de blobs recém-criado na lista suspensa Selecionar recurso de Armazenamento de Blobs do Azure . Se você não o vir listado, selecione o ícone de atualização ao lado da lista suspensa.
O CORS (compartilhamento de recursos entre origens) precisa ser ativado para que sua conta de armazenamento seja acessada. Selecione Ativar CORS na caixa de diálogo Azure AI Foundry.
Na lista suspensa Selecionar recurso do Azure AI Search , selecione Criar um novo recurso do Azure AI Search.
Isso o levará de volta ao portal do Azure, onde você pode executar as seguintes tarefas:
- Insira um nome exclusivo para o recurso de Pesquisa de IA, como byodsearch-[Seu Sobrenome].
- Selecione uma região próxima à sua localização.
- Na seção Tipo de preço , selecione Alterar Tipo de Preço e selecione Básico seguido por Selecionar. Não há suporte para o nível gratuito, portanto, você limpará o recurso do AI Search no final deste tutorial.
- Selecione Revisão seguida por Criar.
Depois que o recurso de Pesquisa de IA for criado, vá para a página visão geral do recurso e copie o valor da URL para um arquivo local.
Selecione Configurações -->Chaves no menu de navegação.
Na página de controle acesso à API , selecione Ambos para habilitar o serviço a ser acessado usando a Identidade Gerenciada ou usando uma chave. Selecione Sim quando solicitado.
Observação
Embora usemos uma chave de API neste exercício, já que a adição de atribuições de função pode levar até 10 minutos, com um pouco de esforço adicional, você pode habilitar uma identidade gerenciada atribuída pelo sistema para acessar o serviço com mais segurança.
Selecione Chaves no menu de navegação à esquerda e copie o valor da chave de administrador primário para um arquivo local. Você precisará do URL e dos valores-chave mais adiante no exercício.
Selecione Configurações -->Classificador semântico no menu de navegação e verifique se Gratuito está selecionado.
Observação
Para verificar se o classificador semântico está disponível em uma região específica, verifique a página Produtos Disponíveis por Região no site do Azure para ver se sua região está listada.
Volte para a caixa de diálogo Adicionar Dados do Azure AI Foundry e selecione o recurso de pesquisa recém-criado na lista suspensa selecionar recursos do Azure AI Search . Se você não o vir listado, selecione o ícone de atualização ao lado da lista suspensa.
Insira um valor de byod-search-index para o valor insira o nome do índice .
Selecione a caixa de seleção Adicionar pesquisa de vetor a essa caixa de seleção de recurso de pesquisa.
Na lista suspensa Selecionar um modelo de inserção , selecione o modelo text-embedding-ada-002 criado anteriormente.
Na caixa de diálogo Carregar arquivos , selecione Procurar um arquivo.
Navegue até a pasta de documentos do cliente do projeto (localizada na raiz do projeto) e selecione os seguintes arquivos:
- Instructions.docxde instalação do Relógio A102
- FAQs.docxda empresa
Observação
Atualmente, esse recurso oferece suporte aos seguintes formatos de arquivo para criação de índice local: .txt, .md, .html, .pdf, .docx e .pptx.
Selecione Carregar arquivos. Os arquivos serão carregados em um contêiner fileupload-byod-search-index no recurso de armazenamento de blobs criado anteriormente.
Selecione Avançar para ir para a caixa de diálogo Gerenciamento de dados .
Na lista suspensa Tipo de pesquisa, selecione Híbrido + semântico.
Observação
Essa opção fornece suporte para pesquisa de palavras-chave e vetores. Depois que os resultados são retornados, um processo de classificação secundário é aplicado ao conjunto de resultados usando modelos de aprendizado profundo, o que melhora a relevância da pesquisa para o usuário. Para saber mais sobre a pesquisa semântica, exiba a pesquisa semântica na documentação do Azure AI Search .
Verifique se o valor selecionar um tamanho está definido como 1024.
Selecione Próximo.
Para o tipo de autenticação de recurso do Azure, selecione a chave de API. Saiba mais sobre como selecionar o tipo de autenticação correto na documentação de autenticação do Azure AI Search.
Selecione Próximo.
Examine os detalhes e selecione Salvar e fechar.
Agora que seus dados personalizados foram carregados, os dados serão indexados e disponíveis para uso no playground do Chat. Esse processo pode levar alguns minutos. Depois de concluído, continue para a próxima seção.
Como usar sua fonte de dados personalizada no playground do Chat
Localize a seção Sessão de Chat da página no Azure OpenAI Studio e insira a seguinte consulta de usuário:
What safety rules are required to install a clock?Depois de enviar a consulta do usuário, você deverá ver um resultado semelhante ao seguinte: exibido:
Expanda a seção de 1 referências na resposta do chat e observe que o arquivo Instructions.docxde Instalação do Relógio A102 está listado e que você pode selecioná-lo para exibir o documento.
Insira a seguinte mensagem de usuário:
What should I do to mount the clock on the wall?Você deve ver um resultado semelhante ao seguinte exibido:
Agora vamos experimentar o documento de perguntas frequentes da empresa. Insira o seguinte texto no campo Consulta de usuário :
What is the company's policy on vacation time?Você deve ver que nenhuma informação foi encontrada para essa solicitação.
Insira o seguinte texto no campo Consulta de usuário :
How should I handle refund requests?Você deve ver um resultado semelhante ao seguinte exibido:
Expanda a seção 1 referências na resposta do chat e observe que o arquivo FAQs.docxempresa está listado e que você pode selecioná-lo para exibir o documento.
Selecione Exibir código na barra de ferramentas do playground do Chat.
Observe que você pode alternar entre diferentes idiomas, visualizar o endpoint e acessar a chave do endpoint. Feche a janela da caixa de diálogo Código de Exemplo .
Ative a alternância Mostrar JSON bruto acima das mensagens de chat. Observe que a sessão de chat começa com uma mensagem semelhante à seguinte:
{ "role": "system", "content": "You are an AI assistant that helps people find information." }Agora que você criou uma fonte de dados personalizada e a experimentou no playground do Chat, vamos ver como você pode usá-la no aplicativo do projeto.
Usando o recurso Traga seus próprios dados no aplicativo
Volte para o projeto no VS Code e abra o arquivo .env . Atualize os valores a seguir com o ponto de extremidade, a chave e o nome do índice do AI Services. Você copiou o ponto de extremidade e a chave para um arquivo local anteriormente neste exercício.
AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE> AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE> AZURE_AI_SEARCH_INDEX=byod-search-indexEm um exercício anterior , você iniciou o banco de dados, as APIs e o aplicativo. Você também atualizou o
.envarquivo. Se você não concluiu essas etapas, siga as instruções no final do exercício anterior antes de continuar.Depois que o aplicativo tiver sido carregado no navegador, selecione o ícone da Ajuda de Chat no canto superior direito do aplicativo.
O seguinte texto deve aparecer na caixa de diálogo de bate-papo:
How should I handle a company refund request?Selecione o botão Obter Ajuda . Você deverá ver os resultados retornados do documento FAQs.docxda Empresa que você carregou anteriormente no Azure OpenAI Studio. Se você quiser ler o documento, poderá encontrá-lo na pasta de documentos do cliente na raiz do projeto.
Altere o texto para o seguinte e selecione o botão Obter Ajuda :
What safety rules are required to install a clock?Você deverá ver os resultados retornados da instalação do Relógio A102 Instructions.docx documento que você carregou anteriormente no Azure OpenAI Studio. Este documento também está disponível na pasta de documentos do cliente na raiz do projeto.
Explorando o código
Dica
Se você estiver usando o Visual Studio Code, poderá abrir arquivos diretamente selecionando:
- Windows/Linux: Ctrl + P
- Mac: Cmd + P
Em seguida, digite o nome do arquivo que deseja abrir.
Volte para o código-fonte do projeto no Visual Studio Code.
Abra o arquivo de servidor/apiRoutes.ts e localize a
completeBYODrota. Essa API é chamada quando o botão Obter Ajuda é selecionado na caixa de diálogo Ajuda de Chat. Ele recupera o prompt do usuário do corpo da solicitação e o passa para acompleteBYOD()função no arquivo de servidor/openAI.ts . Os resultados são então retornados ao cliente.router.post('/completeBYOD', async (req, res) => { const { prompt } = req.body; if (!prompt) { return res.status(400).json({ status: false, error: 'The prompt parameter must be provided.' }); } let result; try { // Call OpenAI to get custom "bring your own data" completion result = await completeBYOD(prompt); } catch (e: unknown) { console.error('Error parsing JSON:', e); } res.json(result); });Abra o arquivo de servidor/openAI.ts e localize a
completeBYOD()função.async function completeBYOD(userPrompt: string): Promise<string> { const systemPrompt = 'You are an AI assistant that helps people find information in documents.'; return await callOpenAI(systemPrompt, userPrompt, 0, true); }Esta função tem as seguintes características:
- O
userPromptparâmetro contém as informações que o usuário digitou na caixa de diálogo de ajuda do chat. - a
systemPromptvariável define que será usado um assistente de IA projetado para ajudar as pessoas a encontrar informações. -
callOpenAI()é usado para chamar a API do OpenAI do Azure e retornar os resultados. Ele passa ossystemPromptvalores euserPromptbem como os seguintes parâmetros:-
temperature- A quantidade de criatividade a ser incluída na resposta. O usuário precisa de respostas consistentes (menos criativas) nesse caso, portanto, o valor é definido como 0. -
useBYOD- Um valor booliano que indica se deve ou não usar o AI Search junto com o Azure OpenAI. Nesse caso, ele está definido para que atruefuncionalidade de Pesquisa de IA seja usada.
-
- O
A
callOpenAI()função aceita umuseBYODparâmetro que é usado para determinar qual função OpenAI chamar. Nesse caso, ele é definidouseBYODcomotruepara que agetAzureOpenAIBYODCompletion()função seja chamada.function callOpenAI(systemPrompt: string, userPrompt: string, temperature = 0, useBYOD = false) { const isAzureOpenAI = OPENAI_API_KEY && OPENAI_ENDPOINT && OPENAI_MODEL; if (isAzureOpenAI) { if (useBYOD) { return getAzureOpenAIBYODCompletion(systemPrompt, userPrompt, temperature); } return getAzureOpenAICompletion(systemPrompt, userPrompt, temperature); } return getOpenAICompletion(systemPrompt, userPrompt, temperature); }Localize a
getAzureOpenAIBYODCompletion()função no servidor/openAI.ts. É bastante semelhante à função que você examinou anteriormente, mas é mostradagetAzureOpenAICompletion()como uma função separada para destacar algumas diferenças importantes que são exclusivas do cenário "Azure OpenAI em seus dados" disponível no Azure OpenAI.async function getAzureOpenAIBYODCompletion(systemPrompt: string, userPrompt: string, temperature: number): Promise<string> { const dataSources = [ { type: 'azure_search', parameters: { authentication: { type: 'api_key', key: AZURE_AI_SEARCH_KEY }, endpoint: AZURE_AI_SEARCH_ENDPOINT, index_name: AZURE_AI_SEARCH_INDEX } } ]; const completion = await createAzureOpenAICompletion(systemPrompt, userPrompt, temperature, dataSources) as AzureOpenAIYourDataResponse; console.log('Azure OpenAI Add Your Own Data Output: \n', completion.choices[0]?.message); for (let citation of completion.choices[0]?.message?.context?.citations ?? []) { console.log('Citation Path:', citation.filepath); } return completion.choices[0]?.message?.content?.trim() ?? ''; }Observe a seguinte funcionalidade na
getAzureOpenAIBYODCompletion()função:- É criada uma
dataSourcespropriedade que contém os valores ,keyeendpointe do recursoindex_namedo AI Search que foram adicionados ao.envarquivo anteriormente neste exercício - A
createAzureOpenAICompletion()função é chamada com ossystemPromptvalores ,userPrompt,temperature, edataSources. Essa função é usada para chamar a API do OpenAI do Azure e retornar os resultados. - Depois que a resposta é retornada, as citações do documento são registradas no console. O conteúdo da mensagem de conclusão é então retornado ao chamador.
- É criada uma
Alguns pontos finais a serem considerados antes de passar para o próximo exercício:
- O aplicativo de exemplo usa um único índice no Azure AI Search. Você pode usar vários índices e fontes de dados com o Azure OpenAI. A
dataSourcespropriedade na função pode ser atualizada para incluir várias fontes de dados,getAzureOpenAIBYODCompletion()conforme necessário. - A segurança deve ser cuidadosamente avaliada com esse tipo de cenário. Os usuários não devem ser capazes de fazer perguntas e obter resultados de documentos que não podem acessar.
- O aplicativo de exemplo usa um único índice no Azure AI Search. Você pode usar vários índices e fontes de dados com o Azure OpenAI. A
Agora que você aprendeu sobre o Azure OpenAI, prompts, conclusões e como usar seus próprios dados, vamos para o próximo exercício para saber como os recursos de comunicação podem ser usados para aprimorar o aplicativo. Se você quiser saber mais sobre o Azure OpenAI, exiba o conteúdo de treinamento introdução ao Serviço OpenAI do Azure . Informações adicionais sobre como usar seus próprios dados com o Azure OpenAI podem ser encontradas no Azure OpenAI em sua documentação de dados.