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.
Observação
Este documento refere-se ao portal do Microsoft Foundry (clássico ).
🔍 Exiba a documentação do Microsoft Foundry (novo) para saber mais sobre o novo portal.
Neste início rápido, você usa seus próprios dados com modelos do Azure OpenAI para criar uma plataforma de IA de conversação avançada que permite uma comunicação mais rápida e precisa.
Importante
Há novas maneiras de criar soluções de conversação com seus próprios dados. Para obter a abordagem recomendada mais recente, confira Início rápido: usar a recuperação por meio de agentes na Pesquisa de IA do Azure.
Pré-requisitos
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Parque de chat
Comece a explorar os recursos do OpenAI do Azure com uma abordagem sem código através do playground do chat. É apenas uma caixa de texto em que você pode enviar um prompt para gerar uma conclusão. Nesta página, você pode iterar e experimentar as funcionalidades rapidamente.
O playground oferece opções para adaptar sua experiência de chat. No menu superior, você pode selecionar Implantar para determinar qual modelo gera uma resposta usando os resultados da pesquisa do índice. Você escolhe o número de mensagens passadas a serem incluídas como histórico de conversa para respostas futuras geradas. O histórico de conversas fornece contexto para gerar respostas relacionadas, mas também consome uso de token. O indicador de progresso do token de entrada controla a contagem de tokens da pergunta enviada.
As configurações avançadas à esquerda são parâmetros de runtime, que fornecem controle sobre a recuperação e pesquisa de informações relevantes de seus dados. Um bom caso de uso é quando você deseja garantir que as respostas sejam geradas apenas com base em seus dados ou você descobrir que o modelo não pode gerar uma resposta com base nas informações existentes em seus dados.
A rigidez determina a agressividade do sistema na filtragem de documentos de pesquisa com base em suas pontuações de similaridade. Definir a rigidez como 5 indica que o sistema filtrará agressivamente documentos, aplicando um limite de similaridade muito alto. A pesquisa semântica pode ser útil nesse cenário porque os modelos de classificação fazem um trabalho melhor de inferir a intenção da consulta. Níveis mais baixos de rigidez produzem respostas mais detalhadas, mas também podem incluir informações que não estão em seu índice. Isso é definido como 3 por padrão.
Os documentos recuperados são um inteiro que pode ser definido como 3, 5, 10 ou 20 e controla o número de partes de documento fornecidas ao modelo de linguagem grande para formular a resposta final. Por padrão, ele é definido como 5.
Quando Limitar respostas aos seus dados estiver habilitado, o modelo tentará contar apenas com seus documentos para respostas. Isso é definido como true por padrão.
Enviar a primeira consulta Os modelos de chat têm o melhor desempenho em exercícios de perguntas e respostas. Por exemplo, "Quais são meus planos de saúde disponíveis?", ou "Qual é a opção de integridade mais?".
As consultas que exigem análise de dados provavelmente falharão, como "Qual plano de integridade é mais popular?". As consultas que exigem informações sobre todos os seus dados também provavelmente falharão, como "Quantos documentos carreguei?". Lembre-se de que o mecanismo de pesquisa procura partes com termos, frases ou construção semelhantes exatamente iguais à consulta. E embora o modelo possa entender a pergunta, se os resultados da pesquisa forem partes do conjunto de dados, não serão as informações certas para responder a esse tipo de pergunta.
Os chats são restringidos pelo número de documentos (fragmentos) retornados na resposta (limitado a 3-20 no playground do portal do Foundry). Como você pode imaginar, fazer uma pergunta sobre "todos os títulos" requer uma verificação completa de todo o repositório de vetores.
Implantar seu modelo
Depois de ficar satisfeito com a experiência, você poderá implantar um aplicativo Web diretamente do portal selecionando o botão Implantar em.
Isso oferece a opção de implantar em um aplicativo Web autônomo ou em um copilot no Copilot Studio (versão prévia) se você estiver usando seus próprios no modelo.
Por exemplo, se você optar por implantar um aplicativo web:
Na primeira vez que implantar um aplicativo Web, selecione Criar um novo aplicativo Web . Escolha um nome para o aplicativo, que se tornará parte da URL do aplicativo. Por exemplo, https://<appname>.azurewebsites.net.
Selecione sua assinatura, grupo de recursos, local e plano de preços para o aplicativo publicado. Para atualizar um aplicativo existente, selecione Publicar em um aplicativo Web existente e escolha o nome do aplicativo anterior no menu suspenso.
Se você optar por implantar um aplicativo web, veja as considerações importantes para usá-lo.
Pré-requisitos
- Uma assinatura do Azure – Crie uma gratuitamente.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
- O SDK do .NET 8
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
No diretório do projeto, abra o arquivo Program.cs e substitua seu conteúdo pelo seguinte código:
using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
AzureOpenAIClient openAIClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);
// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What health plans are available?"),
],
options);
ChatMessageContext onYourDataContext = completion.GetMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte este artigo de segurança .
dotnet run Program.cs
Saída
Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].
Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]
Citation:
Contoso Electronics plan and benefit packages
Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to
learn more about the various options available to you...// Omitted for brevity
Isso aguardará até que o modelo tenha gerado toda a resposta antes de imprimir os resultados.
Código da fonte| Código da fonte | Amostra
Pré-requisitos
- OpenAI do Azure
- Armazenamento de Blobs do Azure
- Pesquisa de IA do Azure
- Um Serviço OpenAI do Azure ou implantado em uma região com suporte e com um modelo com suporte.
- Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as variáveis necessárias
Para fazer uma chamada com êxito para o OpenAI do Azure, você precisa das seguintes variáveis. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Para obter mais informações, consulte Adicionar seus dados usando o Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
É possível encontrar esse valor na seção Chaves e Ponto de extremidade ao examinar seu recurso do OpenAI do Azure no portal do Microsoft Azure. Como alternativa, você pode encontrar o valor no Foundry>Chat playground>Code view. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_API_KEY |
É possível encontrar esse valor na seção Gerenciador de recursos>Chaves e Ponto de extremidade ao examinar seu recurso OpenAI do Azure no portal do Microsoft Azure. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Você pode encontrar esse valor em Gerenciamento de Recursos>Implantações no portal do Azure ou, como alternativa, em Gerenciamento>Implantações no portal do Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
É possível encontrar esse valor na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_API_KEY |
É possível encontrar esse valor na seção Configurações>Chaves ao examinar seu recurso de pesquisa de IA do Azure no portal do Microsoft Azure. Você pode usar a chave de administração primária ou a chave de administração secundária. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Variáveis de ambiente
Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.
Importante
Use as chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se você usar uma chave de API, armazene-a com segurança no Azure Key Vault. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, confira Chaves de API com o Azure Key Vault.
Para obter mais informações sobre a segurança dos serviços de IA, veja Autenticar solicitações para serviços de IA do Azure.
Observação
A IA do Spring define o nome do modelo como padrão para gpt-35-turbo. Só é necessário fornecer o valor SPRING_AI_AZURE_OPENAI_MODEL se você implantou um modelo com um nome diferente.
export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE
Criar um aplicativo Spring
Atualmente, a IA do Spring não dá suporte para as opções AzureCognitiveSearchChatExtensionConfiguration que permitem que uma consulta de IA do Azure encapsule o método de RAG (Recuperação com Geração Aumentada) e oculte os detalhes do usuário. Como alternativa, você ainda pode invocar o método RAG diretamente em seu aplicativo para consultar dados em seu índice de pesquisa de IA do Azure e usar os documentos recuperados para aumentar sua consulta.
A AI do Suporte dá suporte a uma abstração VectorStore, e você pode encapsular a Pesquisa de IA do Azure em uma implementação VectorStore da IA do Seus para consultar seus dados personalizados. O projeto a seguir implementa um VectorStore personalizado com suporte da Pesquisa de IA do Azure e executa diretamente as operações RAG.
Em uma janela do Bash, crie um diretório para seu aplicativo e navegue até ele.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Execute o comando spring init em seu diretório de trabalho. Esse comando criará uma estrutura de diretório padrão para o projeto Spring, incluindo o arquivo de origem da classe Java principal e o arquivo pom.xml usado para gerenciar projetos baseados em Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Os arquivos e as pastas geradas se assemelham à seguinte estrutura:
ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aicustomdatademo/
| |-- AiCustomDataApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aicustomdatademo/
|-- AiCustomDataApplicationTests.java
Editar o aplicativo Spring
Edite o arquivo pom.xml.
Na raiz do diretório do projeto, abra o arquivo pom.xml no seu editor ou IDE preferido e substitua o arquivo pelo seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>ai-custom-data-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AICustomData</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-search-documents</artifactId> <version>11.6.0-beta.10</version> <exclusions> <!-- exclude this to avoid changing the default serializer and the null-value behavior --> <exclusion> <groupId>com.azure</groupId> <artifactId>azure-core-serializer-json-jackson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> </project>Na pasta src/main/java/com/example/aicustomdatademo, abra AiCustomDataApplication.java no seu editor ou IDE preferido e cole o código a seguir:
package com.example.aicustomdatademo; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.ai.client.AiClient; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.SystemPromptTemplate; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.ai.prompt.messages.UserMessage; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Context; import com.azure.search.documents.SearchClient; import com.azure.search.documents.SearchClientBuilder; import com.azure.search.documents.models.IndexingResult; import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.RawVectorQuery; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; @SpringBootApplication public class AiCustomDataApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; private static final String template = """ You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers. DOCUMENTS: {documents} """; @Value("${spring.ai.azure.cognitive-search.endpoint}") private String acsEndpoint; @Value("${spring.ai.azure.cognitive-search.api-key}") private String acsApiKey; @Value("${spring.ai.azure.cognitive-search.index}") private String acsIndexName; @Autowired private AiClient aiClient; @Autowired private EmbeddingClient embeddingClient; public static void main(String[] args) { SpringApplication.run(AiCustomDataApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending custom data prompt to Foundry Tool. One moment please...\r\n")); final var store = vectorStore(embeddingClient); final String question = "What are my available health plans?"; final var candidateDocs = store.similaritySearch(question); final var userMessage = new UserMessage(question); final String docPrompts = candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template); final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts)); final var prompt = new Prompt(List.of(systemMessage, userMessage)); final var resps = aiClient.generate(prompt); System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size())); resps.getGenerations().stream() .forEach(gen -> { final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue()); System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText())); }); } @Bean public VectorStore vectorStore(EmbeddingClient embeddingClient) { final SearchClient searchClient = new SearchClientBuilder() .endpoint(acsEndpoint) .credential(new AzureKeyCredential(acsApiKey)) .indexName(acsIndexName) .buildClient(); return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient); } public static class AzureCognitiveSearchVectorStore implements VectorStore { private static final int DEFAULT_TOP_K = 4; private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0; private SearchClient searchClient; private final EmbeddingClient embeddingClient; public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient) { this.searchClient = searchClient; this.embeddingClient = embeddingClient; } @Override public void add(List<Document> documents) { final var docs = documents.stream().map(document -> { final var embeddings = embeddingClient.embed(document); return new DocEntry(document.getId(), "", document.getContent(), embeddings); }).toList(); searchClient.uploadDocuments(docs); } @Override public Optional<Boolean> delete(List<String> idList) { final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build()) .toList(); var results = searchClient.deleteDocuments(docIds); boolean resSuccess = true; for (IndexingResult result : results.getResults()) if (!result.isSucceeded()) { resSuccess = false; break; } return Optional.of(resSuccess); } @Override public List<Document> similaritySearch(String query) { return similaritySearch(query, DEFAULT_TOP_K); } @Override public List<Document> similaritySearch(String query, int k) { return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD); } @Override public List<Document> similaritySearch(String query, int k, double threshold) { final var searchQueryVector = new RawVectorQuery() .setVector(toFloatList(embeddingClient.embed(query))) .setKNearestNeighborsCount(k) .setFields("contentVector"); final var searchResults = searchClient.search(null, new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE); return searchResults.stream() .filter(r -> r.getScore() >= threshold) .map(r -> { final DocEntry entry = r.getDocument(DocEntry.class); final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap()); doc.setEmbedding(entry.getContentVector()); return doc; }) .collect(Collectors.toList()); } private List<Float> toFloatList(List<Double> doubleList) { return doubleList.stream().map(Double::floatValue).toList(); } } @Data @Builder @Jacksonized @AllArgsConstructor @NoArgsConstructor static class DocEntry { private String id; private String hash; private String content; private List<Double> contentVector; } }Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte este artigo de segurança .
Navegue de volta para a pasta raiz do projeto e execute o aplicativo usando o seguinte comando:
./mvnw spring-boot:run
Saída
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.5)
2023-11-07T14:40:45.250-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to Foundry Tool. One moment please...
Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentação de referência | Código-fonte | Pacote (npm) | Exemplos
Pré-requisitos
Uma assinatura do Azure – Crie uma gratuitamente.
A CLI do Azure usada para autenticação sem senha em um ambiente de desenvolvimento local, crie o contexto necessário entrando com a CLI do Azure.
Um recurso de OpenAI do Azure implantado em uma região com suporte e com um modelo com suporte.
Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Pré-requisitos do Microsoft Entra ID
Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:
- Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
- Atribua a função de
Cognitive Services Userà sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Configuração
Crie uma nova pasta
use-data-quickstarte vá para a pasta de início rápido com o seguinte comando:mkdir use-data-quickstart && cd use-data-quickstartCrie o
package.jsoncom o seguinte comando:npm init -yInstale a biblioteca de clientes do OpenAI para JavaScript com:
npm install openaiPara a autenticação sem senha recomendada:
npm install @azure/identity
Adicionar o código JavaScript
Crie o arquivo
index.jscom o seguinte código:const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); const { AzureOpenAI } = require("openai"); // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21"; function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Entre no Azure com o seguinte comando:
az loginExecute o arquivo JavaScript.
node index.js
Saída
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentação de referência | Código-fonte | Pacote (npm) | Exemplos
Pré-requisitos
Uma assinatura do Azure – Crie uma gratuitamente.
A CLI do Azure usada para autenticação sem senha em um ambiente de desenvolvimento local, crie o contexto necessário entrando com a CLI do Azure.
Um recurso de OpenAI do Azure implantado em uma região com suporte e com um modelo com suporte.
Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Pré-requisitos do Microsoft Entra ID
Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:
- Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
- Atribua a função de
Cognitive Services Userà sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Configuração
Crie uma nova pasta
use-data-quickstarte vá para a pasta de início rápido com o seguinte comando:mkdir use-data-quickstart && cd use-data-quickstartCrie o
package.jsoncom o seguinte comando:npm init -yAtualize o
package.jsonpara ECMAScript com o seguinte comando:npm pkg set type=moduleInstale a biblioteca de clientes do OpenAI para JavaScript com:
npm install openaiPara a autenticação sem senha recomendada:
npm install @azure/identity
Adicionar o código TypeScript
Crie o arquivo
index.tscom o seguinte código:import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Crie o arquivo
tsconfig.jsonpara transpilar o código TypeScript e copiar o código a seguir para ECMAScript.{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }Transcompilar de TypeScript para JavaScript.
tscEntre no Azure com o seguinte comando:
az loginExecute o código com o seguinte comando:
node index.js
Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte este artigo de segurança .
Saída
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Pré-requisitos
- OpenAI do Azure
- Armazenamento de Blobs do Azure
- Pesquisa de IA do Azure
- Um recurso do Azure OpenAI implantado em uma região com suporte e com um modelo com suporte.
- Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Referência | Código-fonte | Pacote (PyPi) | Amostras
Esses links referenciam a API do OpenAI para Python. Não há um SDK do OpenAI para Python específico para o Azure. Saiba como alternar entre os serviços OpenAI e o Azure OpenAI.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Criar um ambiente de Python
- Crie uma pasta chamada openai-python para seu projeto e um novo arquivo de código Python chamado main.py. Mude para esse diretório:
mkdir openai-python
cd openai-python
- Instale as seguintes bibliotecas do Python:
pip install openai
pip install python-dotenv
Criar o aplicativo do Python
- No diretório do projeto, abra o arquivo main.py e adicione o seguinte código:
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-10-21",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "What are my available health plans?",
},
],
extra_body={
"data_sources":[
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_AI_SEARCH_API_KEY"],
}
}
}
],
}
)
print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")
Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte este artigo de segurança .
- Execute o comando a seguir:
python main.py
O aplicativo imprime a resposta em um formato JSON adequado para uso em vários cenários. Ele inclui respostas para sua consulta e citações dos arquivos carregados.
Pré-requisitos
- OpenAI do Azure
- Armazenamento de Blobs do Azure
- Pesquisa de IA do Azure
- Um recurso do Azure OpenAI implantado em uma região com suporte e com um modelo com suporte.
- Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Exemplo de comandos do PowerShell
Os modelos de chat do OpenAI do Azure são otimizados para trabalhar com entradas formatadas como uma conversa. A variável messages passa uma matriz de dicionários com diferentes funções na conversa delineada pelo sistema, usuário, ferramenta e assistente. A variável dataSources se conecta ao seu índice do Azure Cognitive Search e permite que os modelos do OpenAI do Azure respondam usando seus dados.
Para disparar uma resposta do modelo, você deve terminar com uma mensagem do usuário indicando que é a vez do assistente responder.
Dica
Há vários parâmetros que é possível usar para alterar a resposta do modelo, como temperature ou top_p. Para saber mais, confira a documentação de referência do .
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2023-07-01-preview' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$acs = @{
search_endpoint = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
search_key = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
}
# Completion text
$body = @{
dataSources = @(
@{
type = 'AzureCognitiveSearch'
parameters = @{
endpoint = $acs.search_endpoint
key = $acs.search_key
indexName = $acs.search_index
}
}
)
messages = @(
@{
role = 'user'
content = 'What are my available health plans?'
}
)
} | convertto-json -depth 5
# Header for authentication
$headers = [ordered]@{
'api-key' = $openai.api_key
}
# Send a completion call to generate an answer
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.choices.messages[1].content
Saída de exemplo
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como O Gerenciamento de Segredos do PowerShell com o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte este artigo de segurança .
Converse com seu modelo usando um aplicativo Web
Para começar a conversar com o modelo do Azure OpenAI que usa seus dados, você pode implantar um aplicativo Web usando o portal do Microsoft Foundry ou o código de exemplo que fornecemos no GitHub. Esse aplicativo é implantado usando o serviço de aplicativo do Azure e fornece uma interface de usuário para o envio de consultas. Esse aplicativo pode ser usado com modelos do OpenAI do Azure que utilizam seus dados ou em modelos que não utilizam seus dados. Consulte o arquivo leia-me no repositório para obter instruções sobre requisitos, configuração e implantação. Opcionalmente, você pode personalizar a lógica de front-end e back-end do aplicativo Web fazendo alterações no código-fonte.
Pré-requisitos
- OpenAI do Azure
- Armazenamento de Blobs do Azure
- Pesquisa de IA do Azure
- Um recurso do Azure OpenAI implantado em uma região com suporte e com um modelo com suporte.
- Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Referência | Código-fonte | Pacote (Go) | Amostras
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Pré-requisitos do Microsoft Entra ID
Para a autenticação sem chave recomendada com o Microsoft Entra ID, você precisa:
- Instale a CLI do Azure usada para autenticação sem chave com o Microsoft Entra ID.
- Atribua a função de
Cognitive Services Userà sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Configuração
Crie uma nova pasta
dall-e-quickstarte vá para a pasta de início rápido com o seguinte comando:mkdir dall-e-quickstart && cd dall-e-quickstartPara a autenticação sem chave recomendada com o Microsoft Entra ID, entre no Azure com o seguinte comando:
az login
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Executar o início rápido
O código de exemplo neste início rápido usa o Microsoft Entra ID para a autenticação sem chave recomendada. Se você preferir usar uma chave de API, poderá substituir a NewDefaultAzureCredential implementação por NewKeyCredential.
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
Para executar o exemplo:
Crie um novo arquivo chamado quickstart.go. Copie o código a seguir no arquivo quickstart.go .
package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" ) func main() { azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") credential, err := azidentity.NewDefaultAzureCredential(nil) client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil) modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME") // Azure AI Search configuration searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX") searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT") searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY") if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{ Messages: []azopenai.ChatRequestMessageClassification{ &azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")}, }, MaxTokens: to.Ptr[int32](512), AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{ &azopenai.AzureSearchChatExtensionConfiguration{ // This allows Azure OpenAI to use an Azure AI Search index. // Answers are based on the model's pretrained knowledge // and the latest information available in the designated data source. Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n", *resp.Choices[0].Message.Role, len(*resp.Choices[0].Message.Content)) fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n", *resp.Choices[0].Message.Role, *resp.Choices[0].Message.Content, ) }Execute o seguinte comando para criar um novo módulo Go:
go mod init quickstart.goExecute
go mod tidypara instalar as dependências necessárias:go mod tidyExecute o seguinte comando para executar o exemplo:
go run quickstart.go
O aplicativo imprime a resposta, incluindo respostas para sua consulta e citações dos arquivos carregados.
Pré-requisitos
- OpenAI do Azure
- Armazenamento de Blobs do Azure
- Pesquisa de IA do Azure
- Um recurso do Azure OpenAI implantado em uma região com suporte e com um modelo com suporte.
- Verifique se você recebeu, pelo menos, a função Colaborador de Serviços Cognitivos no recurso do OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicionar seus dados usando o portal do Microsoft Foundry
Dica
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI em seus dados.
Para adicionar seus dados usando o portal:
-
Entre no Microsoft Foundry. Certifique-se de que o botão New Foundry está desativado. Estas etapas referem-se à Fábrica (clássico).
Selecione o recurso do Azure OpenAI. Se você tiver um recurso do Foundry, poderá criar um projeto do Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Instalação , selecione a implantação do modelo.
Selecione Adicionar seus dados>Adicionar uma fonte de dados.
Na página Fonte de dados :
Em Selecionar fonte de dados, selecione Carregar arquivos (versão prévia).
Dica
- Essa opção requer um recurso do Armazenamento de Blobs do Azure e um recurso do Azure AI Search para acessar e indexar seus dados. Para obter mais informações, consulte opções de fonte de dados e formatos e tipos de arquivo com suporte.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O CORS (compartilhamento de recursos entre origens) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para o recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione o recurso do Azure AI Search.
Insira um nome para o novo índice.
Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.
Selecione Próximo.
Na página Carregar arquivos :
Selecione Procurar um arquivo e selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Próximo.
Na página gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa de vetor para o índice.
Importante
- A pesquisa semântica e a busca em vetores estão sujeitas a preços adicionais. O recurso do Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa de vetor. Para obter mais informações, consulte Escolher uma camada e limites de serviço.
- Para ajudar a melhorar a qualidade da recuperação de informações e da resposta do modelo, recomendamos que você habilite a pesquisa semântica para os seguintes idiomas de fonte de dados: inglês, francês, espanhol, português, italiano, alemão, chinês(Zh), japonês, coreano, russo e árabe.
Selecione Próximo.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída pelo sistema ou uma chave de API.
Selecione Próximo.
Examine suas configurações e selecione Salvar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar as informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso OpenAI do Azure. Esse início rápido pressupõe que você tenha carregado seus dados em uma conta de armazenamento de blobs do Azure e tenha criado um índice da Pesquisa de IA do Azure. Consulte Adicionar seus dados usando o portal do Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves e ponto de extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um ponto de extremidade de exemplo é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações no portal do Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Esse valor pode ser encontrado na seção Visão Geral ao examinar o seu recurso de Pesquisa de IA do Azure no portal do Azure. |
AZURE_AI_SEARCH_INDEX |
Esse valor corresponde ao nome do índice que você criou para armazenar seus dados. Você pode encontrá-lo na seção Visão geral ao examinar seu recurso de Pesquisa de IA do Azure no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Exemplos de comandos cURL
Os modelos de chat do OpenAI do Azure são otimizados para trabalhar com entradas formatadas como uma conversa. A variável messages passa uma matriz de dicionários com diferentes funções na conversa delineada pelo sistema, usuário, ferramenta e assistente. A variável dataSources se conecta ao seu índice da Pesquisa de IA do Azure e permite que os modelos do OpenAI do Azure respondam usando seus dados.
Para disparar uma resposta do modelo, você deve terminar com uma mensagem do usuário indicando que é a vez do assistente responder.
Dica
Há vários parâmetros que é possível usar para alterar a resposta do modelo, como temperature ou top_p. Para saber mais, confira a documentação de referência do .
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'",
"authentication": {
"type": "api_key",
"key": "'$AZURE_AI_SEARCH_API_KEY'"
}
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Saída de exemplo
{
"id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
"model": "gpt-4",
"created": 1709835345,
"object": "extensions.chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
"end_turn": true,
"context": {
"citations": [
{
"content": "...",
"title": "...",
"url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
"filepath": "001.txt",
"chunk_id": "0"
}
],
"intent": "[\"Available health plans\"]"
}
}
}
],
"usage": {
"prompt_tokens": 3779,
"completion_tokens": 105,
"total_tokens": 3884
},
"system_fingerprint": "fp_65792305e4"
}
Converse com seu modelo usando um aplicativo Web
Para começar a conversar com o modelo do Azure OpenAI que usa seus dados, você pode implantar um aplicativo Web usando o portal do Microsoft Foundry ou o código de exemplo que fornecemos no GitHub. Esse aplicativo é implantado usando o serviço de aplicativo do Azure e fornece uma interface de usuário para o envio de consultas. Esse aplicativo pode ser usado com modelos do OpenAI do Azure que utilizam seus dados ou em modelos que não utilizam seus dados. Consulte o arquivo leia-me no repositório para obter instruções sobre requisitos, configuração e implantação. Opcionalmente, você pode personalizar a lógica de front-end e back-end do aplicativo Web fazendo alterações no código-fonte.
Limpar os recursos
Se você quiser limpar e remover um recurso do OpenAI do Azure ou da Pesquisa de IA do Azure, poderá excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.