Azure 第33回『クセは強いが使いこなせば超有能!Copilot in Azure を自社の専属サポートにしよう』

どうもこんにちは!Azure 担当の太田です。今回は Copilot in Azure の実践利用について解説してみたいと思います。

Azure を日々運用されている方で、Copilot in Azure を使おうと思ってもどう使っていいかわからない、使ってみたけど全然有効な回答が得られない、などのお悩みはありませんか?Copilot in Azure を使いこなすには、他の生成AIとはまた違うコツが必要となります。それを使いこなすことができれば、超有能なAzureのサポートエンジニアを雇っているのと同等の価値があると言えますので、是非とも活用していただきたいと思います。

本記事では、Copilot in Azure の仕組みから有効化方法、基本的な利用方法など基礎的な内容を中心に紹介いたします。(※2025年1月現在、パブリックプレビューとなります。現在無償で利用できますが、今後料金体系・仕様変更が実施される可能性があります)

Copilot in Azure とは

Copilot in Azure は、Microsoft が提供するAIアシスタントで、Azure 環境での作業をサポートするために設計されています。これにより、ユーザーは複雑な操作を簡単に行うことができ、効率的にタスクを進めることが可能になります。特に、Azure のリソース管理やデプロイメントに関する質問に対して、迅速かつ正確な回答を提供してくれます。

アーキテクチャ

以下の図は、Copilot in Azure のアーキテクチャを示しています。

この図では、ユーザーのプロンプトがどのようにクエリに変換され、コンテキストや知識が統合されて応答が生成されるかが示されています。入力された会話や質問はオーケストレーションレイヤーに送信されます。オーケストレーションとは、フロントエンドからの情報を高度に処理するエンジンです。ここで、得られた情報を基に、追加の情報を取得するための各種プラグインや、セキュリティやプライバシー等遵守すべき事項をチェックします。

ここで注目すべきは、プラグインにおいて参照する情報というものは、Microsoft の一次資料であるDocsやLearn、そしてユーザーの固有環境から取得するリソース情報、そのログやCost情報といったものである点です。それらを総合して分析した結果を返すため、他の生成AIとは違い完全にパーソナライズされた回答をしてくれるという点が特徴となります。生成AIでいう所謂RAG(Retrieval-Augmented Generation)の仕組みそのものですが、外部サイトによる情報に汚染されていない極めて純度の高い情報源のみを使用するため、Copilot in Azure が生成する結果はハルシネーション(AIによる誤った情報)の少ない情報を提供できるようチューニングがなされており、実運用においても正確な情報を提供してくれます。逆に言うと、Copilot in Azure は Azure 以外の質問には何も答えてはくれません。頑固で生真面目な、雑談を一切しない Azure エンジニアがアシスタントとしてついているといったイメージがわかりやすいと思います。

ただし、どのような生成AIでもそうですが、必ず最終確認を実施する必要はあります。確認のために生成結果自身が参照リンクを提示することもありますし、Copilot for Azure 自身に、根拠となったドキュメントソースを開示するよう指示を与えることも可能ですので、参照されたドキュメントについては詳細を確認することをおすすめいたします。また、業務に影響を与えるようなリソースで実施する場合などは、テスト環境で一度試していただくほうが良いとされています(以下抜粋)。

  • Q

    Microsoft Copilot in Azure の結果は信頼できますか?

適切でない回答については、「適切ではないプロンプト」に起因する場合がほとんどではありますが、プラグイン情報にも無い未知の障害や最新技術、Azure 以外の技術情報が混入されているなどの要因があり、これらは生成AIの特質上の限界であると考えられます。そのことからも、「Azure に関連するドキュメント情報、リソース内の情報」をデータソースとするアーキテクチャに基づいた生成AIであることを理解した上でご利用いただければと思います。

ちなみに、技術的には Azure Open AI を利用したサービスとなっております。それと同様、AIモデルのトレーニングにお客様のデータやチャットの会話データなどは決して利用されませんので、組織のシステムの情報が漏洩されることはなく、安心してお使いいただけます。

Copilot in Azure の有効化方法

Copilot in Azure は既にAzure Portal 上で実装されておりますが、有効化についてはそのテナントの管理者が手動で有効化する必要があります。

Azure Portal 上でユーザーの利用許可を実施

Entra ID 管理者がテナント配下のユーザーに対して、Copilot in Azure の利用を許可する必要があります。
グローバル管理者アカウントで Azure Portal 上の検索で「Copilot」と入力すると「Copilot in Azure 管理センター」が出てきます。

Copilot in Azure 管理センターでは、「アクセスの管理」をクリックします。

「Available to all users」トグルをONにし、全ユーザーの利用許可を実施します。

ここがつまずきポイントです!現在の設定で Copilot in Azure は言語設定が「English」でないと利用できません。
プロンプトを入力するときだけ言語と地域設定を「English」に変更しておいてください。
通常時は日本語に戻していただいて問題ありません。

ちなみに、言語設定は「English」でも日本語でプロンプトを入力してもらっても大丈夫です。
ただ、「日本語で出力してください」と指定しないと、英語で出力される可能性が高いです。
一回日本語で出力指示を出せば、その後は日本語で出力してくれる確率は上がります(たまにそれでも英語で返してくる時はありますが・・・)

Copilot in Azure に質問できること

Copilot in Azure に対しては、さまざまな質問が可能です。例えば、特定のリソースの作成方法や、トラブルシューティングの手順、ログ分析からの障害診断、さらにはコスト管理に関するアドバイスなど、幅広いトピックに対応しています。具体的な質問例としては、「Azure で仮想マシンを作成するにはどうすればよいか?」や「ネットワークのトラブルシューティングを行うには?」などがあります。

Copilot in Azure の制限事項

Copilot in Azure は、ユーザー毎に一定時間以内に利用できる回数が決まっています。これは、生成AIの特質上質問回数が増えるにつれて、トークンと呼ばれるテキスト処理単位が指数関数的に増大するため、Microsoft が用意するAIインフラ上のGPUに多大な負荷を与えるので一定の回数で制限を設けている為です。また、同様にGPU負荷を制限するための他の措置も設けられています。

10 を超えるリソースに対して実行されるアクションは、Microsoft Copilot in Azure の外部で実行する必要があります。
特定のチャット中に 15 件の要求のみを行うことができます。また、24 時間中のチャットは 10 件のみです。
一覧を表示する一部の応答は、上位 5 項目に制限されます。
一部のタスクとクエリでは、リソースの名前を使用できません。また、Azure リソース ID を指定する必要があります。

また、Copilot のデータとアクセス権は、常にユーザーのロール・セキュリティレベルに準じています。例えば、ユーザーが特定のデータにアクセスできない場合、Copilot もそのデータにアクセスすることはできません。また、ARM操作やAPI呼び出しを行う権限がない場合、Copilotはそれらを実行できず、関連するエラーや情報を返してくる形になります。

Copilot in Azure を使いこなす

一度でも Copilot in Azure をお使いになられた方なら体験されていると思いますが、必ずしも望んだ生成結果を得られるとは限らない、むしろ全然使えないんじゃないか、と感じた方も多いのではないでしょうか。
Copilot in Azure でプロンプトを入力するには、いくつかのポイントを押さえておく必要があります。

1. 会話の議題が変わる時は新規チャットから

生成AIの特質上、それ以前の会話の流れが生成結果に影響を与えてしまいます。前述の通り、Copilot in Azure は1つの議題に対しての会話は15回まで(※2025年1月現在)となっております。前の会話が続いたままですと残りの回数にも制限がありますし、また、前の会話の文脈(=コンテキスト)をそのまま継続して会話をしてしまうため、想定外の回答を生成してしまう可能性が高くなります。議題が変わるタイミングで新規チャットを立ち上げたほうがいいでしょう。
Copilot in Azure の会話ウインドウ右上の3点リーダーより、「New chat」を選択することで新規チャットを立ち上げることができます。

2. 質問事項に関するリソースが存在する(もしくは作成する)ページに遷移する

Copilot in Azure は、表示しているページの情報もプロンプト情報として参照するので、聞きたいリソースが存在する Azure Portal 上のページを開いておきながら、そこで表示されている内容を含むプロンプトを入力してあげると、より回答精度が高くなる性質があります。また、リソースが作成前の場合は、作成画面を開いておくことも有効です。

3. プロンプトエンジニアリングに基づき、明確かつ具体的な指示を行う

これは他の生成AIでも同様ですが、プロンプトで入力する文章構成は非常に生成結果に影響を与えます。曖昧すぎる質問には正確な回答は基本的に返ってきません(ただし、Copilot in Azure ではどのサービスやリソースのことなのかを聞き返してくる親切な部分もあります)。そもそも、言語というものは「解釈の幅」というものがあり、生成AIにおいて精度の高い回答を得るには、より明確かつ具体的な指示をし、解釈の幅を狭める必要があります。解釈の幅が広いままだと、生成AIはあらぬ方向の回答を生成していってしまうのです。

例えば
「このプロジェクトの成功に必要な要素を説明してください。」
この文章は非常に広範で、解釈の幅が大きいです。なぜなら、「成功に必要な要素」が具体的に何を指すのかが明確でなく、回答者によって異なる解釈が可能だからです。例えば、ある人は技術的な要素を挙げるかもしれませんし、別の人はチームワークやコミュニケーションの重要性を強調するかもしれません。
このような解釈の幅が広いプロンプトは、回答の一貫性を保つのが難しくなるため、解釈の幅を狭める必要があります。具体的な例や詳細な指示を加えることで、より明確な回答を得ることができます。
そこで
「このプロジェクトの成功に必要な技術的要素を3つ挙げて、それぞれについて具体的に説明してください。」
「このプロジェクトの成功に必要なチームワークの要素を説明し、具体的なコミュニケーション方法を3つ提案してください。」
「このプロジェクトの成功に必要なリソース(人材、予算、時間)について、それぞれの重要性を説明してください。」

これらの例文は、具体的な要素や詳細な指示を加えることで、解釈の幅を狭めています。逆を言うと、元の文章はこれだけの解釈の幅があったのだ、とも言えます。いや、そのすべての解釈が回答には必要なんだ、ということもあるかもしれません。その場合は、解釈の幅を狭めた質問を複数回訊ねていただくことが、正解への近道です。「急がば回れ」ということわざの通りですね。

これを Copilot in Azure での例にすると

解釈の幅が大きい例文:「Azure Virtual Machine のログを収集する方法を教えてください。」

この通り、まず英語で回答されてしまいました。内容的にもAzure Stack Edge に関するものもあり、ずれた回答内容となっています。これは、「何のログなのか」「どのように収集したいのか」という具体性が欠如した文章となっていることに起因します。また、手順についても様々な方法を提示してきています。

生成AIは様々な要素を掛け合わせて一番確率が高い回答を順々に生成していく仕組みとなっています。具体性が無い質問は、質問者の意図は一切忖度せずにAIの中でインデックス化された情報の中で確率が高いものだけを提示してしまうので、「明確かつ具体的な指示」という方向性を与えることで、「その方向で正答確率が高いもの」を生成するベクトルを与えることができるのです。わかりやすい言い方にすると、AIに「この方向で答えてね」という指示を与えることで、より正しい答えを得ることができるのです。
これが人間であるならば、「VM でログだと Azure Monitor だよな普通」とか「質問者はコマンド入力が苦手だったから Azure Portal での操作を前提に回答するか」とかいう忖度も踏まえて回答することと思われます。この忖度は Copilot in Azure には通用しませんので、忖度の余地がない文章をプロンプトとして入力する必要があるということです。

それではその「忖度して欲しかった情報」を盛り込んで解釈の幅を狭めたらどうなるでしょうか。

解釈の幅が狭い例文:「Azure Virtual Machine で Azure Monitor を使用して診断ログを収集するための設定手順を、ポータルでの操作方法を含めて教えてください。回答は日本語でお願いします。」

このように、Copilot in Azure は初回の質問時には答えてくれない場合がありますが、他の Copilot でも共通する動きですので、冷静に同じ質問をもう一度繰り返します。
これは重要な要素で、繰り返し同じ質問をしても同一の回答にならない場合もありますし、回答すらしてくれないこともありますので、安定した回答が得られるまで繰り返し試してみるというのもひとつの検証手段かと思います。

同じ質問をすると、今回は答えてくれました。手順的にも正確な回答結果となりました。このように、まずは「正しいプロンプトエンジニアリング」というものを理解し、プロンプトに生かしていくという「慣れ」が必要になってきます。これは、前情報が無い状態で人からある事象の報告を受ける時に、報告内容に5W1Hが無いと何も内容が入ってこないのと同じと考えてください。自分がどんな質問を受けたら正確に返すことができるのかな、と生成AIの気持ちになってみてプロンプト文章を作ると良いかもしれません。
冒頭述べた「適切ではないプロンプト」というものがどのようなことかご理解いただけましたでしょうか。

しかし、「適切なプロンプト」を作るためには前提となる知識(今回でいうと「診断ログ」「Azure Monitor」など)がないと辿り着けないじゃないか、と思われる方もいらっしゃると思います。その適切なプロンプトに導くために生成AIはチャット形式になっています。ちょっとしたコツで正解にたどり着く質問があります。

例:Virtual Machine でログを収集する手段として一般的な方法はどのようなものがありますか?日本語で回答してください。

こちらは最初の「解釈の幅が大きい例文」で提示された3つの提案以外に、もう一つ「Azure Monitor Agent」という今回でいうと「解釈の幅が狭い例文」で導き出された正解の回答が候補として出てきました。各選択肢の解説内容を確認していただいた上で、最も要望に近いものを選んでいただく形にはなりますが、書いてある内容を読めば自ずと正しい選択ができるかと思います。後は連続したチャットでその設定手順を質問すれば、望み通りの結果を得ることができます。このように、「一般的な方法は何ですか?」と聞いてみることは前提知識がない技術について質問をする際に有効なプロンプトとなります。

それ以外にも、Microsoft の公式サイトには効果的なプロンプトの作成方法についての詳細なガイドもありますので、ぜひ参考にしてみてください。

4. Azure 以外の技術情報と混同しない

Azure で提供されているサービスを利用した他の技術に関する質問については、Microsoft のドキュメントが無ければ回答してくれないでしょう。あくまでも Azure に関する技術情報の回答となりますので、そうした質問は別の生成AIを使ったり、そのサービスのドキュメントやサポートを使用したりするようにしてください。
例:Azure Kubernetes Service (AKS)について、Kubernetes のバージョンアップ方法を教えてください。
 :Azure Storage のデータをローカル NAS にバックアップする方法を教えてください。
 :Azure Communication Service で利用できるSMSサービスが日本ではありませんがアメリカではあるようです。アメリカのSMSサービスは日本で通知を受けられますか?
意外と、他クラウドプラットフォームとの機能比較などは正確に答えてくれたりします。それは、Microsoft のドキュメントソースに比較情報が記載されているからに他ありません。

利用シナリオの紹介

具体的な利用シナリオをいくつか挙げて、どのように活用できるかを説明します。

  1. リソースの検索と管理
    Copilot を使うことで、特定のリソースを迅速に検索し、必要な情報を取得することができます。例えば、仮想マシンの一覧を取得したり、特定の設定を確認したりすることが容易になります。
  2. スクリプトの生成
    Azure CLIスクリプトを自動生成する機能も持っています。これにより、手動でスクリプトを書く手間が省け、効率的に作業を進めることができます。
  3. トラブルシューティング
    Copilot が自動的に問題を分析し、関連する問題をチェックしてくれます。これにより、迅速に問題を特定し、解決策を見つけることが可能です。
  4. 操作方法ナビゲーション
    操作画面を見ながら、どのように使うのかを解説します。例えば、アプリケーションゲートウェイの設定を確認する際には、以下のような画面が表示されます。
  5. コストとパフォーマンスの最適化
    コスト管理は、クラウド環境において非常に重要な要素です。特に、リソースの使用状況を把握し、無駄を省くことが求められます。Copilot は、ユーザーがリソースの使用状況をリアルタイムで把握できるようにし、最適化のための具体的なアクションを提案します。例えば、Copilot は、特定のサービスの使用量が多い場合に、そのサービスの予約購入を提案することがあります。これにより、コストを大幅に削減することが可能です。

まとめ

Copilot in Azure は、Azure 環境での作業を大幅に効率化する強力なツールです。アーキテクチャや利用シナリオを理解することで、より効果的に活用できるでしょう。これからも、Azure の新機能や活用方法についてお伝えしていきますので、ぜひお楽しみに!

マルチクラウドの記事