Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este documento refere-se ao portal Microsoft Foundry (clássico).
🔍 Consulte a documentação (nova) da Microsoft Foundry 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 conversacional poderosa 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, consulte Guia de início rápido: usar a recuperação agentic no Azure AI Search.
Pré-requisitos
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Sala de bate-papo
Comece a explorar os recursos do Azure OpenAI com uma abordagem sem código por meio do playground de bate-papo. É simplesmente uma caixa de texto onde você pode enviar um prompt para gerar uma conclusão. Nesta página, podes iterar e experimentar rapidamente as funcionalidades.
O playground oferece opções para personalizar sua experiência de bate-papo. No menu superior, você pode selecionar Implantar para determinar qual modelo gera uma resposta usando os resultados da pesquisa do seu índice. Você escolhe o número de mensagens passadas a serem incluídas como histórico de conversas para futuras respostas geradas. O histórico de conversas fornece contexto para gerar respostas relacionadas, mas também consome o uso de tokens. 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 tempo de execução, que lhe dão controle sobre a recuperação e pesquisa de informações relevantes de seus dados. Um bom caso de uso é quando você quer ter certeza de que as respostas são geradas apenas com base em seus dados ou você acha que o modelo não pode gerar uma resposta com base em informações existentes em seus dados.
O rigor determina a agressividade do sistema na filtragem de documentos de pesquisa com base nas suas pontuações de semelhança. Definir rigor como 5 indica que o sistema filtrará agressivamente os 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 rigor produzem respostas mais detalhadas, mas também podem incluir informações que não estão no seu índice. Isso é definido como 3 por padrão.
Documentos recuperados é um número inteiro que pode ser definido como 3, 5, 10 ou 20 e controla o número de blocos de documentos fornecidos ao modelo de linguagem de grande porte para formular a resposta final. Por padrão, isso é definido como 5.
Quando a opção Limitar respostas aos seus dados está ativada, o modelo tenta confiar apenas nos seus documentos para obter respostas. Isso é definido como verdadeiro por predefinição.
Envie a sua primeira consulta. Os modelos de chat têm o melhor desempenho em exercícios de perguntas e respostas. Por exemplo, "Quais são os meus planos de saúde disponíveis?" ou "Qual é a opção saúde mais?".
Consultas que exigem análise de dados provavelmente falhariam, como "Qual plano de saúde é mais popular?". Consultas que exigem informações sobre todos os seus dados provavelmente também falharão, como "Quantos documentos eu carreguei?". Lembre-se de que o mecanismo de pesquisa procura partes com termos, frases ou construções exatas ou semelhantes à consulta. E embora o modelo possa entender a pergunta, se os resultados da pesquisa forem partes do conjunto de dados, não é a informação certa para responder a esse tipo de pergunta.
Os chats são limitados pelo número de documentos (blocos) devolvidos na resposta (limitados a 3-20 na sandbox do portal Foundry). Como você pode imaginar, fazer uma pergunta sobre "todos os títulos" requer uma varredura completa de todo o repositório vetorial.
Implante seu modelo
Quando estiver satisfeito com a experiência, você poderá implantar um aplicativo Web diretamente do portal selecionando o botão Implantar em .
Isto dá-lhe a opção de implantar numa aplicação web autónoma ou um copiloto no Copilot Studio (pré-visualização) se estiver usando os seus próprios dados 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 do URL do aplicativo. Por exemplo, https://<appname>.azurewebsites.net.
Selecione a sua subscrição, grupo de recursos, localização e plano de preços para a aplicação publicada. Para atualizar uma aplicação existente, selecione Publicar numa aplicação web existente e escolha o nome da sua aplicação anterior no menu pendente.
Se você optar por implantar um aplicativo Web, consulte 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
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search 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
Resultado
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 gere toda a sua resposta antes de imprimir os resultados.
Pré-requisitos
- Azure OpenAI
- Armazenamento de Blobs do Azure
- Azure AI Search
- Um Azure OpenAI ou implantado em uma região com suporte e com um modelo suportado.
- Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Recuperar variáveis necessárias
Para fazer uma chamada com êxito no Azure OpenAI, você precisa das seguintes variáveis. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Para mais informações, consulte Adicionar os seus dados usando a Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Você pode encontrar esse valor na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Alternativamente, pode encontrar o valor noFoundry>Chat playground>visualização de código. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_API_KEY |
Você pode encontrar este valor na seção de Gerenciamento de recursos>Chaves e Ponto de Extremidade ao examinar o seu recurso Azure OpenAI no portal do Azure. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe alternar e regenerar as suas chaves com segurança, sem causar uma interrupção do serviço. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Pode encontrar este valor em Implementações de Gestão> de Recursos no portal Azure ou, alternativamente, emImplementações de Gestão> no portal Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Você pode encontrar esse valor na seção Visão geral ao examinar seu recurso Azure AI Search no portal do Azure. |
AZURE_AI_SEARCH_API_KEY |
Você pode encontrar esse valor na seção Chaves de Configurações> ao examinar seu recurso Azure AI Search no portal do Azure. Você pode usar a chave de administração primária ou a chave de administração secundária. Ter sempre duas chaves permite-lhe alternar e regenerar as suas chaves com segurança, sem causar uma interrupção do 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 Azure AI Search no portal do Azure. |
Variáveis de ambiente
Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.
Importante
Use 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 Cofre de Chaves do Azure. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte Chaves de API com o Cofre de Chaves do Azure.
Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.
Observação
O Spring AI padroniza o nome do modelo como gpt-35-turbo. Só é necessário fornecer o SPRING_AI_AZURE_OPENAI_MODEL valor se você tiver implantado 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 novo aplicativo Spring
Atualmente, o Spring AI não oferece suporte às AzureCognitiveSearchChatExtensionConfiguration opções que permitem que uma consulta de IA do Azure encapsular o método RAG (Retrieval Augmented Generation) 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 do Azure AI Search e usar documentos recuperados para aumentar sua consulta.
O Spring AI dá suporte a uma abstração do VectorStore e você pode envolver o Azure AI Search em uma implementação do Spring AI VectorStore para consultar seus dados personalizados. O projeto a seguir implementa um VectorStore personalizado apoiado pelo Azure AI Search e executa diretamente operações RAG.
Em uma janela Bash, crie um novo diretório para seu aplicativo e navegue até ele.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Execute o comando spring init a partir do seu diretório de trabalho. Este comando cria uma estrutura de diretórios padrão para seu projeto Spring, incluindo o arquivo de origem da classe Java principal e o arquivo pom.xml usado para gerenciar projetos baseados no Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Os arquivos e pastas gerados 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 aplicativo Spring
Edite o arquivo pom.xml .
Na raiz do diretório do projeto, abra o arquivo pom.xml em 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 em seu editor ou IDE preferido e cole o seguinte código:
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
Resultado
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: 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) | Amostras
Pré-requisitos
Uma assinatura do Azure - Crie uma gratuitamente.
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 OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso 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
Cognitive Services Userfunção à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Configurar
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 cliente OpenAI para JavaScript com:
npm install openaiPara a autenticação sem senha recomendada :
npm install @azure/identity
Adicionar o código JavaScript
Crie o
index.jsarquivo com 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
Resultado
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) | Amostras
Pré-requisitos
Uma assinatura do Azure - Crie uma gratuitamente.
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 OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso 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
Cognitive Services Userfunção à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Configurar
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 cliente OpenAI para JavaScript com:
npm install openaiPara a autenticação sem senha recomendada :
npm install @azure/identity
Adicionar o código TypeScript
Crie o
index.tsarquivo com 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
tsconfig.jsonarquivo para transpilar o código TypeScript e copie 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"] }Converter TypeScript em 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 .
Resultado
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
- Azure OpenAI
- Armazenamento de Blobs do Azure
- Azure AI Search
- Um recurso OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
- Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Esses links fazem referência à API OpenAI para Python. Não há nenhum SDK Python OpenAI específico do Azure. Aprenda como alternar entre os serviços OpenAI e o Azure OpenAI.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Criar um ambiente Python
- Crie uma nova 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 Python:
pip install openai
pip install python-dotenv
Criar o aplicativo 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 seguinte comando:
python main.py
O aplicativo imprime a resposta em um formato JSON adequado para uso em muitos cenários. Inclui respostas à sua consulta e citações dos ficheiros carregados.
Pré-requisitos
- Azure OpenAI
- Armazenamento de Blobs do Azure
- Azure AI Search
- Um recurso OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
- Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search 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 Azure OpenAI são otimizados para trabalhar com entradas formatadas como uma conversa. A messages variável passa por uma matriz de dicionários com diferentes papéis na conversação delineados por sistema, usuário, ferramenta e assistente. A dataSources variável se conecta ao seu índice de Pesquisa Cognitiva do Azure e permite que os modelos do Azure OpenAI respondam usando seus dados.
Para acionar uma resposta do modelo, você deve terminar com uma mensagem de usuário indicando que é a vez do assistente responder.
Sugestão
Há vários parâmetros que você pode usar para alterar a resposta do modelo, como temperature ou top_p. Consulte a documentação de referência para obter mais informações.
# 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
Exemplo de saída
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 Secreto do PowerShell com o Cofre de Chaves do Azure. 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 Azure OpenAI que utiliza os seus dados, pode implementar uma aplicação web usando o portal Microsoft Foundry ou código de exemplo que fornecemos no GitHub. Este aplicativo implanta usando o serviço de aplicativo do Azure e fornece uma interface de usuário para enviar consultas. Este aplicativo pode ser usado com modelos do Azure OpenAI que usam seus dados ou modelos que não usam seus dados. Consulte o arquivo readme no repositório para obter instruções sobre requisitos, configuração e implantação. Opcionalmente, você pode personalizar a lógica de frontend e back-end do aplicativo Web fazendo alterações no código-fonte.
Pré-requisitos
- Azure OpenAI
- Armazenamento de Blobs do Azure
- Azure AI Search
- Um recurso OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
- Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso 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
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar 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
Cognitive Services Userfunção à sua conta de utilizador. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Configurar
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
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Executar o arranque 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 preferir usar uma chave de API, você pode 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 para o 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
A aplicação imprime a resposta, incluindo as respostas à sua consulta e as citações dos ficheiros carregados.
Pré-requisitos
- Azure OpenAI
- Armazenamento de Blobs do Azure
- Azure AI Search
- Um recurso OpenAI do Azure implantado em uma região com suporte e com um modelo suportado.
- Certifique-se de que lhe foi atribuída pelo menos a função de Colaborador dos Serviços Cognitivos para o recurso OpenAI do Azure.
- Baixe os dados de exemplo do GitHub se você não tiver seus próprios dados.
Adicione os seus dados usando o portal Microsoft Foundry
Sugestão
Como alternativa, você pode usar a CLI do Desenvolvedor do Azure para criar programaticamente os recursos necessários para o Azure OpenAI On Your Data.
Para adicionar seus dados usando o portal:
-
Inicie sessão no Microsoft Foundry. Certifica-te de que a opção do New Foundry está desligada. Estes passos referem-se à Foundry (clássica).
Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.
No painel esquerdo, selecione Playgrounds>Chat.
No painel Configuraçã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 (visualização).
Sugestão
- Esta opção requer um recurso de Armazenamento de Blobs do Azure e um recurso de Pesquisa de IA do Azure para acessar e indexar seus dados. Para obter mais informações, consulte Opções da fonte de dados e Tipos e formatos de arquivo suportados.
- Para documentos e conjuntos de dados com texto longo, recomendamos que você use o script de preparação de dados.
O compartilhamento de recursos entre origens (CORS) é necessário para que o Azure OpenAI acesse sua conta de armazenamento. Se o CORS ainda não estiver habilitado para seu recurso de Armazenamento de Blobs do Azure, selecione Ativar CORS.
Selecione seu recurso 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 Avançar.
Na página Carregar ficheiros :
Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.
Selecione Carregar arquivos.
Selecione Avançar.
Na página Gerenciamento de dados :
Escolha se deseja habilitar a pesquisa semântica ou a pesquisa vetorial para seu índice.
Importante
- A pesquisa semântica e a pesquisa vetorial estão sujeitas a preços adicionais. Seu recurso Azure AI Search deve estar na camada Básica ou superior para habilitar a pesquisa semântica ou a pesquisa vetorial. 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 Avançar.
Na página Conexão de dados :
Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.
Selecione Avançar.
Reveja as suas configurações e, em seguida, selecione Guardar e fechar.
Agora você pode conversar com o modelo, que usa seus dados para construir a resposta.
Obter informações do recurso
Você precisa recuperar as seguintes informações para autenticar seu aplicativo com seu recurso do Azure OpenAI. Este guia de início rápido pressupõe que você carregou seus dados em uma conta de armazenamento de blob do Azure e criou um índice do Azure AI Search. Veja Adicionar os seus dados usando o portal Microsoft Foundry.
| Nome da variável | Valor |
|---|---|
AZURE_OPENAI_ENDPOINT |
Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar seu recurso do Azure OpenAI no portal do Azure. Um exemplo de ponto de extremidade é: https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Esse valor corresponde ao nome personalizado que você escolheu para sua implantação quando implantou um modelo. Esse valor pode ser encontrado em Gestão 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 seu recurso Azure AI Search 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 Azure AI Search no portal do Azure. |
Saiba mais sobre autenticação sem chave e configuração de variáveis de ambiente.
Exemplo de comandos cURL
Os modelos de chat do Azure OpenAI são otimizados para trabalhar com entradas formatadas como uma conversa. A messages variável passa por uma matriz de dicionários com diferentes papéis na conversação delineados por sistema, usuário, ferramenta e assistente. A dataSources variável se conecta ao seu índice do Azure AI Search e permite que os modelos do Azure OpenAI respondam usando seus dados.
Para acionar uma resposta do modelo, você deve terminar com uma mensagem de usuário indicando que é a vez do assistente responder.
Sugestão
Há vários parâmetros que você pode usar para alterar a resposta do modelo, como temperature ou top_p. Consulte a documentação de referência para obter mais informações.
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?"
}
]
}
'
Exemplo de saída
{
"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 Azure OpenAI que utiliza os seus dados, pode implementar uma aplicação web usando o portal Microsoft Foundry ou código de exemplo que fornecemos no GitHub. Este aplicativo implanta usando o serviço de aplicativo do Azure e fornece uma interface de usuário para enviar consultas. Este aplicativo pode ser usado com modelos do Azure OpenAI que usam seus dados ou modelos que não usam seus dados. Consulte o arquivo readme no repositório para obter instruções sobre requisitos, configuração e implantação. Opcionalmente, você pode personalizar a lógica de frontend e back-end do aplicativo Web fazendo alterações no código-fonte.
Limpeza de recursos
Se quiser limpar e remover um recurso do Azure OpenAI ou Azure AI Search, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele.