Page_type | idiomas | produtos | Urlfragment | nome | descrição | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amostra |
|
| Azure-Search-Openai-Demo-Csharp | ChatGPT + Enterprise Data (CSharp) | Um aplicativo de amostra CSharp que conversa com seus dados usando o OpenAI e a AI Search. |
Esta amostra demonstra algumas abordagens para criar experiências do tipo ChatGPT sobre seus próprios dados usando o padrão de geração aumentada de recuperação. Ele usa o serviço Azure OpenAi para acessar o modelo ChatGPT ( gpt-4o-mini
) e o Azure AI busca indexação e recuperação de dados.
O repositório inclui dados de amostra, por isso está pronto para tentar ponta a ponta. Nesta amostra, usamos uma empresa fictícia chamada Contoso Electronics, e a experiência permite que seus funcionários façam perguntas sobre os benefícios, políticas internas, bem como descrições e funções de trabalho.
Para mais detalhes sobre como este aplicativo foi construído, confira:
Queremos ouvir de você! Você está interessado em construir ou atualmente criar aplicativos inteligentes? Reserve alguns minutos para concluir esta pesquisa.
Pegue a pesquisa
Para implantar e executar este exemplo, você precisará
Microsoft.Authorization/roleAssignments/write
ARMUNDIDAS, como Administrador de Acesso ao Usuário ou Proprietário. Aviso
Por padrão, esta amostra criará um aplicativo de contêiner do Azure, e o recurso de pesquisa de IA do Azure que possui um custo mensal, bem como o recurso de inteligência de documentos do Azure AI que possui a página de custo por documento. Você pode alterá -los para versões gratuitas de cada uma delas, se quiser evitar esse custo alterando o arquivo parâmetros na pasta Infra (embora existam alguns limites a serem considerados; por exemplo, você pode ter até 1 recurso gratuito de busca do Azure AI por assinatura e o recurso gratuito do Azure AI Document Intelligence Resource apenas as duas primeiras páginas de cada documento.)
O preço varia de acordo com a região e o uso, por isso não é possível prever custos exatos para o seu uso. No entanto, você pode experimentar a calculadora de preços do Azure para os recursos abaixo:
Para reduzir custos, você pode mudar para SKUs gratuitos para vários serviços, mas esses SKUs têm limitações. Consulte este guia sobre a implantação com custos mínimos para obter mais detalhes.
azd down
.
Você tem algumas opções para configurar este projeto. A maneira mais fácil de começar é o GitHub Codespaces, pois ele configurará todas as ferramentas para você, mas você também pode configurá -lo localmente, se desejar.
Você pode executar este repositório virtualmente usando os espaços de código do Github, que abrirão um código VS baseado na Web no seu navegador:
Uma opção relacionada é o vs Code Remote Riceers, que abrirá o projeto no seu código local VS usando a extensão de contêineres de dev:
Instale os seguintes pré -requisitos:
Desenvolvedor do Azure CLI
.NET 8
Git
PowerShell 7+ (PWSH) - Apenas para usuários do Windows.
IMPORTANTE : Verifique se você pode executar
pwsh.exe
a partir de um comando PowerShell. Se isso falhar, você provavelmente precisará atualizar o PowerShell.
Docker
IMPORTANTE : Verifique se o Docker está em execução antes de executar quaisquer comandos de provisionamento / implantação
azd
.
Em seguida, execute os seguintes comandos para obter o projeto em seu ambiente local:
azd auth login
azd init -t azure-search-openai-demo-csharp
azd env new azure-search-openai-demo-csharp
Transmissão ao vivo: implantando do zero nos espaços de codificina transmissão ao vivo: implantando do zero no Windows 11
IMPORTANTE : Verifique se o Docker está em execução antes de executar quaisquer comandos de provisionamento / implantação
azd
.
Execute o seguinte comando, se você não tiver nenhum serviço do Azure pré-existente e deseja começar com uma nova implantação.
Execute azd up
- isso fornecerá recursos do Azure e implantará esse exemplo nesses recursos, incluindo a criação do índice de pesquisa com base nos arquivos encontrados na pasta ./data
.
Nota : Este aplicativo usa o modelo
gpt-4o-mini
. Ao escolher em qual região implantar, verifique se eles estão disponíveis nessa região (ou seja, Eastus). Para mais informações, consulte a documentação do serviço do Azure Openai.
Depois que o aplicativo foi implantado com sucesso, você verá um URL impresso no console. Clique nesse URL para interagir com o aplicativo no seu navegador.
Parece o seguinte:
[! Nota]: Pode levar alguns minutos para que o aplicativo seja totalmente implantado. Depois que o aplicativo for implantado, também levará alguns minutos para processar os documentos a serem adicionados ao banco de dados do vetor.
Se você possui recursos existentes no Azure que deseja usar, pode configurar azd
para usá -los definindo as seguintes variáveis de ambiente azd
:
azd env set AZURE_OPENAI_SERVICE {Name of existing OpenAI service}
azd env set AZURE_OPENAI_RESOURCE_GROUP {Name of existing resource group that OpenAI service is provisioned to}
azd env set AZURE_OPENAI_CHATGPT_DEPLOYMENT {Name of existing ChatGPT deployment}
. Somente necessária se a sua implantação de chatgpt não for o 'bate -papo' padrão.azd env set AZURE_OPENAI_EMBEDDING_DEPLOYMENT {Name of existing embedding model deployment}
. Somente necessária se a sua implantação de modelo de incorporação não for a embedding
padrão.azd up
Observação
Você também pode usar contas de pesquisa e armazenamento existentes. Veja ./infra/main.parameters.json
para obter a lista de variáveis de ambiente para passar para azd env set
para configurar esses recursos existentes.
Importante
Verifique se o Docker está em execução antes de executar qualquer comandos de provisionamento / implantação azd
.
azd up
Observação
Make sure you have AZD supported bicep files in your repository and add an initial GitHub Actions Workflow file which can either be triggered manually (for initial deployment) or on code change (automatically re-deploying with the latest changes) To make your repository compatible with App Spaces, you need to make changes to your main bicep and main parameters file to allow AZD to deploy to an existing resource group with the appropriate tags.
"resourceGroupName" : {
"value" : " ${AZURE_RESOURCE_GROUP} "
}
"tags" : {
"value" : " ${AZURE_TAGS} "
}
param resourceGroupName string = ''
param tags string = ''
var baseTags = { 'azd-env-name' : environmentName }
var updatedTags = union ( empty ( tags ) ? {} : base64ToJson ( tags ), baseTags )
Make sure to use " updatedTags " when assigning " tags " to resource group created in your bicep file and update the other resources to use " baseTags " instead of " tags ". For example -
``` json
resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
name : ! empty ( resourceGroupName ) ? resourceGroupName : '${ abbrs . resourcesResourceGroups }${ environmentName }'
location : location
tags : updatedTags
}
Importante
Verifique se o Docker está em execução antes de executar qualquer comandos de provisionamento / implantação azd
.
Run azd auth login
Depois que o aplicativo implantar, defina a variável de ambiente AZURE_KEY_VAULT_ENDPOINT
. Você pode encontrar o valor no arquivo .zure/your-aambient-name/.env ou no portal do Azure.
Execute o seguinte comando .NET CLI para iniciar o servidor API mínimo do ASP.NET Core (host cliente):
dotnet run --project ./app/backend/MinimalApi.csproj --urls=http://localhost:7181/
Navegue para http: // localhost: 7181 e teste o aplicativo.
Esta amostra inclui um cliente .NET Maui, embalando a experiência como um aplicativo que pode ser executado em uma área de trabalho do Windows/MacOS ou nos dispositivos Android e iOS. O cliente Maui aqui é implementado usando o Blazor Hybrid, permitindo que compartilhe mais código com o front -end do site.
Abra o aplicativo/app-maui.sln para abrir a solução que inclui o cliente Maui
Editar app/maui-blazor/mauiprogram.cs , atualizando client.BaseAddress
com o URL para o back-end.
Se estiver em execução no Azure, use o URL para o back -end de serviço das etapas acima. Se estiver executando localmente, use http: // localhost: 7181.
Defina Mauiblazor como o projeto de inicialização e execute o aplicativo
Execute o seguinte se quiser dar a outra pessoa acesso ao ambiente implantado e existente.
azd init -t azure-search-openai-demo-csharp
azd env refresh -e {environment name}
- Observe que eles precisarão do nome do ambiente AZD, ID da assinatura e local para executar este comando - você pode encontrar esses valores no seu ./azure/{env name}/.env
Isso preencherá o arquivo .env do ambiente AZD com todas as configurações necessárias para executar o aplicativo localmente.pwsh ./scripts/roles.ps1
- Isso atribuirá todas as funções necessárias ao usuário para que possam executar o aplicativo localmente. Se eles não tiverem a permissão necessária para criar funções na assinatura, talvez seja necessário executar esse script para elas. Certifique -se de definir a variável de ambiente AZURE_PRINCIPAL_ID
no arquivo AZD .env ou no shell ativo para o seu ID do Azure, que eles podem obter com az account show
. Corra azd down
azd
. O URL é impresso quando azd
é concluído (como "endpoint"), ou você pode encontrá -lo no portal do Azure.Uma vez no aplicativo da web:
Para ativar as idéias do aplicativo e o rastreamento de cada solicitação, juntamente com o registro de erros, defina a variável AZURE_USE_APPLICATION_INSIGHTS
para True antes de executar azd up
azd env set AZURE_USE_APPLICATION_INSIGHTS true
azd up
Para ver os dados de desempenho, acesse o recurso do Application Insights em seu grupo de recursos, clique em Blade "Investigate -> Performance" e navegue para qualquer solicitação HTTP para ver os dados de tempo. Para inspecionar o desempenho das solicitações de bate-papo, use o botão "broca em amostras" para ver traços de ponta a ponta de todas as chamadas da API feitas para qualquer solicitação de bate-papo:
Para ver quaisquer exceções e erros do servidor, navegue até a lâmina "Investigue -> falhas" e use as ferramentas de filtragem para localizar uma exceção específica. Você pode ver traços de pilha Python no lado direito.
Por padrão, o aplicativo de contêiner do Azure implantado não terá restrições de autenticação ou acesso ativado, o que significa que qualquer pessoa com acesso de rede rotável ao aplicativo de contêiner pode conversar com seus dados indexados. Você pode precisar de autenticação ao seu Azure Active Directory seguindo o tutorial de autenticação do aplicativo de contêiner Adicionar e configurá -lo no aplicativo de contêiner implantado.
Para limitar o acesso a um conjunto específico de usuários ou grupos, você pode seguir as etapas do Azure Ap App do Azure Ap a um conjunto de usuários alterando "a atribuição necessária?" Opção no aplicativo corporativo e, em seguida, atribuindo aos usuários/grupos de acesso. Os usuários não concedidos pelo acesso explícito receberão a mensagem de erro -Adsts50105: seu administrador configurou o aplicativo <Pap_Name> para bloquear os usuários, a menos que sejam concedidos especificamente ('atribuídos') acesso ao aplicativo.-
Com GPT-4o-mini
, é possível apoiar uma geração de recuperação enriquecida, fornecendo texto e imagem como conteúdo de origem. Para ativar o suporte à visão, você precisa ativar USE_VISION
e usar o modelo GPT-4o
ou GPT-4o-mini
ao provisionar.
Observação
Você precisaria reiniciar o material de suporte e re-implantar o aplicativo depois de ativar o suporte do GPT-4O se já implantou o aplicativo antes. Isso ocorre porque a ativação do suporte GPT-4O exige que novos campos sejam adicionados ao índice de pesquisa.
Para ativar o suporte GPT-4V com o Azure OpenAi Service, execute os seguintes comandos:
azd env set USE_VISION true
azd env set USE_AOAI true
azd env set AZURE_OPENAI_CHATGPT_MODEL_NAME gpt-4o-mini
azd env set AZURE_OPENAI_RESOURCE_LOCATION eastus # Please check the gpt model availability for more details.
azd up
Para ativar o suporte da visão com o OpenAI, execute os seguintes comandos:
azd env set USE_VISION true
azd env set USE_AOAI false
azd env set OPENAI_CHATGPT_DEPLOYMENT gpt-4o
azd up
Para limpar os recursos implantados anteriormente, execute o seguinte comando:
azd down --purge
azd env set AZD_PREPDOCS_RAN false # This is to ensure that the documents are re-indexed with the new fields.
Além das dicas abaixo, você pode encontrar uma documentação extensa na pasta Docs.
Esta amostra foi projetada para ser um ponto de partida para o seu próprio aplicativo de produção, mas você deve fazer uma revisão completa da segurança e desempenho antes de implantar na produção. Aqui estão algumas coisas a considerar:
Capacidade OpenAI : o TPM padrão (tokens por minuto) é definido como 30K. Isso é equivalente a aproximadamente 30 conversas por minuto (assumindo 1k por mensagem/resposta do usuário). Você pode aumentar a capacidade alterando os parâmetros chatGptDeploymentCapacity
e embeddingDeploymentCapacity
em infra/main.bicep
na capacidade máxima da sua conta. Você também pode visualizar a guia Cotas no Azure Openai Studio para entender quanta capacidade você tem.
Armazenamento do Azure : a conta de armazenamento padrão usa o Standard_LRS
SKU. Para melhorar sua resiliência, recomendamos o uso de Standard_ZRS
para implantações de produção, que você pode especificar usando a propriedade sku
no módulo storage
em infra/main.bicep
.
Pesquisa de IA do Azure : se você vir erros sobre a capacidade do serviço de pesquisa sendo excedida, poderá achar útil aumentar o número de réplicas alterando replicaCount
no infra/core/search/search-services.bicep
.
Aplicativos de contêiner do Azure : por padrão, este aplicativo implanta contêineres com núcleos de 0,5 CPU e 1 GB de memória. As réplicas mínimas são 1 e no máximo 10. Para este aplicativo, você pode definir valores como containerCpuCoreCount
, containerMaxReplicas
, containerMemory
, containerMinReplicas
no arquivo infra/core/host/container-app.bicep
para atender às suas necessidades. Você pode usar regras de escala automática ou regras de escala programadas e ampliar o máximo/mínimo com base na carga.
Autenticação : Por padrão, o aplicativo implantado é acessível ao público. Recomendamos restringir o acesso a usuários autenticados. Consulte Ativando a autenticação acima para ativar a autenticação.
Networking : Recomendamos implantar em uma rede virtual. Se o aplicativo for apenas para uso interno da empresa, use uma zona DNS privada. Considere também o uso do gerenciamento da API do Azure (APIM) para firewalls e outras formas de proteção. Para mais detalhes, leia a arquitetura de referência da zona de pouso do Azure Openai.
LOADTESTING : Recomendamos executar um teste de carga para o seu número esperado de usuários.
Azure.AI.OpenAI
nugetObservação
Os documentos PDF usados nesta demonstração contêm informações geradas usando um modelo de idioma (serviço do Azure OpenAI). As informações contidas nesses documentos são apenas para fins de demonstração e não refletem as opiniões ou crenças da Microsoft. A Microsoft não faz representações ou garantias de qualquer tipo, expressa ou implícita, sobre a integridade, precisão, confiabilidade, adequação ou disponibilidade em relação às informações contidas neste documento. Todos os direitos reservados para a Microsoft.
Pergunta : Por que precisamos dividir os PDFs em pedaços quando o Azure AI Search suporta pesquisar documentos grandes?
Resposta : Chunking nos permite limitar a quantidade de informações que enviamos ao OpenAI devido a limites de token. Ao interromper o conteúdo, ele nos permite encontrar facilmente pedaços em potencial de texto que podemos injetar no OpenAI. O método de Chunking que usamos alavanca uma janela deslizante de texto, de modo que frases que terminam um pedaço iniciarão o próximo. Isso nos permite reduzir a chance de perder o contexto do texto.