GPT-4 Turbo with VisionはAzureサービス構成図からARMテンプレートを生成できるか? ~大和総研の社内適用事例からChatGPTのエンタープライズ利用の実例を紹介~

 大和総研DX推進部の城石賢蔵です。
 大和総研では「DIR ChatGPT(当社独自の社員向けChatGPT環境)」という生成AIサービスを社内に展開しています。先行ブログ「GPT-4 Turbo with Visionはシステム設計図のセルフチェックツールになりうるか?」では「GPT-4 Turbo with Vision(画像データに基づく文章生成機能)」にシステム設計図をインプットした結果を紹介しました。クラウドサービスを中心とするシステム・ネットワーク設計図の分析能力は高く、セルフチェックツールとして有用であると感じる結果でした。
 今回はGPT-4 Turbo with Visionの活用の第2弾として、Azureのサービス構成図からARMテンプレート(※)の生成を試みた事例を紹介します。
 結論として、GPT-4 Turbo with Visionを利用することでサービス構成図上のAzureサービスの種別や名称が反映されたARMテンプレートを生成することはできました。しかし、そのARMテンプレートは2024年7月時点では実用的とは言えないものでした。現時点においてGPT-4 Turbo with Visionを利用して実用的なARMテンプレートを生成するためには、利用者による工夫が不可欠である、というのが今回の試行の率直な感想です。この工夫についても本記事で紹介します。
 Azure OpenAI Serviceの社内導入を検討されているみなさん、Azure OpenAI Serviceの活用範囲をさらに広げたいとお考えのみなさんの参考となれば幸いです。
 なお大和総研ではMicrosoft 365、Azureをはじめ、AWS、Google Cloud、Oracle Cloud Infrastructureなどのパブリッククラウドの導入に関するご相談を承っております。ぜひご用命ください。

※正式名称はAzure Resource Managerテンプレート。Azureの環境やサービスの設定情報を定義するためのテンプレートです。詳しくは「はじめに」で紹介します。

はじめに

GPT-4 Turbo with Visionの利用環境

 はじめに今回GPT-4 Turbo with Visionを利用する環境を紹介します。
 先行ブログ「GPT-4 Turbo with Visionはシステム設計図のセルフチェックツールになりうるか?」と同様に今回もプライベート(閉域)ネットワーク化を施したAzure OpenAI Service環境を利用しています。Azure OpenAI Serviceをプライベートネットワーク化することのメリットは上記先行ブログをご覧ください。
 ユーザーインターフェースも前回と同様に、Azure OpenAI Service標準のWebユーザーインターフェースであるAzure OpenAI Studioを利用しています。

図1. プライベートネットワーク下でのAzure OpenAI Studioの利用
出所:大和総研作成

 AIモデルは前回と同様に「gpt-4 vision-preview(GPT-4 Turbo with Visionのプレビューバージョン)」を利用しています。2024年7月時点では、正式モデル(GA)である「gpt-4 turbo-2024-04-09」は東日本リージョンに提供開始されていません。


表1. GPT-4 Turbo with Visionのモデル一覧(抜粋)
モデルID
説明
東日本リージョンへの提供
gpt-4 turbo-2024-04-09 正式(GA)モデル
既存プレビューモデルの代替となるもの
画像認識機能の拡張(Azure AI Visionとの連携)に対応していない
×
gpt-4 vision-preview プレビューモデル
画像の入力に対応している
画像認識機能の拡張(Azure AI Visionとの連携)に対応している

出所:Microsoft「Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn」を基に大和総研作成

ARM(Azure Resource Manager)テンプレートとは?

 続いてARMテンプレートについて紹介します。
 ARMテンプレートは正式には「Azure Resource Managerテンプレート」といい、Azureの環境やサービスの設定情報を格納するJSON形式のファイルです。

 DIR ChatGPTではARMテンプレートを標準のIaC(Infrastructure as Code)ツールと位置付けており、主に以下の用途に利用しています。

  1. Azureサービスの作成(デプロイ)作業の省力化
     Azureサービスの作成にあたり、該当サービスの設定情報を網羅したARMテンプレートを作成しAzure Resource Manager上で実行することで、Webユーザーインターフェースでのパラメータ入力操作を省略できます。
  2. 作成したAzureサービス設定の妥当性確認
     Azureサービスを作成するとAzure Resource Managerから該当サービスのARMテンプレートをエクスポートできるようになります。エクスポートしたARMテンプレートには作成処理の過程で自動セットされた設定値も含まれるため、作成結果の妥当性を客観的に評価できます。

GPT-4 Turbo with Visionの試行結果:サービス構成図からARMテンプレートを生成できるか?

 GPT-4 Turbo with Visionを利用してAzureサービス構成図からARMテンプレートの生成を試みた結果を本章で紹介します。
 ARMテンプレートの対象範囲とするAzureサービス構成には「Private Endpointを備えたAzure OpenAI Service」を採用しました。なお、Private Endpointは先行ブログ「Microsoft Azureのセキュリティ対策のポイント」で詳しく紹介しています。
 また構成図の様式は「日本語版Azure共通基盤(ランディングゾーン)設計・構築ガイド」(日本マイクロソフト)に準拠しました。

図2. ARMテンプレートの生成のためのAzureサービス構成図
出所:大和総研作成

 最後にGPT-4 Turbo with Visionの利用方法について補足します。
 GPT-4 Turbo with Vision(プレビューバージョン)では要求文の送信にあたり「temperature」「top_p」などの追加パラメータを指定できます。今回の試行ではこれらに有意な値はセットせず、既定値のままとしています。

 また、試行の各ステップにおいて同一内容の要求文を3回以上送信し、ほぼ同様の応答文が返却されることを確認しています。

① ステップ1:サービス構成図のみをインプット

 ステップ1として、Azureサービス構成図のみをインプットしてARMテンプレートの生成を試みました。リージョンは要求文の中で指定しました。

表2. サービス構成図からのARMテンプレート作成指示と応答結果
セクション
内容
システムプロンプト(AIへの要求事項) アップロードされた画像に基づいて日本語で回答してください。
要求文 添付する画像の構成図を実際に作成するためのARMテンプレートを作成してください。
なお、サブスクリプション、リソースグループ、仮想ネットワーク、サブネットは作成済みです。
また、リージョンは東日本とします。
応答文 画像に基づいて、Azure OpenAI Service と Private Endpoint を含む ARM テンプレートを作成する際の基本的な構造を以下に示します。ただし、このテンプレートはあくまで構造の例示であり、実際にデプロイを実行するには、サービスの詳細な設定や依存関係を適切に設定する必要があります。また、API やリソースプロバイダーのバージョンによっては、プロパティやリソースタイプが異なる場合があるため、最新のドキュメントを確認してください。

[テンプレート本文は長大かつ専門的な内容であるため掲載を割愛]

このテンプレートは、Azure OpenAI サービスのインスタンスと、そのサービスに接続する Private Endpoint を作成する最も基本的な形を示しています。実際のリソース作成には、API やリソースに関連するプロパティを適切に設定する必要があります。また、依存関係やアクセスポリシー、ネットワークの詳細なども適切に構成する必要があります。

リソースの詳細や最新の情報については、Azure の公式ドキュメントを参照してください。また、実際にデプロイを行う前に、テンプレートの検証を行ってください。

出所:大和総研作成

 結果は表3の通りでした。

表3. ステップ1の結果の評価
項目
内容
プラス評価点
  • ARMテンプレートの生成のスコープ(Azure OpenAI Service、Private Endpoint)を正しく認識できている
  • 作成済みのAzureサービス(サブスクリプション、リソースグループ、仮想ネットワーク、サブネット)の名称をARMテンプレートに正しく反映できている
  • 要求文に掲げたリージョンの指定(東日本リージョン)をARMテンプレートに正しく反映できている
  • マイナス評価点
  • ARMテンプレートの内容に不備不足がある。具体的には、稼働中のAzureサービスからエクスポートしたARMテンプレートと照合したところリソースの種別不一致や不足が見られた
  • 出所:大和総研作成

     マイナス評価点で挙げたARMテンプレートの内容の不備不足の実例として、Azure OpenAI Service用テンプレートの構造比較結果を紹介します。図3をご覧ください。

    図3. Azure OpenAI Service用ARMテンプレートの構造比較結果
    出所:大和総研作成。各リソースの説明はMicrosoft「Azure リソース リファレンス - Bicep, ARM template & Terraform AzAPI reference | Microsoft Learn」より引用

     Azure OpenAI Serviceは第1のリソースの種別を正しく特定できていません。応答文中に「最も基本的な形を示している」とありますが、その基本形を理解できていないことになります。ステップ1で生成されたARMテンプレートは実用的とは言えないものでした。そこでARMテンプレートの基本構造を指示することで精度を向上させられないか、次ステップで検証することとしました。

    ② ステップ2:テンプレートの基本構造を指示

     ステップ2ではステップ1の対話の履歴を引き継ぎ、組み込むリソースを明示してテンプレートの詳細化を試みました。

    表4. 組込リソースを明示的に指定した場合のARMテンプレート作成指示と応答結果
    セクション
    内容
    システムプロンプト(AIへの要求事項) アップロードされた画像に基づいて日本語で回答してください。
    要求文 Azure OpenAI Service の ARM テンプレートをさらに詳細化してください。
    具体的には下記のリソース種別を全て含めてください。
    • Microsoft.CognitiveServices/accounts
    • Microsoft.CognitiveServices/accounts/deployments
    • Microsoft.CognitiveServices/accounts/privateEndpointConnections
    • Microsoft.CognitiveServices/accounts/raiPolicies
    応答文 Azure Cognitive Services の ARM テンプレートには、Cognitive Services アカウント、デプロイメント、プライベート エンドポイント接続、および RAI(Responsible AI)ポリシーのリソース種別を含めることができます。以下は、それらのリソースを含む ARM テンプレートのサンプルです。ただし、以下の例はあくまでテンプレートの骨格を示したものであり、実際のデプロイメントでは各リソースの詳細なパラメータ設定が必要です。

    [テンプレート本文は長大かつ専門的な内容であるため掲載を割愛]

    このテンプレートは、Cognitive Services アカウントとそれに関連するリソース(デプロイメント、プライベート エンドポイント接続、RAI ポリシー)を作成するためのものです。リソースの name プロパティは、実際のリソース名に置き換えてください。また、リソースの properties セクションには、リソースの種類に応じて適切なプロパティを設定する必要があります。

    最終的なテンプレートは、Azure ポータルのカスタム テンプレート ブレード、PowerShell、Azure CLI、またはその他のツールを使用してデプロイできます。リソースのプロパティや設定値については、Azure の公式ドキュメントを確認するか、Azure ポータルでリソースを手動で作成してから、エクスポートされたテンプレートを参照してください。

    出所:大和総研作成

     結果は表5の通りでした。

    表5. ステップ2結果の評価
    項目
    内容
    プラス評価点
  • 要求文に掲げた全てのリソースがARMテンプレートに組み込まれている
  • マイナス評価点
  • 各リソースの「APIバージョン」が稼働中のAzureサービスからエクスポートしたものと比べて古く、内部構造(設定項目、配列等)に明らかな不足がある
  • 出所:大和総研作成

     マイナス評価点で挙げたAPIバージョンの古さの実例として、Azure OpenAI Service用テンプレートのAPIバージョンの照合結果を紹介します。表6をご覧ください。

    表6. Azure OpenAI Service用ARMテンプレートの各リソースのAPIバージョンの照合結果
    リソース
    APIバージョン
    稼働中のサービス
    GPT-4 Turbo
    Microsoft.CognitiveServices/accounts 2024-04-01-preview 2021-04-30
    Microsoft.CognitiveServices/accounts/deployments 2024-04-01-preview 2021-04-30
    Microsoft.CognitiveServices/accounts/privateEndpointConnections 2024-04-01-preview 2021-04-30
    Microsoft.CognitiveServices/accounts/raiPolicies 2024-04-01-preview 2021-04-30

    出所:大和総研作成

     組み込むべきリソースを明示することによって、ARMテンプレート内のリソースの構成は稼働中のAzureサービスのそれを再現できました。しかし、構造体の新しさを示すAPIバージョンが著しく古く、リソース配下の構造に大きな乖離が見られました。
     APIバージョンが2021-04-30であることから、GPT-4 Turbo with VisionはAzure OpenAI ServiceのARMテンプレートに関して2021年までの学習データしか有していないものと客観的に判断しました。そして、このような学習データからはAzure OpenAI Serviceをスコープに含むARMテンプレートを生成することは難しいものと結論しました。
     以上をもって、今回の試行は終了としました。

    ③ 総評

     クラウドサービスの分野において、GPT-4 Turbo with Visionの画像認識・分析能力は高いと言えます。節①で紹介した通り、構成図に示すサービスの種別や名称を正確に認識できていました。そして要求文に掲げた情報と照合し、ARMテンプレートの作成範囲(作成対象とするサービス)を特定できていました。
     しかし節①と節②の両方で紹介した通り、生成されたテンプレートは2024年時点のAzureサービスの仕様から乖離した内容を含むものでした。原因は生成AIの学習データの不足であると考えられます。
     総評として、現時点でGPT-4 Turbo with Visionはサービス構成図からARMテンプレートを生成するためのヒントを生成することはできるものと判断します。しかし、実用的なテンプレートを一から生成することは難しいようです。

    GPT-4 Turbo with Visionの活用方法の考察:実用的なARMテンプレートを作り上げるためには?

     前章の試行の結果から、GPT-4 Turbo with Visionは現時点で実用的なARMテンプレートを生成するための十分な学習データを備えていないという判断に至りました。
     このような状況の下で実用的なARMテンプレートをGPT-4 Turbo with Visionから生み出すにはどのような工夫をすればよいでしょうか。一つの策として考えたのが、生成対象とするARMテンプレートの適正な構造を追加情報としてインプットし、詳細な指示を与えることです。
     具体的にはMicrosoftの公開情報から取得したARMテンプレートの構造体や、稼働中のAzureサービスからエクスポートしたARMテンプレートの実物をGPT-4 Turbo with Visionに投入します。そのうえで、各設定項目にセットする値を文章で具体的に指示します。
     基本的なフローは表7の通りです。まずARMテンプレートの構造をインプットし、その後対話を繰り返して各設定項目を充足することで実用的なARMテンプレートを作り上げられます。
     DIR ChatGPTの保守では、このフローの実践を開始しています。

    表7. GPT-4 Turbo with Visionによる実用的なARMテンプレートの生成
    項番
    実施内容
    インプット情報
    1 目的とするARMテンプレートの構造をインプットする
  • 公開情報から取得したARMテンプレートの構造体
  • 稼働中のAzureサービスからエクスポートしたARMテンプレート
  • 2 各設定項目の値を具体的に指示する
  • 各設定項目の値
  • (既存Azureサービスのテンプレートを再利用する場合)既存設定値の変更内容
  • 3 生成されたARMテンプレートをテスト実行する(Visual Studio Codeなどを利用) -
    4 ARMテンプレートのテスト実行が正常終了するようになるまで項番2から3を繰り返す -

    出所:大和総研作成

    おわりに

     今回はChatGPT(GPT-4 Turbo with Vision)の画像認識・分析機能と文章生成機能を組み合わせて、サービス構成図からサービスを生成するためのコード(ARMテンプレート)を生成することを試みました。前者の機能による構成図の分析結果は良好でしたが、後者の機能の学習データの不足から実用的なARMテンプレートを生成することはかないませんでした。生成AIの活用においてカギを握るのが学習データの充実度であることを改めて痛感しました。
     この学習データの不足を補うために、DIR ChatGPTでは「RAG(Retrieval-Augmented Generation:検索拡張生成)」技術の実装を進めています。これは、社内情報や社外の最新情報などの外部のデータに基づき生成AIに回答させることで、生成される文章の精度や品質を向上させるというものです。

     このRAGの実現にも課題はありますが、今回紹介したように利用者が生成AIと対話を重ねつつ自身の判断で情報を取捨選択し追加インプットしていくことが、精度の高い文章を生成するための最も確実な手段だと考えています。
     DIR ChatGPTではこれからも新機能の導入と検証を積極的に進めます。成果は順次ブログにて発信します。どうぞご期待ください。

    (本ブログの内容は2024年7月時点のものです)

    関連するソリューション

     大和総研では、Azure等のパブリッククラウドを活用したChatGPT構築支援サービスを行っています。ITソリューションサービスサイトからお問い合わせください。

     ChatGPT利用環境構築サービス|大和総研 (dir.co.jp)

    ※Microsoft 365、Power Platform、Azureは、米国 Microsoft Corporationの米国およびその他の国における登録商標または商標です。