クイック スタート: Azure OpenAI Service を使用してテキストの生成を開始する

この記事を使用して、Azure OpenAI への最初の呼び出しを開始します。

前提条件

  • Azure サブスクリプション。無料で作成できます

  • 目的の Azure サブスクリプション内の Azure OpenAI に付与されたアクセス権。

    現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。 問題がある場合は、このリポジトリで問題をオープンしてお問い合わせください。

  • モデルがデプロイされた Azure OpenAI リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

ヒント

統合された新しい Azure AI Studio (プレビュー) をお試しください。複数の Azure AI サービスの機能が統合されています。

Azure OpenAI Studio に移動します

https://oai.azure.com/ の Azure OpenAI Studio にアクセスし、OpenAI リソースにアクセスできる資格情報を使用してサインインします。 サインイン ワークフローの途中または後で、適切なディレクトリ、Azure サブスクリプション、Azure OpenAI リソースを選択します。

Azure OpenAI Studio ランディング ページからさらに移動すると、プロンプト入力の例を確認し、デプロイとモデルを管理し、ドキュメントやコミュニティ フォーラムなどの学習リソースを見つけることができます。

Azure OpenAI Studio のランディング ページのスクリーンショット。

実験と微調整のワークフローについては、「プレイグラウンド」を参照してください。

プレイグラウンド

GPT-3 プレイグラウンドを使用すると、コードなしのアプローチで Azure OpenAI 機能の探索を開始できます。 これは単に、入力候補を生成するためのプロンプトを送信できるテキスト ボックスです。 このページから、機能をすばやく反復して実験することができます。

セクションが強調表示された、Azure OpenAI Studio のプレイグラウンド ページのスクリーンショット。

デプロイを選択し、事前に読み込まれたいくつかの例から選択して、開始できます。 お使いのリソースにデプロイがない場合は、[デプロイの作成] を選択し、ウィザードの指示に従います。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

温度や応答前のテキストなどの構成設定を実験して、タスクのパフォーマンスを向上させることができます。 各パラメーターの詳細については、REST API に関するページを参照してください。

  • [生成] ボタンを選択すると、入力したテキストが入力候補 API に送信され、返された結果がテキスト ボックスにストリーミングされます。
  • 前の生成呼び出しを元に戻すには、[元に戻す] ボタンを選択します。
  • 元に戻す操作と生成の呼び出しをまとめて行うには、[再生成] ボタンを選択します。

Azure OpenAI では、プロンプト入力と生成された出力に対してコンテンツ モデレーションも実行されます。 有害なコンテンツが検出された場合、プロンプトまたは応答がフィルター処理される可能性があります。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

GPT-3 プレイグラウンドでは、選択した設定に従って事前に入力された Python と curl コードのサンプルを表示することもできます。 [例] ドロップダウンの横にある [コードの表示] を選択してください。 OpenAI Python SDK、curl、またはその他の REST API クライアントを使用して、同じタスクを完了するアプリケーションを作成することができます。

テキストの概要作成を試す

GPT-3 プレイグラウンドで Azure OpenAI を使用してテキストの概要を作成するには、次の手順に従います。

  1. Azure OpenAI Studio にサインインします。

  2. 使用するサブスクリプションと OpenAI リソースを選択します。

  3. ランディング ページの上部にある [GPT-3 プレイグラウンド] を選択します。

  4. 使用するデプロイを [デプロイ] ドロップダウンから選択します。 使用するリソースにデプロイがない場合は、[デプロイの作成] を選択してから、このステップに戻ります。

  5. [例] ドロップダウンから [テキストの要約] を選択します。

    Azure OpenAI Studio のプレイグラウンド ページのスクリーンショット。[テキストの要約] ドロップダウンの選択が表示されている

  6. [Generate] を選択します。 Azure OpenAI はテキストのコンテキストをキャプチャし、簡潔に言い換えようとします。 次のテキストのような結果が得られます。

    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.
    

応答の正確性は、モデルごとに異なる場合があります。 この例の Davinci ベースのモデルはこのタイプの要約に適していますが、Codex ベースのモデルはこの特定のタスクで同等のパフォーマンスを発揮できません。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

ソース コード | パッケージ (NuGeT) | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプション内の Azure OpenAI Service へのアクセスの許可。 現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI Service へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。
  • 最新バージョンの .NET Core
  • gpt-35-turbo-instruct モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

新しい .NET Core アプリを作成する

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、dotnet new コマンドを使用し、azure-openai-quickstart という名前で新しいコンソール アプリを作成します。 このコマンドにより、次の C# ソース ファイルを 1 つ使用する単純な "Hello World" プロジェクトが作成されます: Program.cs

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 --prerelease

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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

重要

運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

dotnet run program.cs

出力

Chatbot:

Microsoft was founded on April 4, 1975.

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

ソース コード | パッケージ (Go)| サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプション内の Azure OpenAI Service へのアクセスの許可。 現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI Service へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。
  • Go 1.21.0 以降がローカルにインストールされていること。
  • gpt-35-turbo-instuct モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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

}

重要

運用環境では、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) | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプション内の Azure OpenAI Service へのアクセスの許可。 現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI Service へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。
  • gpt-35-turbo-instruct モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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 Central Repository を参照してください。

build.gradle.kts を検索し、任意の IDE またはテキスト エディターで開きます。 その後、次のビルド構成をコピーします。 この構成では、エントリ ポイントが OpenAIQuickstart クラスである 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());
        }
    }
    

    重要

    運用環境では、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 リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

ソース コード | 成果物 (Maven) | サンプル

前提条件

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

Note

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 コマンドを実行します。 このコマンドは、main の 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()));
              });
        }
    
    }
    

    重要

    運用環境では、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 サブスクリプション - 無料アカウントを作成します
  • 目的の Azure サブスクリプション内の Azure OpenAI Service へのアクセスの許可。 現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI Service へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。
  • Node.js の LTS バージョン
  • gpt-35-turbo-instruct モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントキーが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要 UI のスクリーンショット。エンドポイントおよびアクセス キーの場所が赤色の丸で囲まれています。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。 次に、npm init コマンドを実行し、package.json ファイルを使用してノード アプリケーションを作成します。

npm init

クライアント ライブラリをインストールする

npm を使用して JavaScript 用の Azure OpenAI クライアント ライブラリをインストールします。

npm install @azure/openai

アプリの package.json ファイルは依存関係を含めて更新されます。

サンプル アプリケーションを作成する

新しいプロジェクトを作成したコマンド プロンプトを開き、Completion.js という名前の新しいファイルを作成します。 次のコードを Completion.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 };

重要

運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

次のコマンドを使用してこのスクリプトを実行します。

node.exe Completion.js

出力

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。

次のステップ

ライブラリのソース コード | パッケージ (PyPi) |

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します

  • 目的の Azure サブスクリプション内の Azure OpenAI に付与されたアクセス権

    現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI へのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。 問題がある場合は、このリポジトリで問題をオープンしてお問い合わせください。

  • Python 3.8 以降のバージョン

  • 次の Python ライブラリ: os、requests、json

  • gpt-35-turbo-instruct モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

次を使用して、OpenAI Python クライアント ライブラリをインストールします。

pip install openai

Note

このライブラリは OpenAI によって管理されており、現在はプレビュー段階です。 このライブラリの最新の更新を追跡するには、リリース履歴または version.py のコミット履歴を参照してください。

キーとエンドポイントを取得する

Azure OpenAI サービスに対して正常に呼び出しを行うには、次のものが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを調べる際の キーとエンドポイント セクションにあります。 または、 Azure OpenAI Studio>Playground>View コードで値を見つけることができます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを調べる際の キーとエンドポイント セクションにあります。 KEY1 または KEY2 を使用できます。
DEPLOYMENT-NAME この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の Resource Management>モデル デプロイ または Azure OpenAI Studio の Management>デプロイ にあります。

Azure portal でリソースに移動します。 キーとエンドポイント は、リソース管理 セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要ブレードのスクリーンショット。エンドポイントとアクセス キーの場所が赤色の丸で囲まれています。

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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)

重要

運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

  1. クイック スタート ファイルに対して次の 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 サブスクリプション - 無料アカウントを作成します

  • 目的の Azure サブスクリプション内の Azure OpenAI に付与されたアクセス権

    現時点では、このサービスへのアクセスは申請によってのみ許可されます。 Azure OpenAI サービスへのアクセスを申請するには、https://aka.ms/oai/access のフォームに入力してください。 問題がある場合は、このリポジトリで問題をオープンしてお問い合わせください。

  • Python 3.8 以降のバージョン

  • 次の Python ライブラリ: os、requests、json

  • モデルがデプロイされた Azure OpenAI リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。

設定

キーとエンドポイントを取得する

Azure OpenAI に対して正常に呼び出しを行うには、次のものが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 または、Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。
DEPLOYMENT-NAME この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[デプロイ] または Azure OpenAI Studio の [管理]>[デプロイ] で確認できます。

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要ブレードのスクリーンショット。エンドポイントとアクセス キーの場所が赤色の丸で囲まれています。

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

環境変数

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

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-instruct は、gpt-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 の間隔で / が 2 倍になっていないことを確認してください。

このコマンドを通常の Windows コマンド プロンプトで実行する場合は、テキストを変更して、\ と改行を削除する必要があります。

重要

運用環境では、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 Service では、プロンプト入力と生成された出力に対してコンテンツ モデレーションも実行されます。 有害なコンテンツが検出された場合、プロンプトまたは応答がフィルター処理される可能性があります。 詳しくは、コンテンツ フィルターに関する記事を参照してください。

リソースをクリーンアップする

Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

前提条件

キーとエンドポイントを取得する

Azure OpenAI サービスに対して正常に呼び出しを行うには、次のものが必要です。

変数名
ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 または、Azure OpenAI Studio>[プレイグラウンド]>[コード ビュー] で値を確認することもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/
API-KEY この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。
DEPLOYMENT-NAME この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[デプロイ] または Azure OpenAI Studio の [管理]>[デプロイ] で確認できます。

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

Azure portal の Azure OpenAI リソースの概要ブレードのスクリーンショット。エンドポイントとアクセス キーの場所が赤色の丸で囲まれています。

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

環境変数

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

新しい PowerShell スクリプトの作成

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

    重要

    運用環境では、Azure Key Valut を使用した PowerShell Secret Management のような安全な方法で認証情報を保存し、アクセスしてください。 資格情報のセキュリティについて詳しくは、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 リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ