Guia de Início Rápido: Introdução à geração de texto com o Serviço OpenAI do Azure

Use este artigo para começar a fazer suas primeiras chamadas ao OpenAI do Azure.

Pré-requisitos

  • Uma assinatura do Azure – Crie uma gratuitamente.

  • Acesso permitido ao OpenAI do Azure na assinatura do Azure desejada.

    No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access. Abra um problema neste repositório para entrar em contato conosco se você tiver algum problema.

  • Um recurso do OpenAI do Azure com um modelo implantado. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Dica

Experimente o novo Azure AI Studio unificado (versão prévia), que reúne recursos de vários serviços de IA do Azure.

Vá para o Estúdio OpenAI do Azure

Navegue até o Estúdio do OpenAI do Azure em https://oai.azure.com/ e entre com credenciais que tenham acesso ao recurso do OpenAI. Durante o fluxo de trabalho de entrada, selecione o diretório apropriado, a assinatura do Azure e o recurso OpenAI do Azure.

Navegue na página de aterrissagem do Azure OpenAI Studio para explorar exemplos de conclusão de prompt, gerenciar suas implantações e modelos e encontrar recursos de aprendizagem, como documentação e fóruns da comunidade.

Captura de tela da página de aterrissagem do Azure OpenAI Studio.

Vá para o Playground para experimentação e fluxo de trabalho de ajuste fino.

Playground

Comece a explorar as funcionalidades do OpenAI do Azure com uma abordagem sem código por meio do Playground GPT-3. É apenas uma caixa de texto em que você pode enviar um prompt para gerar uma conclusão. Nesta página, você pode iterar e experimentar as funcionalidades rapidamente.

Captura de tela da página do playground do Estúdio OpenAI do Azure com as seções destacadas.

Você pode selecionar uma implantação e escolher entre alguns exemplos pré-carregados para começar. Se o recurso não tiver uma implantação, selecione Criar uma implantação e siga as instruções fornecidas pelo assistente. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Você pode experimentar as configurações, como temperatura e texto de pré-resposta, para melhorar o desempenho da tarefa. Você pode ler mais sobre cada parâmetro na API REST.

  • Selecionar o botão Gerar enviará o texto inserido para a API de conclusões e transmitirá os resultados de volta à caixa de texto.
  • Selecione o botão Desfazer para desfazer a chamada de geração anterior.
  • Selecione o botão Regenerar para completar uma ação de desfazer e uma chamada de geração juntas.

O OpenAI do Azure também faz a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou respostas poderão ser filtrados se conteúdo prejudicial for detectado. Para obter mais informações, consulte o artigo filtro de conteúdo.

No playground GPT-3, você também pode visualizar amostras de código Python e curl pré-preenchidas de acordo com as configurações selecionadas. Basta selecionar Exibir código ao lado da lista suspensa de exemplos. Você pode escrever um aplicativo para concluir a mesma tarefa com o SDK do OpenAI Python, curl ou outro cliente da API REST.

Experimentar resumo de texto

Para usar o OpenAI do Azure para resumo de texto no Playground GPT-3, siga estas etapas:

  1. Entre no Estúdio do OpenAI do Azure.

  2. Selecione a assinatura e o recurso OpenAI para trabalhar.

  3. Selecione GPT-3 Playground na parte superior da página de aterrissagem.

  4. Selecione sua implantação na lista suspensa Implantações. Se o recurso não tiver uma implantação, selecione Criar uma implantação e revisite esta etapa.

  5. Selecione Resumir Texto na lista suspensa Exemplos.

    Captura de tela da página do playground do Estúdio OpenAI do Azure com a seleção suspensa Resumir Texto visível

  6. Selecione Generate. O OpenAI do Azure tentará capturar o contexto do texto e reformulá-lo de forma sucinta. Você deve obter um resultado semelhante ao seguinte texto:

    Tl;dr A neutron star is the collapsed core of a supergiant star. These incredibly dense objects are incredibly fascinating due to their strange properties and their potential for phenomena such as extreme gravitational forces and a strong magnetic field.
    

A precisão da resposta pode variar por modelo. O modelo baseado em Davinci neste exemplo é adequado para este tipo de resumo, ao passo que um modelo baseado em Codex não teria um desempenho tão bom nessa tarefa específica.

Limpar os recursos

Caso queria limpar e remover um recurso do OpenAI do Azure, é possível excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Código-fonte | Pacote (NuGet) | Amostras

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • Acesso permitido ao Serviço OpenAI do Azure na assinatura do Azure desejada. No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
  • Versão atual do .NET Core
  • Um recurso do Serviço OpenAI do Azure com o modelo implantado gpt-35-turbo-instruct. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Criar um aplicativo .NET Core

Em uma janela de console (como cmd, PowerShell ou Bash), use o comando dotnet new para criar um novo aplicativo do console com o nome azure-openai-quickstart. Este comando cria um projeto "Olá, Mundo" simples com um único arquivo de origem C#: Program.cs.

dotnet new console -n azure-openai-quickstart

Altere o diretório para a pasta do aplicativo recém-criado. É possível criar o aplicativo com:

dotnet build

A saída de compilação não deve conter nenhum aviso ou erro.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Instalar a biblioteca de clientes do OpenAI .NET com:

dotnet add package Azure.AI.OpenAI --prerelease

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. A seção Chaves e Ponto de Extremidade pode ser encontrada na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da visão geral da interface do usuário de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso ressaltadas com um círculo vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um aplicativo de exemplo

No diretório do projeto, abra o arquivo program.cs e substitua pelo seguinte código:

using Azure;
using Azure.AI.OpenAI;
using static System.Environment;

string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

CompletionsOptions completionsOptions = new()
{
    DeploymentName = "gpt-35-turbo-instruct", 
    Prompts = { "When was Microsoft founded?" },
};

Response<Completions> completionsResponse = client.GetCompletions(completionsOptions);
string completion = completionsResponse.Value.Choices[0].Text;
Console.WriteLine($"Chatbot: {completion}");

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 o artigo segurança dos serviços de IA do Azure.

dotnet run program.cs

Saída

Chatbot:

Microsoft was founded on April 4, 1975.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, primeiro você deve excluir todos os modelos implantados.

Próximas etapas

Código-fonte | Pacote (Go)| Amostras

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • Acesso permitido ao Serviço OpenAI do Azure na assinatura do Azure desejada. No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
  • Go 1.21.0 ou superior instalado localmente.
  • Um recurso do Serviço OpenAI do Azure com o modelo implantado gpt-35-turbo-instuct. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. A seção Chaves e Ponto de Extremidade pode ser encontrada na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da visão geral da interface do usuário de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso ressaltadas com um círculo vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um aplicativo de exemplo

Crie um novo arquivo chamado completions.go. Copie o código a seguir no arquivo completions.go.

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
)

func main() {
	azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")
	modelDeploymentID := "gpt-35-turbo-instruct"

	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")

	if azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" {
		fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
		return
	}

	keyCredential, err := azopenai.NewKeyCredential(azureOpenAIKey)

	if err != nil {
		// TODO: handle error
	}

	client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)

	if err != nil {
		// TODO: handle error
	}

	resp, err := client.GetCompletions(context.TODO(), azopenai.CompletionsOptions{
		Prompt:       []string{"What is Azure OpenAI, in 20 words or less"},
		MaxTokens:    to.Ptr(int32(2048)),
		Temperature:  to.Ptr(float32(0.0)),
		Deployment: modelDeploymentID,
	}, nil)

	if err != nil {
		// TODO: handle error
	}

	for _, choice := range resp.Choices {
		fmt.Fprintf(os.Stderr, "Result: %s\n", *choice.Text)
	}

}

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 o artigo segurança dos serviços de IA do Azure.

Abra um prompt de comando e execute:

go mod init completions.go

Próxima execução:

go mod tidy
go run completions.go

Saída

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, você deve primeiro excluir todos os modelos implantados.

Próximas etapas

Código-fonte | Artefato (Maven) | Exemplos

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • Acesso permitido ao Serviço OpenAI do Azure na assinatura do Azure desejada. No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
  • Um recurso do Serviço OpenAI do Azure com o modelo implantado gpt-35-turbo-instruct. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. A seção Chaves e Ponto de Extremidade pode ser encontrada na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da visão geral da interface do usuário de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso ressaltadas com um círculo vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um aplicativo Java

Criar um novo projeto Gradle.

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele.

mkdir myapp && cd myapp

Execute o comando gradle init em seu diretório de trabalho. Esse comando criará arquivos de build essenciais para o Gradle, incluindo o build.gradle.kts, que é usado no runtime para criar e configurar seu aplicativo.

gradle init --type basic

Quando solicitado a escolher uma DSL, escolha Kotlin.

Instalar o SDK do Java

Este início rápido usa o gerenciador de dependência do Gradle. Você pode encontrar a biblioteca de clientes e informações para outros gerenciadores de dependência no Repositório Central do Maven.

Localize o build.gradle.kts e abra-o com seu IDE ou editor de texto preferencial. Depois copie nessa configuração de build a seguir. Esta configuração define o projeto como um aplicativo Java cujo ponto de entrada é a classe OpenAIQuickstart. Isso importa a biblioteca da Visão de IA do Azure.

plugins {
    java
    application
}
application { 
    mainClass.set("GetCompletionsSample")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.3")
    implementation("org.slf4j:slf4j-simple:1.7.9")
}

Criar um aplicativo de exemplo

  1. Criar um arquivo Java.

    Em seu diretório de trabalho, execute o comando a seguir para criar uma pasta de origem do projeto:

    mkdir -p src/main/java
    

    Navegue até a nova pasta e crie um arquivo chamado BingVisualSearchSample.java.

  2. Abra GetCompletionsSample.java no seu editor ou IDE de preferência e cole o código a seguir.

    package com.azure.ai.openai.usage;
    
    import com.azure.ai.openai.OpenAIClient;
    import com.azure.ai.openai.OpenAIClientBuilder;
    import com.azure.ai.openai.models.Choice;
    import com.azure.ai.openai.models.Completions;
    import com.azure.ai.openai.models.CompletionsOptions;
    import com.azure.ai.openai.models.CompletionsUsage;
    import com.azure.core.credential.AzureKeyCredential;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class GetCompletionsSample {
    
        public static void main(String[] args) {
            String azureOpenaiKey = System.getenv("AZURE_OPENAI_API_KEY");;
            String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");;
            String deploymentOrModelId = "gpt-35-turbo-instruct";
    
            OpenAIClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new AzureKeyCredential(azureOpenaiKey))
                .buildClient();
    
            List<String> prompt = new ArrayList<>();
            prompt.add("When was Microsoft founded?");
    
            Completions completions = client.getCompletions(deploymentOrModelId, new CompletionsOptions(prompt));
    
            System.out.printf("Model ID=%s is created at %s.%n", completions.getId(), completions.getCreatedAt());
            for (Choice choice : completions.getChoices()) {
                System.out.printf("Index: %d, Text: %s.%n", choice.getIndex(), choice.getText());
            }
    
            CompletionsUsage usage = completions.getUsage();
            System.out.printf("Usage: number of prompt token is %d, "
                    + "number of completion token is %d, and number of total tokens in request and response is %d.%n",
                usage.getPromptTokens(), usage.getCompletionTokens(), usage.getTotalTokens());
        }
    }
    

    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 o artigo segurança dos serviços de IA do Azure.

  3. Navegue de volta para a pasta raiz do projeto e compile o aplicativo com:

    gradle build
    

    Em seguida, execute-o com o comando gradle run:

    gradle run
    

Saída

Model ID=cmpl-7JZRbWuEuHX8ozzG3BXC2v37q90mL is created at 1684898835.
Index: 0, Text:

Microsoft was founded on April 4, 1975..
Usage: number of prompt token is 5, number of completion token is 11, and number of total tokens in request and response is 16.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, você deve primeiro excluir todos os modelos implantados.

Próximas etapas

Código-fonte | Artefatos (Maven) | Amostra

Pré-requisitos

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. A seção Chaves e Ponto de Extremidade pode ser encontrada na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da visão geral da interface do usuário de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso ressaltadas com um círculo vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Observação

A IA do Spring define o nome do modelo como padrão para gpt-35-turbo. Só é necessário fornecer o valor SPRING_AI_AZURE_OPENAI_MODEL se você implantou um modelo com um nome diferente.

export SPRING_AI_AZURE_OPENAI_API_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE"
export SPRING_AI_AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
export SPRING_AI_AZURE_OPENAI_MODEL="REPLACE_WITH_YOUR_MODEL_NAME_HERE"

Criar um aplicativo Spring

Crie um projeto Spring.

Em uma janela do Bash, crie um diretório para seu aplicativo e navegue até ele.

mkdir ai-completion-demo && cd ai-completion-demo

Execute o comando spring init em seu diretório de trabalho. Esse comando criará uma estrutura de diretório padrão para o projeto Spring, incluindo o arquivo de origem da classe Java principal e o arquivo pom.xml usado para gerenciar projetos baseados em Maven.

spring init -a ai-completion-demo -n AICompletion --force --build maven -x

Os arquivos e as pastas geradas se assemelham à seguinte estrutura:

ai-completion-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aicompletiondemo/
    |                   |-- AiCompletionApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aicompletiondemo/
                        |-- AiCompletionApplicationTests.java

Editar o aplicativo Spring

  1. Edite o arquivo pom.xml.

    Na raiz do diretório do projeto, abra o arquivo pom.xml no seu editor ou IDE preferido e substitua o arquivo pelo seguinte conteúdo:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>ai-completion-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>AICompletion</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>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/aicompletiondemo, abra AiCompletionApplication.java no seu editor ou IDE preferido e cole o seguinte código:

    package com.example.aicompletiondemo;
    
    import java.util.Collections;
    import java.util.List;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.messages.Message;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.ai.prompt.messages.UserMessage;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class AiCompletionApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        @Autowired
        private AiClient aiClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiCompletionApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending completion prompt to AI service. One moment please...\r\n"));
    
            final List<Message> msgs =
                    Collections.singletonList(new UserMessage("When was Microsoft founded?"));
    
            final var resps = aiClient.generate(new Prompt(msgs));
    
            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()));
              });
        }
    
    }
    

    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 o artigo segurança dos serviços de IA do Azure.

  3. Navegue de volta para a pasta raiz do projeto e execute o aplicativo usando o seguinte comando:

    ./mvnw spring-boot:run
    

Saída

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T12:47:46.126-06:00  INFO 98687 --- [           main] c.e.a.AiCompletionApplication            : No active profile set, falling back to 1 default profile: "default"
2023-11-07T12:47:46.823-06:00  INFO 98687 --- [           main] c.e.a.AiCompletionApplication            : Started AiCompletionApplication in 0.925 seconds (process running for 1.238)
Sending completion prompt to AI service. One moment please...

Prompt created 1 generated response(s).
Generated respose from "assistant": Microsoft was founded on April 4, 1975.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, você deve primeiro excluir todos os modelos implantados.

Próximas etapas

Para obter mais exemplos, confira o repositório do GitHub de Exemplos do OpenAI do Azure

Código-fonte | Pacote (npm) | Amostras

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente
  • Acesso permitido ao Serviço OpenAI do Azure na assinatura do Azure desejada. No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
  • Versões LTS do Node.js
  • Um recurso do Serviço OpenAI do Azure com o modelo implantado gpt-35-turbo-instruct. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, um ponto de extremidade e uma chave serão necessários.

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.

Acesse o seu recurso no portal do Azure. A seção Chaves e Ponto de Extremidade pode ser encontrada na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da visão geral da interface do usuário de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso ressaltadas com um círculo vermelho.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Em uma janela de console (como cmd, PowerShell ou Bash), crie um novo diretório para seu aplicativo e navegue até ele. Em seguida, execute o comando npm init para criar um aplicativo de nó com um arquivo package.json.

npm init

Instalar a biblioteca de clientes

Instale a biblioteca de clientes do OpenAI do Azure para JavaScript com npm:

npm install @azure/openai

O arquivo package.json do seu aplicativo será atualizado com as dependências.

Criar um aplicativo de exemplo

Abra um prompt de comando onde você deseja criar o projeto e crie um arquivo chamado Completion.js. Copie o código a seguir no arquivo ChatCompletion.js.

const { OpenAIClient, AzureKeyCredential } = require("@azure/openai");
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] ;
const azureApiKey = process.env["AZURE_OPENAI_API_KEY"] ;

const prompt = ["When was Microsoft founded?"];

async function main() {
  console.log("== Get completions Sample ==");

  const client = new OpenAIClient(endpoint, new AzureKeyCredential(azureApiKey));
  const deploymentId = "gpt-35-turbo-instruct";
  const result = await client.getCompletions(deploymentId, prompt);

  for (const choice of result.choices) {
    console.log(choice.text);
  }
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

module.exports = { main };

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 o artigo segurança dos serviços de IA do Azure.

Execute o script com o seguinte comando:

node.exe Completion.js

Saída

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

Limpar os recursos

Caso queria limpar e remover um recurso OpenAI do Azure, é possível excluir o recurso. Antes de excluir o recurso, você deve primeiro excluir todos os modelos implantados.

Próximas etapas

Código-fonte da biblioteca | Pacote (PyPi) |

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente

  • Acesso concedido ao Serviço OpenAI do Azure na assinatura do Azure desejada

    No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access. Abra um problema neste repositório para entrar em contato conosco se você tiver algum problema.

  • Python 3.8 ou versão posterior

  • As seguintes bibliotecas do Python: sistema operacional, solicitações, JSON

  • Um recurso do Serviço OpenAI do Azure com um modelo gpt-35-turbo-instruct implantado. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Instalar a biblioteca de clientes do OpenAI Python com:

pip install openai

Observação

Essa biblioteca é mantida pelo OpenAI e atualmente é uma versão prévia. Consulte o histórico de lançamentos ou o histórico de confirmação de version.py para acompanhar as atualizações mais recentes na biblioteca.

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, será preciso o seguinte:

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio do OpenAI do Azure>Playground>Exibição de código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao examinar seu recurso no portal do Azure. Você pode usar KEY1 ou KEY2.
DEPLOYMENT-NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado em Gerenciamento de Recursos>Implantações de Modelo no portal do Azure ou, como alternativa, em Gerenciamento>Implantações no Estúdio OpenAI do Azure.

Acesse o seu recurso no portal do Azure. As Chaves e Ponto de Extremidade podem ser encontrados na seção Gerenciamento de Recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da folha de visão geral de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso circuladas em vermelho.

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Criar um novo aplicativo Python

  1. Criar um arquivo Python chamado quickstart.py. Depois, abra-o no editor ou IDE de sua preferência.

  2. Substitua o conteúdo do arquivo quickstart.py pelo código a seguir. Modifique o código para adicionar sua chave, seu ponto de extremidade e o nome da sua implantação:

import os
from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-02-01",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )
    
deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME' #This will correspond to the custom name you chose for your deployment when you deployed a model. Use a gpt-35-turbo-instruct deployment. 
    
# Send a completion call to generate an answer
print('Sending a test completion job')
start_phrase = 'Write a tagline for an ice cream shop. '
response = client.completions.create(model=deployment_name, prompt=start_phrase, max_tokens=10)
print(start_phrase+response.choices[0].text)

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 o artigo segurança dos serviços de IA do Azure.

  1. Execute o aplicativo com o comando python no seu arquivo de início rápido:

    python quickstart.py
    

Saída

A saída incluirá o texto de resposta após o prompt Write a tagline for an ice cream shop.. O OpenAI do Azure retornou The coldest ice cream in town! neste exemplo.

Sending a test completion job
Write a tagline for an ice cream shop. The coldest ice cream in town!

Execute o código mais algumas vezes para ver quais outros tipos de respostas você obtém, pois a resposta nem sempre será a mesma.

Compreensão dos resultados

Como nosso exemplo de Write a tagline for an ice cream shop. fornece pouco contexto, é normal que o modelo nem sempre retorne os resultados esperados. Você poderá ajustar o número máximo de tokens se a resposta parecer inesperada ou truncada.

O OpenAI do Azure também faz a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou as respostas poderão ser filtrados se for detectado conteúdo prejudicial. Para obter mais informações, consulte o artigo filtro de conteúdo.

Limpar os recursos

Caso queria limpar e remover um recurso do OpenAI do Azure, é possível excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Pré-requisitos

  • Uma assinatura do Azure – crie uma gratuitamente

  • Acesso concedido ao Serviço OpenAI do Azure na assinatura do Azure desejada

    No momento, o acesso a esse serviço é permitido somente por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access. Abra um problema neste repositório para entrar em contato conosco se você tiver algum problema.

  • Python 3.8 ou versão posterior

  • As seguintes bibliotecas do Python: sistema operacional, solicitações, JSON

  • Um recurso do OpenAI do Azure com um modelo implantado. Para obter mais informações sobre a implantação do modelo, consulte o Guia de implantação de recursos.

Configuração

Recuperar chave e ponto de extremidade

Para fazer uma chamada com sucesso no OpenAI do Azure, você precisará ter o seguinte:

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio do OpenAI do Azure>Playground>Exibição de Código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.
DEPLOYMENT-NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado emGerenciamento de recursos>Implantações no portal do Azure ou, como alternativa, em Gerenciamento>Implantações no Estúdio OpenAI do Azure.

Acesse o seu recurso no portal do Azure. O Ponto de extremidade e as Chaves podem ser encontrados na seção Gerenciamento de recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da folha de visão geral de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso circuladas em vermelho.

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

API REST

Em um shell Bash, execute o comando a seguir. Você precisará substituir gpt-35-turbo-instruct pelo nome de implantação escolhido ao implantar o modelo gpt-35-turbo-instruct. Inserir o nome do modelo resultará em um erro, a menos que você escolha um nome de implantação que seja idêntico ao nome do modelo subjacente.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo-instruct/completions?api-version=2024-02-01 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d "{\"prompt\": \"Once upon a time\"}"

O formato da sua primeira linha do comando com um ponto de extremidade de exemplo apareceria da seguinte forma curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/completions?api-version=2024-02-01 \. Se você encontrar um erro, verifique novamente se não há uma duplicação do / na separação entre seu ponto de extremidade e /openai/deployments.

Se quiser executar esse comando em um prompt de comando normal do Windows, você precisará alterar o texto para remover o \ e as quebras de linha.

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 o artigo segurança dos serviços de IA do Azure.

Saída

A saída da API de conclusões será conforme a seguir.

{
    "id": "ID of your call",
    "object": "text_completion",
    "created": 1675444965,
    "model": "gpt-35-turbo-instruct",
    "choices": [
        {
            "text": " there lived in a little village a woman who was known as the meanest",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        }
    ],
    "usage": {
        "completion_tokens": 16,
        "prompt_tokens": 3,
        "total_tokens": 19
    }
}

O Serviço OpenAI do Azure também executa a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou respostas poderão ser filtrados se conteúdo prejudicial for detectado. Para obter mais informações, consulte o artigo filtro de conteúdo.

Limpar os recursos

Caso queria limpar e remover um recurso do OpenAI do Azure, é possível excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas

Pré-requisitos

Recuperar chave e ponto de extremidade

Para efetuar uma chamada com êxito no Serviço OpenAI do Azure, será preciso o seguinte:

Nome da variável Valor
ENDPOINT Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Como alternativa, você pode encontrar o valor em Estúdio do OpenAI do Azure>Playground>Exibição de Código. Um ponto de extremidade de exemplo é: https://docs-test-001.openai.azure.com/.
API-KEY Esse valor pode ser encontrado na seção Chaves & Ponto de Extremidade ao examinar o recurso no portal do Azure. Você pode usar KEY1 ou KEY2.
DEPLOYMENT-NAME Esse valor corresponderá ao nome personalizado escolhido para sua implantação ao implantar um modelo. Esse valor pode ser encontrado emGerenciamento de recursos>Implantações no portal do Azure ou, como alternativa, em Gerenciamento>Implantações no Estúdio OpenAI do Azure.

Acesse o seu recurso no portal do Azure. O Ponto de extremidade e as Chaves podem ser encontrados na seção Gerenciamento de recursos. Copie o ponto de extremidade e as chave de acesso, pois você precisará de ambos para autenticar suas chamadas à API. Você pode usar KEY1 ou KEY2. Ter sempre duas chaves permite girar e regenerar chaves com segurança, sem causar interrupção de serviço.

Captura de tela da folha de visão geral de um recurso OpenAI do Azure no portal do Azure com o ponto de extremidade e a localização das chaves de acesso circuladas em vermelho.

Crie e atribua variáveis de ambiente persistentes para sua chave e ponto de extremidade.

Variáveis de ambiente

$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'

Criar um novo script do PowerShell

  1. Criar um novo arquivo do PowerShell denominado quickstart.ps1. Depois, abra-o no editor ou IDE de sua preferência.

  2. Substitua o conteúdo de quickstart.ps1 pelo código a seguir. Modifique o código para adicionar sua chave, seu ponto de extremidade e o nome da sua implantação:

    # 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 = '2024-02-01' # 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.
    }
    
    # Completion text
    $prompt = 'Once upon a time...'
    
    # Header for authentication
    $headers = [ordered]@{
        'api-key' = $openai.api_key
    }
    
    # Adjust these values to fine-tune completions
    $body = [ordered]@{
        prompt      = $prompt
        max_tokens  = 10
        temperature = 2
        top_p       = 0.5
    } | ConvertTo-Json
    
    # Send a completion call to generate an answer
    $url = "$($openai.api_base)/openai/deployments/$($openai.name)/completions?api-version=$($openai.api_version)"
    
    $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
    return "$prompt`n$($response.choices[0].text)"
    

    Importante

    Para produção, use um modo seguro de armazenar e acessar suas credenciais, como o Gerenciamento de Segredo do PowerShell com o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte o artigo segurança dos serviços de IA do Azure.

  3. Execute o script usando o PowerShell:

    ./quickstart.ps1
    

Saída

A saída incluirá o texto de resposta após o prompt Once upon a time. O OpenAI do Azure retornou There was a world beyond the mist...where a neste exemplo.

Once upon a time...
 There was a world beyond the mist...where a

Execute o código mais algumas vezes para ver quais outros tipos de respostas você obtém, pois a resposta nem sempre será a mesma.

Compreensão dos resultados

Como nosso exemplo de Once upon a time... fornece pouco contexto, é normal que o modelo nem sempre retorne os resultados esperados. Você poderá ajustar o número máximo de tokens se a resposta parecer inesperada ou truncada.

O OpenAI do Azure também faz a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou respostas poderão ser filtrados se conteúdo prejudicial for detectado. Para obter mais informações, consulte o artigo filtro de conteúdo.

Limpar os recursos

Caso queria limpar e remover um recurso do OpenAI do Azure, é possível excluir o recurso ou o grupo de recursos. Excluir o grupo de recursos também exclui todos os recursos associados a ele.

Próximas etapas