クイック スタート: レガシ入力候補の API を使用してテキストの生成を開始する
この記事を使用して、Azure OpenAI への最初の呼び出しを開始します。
前提条件
- Azure サブスクリプション。無料で作成できます。
- モデルがデプロイされた Azure OpenAI リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
Azure OpenAI Studio に移動します
https://oai.azure.com/ で Azure OpenAI Studio に移動し、Azure OpenAI リソースにアクセスできる資格情報を使用してサインインします。 サインイン ワークフローの途中または後で、適切なディレクトリ、Azure サブスクリプション、Azure OpenAI リソースを選択します。
Azure OpenAI Studio ランディング ページからさらに移動すると、プロンプト入力の例を確認し、デプロイとモデルを管理し、ドキュメントやコミュニティ フォーラムなどの学習リソースを見つけることができます。
プレイグラウンド
GPT-3 プレイグラウンドを使用すると、コードなしのアプローチで Azure OpenAI 機能の探索を開始できます。 これは単に、入力候補を生成するためのプロンプトを送信できるテキスト ボックスです。 このページから、機能をすばやく反復して実験することができます。
デプロイを選択し、事前に読み込まれたいくつかの例から選択して、開始できます。 お使いのリソースにデプロイがない場合は、[デプロイの作成] を選択し、ウィザードの指示に従います。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
温度や応答前のテキストなどの構成設定を実験して、タスクのパフォーマンスを向上させることができます。 各パラメーターの詳細については、REST API に関するページを参照してください。
- [生成] ボタンを選択すると、入力したテキストが入力候補 API に送信され、返された結果がテキスト ボックスにストリーミングされます。
- 前の生成呼び出しを元に戻すには、[元に戻す] ボタンを選択します。
- 元に戻す操作と生成の呼び出しをまとめて行うには、[再生成] ボタンを選択します。
Azure OpenAI では、プロンプト入力と生成された出力に対してコンテンツ モデレーションも実行されます。 有害なコンテンツが検出された場合、プロンプトまたは応答がフィルター処理される可能性があります。 詳しくは、コンテンツ フィルターに関する記事を参照してください。
Completions playground では、選択した設定に従って事前に入力された Python と curl コードのサンプルを表示することもできます。 [例] ドロップダウンの横にある [コードの表示] を選択してください。 OpenAI Python SDK、curl、またはその他の REST API クライアントを使用して、同じタスクを完了するアプリケーションを作成することができます。
テキストの概要作成を試す
Completions playground で Azure OpenAI を使用してテキストの概要を作成するには、次の手順に従ってください。
Azure OpenAI Studio にサインインします。
使用するサブスクリプションと OpenAI リソースを選択します。
ランディング ページで [Completions playground] を選択します。
使用するデプロイを [デプロイ] ドロップダウンから選択します。 使用するリソースにデプロイがない場合は、[デプロイの作成] を選択してから、このステップに戻ります。
モデルのプロンプトを入力します。
[
Generate
] を選択します。 Azure OpenAI はテキストのコンテキストをキャプチャし、簡潔に言い換えようとします。 次のテキストのような結果が得られます。
応答の正確性は、モデルごとに異なる場合があります。 この例の gpt-35-turbo-instruct
ベースのモデルは、この種の要約に適していますが、通常は、入力候補 API に特に適した特定のユース ケースがない限り、代替チャット入力候補 API を使用することをお勧めします。
リソースをクリーンアップする
Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
次のステップ
- 入力候補に関するハウツー ガイドで、最適な入力候補を生成する方法について詳しく学びます。
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください。
ソース コード | パッケージ (NuGeT) | サンプル
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- 最新バージョンの .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 --version 1.0.0-beta.17
Note
Completions API は、Azure.AI.OpenAI
クライアント ライブラリのバージョン 1.0.0-beta.17
以前でのみ使用できます。 Azure.AI.OpenAI
の最新バージョン 2.0.0
以降で入力候補を生成するには、chat completions API を使用することをお勧めします。
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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}");
重要
運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。
dotnet run program.cs
出力
Chatbot:
Microsoft was founded on April 4, 1975.
リソースをクリーンアップする
Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。
次のステップ
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Go 1.21.0 以降がローカルにインストールされていること。
gpt-35-turbo-instuct
モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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)
}
}
重要
運用環境では、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 リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。
次のステップ
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください
ソース コード | 成果物 (Maven) | サンプル
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- 最新バージョンの Java Development Kit (JDK)
- Gradle ビルド ツール、または別の依存関係マネージャー。
gpt-35-turbo-instruct
モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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 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")
}
サンプル アプリケーションを作成する
Java ファイルを作成します。
作業ディレクトリから次のコマンドを実行し、プロジェクト ソース フォルダーを作成します。
mkdir -p src/main/java
新しいフォルダーに移動し、GetCompletionsSample.java というファイルを作成します。
適当なエディターまたは 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 サービスのセキュリティに関する記事をご覧ください。
プロジェクトのルート フォルダーに戻り、次のようにしてアプリをビルドします。
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 リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。
次のステップ
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください
ソース コード | 成果物 (Maven) | サンプル
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- 最新バージョンの Java Development Kit (JDK)
- Spring Boot CLI ツール
gpt-35-turbo
モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
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 アプリケーションを編集する
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>
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 サービスのセキュリティに関する記事をご覧ください。
プロジェクトのルート フォルダーに戻り、次のコマンドを使ってアプリを実行します:
./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) | サンプル
Note
この記事は、Azure OpenAI を完全にサポートするようになった最新の OpenAI npm パッケージを使用するように更新されました。 レガシ Azure OpenAI JavaScript SDK のコード サンプルをお探しであれば、それらはまだこちらのリポジトリで入手可能です。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Node.js の LTS バージョン
- TypeScript
gpt-35-turbo-instruct
モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、エンドポイントとキーが必要です。
変数名 | Value |
---|---|
ENDPOINT |
サービス エンドポイントは、Azure portal でリソースを調べるときに、[キーとエンドポイント] セクションで確認できます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
Azure portal でリソースに移動します。 [キーとエンドポイント] セクションは、[リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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 dotenv @azure/identity
アプリの package.json ファイルは依存関係を含めて更新されます。
サンプル アプリケーションを作成する
新しいプロジェクトを作成したコマンド プロンプトを開き、Completion.js という名前の新しいファイルを作成します。 次のコードを Completion.js ファイルにコピーします。
import "dotenv/config";
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>";
const apiKey = process.env["AZURE_OPENAI_API_KEY"] || "<api key>";
// Required Azure OpenAI deployment name and API version
const apiVersion = "2024-08-01-preview";
const deploymentName = "gpt-35-turbo-instruct";
// Chat prompt and max tokens
const prompt = ["When was Microsoft founded?"];
const maxTokens = 128;
function getClient(): AzureOpenAI {
return new AzureOpenAI({
endpoint,
apiKey,
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.
Microsoft Entra ID
重要
前の例では、キーベースの認証を示しています。 キーベースの認証のテストが成功したら、次のコード サンプルで示す、より安全な Microsoft Entra ID を認証に使用することをお勧めします。 [Microsoft Entra ID] の使用を開始するには、いくつかの追加の前提条件が必要です。
import {
DefaultAzureCredential,
getBearerTokenProvider,
} from "@azure/identity";
import "dotenv/config";
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";
// Chat prompt and max tokens
const prompt = ["When was Microsoft founded?"];
const maxTokens = 128;
function getClient(): AzureOpenAI {
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(
new DefaultAzureCredential(),
scope
);
return new AzureOpenAI({
endpoint,
azureADTokenProvider,
deployment: deploymentName,
apiVersion,
});
}
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
Note
"エラーが発生しました。OpenAIError: apiKey
および azureADTokenProvider
引数は相互に排他的で、一度に渡すことができるのは 1 つだけです。" というエラーが発生した場合API キーの既存の環境変数をシステムから削除することが必要な場合があります。 Microsoft Entra ID コード サンプルで API キー環境変数を明示的に参照していなくても、このサンプルを実行するシステムに API キー環境変数が存在する場合、このエラーが生成されます。
リソースをクリーンアップする
Azure OpenAI リソースをクリーンアップして削除したい場合は、リソースを削除できます。 リソースを削除する前に、まずデプロイされたモデルを削除する必要があります。
次のステップ
- Azure OpenAI の概要
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください
ライブラリのソース コード | パッケージ (PyPi) |
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Python 3.8 以降のバージョン
- 次の Python ライブラリ: os、requests、json
gpt-35-turbo-instruct
モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
次を使用して、OpenAI Python クライアント ライブラリをインストールします。
pip install openai
Note
このライブラリは、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
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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 アプリケーションを作成する
quickstart.py という名前の新しい Python ファイルを作成します。 次に、任意のエディターまたは IDE で開きます。
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 サービスのセキュリティに関する記事をご覧ください。
クイック スタート ファイルに対して次の
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 サンプルの GitHub リポジトリを参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Python 3.8 以降のバージョン
- 次の Python ライブラリ: os、requests、json
- モデルがデプロイされた Azure OpenAI リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
設定
キーとエンドポイントを取得する
Azure OpenAI に対して正常に呼び出しを行うには、次のものが必要です。
変数名 | 値 |
---|---|
ENDPOINT |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
DEPLOYMENT-NAME |
この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[デプロイ] か、Azure AI Studio の [デプロイ] ページにあります。 |
Azure portal でリソースに移動します。 [エンドポイントとキー] は [リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
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-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 サンプルの GitHub リポジトリを参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- 最新バージョンの PowerShell 7 または Windows PowerShell 5.1 のいずれかを使用できます。
- モデルがデプロイされた Azure OpenAI Service リソース。 モデル デプロイの詳細については、リソース デプロイ ガイドを参照してください。
キーとエンドポイントを取得する
Azure OpenAI サービスに対して正常に呼び出しを行うには、次のものが必要です。
変数名 | 値 |
---|---|
ENDPOINT |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 または、Azure AI Studio の [デプロイ] ページからエンドポイントを見つけることもできます。 エンドポイントの例: https://docs-test-001.openai.azure.com/ 。 |
API-KEY |
この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 KEY1 または KEY2 を使用できます。 |
DEPLOYMENT-NAME |
この値は、モデルのデプロイ時にデプロイに対して選択したカスタム名に対応します。 この値は、Azure portal の [リソース管理]>[デプロイ] か、Azure AI Studio の [デプロイ] ページにあります。 |
Azure portal でリソースに移動します。 [エンドポイントとキー] は [リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1
または KEY2
を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。
環境変数
キーとエンドポイントの永続的な環境変数を作成して割り当てます。
重要
API キーを使用する場合は、それを Azure Key Vault などの別の場所に安全に保存します。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'
新しい PowerShell スクリプトの作成
quickstart.ps1 という名前の新しい PowerShell ファイルを作成します。 次に、任意のエディターまたは IDE で開きます。
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 サービスのセキュリティに関する記事をご覧ください。
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 リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
次のステップ
- 入力候補に関するハウツー ガイドで、最適な入力候補を生成する方法について詳しく学びます。
- その他の例については、Azure OpenAI サンプルの GitHub リポジトリを参照してください。