6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PERSOL CROSS TECHNOLOGYAdvent Calendar 2024

Day 25

シェルにも AI アシスタント!! AI Shell をインストールして Azure OpenAI サービス や Copilot in Azure につないでそれぞれ使ってみた

Posted at

シェルにも AI アシスタント!!

2024 年 11 月 19 日に AI Shell のパブリックプレビューが発表されました。

シェルにも AI アシスタントが登場しました。
PowerShell 使い (自称) である筆者には放っておけないニュースです!

ブログを拝見した限りだと、とてもカンタンに導入できそうです。

この投稿では、Windows 環境で実際に使ってみたことを書いていきます。

ちなみに、先日の Microsoft Ignite 2024 でもセッションがありました。ご興味があれば、ご覧ください。

YouTube にもアップされていますね。

AI Shell とは

AI Shell は、対話型のシェルで、言語モデルを含むチャット インターフェースを提供します。

ざっくり説明すると。

  • 対話型シェル
    ユーザーはエージェントと会話形式で対話できます
  • エージェント
    各 AI アシスタントはエージェントと呼ばれ、さまざまな AI モデルや支援プロバイダーに接続します
    パブリックプレビュー発表時点でのリリースでは、次のふたつのエージェントが含まれています
    • OpenAI エージェント
      OpenAI サービスを利用して、広範なクエリ、自然言語の解釈、コード生成などを行う汎用的な支援を提供します
      パブリックな OpenAI サービスまたは Azure OpenAI サービス リソースに接続できます
    • Copilot in Azure エージェント
      Azure CLI や Azure PowerShell コマンドを提供し、Azure に特化したタスクの自動化を支援します
      利用するには、事前にアカウントに Copilot in Azure にアクセスするための IAM ロールを割り当て、Azure にサインインします
  • 機能
    コードの直接挿入、複数ステップのコマンド予測、エラー復旧など
  • その他
    コマンドやモジュールも用意されています

また、AI Shell の起動方法には 2 種類あります。

  • AI Shell (スタンドアローン)
    任意のシェルで AI Shell コマンドの aish コマンドを実行します。エージェントとのやり取りに没頭したい場合に、こちらを使うのでしょうかね。

aish

  • AI Shell in PowerShell
    AI Shell モジュールの Start-AIShell コマンドレットを実行します。すると、AI Shell ペインが現れます。こちらのほうが作業を中断せずにエージェントとやり取りできるので、おススメですね。

Start-AIShell

AI Shell のインストール

次のドキュメントに従い、「システム要件」を踏まえて、AI Shell をインストールしましょう。

Windows や Mac 環境なら、次のスクリプトを実行するだけでインストール完了です!

Invoke-Expression "& { $(Invoke-RestMethod 'https://aka.ms/install-aishell.ps1') }"

OpenAI サービスにつないで使ってみた

OpenAI エージェントは、OpenAI サービスを利用して、広範なクエリ、自然言語の解釈、コード生成などを行う汎用的な支援を提供します。

準備

今回は、Azure にデプロイした Azure OpenAI サービスに接続します。

Azure OpenAI サービスへ接続する場合には、OpenAI サービス リソースのエンドポイントとキー、デプロイしたモデルのデプロイ名と採用したモデルの名前が必要です。

Azure OpenAI サービス リソースを作成してモデルをデプロイ

OpenAI サービス リソースを作成して、モデルをデプロイします。

なお、OpenAI エージェントがサポートしているモデルは、次のもののようです。
※執筆時点では
太字 は、Azure でもデプロイできるモデル

  • gpt-4o
  • gpt-4-turbo
  • gpt-4-32k
  • gpt-4
  • gpt-35-turbo
  • gpt-3.5-turbo

セットアップ

次に、エージェントが接続するために必要な次の情報をメモしておきます。

OpenAI サービス リソースのエンドポイントとキー

Azure ポータルで、OpenAI サービス リソースの [リソース管理] > [キーとエンドポイント] を開き、「キー (いずれか)」「エンドポイント」 をメモしておきます。

image.png

デプロイしたモデルのデプロイ名と採用したモデルの名前

Azure AI Foundry ポータルで、[共有リソース] > [デプロイ] を開き、[モデルデプロイ] タブの一覧からモデルを開きます。[詳細] タブの [配置情報] から 「名前 (デプロイ名)」「モデル名 (採用したモデルの名前)」 をメモしておきます。

image.png

エージェントの設定ファイルを編集

AI Shell ペインで /agent config コマンドを実行して「設定ファイル (openai.agent.json)」を開き、前述でメモした情報を書き込みます。

openai.agent.json
{
  "GPTs": [
    {
      "Name": "ps-az-demo",
      "Description": "A GPT instance with expertise in PowerShell scripting and command line utilities. Use gpt-4o running in Azure.",
      "Endpoint": "https://demo202412.openai.azure.com/",
      "Deployment": "model02",
      "ModelName": "gpt-4o",
      "Key": "<キー>",
      "SystemPrompt": "1. You are a helpful and friendly assistant with expertise in PowerShell scripting and command line.\n2. Assume user is using the operating system \u0060win\u0060 unless otherwise specified.\n3. Use the \u0060code block\u0060 syntax in markdown to encapsulate any part in responses that is code, YAML, JSON or XML, but not table.\n4. When encapsulating command line code, use \u0027\u0060\u0060\u0060powershell\u0027 if it\u0027s PowerShell command; use \u0027\u0060\u0060\u0060sh\u0027 if it\u0027s non-PowerShell CLI command.\n5. When generating CLI commands, never ever break a command into multiple lines. Instead, always list all parameters and arguments of the command on the same line.\n6. Please keep the response concise but to the point. Do not overexplain. and use Japanese language."
    }
  ],
  "Active": "ps-az-demo"
}
項目1 項目2 設定内容
GPTs - GPT インスタンスの構成 ※複数可
Name 名前 ※適当に
Description 説明 ※適当に
Endpoint Azure OpenAI サービス リソースのエンドポイント
Deployment デプロイしたモデルのデプロイ名
ModelName デプロイしたモデルで採用したモデルの名前
Key Azure OpenAI サービス リソースの キー
SystemPrompt システムプロンプト

Note:
AI との対話を円滑に進めるための指示やガイドラインを含む設定。これにより、AI は適切なトーンやスタイルで応答し、特定の安全基準や目的に沿った情報を提供する
Tips:
and use Japanese language. というように追記すると、エージェントと日本語でお話しできる
Active - エージェントが既定で使用する GPT インスタンスの構成の名前を指定

その後、設定ファイルを保存して、AI Shell ペインで /refresh コマンドを実行して、セッションをリフレッシュします。

エージェントが Azure OpenAI サービス リソースへの接続に失敗した時、出力されたエラーメッセージから原因と対処法を探りますが、その時にこちらの投稿がとても参考になりました。感謝!

使ってみた

では、エージェントに次の質問をしてみました。

ドキュメントフォルダー配下のファイルをファイルサイズの大きい順で一覧表示する方法を教えてください。

リクエストを実現するためのコマンドを提案してくれました。提示されたコマンドを実行するには、/code copy コマンドを実行してクリップボードにコピーして、シェルにペーストして実行します。:thumbsup:

OpenAI_Agent_01(1)

(↓つづき) 思ったのとちょっと違う場合は、さらにリクエストしましょう。

サブフォルダー配下のファイルも表示したいです。

OpenAI_Agent_01 (2)

次に、コマンドを実行した際に出力されたエラーについて、エージェントに解決策を求めてみます。
シェルで Resolve-Error コマンドレットを実行すると、AI Shell ペインにエラー内容が送信され、解決策を丁寧に教えてくれます。:thumbsup:

OpenAI_Agent_02

Copilot in Azure につないで使ってみた

Copilot in Azure エージェントは、Azure CLI や Azure PowerShell コマンドを提供し、Azure に特化したタスクの自動化を支援します。

準備

Copilot in Azure エージェントを利用するには、事前にアカウントに Copilot in Azure へアクセスするための IAM ロールを割り当て、そして Azure にサインインします。

まずは、Azure CLI をインストールしておきましょう。

IAM ロールを割り当てる

Azure ポータルで「Copilot in Azure 管理センター」を開きます。
そして、[設定] > [アクセス管理] で、このエージェントを使うアカウントに 「Copilot for Azure User」 ロールを割り当てます。

image.png

Azure にサインイン

az login コマンドで Azure にサインインしている状態で、Start-AIShell コマンドレットを実行します。そして、AI Shell シェルで「Copilot in Azure エージェント (Azure)」 を選択します。はい、接続できました。:thumbsup:

Copilot_Agent_01

Microsoft Azure Copilot の限定パブリックプレビュー中は、出力されたメッセージのとおりの使用制限があります。

  • 1 チャットでできるリクエストは 15 回まで
  • 8 時間の間にできるチャットは 10 回まで

Welcome to Microsoft Azure Copilot. Here are a few things you should know before getting started.
Any action taken on more than 10 resources must be performed outside of Copilot. While in limited public preview you can only make 15 requests during any given chat and you only have 10 chats in a 8 hour period. This is chat #1.

使ってみた

では、エージェントに次の質問をしてみました。

Azure CLI で、パブリック IP アドレスリソースの一覧を出力する方法。一覧には、リソースグループ名とリソース名を出力したいです。
How to output a list of public IP address resources in Azure CLI. I would like to output the resource group name and resource name in the list.

提示されたコマンドを /code copy コマンドでクリップボードにコピーして、シェルで実行してみました。期待どおりの結果を得ることができました!:thumbsup:

CopilotinAzure_Agent_01.gif

次に、同じ操作を Azure PowerShell ではどのように書くか質問してみました。

この操作を Azure PowerShell で書くには?
What about Azure PowerShell?

IP アドレスは求めていなかったですが はい、正しいですね!:thumbsup:

CopilotinAzure_Agent_02.gif

※事前に Az モジュールをインポートして、Connect-AzAccount コマンドレットで Azure に接続してから実行しました。

さいごに

シェルの AI アシスタントである「AI Shell」の登場で、作業がとてもはかどることを実感できました。

今までは、悩んだときや困ったときに ChatGPT や Microsoft Copilot との会話で解決して作業を進めていましたが、この時のシェルとブラウザーを行ったり来たり...この手間はちょっとしたことですが、煩わしいと思います。シェルに AI アシスタントがいることで、この煩わしい手間が無くなり、作業を中断せずにより集中して進めることができそうです。

AI Shell は、アツいツールです! :sunglasses:

執筆している現在はまだパブリックプレビュー中ですが、今後どんどんより改良されていくことでしょう。とても楽しみです!:yum:

(余談ですが)
今回の AI Shell をきっかけに Azure OpenAI サービスのモデルに触れられたことで、生成モデルについてもちょっとわかった気がして、興味が湧きました。
当時はちんぷんかんぷだった「Generative AI for Beginners」で改めて勉強しようかなと思いました。:sweat_smile:

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?