다음을 통해 공유


빠른 시작: 레거시 완료 API를 사용하여 텍스트 생성 시작

이 문서를 사용하여 Azure OpenAI를 처음으로 호출해 보세요.

필수 조건

Azure OpenAI Studio로 이동

https://oai.azure.com/에서 Azure OpenAI Studio로 이동한 다음, Azure OpenAI 리소스에 액세스할 수 있는 자격 증명으로 로그인합니다. 로그인 워크플로 도중 또는 이후에 적절한 디렉터리, Azure 구독 및 Azure OpenAI 리소스를 선택합니다.

Azure OpenAI Studio 방문 페이지에서 더 자세히 탐색하여 프롬프트 완료를 위한 예제를 살펴보고, 배포 및 모델을 관리하고, 설명서 및 커뮤니티 포럼과 같은 학습 리소스를 찾습니다.

Azure OpenAI Studio 방문 페이지 스크린샷.

플레이그라운드

GPT-3 플레이그라운드를 통해 코드 없는 접근 방식으로 Azure OpenAI 기능 탐색을 시작합니다. 플레이그라운드는 완료를 생성하는 프롬프트를 제출할 수 있는 간단한 텍스트 상자입니다. 이 페이지에서 쉽게 기능을 반복하고 실험해 볼 수 있습니다.

여러 섹션이 강조 표시된 Azure OpenAI Studio 플레이그라운드 페이지의 스크린샷

배포를 선택하고 미리 로드된 몇 가지 예제 중에서 선택하여 시작할 수 있습니다. 리소스에 배포가 없는 경우 배포 만들기를 선택하고 마법사에서 제공하는 지침을 따릅니다. 모델 배포에 대한 자세한 내용은 리소스 배포 가이드를 참조하세요.

온도 및 사전 응답 텍스트와 같은 구성 설정으로 실험하면서 작업의 성능을 향상시킬 수 있습니다. REST API에서 각 매개 변수에 대해 자세히 알아볼 수 있습니다.

  • 생성 단추를 선택하면 입력한 텍스트가 완료 API로 전송되고 결과가 다시 텍스트 상자로 스트리밍됩니다.
  • 실행 취소 단추를 선택하여 이전 생성 호출을 실행 취소합니다.
  • 다시 생성 단추를 선택하여 실행 취소 및 생성 호출을 함께 완료합니다.

또한 Azure OpenAI는 프롬프트 입력 및 생성된 출력에서 콘텐츠 조정을 수행합니다. 유해한 콘텐츠가 감지되면 프롬프트나 응답을 필터링할 수 있습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

완료 플레이그라운드에서는 선택한 설정에 따라 미리 채워진 Python 및 curl 코드 샘플도 볼 수 있습니다. 예제 드롭다운 옆에 있는 코드 보기를 선택하면 됩니다. OpenAI Python SDK, curl 또는 기타 REST API 클라이언트를 사용하여 동일한 작업을 완료하는 애플리케이션을 작성할 수 있습니다.

텍스트 요약 사용해 보기

완료 플레이그라운드에서 Azure OpenAI를 사용하여 텍스트 요약을 수행하려면 다음 단계를 따릅니다.

  1. Azure OpenAI Studio에 로그인합니다.

  2. 작업할 구독 및 OpenAI 리소스를 선택합니다.

  3. 방문 페이지에서 완료 플레이그라운드를 선택합니다.

  4. 배포 드롭다운에서 배포를 선택합니다. 리소스에 배포가 없는 경우 배포 만들기를 선택한 다음, 이 단계를 다시 진행합니다.

  5. 모델에 대한 프롬프트를 입력합니다.

    텍스트 요약 예가 있는 Azure OpenAI Studio의 플레이그라운드 페이지의 스크린샷.

  6. Generate를 선택합니다. Azure OpenAI는 텍스트의 컨텍스트를 캡처하고 간결하게 다시 표현하려고 시도합니다. 다음 텍스트와 유사한 결과가 표시됩니다.

응답의 정확도는 모델마다 다를 수 있습니다. 이 예의 gpt-35-turbo-instruct 기반 모델은 이러한 형식의 요약에 매우 적합하지만, 완료 API에 특별히 적합한 특정 사용 사례가 없는 한 일반적으로 대체 채팅 완료 API를 사용하는 것이 좋습니다.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

소스 코드 | 패키지(NuGet) | 샘플

필수 조건

설정

새 .NET Core 애플리케이션 만들기

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 dotnet new 명령을 사용하여 azure-openai-quickstart라는 새 콘솔 앱을 만듭니다. 이 명령은 program.cs라는 단일 C# 원본 파일을 사용하여 간단한 "Hello World" 프로젝트를 만듭니다.

dotnet new console -n azure-openai-quickstart

새로 만든 앱 폴더로 디렉터리를 변경합니다. 다음을 통해 애플리케이션을 빌드할 수 있습니다.

dotnet build

빌드 출력에 경고나 오류가 포함되지 않아야 합니다.

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

다음을 사용하여 OpenAI .NET 클라이언트 라이브러리를 설치합니다.

dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.17

참고 항목

완료 API는 Azure.AI.OpenAI 클라이언트 라이브러리의 1.0.0-beta.17 및 이전 버전에서만 사용할 수 있습니다. 최신 2.0.0Azure.AI.OpenAI 상위 버전의 경우 완료를 생성하는 데 권장되는 방식은 채팅 완료 API를 사용하는 것입니다.

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

샘플 애플리케이션 만들기

프로젝트 디렉터리에서 program.cs 파일을 열고, 다음 코드로 바꿉니다.

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}");

Important

프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

dotnet run program.cs

출력

Chatbot:

Microsoft was founded on April 4, 1975.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

소스 코드 | 패키지(Go)| 샘플

필수 조건

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

샘플 애플리케이션 만들기

completions.go라는 새 파일을 만듭니다. 다음 코드를 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"
	"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 := azcore.NewKeyCredential(azureOpenAIKey)

	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)),
		DeploymentName: &modelDeploymentID,
	}, nil)

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

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

}

Important

프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

이제 명령 프롬프트를 열고 다음을 실행합니다.

go mod init completions.go

다음 실행:

go mod tidy
go run completions.go

출력

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

소스 코드 | 아티팩트(Maven) | 샘플

필수 조건

  • gpt-35-turbo-instruct 모델이 배포된 Azure OpenAI Service 리소스. 모델 배포에 대한 자세한 내용은 리소스 배포 가이드를 참조하세요.

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 Java 애플리케이션 만들기

새 Gradle 프로젝트를 만듭니다.

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

mkdir myapp && cd myapp

작업 디렉터리에서 gradle init 명령을 실행합니다. 이 명령은 build.gradle.kts를 포함하여 런타임에 애플리케이션을 만들고 구성하는 데 사용되는 Gradle용 필수 빌드 파일을 만듭니다.

gradle init --type basic

DSL을 선택하라는 메시지가 표시되면 Kotlin을 선택합니다.

Java SDK 설치

이 빠른 시작에서는 Gradle 종속성 관리자를 사용합니다. 다른 종속성 관리자에 대한 클라이언트 라이브러리 및 정보는 Maven 중앙 리포지토리에서 찾을 수 있습니다.

build.gradle.kts를 찾고, 원하는 IDE 또는 텍스트 편집기에서 엽니다. 그런 다음, 다음 빌드 구성을 복사합니다. 이 구성은 프로젝트를 진입점이 OpenAI빠른 시작 클래스인 Java 애플리케이션으로 정의합니다. Azure AI Vision 라이브러리를 가져옵니다.

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")
}

샘플 애플리케이션 만들기

  1. Java 파일을 만듭니다.

    작업 디렉터리에서 다음 명령을 실행하여 프로젝트 원본 폴더를 만듭니다.

    mkdir -p src/main/java
    

    새 폴더로 이동하여 GetCompletionsSample.java라는 파일을 만듭니다.

  2. 원하는 편집기나 IDE에서 GetCompletionsSample.java를 열고 다음 코드를 붙여넣습니다.

    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());
        }
    }
    

    Important

    프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

  3. 프로젝트 루트 폴더로 돌아가서 다음을 사용하여 앱을 빌드합니다.

    gradle build
    

    그런 다음, gradle run 명령을 사용하여 실행합니다.

    gradle run
    

출력

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.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

소스 코드 | Artifacts(Maven) | 샘플

필수 조건

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

참고 항목

Spring AI는 기본적으로 모델 이름을 gpt-35-turbo로 지정합니다. 다른 이름으로 모델을 배포한 경우에만 SPRING_AI_AZURE_OPENAI_MODEL 값을 제공하면 됩니다.

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"

새로운 Spring 애플리케이션 만들기

새로운 Spring 프로젝트를 만듭니다.

Bash 창에서 앱에 대한 새 디렉터리를 만들고 해당 디렉터리로 이동합니다.

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

작업 디렉터리에서 spring init 명령을 실행합니다. 이 명령은 기본 Java 클래스 원본 파일과 Maven 기반 프로젝트 관리에 사용되는 pom.xml 파일을 포함하여 Spring 프로젝트에 대한 표준 디렉터리 구조를 만듭니다.

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

생성된 파일 및 폴더는 다음 구조와 유사합니다.

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

Spring 애플리케이션 편집

  1. pom.xml 파일을 편집합니다.

    프로젝트 디렉터리의 루트에서 원하는 편집기나 IDE로 pom.xml 파일을 열고 다음 콘텐츠로 파일을 덮어씁니다.

    <?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. src/main/java/com/example/aicompletiondemo 폴더에서 원하는 편집기나 IDE로 AiCompletionApplication.java를 열고 다음 코드를 붙여넣습니다.

    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()));
              });
        }
    
    }
    

    Important

    프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

  3. 프로젝트 루트 폴더로 다시 이동하고 다음 명령을 사용하여 앱을 실행합니다.

    ./mvnw spring-boot:run
    

출력

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: 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.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

더 많은 예제를 보려면 Azure OpenAI 샘플 GitHub 리포지토리를 체크 아웃합니다.

소스 코드 | 패키지(npm) | 샘플

참고 항목

이 문서는 이제 Azure OpenAI를 완전히 지원하는 최신 OpenAI npm 패키지를 사용하도록 업데이트되었습니다. 레거시 Azure OpenAI JavaScript SDK에 대한 코드 예시를 찾고 있는 경우 현재 이 리포지토리에서 계속 제공되고 있습니다.

필수 조건

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

클라이언트 라이브러리 설치

새 디렉터리의 컨텍스트 내에서 npm을 사용하여 JavaScript용 필수 패키지를 설치합니다.

npm install openai @azure/identity

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.

샘플 애플리케이션 만들기

새 프로젝트를 만든 명령 프롬프트를 열고 Completion.js라는 새 파일을 만듭니다. 다음 코드를 Completion.js 파일에 복사합니다.

const { AzureOpenAI } = require("openai");
const { 
  DefaultAzureCredential, 
  getBearerTokenProvider 
} = require("@azure/identity");

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const apiVersion = "2024-04-01-preview";
const deployment = "gpt-35-turbo-instruct"; //The deployment name for your completions API model. The instruct model is the only new model that supports the legacy API.

// keyless authentication    
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);

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

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

  const client = new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment });  

  const result = await client.completions.create({ prompt, model: deployment, max_tokens: 128 });

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

main().catch((err) => {
  console.error("Error occurred:", err);
});

module.exports = { main };

다음 명령을 사용하여 스크립트를 실행합니다.

node.exe Completion.js

출력

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

참고 항목

오류가 발생하는 경우: 오류 발생: OpenAIError: apiKeyazureADTokenProvider 인수는 상호 배타적입니다. 한 번에 하나만 전달할 수 있습니다. 시스템에서 API 키에 대한 기존 환경 변수를 제거해야 할 수도 있습니다. Microsoft Entra ID 코드 샘플이 API 키 환경 변수를 명시적으로 참조하지 않더라도 이 샘플을 실행하는 시스템에 API 키 환경 변수가 있으면 이 오류가 계속 생성됩니다.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

소스 코드 | 패키지(npm) | 샘플

참고 항목

이 문서는 이제 Azure OpenAI를 완전히 지원하는 최신 OpenAI npm 패키지를 사용하도록 업데이트되었습니다. 레거시 Azure OpenAI JavaScript SDK에 대한 코드 예시를 찾고 있는 경우 현재 이 리포지토리에서 계속 제공되고 있습니다.

필수 조건

설정

키 및 엔드포인트 검색

Azure OpenAI에 대해 성공적으로 호출하려면 엔드포인트가 필요합니다.

변수 이름
ENDPOINT 서비스 엔드포인트는 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. 또는 Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트 섹션은 리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

엔드포인트 및 액세스 키 위치가 빨간색 원으로 표시된 Azure Portal의 OpenAI 리소스에 대한 개요 UI 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.

클라이언트 라이브러리 설치

새 디렉터리의 컨텍스트 내에서 npm을 사용하여 JavaScript용 필수 패키지를 설치합니다.

npm install openai @azure/identity

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.

샘플 애플리케이션 만들기

새 프로젝트를 만든 명령 프롬프트를 열고 Completion.ts 새 파일을 만듭니다. 다음 코드를 Completion.ts 파일에 복사합니다.

import { 
  DefaultAzureCredential, 
  getBearerTokenProvider 
} from "@azure/identity";
import { AzureOpenAI } from "openai";
import { type Completion } from "openai/resources/index";

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";

// Required Azure OpenAI deployment name and API version
const apiVersion = "2024-08-01-preview";
const deploymentName = "gpt-35-turbo-instruct";

// keyless authentication    
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);

// Chat prompt and max tokens
const prompt = ["When was Microsoft founded?"];
const maxTokens = 128;

function getClient(): AzureOpenAI {
  return new AzureOpenAI({
    endpoint,
    azureADTokenProvider,
    apiVersion,
    deployment: deploymentName,
  });
}
async function getCompletion(
  client: AzureOpenAI,
  prompt: string[],
  max_tokens: number
): Promise<Completion> {
  return client.completions.create({
    prompt,
    model: "",
    max_tokens,
  });
}
async function printChoices(completion: Completion): Promise<void> {
  for (const choice of completion.choices) {
    console.log(choice.text);
  }
}
export async function main() {
  console.log("== Get completions Sample ==");

  const client = getClient();
  const completion = await getCompletion(client, prompt, maxTokens);
  await printChoices(completion);
}

main().catch((err) => {
  console.error("Error occurred:", err);
});

다음 명령으로 스크립트를 작성합니다.

tsc

다음 명령을 사용하여 스크립트를 실행합니다.

node.exe Completion.js

출력

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

참고 항목

오류가 발생하는 경우: 오류 발생: OpenAIError: apiKeyazureADTokenProvider 인수는 상호 배타적입니다. 한 번에 하나만 전달할 수 있습니다. 시스템에서 API 키에 대한 기존 환경 변수를 제거해야 할 수도 있습니다. Microsoft Entra ID 코드 샘플이 API 키 환경 변수를 명시적으로 참조하지 않더라도 이 샘플을 실행하는 시스템에 API 키 환경 변수가 있으면 이 오류가 계속 생성됩니다.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 해당 리소스를 삭제할 수 있습니다. 리소스를 삭제하기 전에 먼저 배포된 모델을 삭제해야 합니다.

다음 단계

라이브러리 소스 코드 | 패키지(PyPi) |

필수 조건

설정

다음을 사용하여 OpenAI Python 클라이언트 라이브러리를 설치합니다.

pip install openai

참고 항목

이 라이브러리는 OpenAI에서 유지 관리합니다. 라이브러리의 최신 업데이트를 추적하려면 릴리스 기록을 참조하세요.

키 및 엔드포인트 검색

Azure OpenAI Service에 대한 호출을 성공적으로 수행하려면 다음이 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수도 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.
DEPLOYMENT-NAME 이 값은 모델을 배포할 때 배포에 대해 선택한 사용자 지정 이름에 해당합니다. 이 값은 Azure Portal의 리소스 관리>모델 배포 또는 Azure AI Studio의 배포 페이지를 통해 찾을 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 키 및 엔드포인트리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 OpenAI 리소스 개요 블레이드에서 엔드포인트 및 액세스 키 위치에 빨간색 원이 표시된 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

새 Python 애플리케이션 만들기

  1. quickstart.py라는 새 Python 파일을 만듭니다. 선호하는 편집기 또는 IDE에서 이 파일을 엽니다.

  2. quickstart.py의 내용을 다음 코드로 바꿉니다. 키, 엔드포인트 및 배포 이름을 추가하도록 코드를 수정합니다.

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)

Important

프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

  1. quickstart 파일의 python 명령을 사용하여 애플리케이션을 실행합니다.

    python quickstart.py
    

출력

출력에서 Write a tagline for an ice cream shop. 프롬프트 다음에는 응답 텍스트가 포함됩니다. Azure OpenAI는 이 예제에서 The coldest ice cream in town!을 반환했습니다.

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

응답이 항상 동일하지는 않으므로 코드를 몇 번 더 실행하여 다른 응답 유형을 확인합니다.

결과 해석

Write a tagline for an ice cream shop. 예제는 컨텍스트가 거의 없기 때문에 모델이 항상 예상된 결과를 반환하지 않는 것이 정상입니다. 응답이 예기치 않거나 잘린 것처럼 보이면 최대 토큰 수를 조정할 수 있습니다.

또한 Azure OpenAI는 프롬프트 입력 및 생성된 출력에서 콘텐츠 조정을 수행합니다. 유해한 콘텐츠가 감지되면 프롬프트나 응답이 필터링될 수 있습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

필수 조건

설정

키 및 엔드포인트 검색

Azure OpenAI에 대한 호출을 성공적으로 수행하려면 다음이 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수도 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.
DEPLOYMENT-NAME 이 값은 모델을 배포할 때 배포에 대해 선택한 사용자 지정 이름에 해당합니다. 이 값은 Azure Portal의 리소스 관리>배포 또는 Azure AI Studio의 배포 페이지를 통해 찾을 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 엔드포인트 및 키리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 OpenAI 리소스 개요 블레이드에서 엔드포인트 및 액세스 키 위치에 빨간색 원이 표시된 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST API

BASH 셸에서 다음 명령을 실행합니다. gpt-35-turbo-instructgpt-35-turbo-instruct 모델 배포 시 선택한 배포 이름으로 바꿔야 합니다. 기본 모델 이름과 동일한 배포 이름을 선택하지 않으면 모델 이름을 입력할 때 오류가 발생합니다.

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\"}"

예시 엔드포인트가 포함된 명령의 첫 번째 줄 형식은 다음과 같습니다. curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/completions?api-version=2024-02-01 \. 오류가 발생하면 엔드포인트와 /openai/deployments 사이의 구분에서 /이 두 배로 늘어나지 않았는지 다시 확인하세요.

일반 Windows 명령 프롬프트에서 이 명령을 실행하려면 텍스트를 변경하여 \ 및 줄 바꿈을 제거해야 합니다.

Important

프로덕션의 경우 Azure Key Vault와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

출력

완료 API의 출력은 다음과 같습니다.

{
    "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
    }
}

또한 Azure OpenAI 서비스는 프롬프트 입력 및 생성된 출력에서 콘텐츠 조정을 수행합니다. 유해한 콘텐츠가 감지되면 프롬프트나 응답을 필터링할 수 있습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계

필수 조건

키 및 엔드포인트 검색

Azure OpenAI 서비스에 대한 호출을 성공적으로 수행하려면 다음이 필요합니다.

변수 이름
ENDPOINT 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. Azure AI Studio의 배포 페이지를 통해 엔드포인트를 찾을 수도 있습니다. 예제 엔드포인트는 https://docs-test-001.openai.azure.com/입니다.
API-KEY 이 값은 Azure Portal에서 리소스를 검사할 때 키 및 엔드포인트 섹션에서 찾을 수 있습니다. KEY1 또는 KEY2를 사용할 수 있습니다.
DEPLOYMENT-NAME 이 값은 모델을 배포할 때 배포에 대해 선택한 사용자 지정 이름에 해당합니다. 이 값은 Azure Portal의 리소스 관리>배포 또는 Azure AI Studio의 배포 페이지를 통해 찾을 수 있습니다.

Azure Portal에서 해당 리소스로 이동합니다. 엔드포인트 및 키리소스 관리 섹션에서 찾을 수 있습니다. 엔드포인트 및 액세스 키를 복사합니다. API 호출을 인증하는 데 모두 필요합니다. KEY1 또는 KEY2를 사용할 수 있습니다. 항상 두 개의 키를 사용하면 서비스 중단 없이 키를 안전하게 회전하고 다시 생성할 수 있습니다.

Azure Portal의 OpenAI 리소스 개요 블레이드에서 엔드포인트 및 액세스 키 위치에 빨간색 원이 표시된 스크린샷.

환경 변수

키 및 엔드포인트에 대한 영구 환경 변수를 만들고 할당합니다.

Important

API 키를 사용하는 경우 Azure Key Vault와 같은 다른 위치에 안전하게 저장합니다. API 키를 코드에 직접 포함하지 말고, 공개적으로 게시하지 마세요.

AI 서비스 보안에 대한 자세한 내용은 Azure AI 서비스에 대한 요청 인증을 참조하세요.

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

새 PowerShell 스크립트 만들기

  1. 빠른 시작.ps1이라는 새 PowerShell 파일을 만듭니다. 선호하는 편집기 또는 IDE에서 이 파일을 엽니다.

  2. quickstart.ps1의 내용을 다음 코드로 바꿉니다. 키, 엔드포인트 및 배포 이름을 추가하도록 코드를 수정합니다.

    # 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)"
    

    Important

    프로덕션의 경우 Azure Key Vault를 사용한 PowerShell 비밀 관리와 같은 자격 증명을 안전하게 저장하고 액세스하는 방법을 사용합니다. 자격 증명 보안에 대한 자세한 내용은 Azure AI 서비스 보안 문서를 참조하세요.

  3. PowerShell을 사용하여 스크립트를 실행합니다.

    ./quickstart.ps1
    

출력

출력에서 Once upon a time 프롬프트 다음에는 응답 텍스트가 포함됩니다. Azure OpenAI는 이 예제에서 There was a world beyond the mist...where a을 반환했습니다.

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

응답이 항상 동일하지는 않으므로 코드를 몇 번 더 실행하여 다른 응답 유형을 확인합니다.

결과 해석

Once upon a time... 예제는 컨텍스트가 거의 없기 때문에 모델이 항상 예상된 결과를 반환하지 않는 것이 정상입니다. 응답이 예기치 않거나 잘린 것처럼 보이면 최대 토큰 수를 조정할 수 있습니다.

또한 Azure OpenAI는 프롬프트 입력 및 생성된 출력에서 콘텐츠 조정을 수행합니다. 유해한 콘텐츠가 감지되면 프롬프트나 응답을 필터링할 수 있습니다. 자세한 내용은 콘텐츠 필터 문서를 참조하세요.

리소스 정리

Azure OpenAI 리소스를 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제하면 됩니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.

다음 단계