Azure OpenAI をアプリに統合する

完了

Azure OpenAI には、開発者がアプリケーションに AI 機能を追加するために使用できる、言語固有の SDK と REST API の両方が用意されています。 Azure OpenAI の生成 AI 機能は、"モデル" を通して提供されます。 Azure OpenAI サービスで使用できるモデルは異なるファミリに属しており、それぞれに独自の対象があります。 これらのモデルのいずれかを使うには、Azure OpenAI Service を介してデプロイする必要があります。

Azure OpenAI リソースを作成する

Azure OpenAI リソースは、Azure コマンド ライン インターフェイス (CLI) と Azure portal の両方を使ってデプロイできます。 Azure portal を使った A OpenAI リソースの作成は、個々の Azure AI サービス リソースをデプロイするのと似ており、Azure AI サービスの一部です。

  1. Azure Portal に移動します
  2. Azure OpenAI を検索して選び、[作成] をクリックします
  3. 空のフィールドに適切な値を入力して、リソースを作成します。

Azure OpenAI に使用できるリージョンは、現在制限されています。 物理的な場所に最も近いリージョン、または使用するモデルを利用できる最も近いものを選択します。

リソースが作成されると、キーとエンドポイントをアプリで使用できるようになります。

モデルを選択してデプロイする

各モデル ファミリは異なるタスクに優れており、各ファミリ内に異なる機能のモデルがあります。 モデル ファミリは、次の 3 つのメイン ファミリに分類されます。

  • 生成事前学習トランスフォーマー (GPT) - 自然言語と一部のコードを理解して生成するモデル。 これらのモデルは、一般的なタスク、会話、チャット形式に最適です。
  • コード (gpt-3 以前) - コード モデルは GPT モデルの上に構築され、何百万行ものコードでトレーニングされます。 これらのモデルは、コードを生成するためのコメントや自然言語の解釈など、コードを理解して生成できます。 gpt-35-turbo 以降のモデルには、このコード機能が含まれており、個別のコード モデルは必要ありません。
  • 埋め込み - これらのモデルは、機械学習モデルとアルゴリズムで使用できる特別な形式のデータである埋め込みを理解して使用できます。

このモジュールでは、一般的な GPT モデルに焦点を当てます。他のモデルは他のモジュールで説明されています。

古いモデルの場合、モデル ファミリと機能は、text-davinci-003 などの基本モデルの名前で示されます。これは、davinci レベルの機能と識別子 3 を持つテキスト モデルであることを指定します。 モデル、機能レベル、名前付け規則について詳しくは、Azure OpenAI モデルのドキュメントをご覧ください。

新しいモデルでは、gpt 世代を指定し、GPT 3.5 Turbo モデルを表す gpt-35-turbo など、turbo バージョンかどうかを指定します。

使用するモデルをデプロイするには、Azure AI Studio にアクセスして、[デプロイ] ページに移動します。 このモジュールの後半のラボでは、それを行う方法を詳しく説明します。

デプロイされているモデルの認証と指定

Azure OpenAI にモデルをデプロイするときは、それに付けるデプロイ名を選びます。 アプリを構成するときは、リソース エンドポイント、キー、デプロイ名を指定して、要求の送信先のデプロイ モデルを指定する必要があります。 これにより、同じリソース内にさまざまなモデルをデプロイでき、タスクに応じて適切なモデルに要求を行うことができます。

プロンプト エンジニアリング

入力プロンプトの記述方法は、AI モデルの応答方法に大きな役割を果たします。 たとえば、"Azure OpenAI とは何ですか" のような単純な要求でプロンプトを行った場合は、通常、検索エンジンを使ったときと似た一般的な回答が得られます。

一方、応答で望むことをさらに詳しく指定すると、より具体的な回答が得られます。 たとえば、次のようなプロンプトがあるとします。

Classify the following news headline into 1 of the following categories: Business, Tech, Politics, Sport, Entertainment

Headline 1: Donna Steffensen Is Cooking Up a New Kind of Perfection. The Internet’s most beloved cooking guru has a buzzy new book and a fresh new perspective
Category: Entertainment

Headline 2: Major Retailer Announces Plans to Close Over 100 Stores
Category:

この場合、見出しの下の "Category:" には "Business" と表示される可能性があります。

これと同様の例が、Azure AI Studio プレイグラウンドの [プロンプト サンプル] ドロップダウンの下にいくつかあります。 モデルからの応答で望むことについてできるだけ具体的に指定してみてください。それがどれほど洞察に満ちているか驚くかもしれません。

注意

AI モデルからの回答が事実である、または正しいと思い込むのは安全ではありません。 AI システムの開発とデプロイを任されているチームまたは個人は、損害の特定、測定、軽減に取り組む必要があります。 AI モデルからの応答を検証し、責任を持って AI を使用するのは、お客様の責任です。 Azure OpenAI モデルを責任を持って使用する方法に関するその他のガイドラインについては、Azure OpenAI についての Microsoft の透明性に関するメモをご覧ください。

詳しくは、プロンプト エンジニアリングに関するドキュメントのページをご覧ください。

使用可能なエンドポイント

Azure OpenAI には、REST API または Python、C#、JavaScript などで使用できる SDK を介してアクセスできます。 デプロイされたモデルと対話するために使用できるエンドポイントは異なる方法で使用され、特定のエンドポイントでは特定のモデルのみを使用できます。 使用できるエンドポイントは次のとおりです。

  • Completion - 入力プロンプトを受け取り、予測された 1 つ以上の入力候補を生成するモデルです。 スタジオではこのプレイグラウンドが表示されますが、このモジュールでは詳しい説明は省略します。
  • ChatCompletion - チャット会話の形式で入力を受け取り (送信するメッセージでロールが指定されます)、次のチャット入力候補を生成するモデルです。
  • Embeddings - 入力を受け取り、その入力のベクトル表現を返すモデルです。

たとえば、ChatCompletion の入力は、メッセージごとに明確に定義されたロールを持つ会話です。

{"role": "system", "content": "You are a helpful assistant, teaching people about AI."},
{"role": "user", "content": "Does Azure OpenAI support multiple languages?"},
{"role": "assistant", "content": "Yes, Azure OpenAI supports several languages, and can translate between them."},
{"role": "user", "content": "Do other Azure AI Services support translation too?"}

この AI モデルに実際の会話を提供すると、より正確なトーン、言い回し、コンテキストを使って、より良い応答を生成できます。 ChatCompletion エンドポイントを使うと、チャットの履歴と次のユーザー メッセージを送信することで、ChatGPT モデルはより現実的な会話を行うことができます。

ChatCompletion では、概要作成やエンティティ抽出など、チャット以外のシナリオにも対応できます。 これを実現するには、短い会話を提供し、システム情報と必要なものをユーザー入力と共に指定します。 たとえば、ジョブの説明を生成する場合は、次の会話入力のような ChatCompletion を提供します。

{"role": "system", "content": "You are an assistant designed to write intriguing job descriptions. "},
{"role": "user", "content": "Write a job description for the following job title: 'Business Intelligence Analyst'. It should include responsibilities, required qualifications, and highlight benefits like time off and flexible hours."}

注意

Completion はあらゆる gpt-3 生成モデルで利用できます。一方、ChatCompletiongpt-4 モデルでのみサポートされるオプションであり、gpt-35-turbo モデルの使用時に望ましいエンドポイントです。 このモジュールのラボでは gpt-35-turboChatCompletion エンドポイントを使用します。