Partilhar via


Guia de início rápido: converse com modelos OpenAI do Azure usando seus próprios dados

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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.

Captura de ecrã da página playground do portal Microsoft Foundry com secções destacadas.

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.

Captura de ecrã das definições avançadas.

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 .

Uma captura de tela mostrando o botão de implantação do modelo no portal.

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

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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.

Exemplo de código| | fonte

Pré-requisitos

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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

  1. 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>
    
  2. 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 .

  3. 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

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 User funçã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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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

  1. Crie uma nova pasta use-data-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Instale a biblioteca de cliente OpenAI para JavaScript com:

    npm install openai
    
  4. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Adicionar o código JavaScript

  1. Crie o index.js arquivo 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);
    });
    
  2. Entre no Azure com o seguinte comando:

    az login
    
  3. Execute 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

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 User funçã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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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

  1. Crie uma nova pasta use-data-quickstart e vá para a pasta de início rápido com o seguinte comando:

    mkdir use-data-quickstart && cd use-data-quickstart
    
  2. Crie o package.json com o seguinte comando:

    npm init -y
    
  3. Atualize o package.json para ECMAScript com o seguinte comando:

    npm pkg set type=module
    
  4. Instale a biblioteca de cliente OpenAI para JavaScript com:

    npm install openai
    
  5. Para a autenticação sem senha recomendada :

    npm install @azure/identity
    

Adicionar o código TypeScript

  1. Crie o index.ts arquivo 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);
    });
    
  2. Crie o tsconfig.json arquivo 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"]
    }
    
  3. Converter TypeScript em JavaScript.

    tsc
    
  4. Entre no Azure com o seguinte comando:

    az login
    
  5. Execute 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

|

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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

  1. 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
  1. Instale as seguintes bibliotecas Python:
pip install openai
pip install python-dotenv

Criar o aplicativo Python

  1. 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 .

  1. 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

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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 User funçã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

  1. Crie uma nova pasta dall-e-quickstart e vá para a pasta de início rápido com o seguinte comando:

     mkdir dall-e-quickstart && cd dall-e-quickstart
    
  2. Para 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:

  1. 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,
     )
    }
    
  2. Execute o seguinte comando para criar um novo módulo Go:

     go mod init quickstart.go
    
  3. Execute go mod tidy para instalar as dependências necessárias:

     go mod tidy
    
  4. Execute 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

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:

  1. 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).

  2. Selecione seu recurso do Azure OpenAI. Se tiveres um recurso Foundry, podes criar um projeto Foundry.

  3. No painel esquerdo, selecione Playgrounds>Chat.

  4. No painel Configuração , selecione a implantação do modelo.

  5. Selecione Adicionar seus dados>Adicionar uma fonte de dados.

    Uma captura de ecrã da área de chat no Foundry.

  6. Na página Fonte de dados :

    1. Em Selecionar fonte de dados, selecione Carregar arquivos (visualização).

      Sugestão

    2. 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.

    3. Selecione seu recurso Azure AI Search.

    4. Insira um nome para o novo índice.

    5. Marque a caixa de seleção que reconhece os efeitos de cobrança do uso do Azure AI Search.

    6. Selecione Avançar.

    Uma captura de ecrã a mostrar opções para selecionar uma fonte de dados no portal Foundry.

  7. Na página Carregar ficheiros :

    1. Selecione Procurar um arquivo e, em seguida, selecione seus próprios dados ou os dados de exemplo que você baixou dos pré-requisitos.

    2. Selecione Carregar arquivos.

    3. Selecione Avançar.

  8. Na página Gerenciamento de dados :

    1. 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.
    2. Selecione Avançar.

  9. Na página Conexão de dados :

    1. Escolha se deseja autenticar usando uma identidade gerenciada atribuída ao sistema ou uma chave de API.

    2. Selecione Avançar.

  10. 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.

Próximos passos