PowerShell でAI Shellを使う

LLM

OpenAIの「Codex CLI」が登場しました。早速使ってみようとしましたが、WindowsではWSL経由でしか使えないのでPowershellやCMDがメインであればすぐに役立ちそうにはなりません。

そこで、AI Shellを使ってみることにしました。

AI Shellとは

  1. PowerShellやWindows Terminalと統合し、自然言語でのコマンド提案やエラー解決を提供します。
  2. OpenAIやAzure CopilotなどのAIエージェントと連携し、コード生成や操作支援が可能です。 Microsoft Learn
  3. WindowsやmacOSで利用でき、CLI作業の効率化を図る開発者向けのツールです。

結論として・・

ChatgptやGitHub Copilotなど、契約がなくても高度なLLMモデルAPIを使用したい人には良いかもしれません。それでもリビルドは必要です。

標準では直接コマンドを実行することはできませんので、改造が必要です。

エージェントを拡張することで、使用用途が広がるかもしれません。

シェル統合モードを使用するには、Azure Open AIの設定が必要です。普段利用していない人にとっては、このためだけに開設するのは正直面倒かと・・。

Github

GitHub - PowerShell/AIShell: An interactive shell to work with AI-powered assistance providers
An interactive shell to work with AI-powered assistance providers - PowerShell/AIShell

注意点

AI Shellには2つの使い方があります。PowerShellとスタンドアロンがあります。最初に見たとき、PowerShellと統合されているなら便利だと思いましたが、Azure OpenAIが必要です。Open AI APIだけで利用する場合はスタンドアロンになります。

インストール手順

1. PowerShell 7.4 以降をインストール

$PSVersionTable.PSVersion

2. Microsoft AI Shell をインストール

PowerShell 7 で以下のコマンドを実行:

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

自動で aish.exe がインストールされ、PATHに追加される

終わったら、以下で起動できるようになる:

aish

OpenAI GPT エージェント設定ファイルを作成

初回起動時、エージェントが未設定だと警告が出ます。

以下コマンドで設定ウィザードを呼び出します:

/agent config openai-gpt

以下のjsonファイルが開かれますが開かないときは手動で開きます。

C:\Users\<あなたのユーザー名>\.aish\agents\openai-gpt\openai.agent.json

記載例

システムプロンプト(SystemPrompt)には 日本語説明するように追記しています。

{
  "GPTs": [
    {
      "Name": "ps-gpt4o",
      "Description": "GPT-4o with Japanese explanation",
      "ModelName": "gpt-4o",
      "Key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "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 `Windows 11` unless otherwise specified.\n3. Use the `code block` 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 '```powershell' if it's PowerShell command; use '```sh' if it's 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.\n7. Respond to the user in Japanese when giving explanations or descriptions. However, maintain prompt examples and generated code/comments in English."
    }
  ],
  "Active": "ps-gpt4o"
}

SystemPrompt(日本語訳版 – 箇条書き)

  1. あなたは PowerShell スクリプトやコマンドラインに精通した、親切でフレンドリーなアシスタントです。
  2. ユーザーが特に指定しない限り、使用しているOSは Windows 11 であると仮定してください。
  3. 回答にコード、YAML、JSON、XML が含まれる場合、それらは Markdownのコードブロック記法 を使って囲んでください(※表は除く)。
  4. コマンドラインコードを囲む際の記法:
    • PowerShell コマンド:powershell
    • それ以外のCLIコマンド:sh
  5. CLIコマンドを生成する際は、複数行に分けず1行にまとめてください。すべてのパラメータと引数を1行に記載すること。
  6. 回答は簡潔かつ要点を押さえてください。くどい説明は避けてください。
  7. ユーザーへの説明や解説は 日本語で 行ってください。ただし、プロンプト例や生成されるコード/コメントは英語のまま にしてください。

AI Shell を再起動

/exit
aish

aishモードにはいると@openai-gpt>といったプロンプトになっています。

opneai-gptを選択して利用開始します。

日本語で質問して、日本語で回答がえられます。(バグでたまに日本語が欠けることも)

実行コマンドだけを取得したいのでショートカットとして “Ctrl+d, Ctrl+c“を順番に押すとクリップボードへコードがコピーされます。直接実行できないところがスタンドアロンモードの残念なところですね。

キーバインディング指示機能性
Ctrl+d, Ctrl+c/code copy生成されたコードスニペットをすべてクリップボードにコピーします
Ctrl+<n>/code copy <n>n番目に生成されたコードスニペットをクリップボードにコピーします
Ctrl+d, Ctrl+d/code post生成されたすべてのコードスニペットを接続されたアプリケーションに投稿します。
Ctrl+d, <n>/code post <n>n番目に生成されたコードスニペットを接続されたアプリケーションに投稿する

エージェントの設定

openai.agent.jsonに複数のエージェント(モデルや振る舞い)を記述するとができます。

下記は”o4-mini”を追加した例

jsonの指定通り、初期指定は”ps-gpt4o”になっています。

GPTエージェントの切り替え

下記の様にコマンドで切り替えられます。

/gpt list
/gpt use [Name]  #この場合は "ps-o4-mini"

modelの違いだけでなくAIの返答方法の指示(システムプロンプト)を分けて利用する様な事もできます。

新しいモデル追加時の補足

この場合はAI Shellのリビルドが必要となります。

// shell/agents/AIShell.Interpreter.Agent/ModelInfo.cs の s_modelMap 定義に追加
static ModelInfo()
{
    s_modelMap = new(StringComparer.OrdinalIgnoreCase)
    {
        ["gpt-4o"]        = new(tokenLimit: 128_000, encoding: Gpt4oEncoding),
        // 追加
        ["o4-mini"]       = new(tokenLimit: 200_000, encoding: Gpt4oEncoding),
        // 他の既存モデル
    };
    // ...
}

ビルド手順はシンプルでGithub記載の通り

GitHub - PowerShell/AIShell: An interactive shell to work with AI-powered assistance providers
An interactive shell to work with AI-powered assistance providers - PowerShell/AIShell

まとめ

GitHub CopilotやChatGPTなどの環境を利用できる方には、カスタマイズしたエージェントを直接実行できるようにする必要性は低いかもしれませんが、OpenAIのCodex CLIを検証してみて、Windows11環境ではどちらがより便利かを確認してみると良いかな?

コメント

タイトルとURLをコピーしました