Skip to content

Commit 2c5a90a

Browse files
committed
UTF-8エンコーディングを設定し、インタープリターエージェントに新しいモデル「4o-mini」を追加。READMEを新規作成し、エージェントの使用方法と設定手順を詳細に記述。
1 parent b10735a commit 2c5a90a

File tree

4 files changed

+268
-1
lines changed

4 files changed

+268
-1
lines changed

README_J.md

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
# AI Shell
2+
3+
**AI Shell** リポジトリへようこそ!AI Shellは、人工知能のパワーをコマンドラインに直接もたらすCLIツールです!さまざまなAIアシスタントからコマンドのサポートを受けられるよう設計されており、コマンドラインでの生産性を向上させる多用途ツールです。私たちはこれらの様々なAIアシスタントプロバイダーを_エージェント_と呼んでいます。エージェントを使用して、さまざまな生成AIモデルや他のAI/ML/アシスタントプロバイダーと会話形式でやり取りできます。このリポジトリには、AI Shellエンジン、エージェント、独自のエージェントを作成する方法の詳細が含まれています。
4+
5+
このプロジェクトは以前**Project Mercury**として知られていたかもしれません。これは、AI Shellブランドを作成する前に使用されていたコードネームです。現在、新しいブランドへの移行プロセス中です。コードネームはまだ一部の場所で使用されているかもしれませんが、製品名は現在AI Shellです。
6+
7+
このプロジェクトは現在非常に初期の**パブリックプレビュー**段階にあります。このツールのユーザーエクスペリエンスを実験・洗練していく中で、コードに多くの重要な変更が加えられることが予想されます。開発を続ける中で、皆様のフィードバックと忍耐に感謝します。
8+
9+
## AI Shellを初めて使用される方へ
10+
11+
AI Shellの詳細については、AI Shellドキュメントの[概要][19]ページをご確認ください。
12+
13+
### 使用方法
14+
15+
AI Shellを使用する方法には、スタンドアロンとPowerShell 7との統合された並行体験の2つのモードがあります。詳細については、以下をご参照ください:
16+
- [PowerShellでのAI Shellの使用開始][15]
17+
- [AI Shell(スタンドアロン)の使用開始][16]
18+
19+
### PowerShellでのAI Shell
20+
21+
![PowerShellでのAI Shellデモを示すGIF][21]
22+
23+
### スタンドアロン体験
24+
25+
![AI Shellスタンドアロンデモを示すGIF][20]
26+
27+
## AI Shellの入手
28+
29+
AI ShellはWindows、MacOSおよびLinuxでサポートされていますが、最高の体験を得るにはWindows、[PowerShell 7][11]および[Windows Terminal][14]の使用をお勧めします。詳細については、[AI Shellのインストール][13]をご参照ください。
30+
31+
## AI Shellのローカルビルド
32+
33+
AI Shellをビルドするための前提条件:
34+
35+
- ビルドスクリプトには[PowerShell v7.4][18]以降のバージョンが必要です
36+
- プロジェクトのビルドには[.NET SDK 8][09]が必要です
37+
38+
以下がインストールと使用の手順です。
39+
40+
1. このリポジトリをクローンします:`git clone https://github.com/PowerShell/AIShell`
41+
2. `import-module ./build.psm1`を実行して`build.psm1`モジュールをインポートします
42+
3. `Start-Build`コマンドを実行します(`-AgentsToInclude`パラメータでビルドするエージェントを指定できます)
43+
4. ビルドが完了すると、リポジトリのルートディレクトリ内の`out\debug\app`フォルダに生成された実行ファイル`aish`が配置されます。簡単にアクセスできるよう、この場所を`PATH`環境変数に追加できます。ビルド成功後、完全パスがクリップボードにコピーされます。
44+
45+
## AIエージェント
46+
47+
AI Shellは、複数のAIエージェントを作成および登録するためのフレームワークを提供します。エージェントは、異なるAIモデルやアシスタンスプロバイダーとやり取りするために使用するライブラリです。AI Shellは`openai-gpt``azure`の2つのエージェントを同梱してリリースされています。しかし、プロジェクトをローカルでビルドする場合、さらに追加のエージェントがサポートされています:
48+
49+
エージェントのREADMEファイル:
50+
51+
- [`openai-gpt`][08](AI Shellに同梱)
52+
- [`ollama`][06]
53+
- [`interpreter`][07]
54+
- [`azure`][17](AI Shellに同梱)
55+
56+
`aish`を実行すると、エージェントを選択するよう求められます。各エージェントの詳細については、各エージェントフォルダ内のREADMEをご参照ください。
57+
58+
独自のエージェントを作成する方法の詳細については、[エージェントの作成][03]をご参照ください。
59+
60+
`openai-gpt`エージェントを使用するには、有効なAzure OpenAIサービスまたはパブリックOpenAIキーが必要です。Azure OpenAIサービスの取得方法の詳細については、[Azure OpenAIサービスのデプロイ](./docs/development/AzureOAIDeployment/DeployingAzureOAI.md)をご参照ください。
61+
62+
### チャットコマンド
63+
64+
デフォルトでは、`aish`はAIモデルからの応答とやり取りするための基本的なチャット`/`コマンドセットを提供します。コマンドのリストを取得するには、チャットセッションで`/help`コマンドを使用します。
65+
66+
```
67+
Name Description Source
68+
──────────────────────────────────────────────────────────────────────
69+
/agent エージェント管理のためのコマンド。 Core
70+
/cls 画面をクリアします。 Core
71+
/code 生成されたコードとやり取りするためのコマンド。 Core
72+
/dislike 最後の応答を「よくない」として評価しフィードバックを送信。Core
73+
/exit 対話型セッションを終了します。 Core
74+
/help 利用可能なすべてのコマンドを表示します。 Core
75+
/like 最後の応答を「良い」として評価しフィードバックを送信。Core
76+
/refresh チャットセッションを更新します。 Core
77+
/render 診断目的でマークダウンファイルをレンダリングします。 Core
78+
/retry 最後のクエリに対して新しい応答を再生成します。 Core
79+
```
80+
81+
また、エージェントは独自のコマンドを実装できます。例えば、`openai-gpt`エージェントはエージェント用に定義されたGPTを管理するための`/gpt`コマンドを登録しています。`/like``/dislike`などの一部のコマンドは、エージェントにフィードバックを送信するコマンドです。フィードバックの消費はエージェント次第です。
82+
83+
### コマンドのキーバインディング
84+
85+
AI Shellは`/code`コマンドのキーバインディングをサポートしています。現在はハードコードされていますが、今後のリリースではカスタムキーバインディングがサポートされる予定です。
86+
87+
| キーバインディング | コマンド | 機能 |
88+
| ------------------------- | ---------------- | --------------------------------------------------------------------------- |
89+
| <kbd>Ctrl+d, Ctrl+c</kbd> | `/code copy` | 生成されたコードスニペットを_すべて_クリップボードにコピーします |
90+
| <kbd>Ctrl+\<n\></kbd> | `/code copy <n>` | _n番目_の生成されたコードスニペットをクリップボードにコピーします |
91+
| <kbd>Ctrl+d, Ctrl+d</kbd> | `/code post` | 生成されたコードスニペットを_すべて_接続されたアプリケーションに送信します |
92+
| <kbd>Ctrl+d, \<n\></kbd> | `/code post <n>` | _n番目_の生成されたコードスニペットを接続されたアプリケーションに送信します |
93+
94+
### 設定
95+
96+
現在、AI Shellは非常に基本的な設定をサポートしています。`~/.aish`下に`config.json`という名前のファイルを作成してAI Shellを設定できますが、起動時に使用するデフォルトエージェントを宣言するのみをサポートしています。これにより、`aish.exe`を実行するたびにエージェントを選択する必要がなくなります。
97+
98+
AI Shellの設定は、カスタムキーバインディング、カラーテーマなどをサポートするよう、今後のリリースで改善される予定です。
99+
100+
```json
101+
{
102+
"DefaultAgent": "openai-gpt"
103+
}
104+
```
105+
106+
## プロジェクトへの貢献
107+
108+
詳細については[CONTRIBUTING.md][02]をご参照ください。
109+
110+
## プライバシー
111+
112+
AI Shellは個人データや個人を特定できる情報(PII)をキャプチャ、収集、保存、または処理することはありません。すべてのデータのやり取りはツールが提供する機能の範囲に限定され、個人データの収集は一切行いません。
113+
114+
AI Shellと統合されている一部のエージェントは、パフォーマンスの向上、ユーザーエクスペリエンスの向上、または問題のトラブルシューティングのためにテレメトリデータを収集する場合があります。各エージェントのテレメトリ実践とデータ収集ポリシーの詳細については、個々のエージェントのREADMEまたはドキュメントを参照することをお勧めします。
115+
116+
詳細については、[Microsoftのプライバシーステートメント](https://www.microsoft.com/en-us/privacy/privacystatement?msockid=1fe60b30e66967f13fb91f29e73f661a)をご覧ください。
117+
118+
## サポート
119+
120+
サポートについては、[サポート][05]声明をご参照ください。
121+
122+
## 行動規範
123+
124+
このプロジェクトに参加する前に、[行動規範][01]をご確認ください。
125+
126+
## セキュリティポリシー
127+
128+
セキュリティ問題については、[セキュリティポリシー][12]をご参照ください。
129+
130+
## フィードバック
131+
132+
まだ開発中であり、皆様のフィードバックを大切にしています!バグ、提案、またはフィードバックについては、このリポジトリに[問題][10]を提出してください。より率直なフィードバックを提供し、リリース前の将来のバージョンや機能のテストに登録したい場合は、この[フォーム][22]にご記入ください。
133+
134+
<!-- link references -->
135+
[01]: ./docs/CODE_OF_CONDUCT.md
136+
[02]: ./docs/CONTRIBUTING.md
137+
[03]: ./docs/development/CreatingAnAgent.md
138+
[05]: ./docs/SUPPORT.md
139+
[06]: ./shell/agents/AIShell.Ollama.Agent/README.md
140+
[07]: ./shell/agents/AIShell.Interpreter.Agent/README.md
141+
[08]: https://learn.microsoft.com/powershell/utility-modules/aishell/how-to/agent-openai
142+
[09]: https://dotnet.microsoft.com/en-us/download
143+
[10]: https://github.com/PowerShell/AIShell/issues
144+
[11]: https://learn.microsoft.com/powershell/scripting/install/installing-powershell
145+
[12]: ./docs/SECURITY.md
146+
[13]: https://learn.microsoft.com/powershell/utility-modules/aishell/install-aishell
147+
[14]: https://learn.microsoft.com/windows/terminal/
148+
[15]: https://learn.microsoft.com/powershell/utility-modules/aishell/get-started/aishell-powershell
149+
[16]:https://learn.microsoft.com/powershell/utility-modules/aishell/get-started/aishell-standalone
150+
[17]: https://learn.microsoft.com/powershell/utility-modules/aishell/how-to/agent-azure
151+
[18]: https://github.com/PowerShell/PowerShell/releases/tag/v7.4.6
152+
[19]: https://learn.microsoft.com/powershell/utility-modules/aishell/overview
153+
[20]: ./docs/media/DemoGIFs/standalone-startup.gif
154+
[21]: ./docs/media/DemoGIFs/azure-agent.gif
155+
[22]: https://aka.ms/AIShell-Feedback
156+
[logo]: ./docs/media/AIShellIconSVG.svg

shell/AIShell.App/Program.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ static int Main(string[] args)
2323
// changes to the existing public APIs. We will need to evaluate whether we want to
2424
// keep depending on it when this project moves beyond a prototype.
2525

26-
Console.OutputEncoding = Encoding.Default;
26+
Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
27+
Console.OutputEncoding = Encoding.UTF8;
2728
Argument<string> query = new("query", getDefaultValue: () => null, "The query term used to get response from AI.");
2829
Option<string> channel = new("--channel", "A named pipe used to setup communication between aish and the command-line shell.");
2930
Option<FileInfo> shellWrapper = new("--shell-wrapper", "Path to the configuration file to wrap AIShell as a different application.");

shell/agents/AIShell.Interpreter.Agent/ModelInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ static ModelInfo()
2222
s_modelMap = new(StringComparer.OrdinalIgnoreCase)
2323
{
2424
["gpt-4o"] = new(tokenLimit: 128_000, encoding: Gpt4oEncoding),
25+
["4o-mini"] = new(tokenLimit: 128_000, encoding: Gpt4oEncoding),
2526
["gpt-4"] = new(tokenLimit: 8_192),
2627
["gpt-4-32k"] = new(tokenLimit: 32_768),
2728
["gpt-4-turbo"] = new(tokenLimit: 128_000),
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# インタープリターエージェント
2+
3+
![インタープリターエージェントのデモを示すGIF][01]
4+
5+
## 説明
6+
7+
このエージェントは、コード関連のタスクを完了することに特化しています。
8+
ユーザーのタスクを受け取り、計画を立て、コードを生成し、実行し、
9+
エラーがあれば自己修正しながら、タスクが完了するまで計画の次のステップに進みます。
10+
現在はPowerShellまたはPythonコードの生成と実行のみをサポートしています。
11+
12+
## 目次
13+
14+
- [使用方法][02]
15+
- [前提条件][03]
16+
- [設定][04]
17+
- [アーキテクチャ][05]
18+
- [既知の制限][06]
19+
20+
## 使用方法
21+
22+
1. 自然言語でタスクを入力すると、エージェントはタスクを完了するためのコードを生成します。
23+
英語での使用のみテストしていますが、他の言語でも機能する可能性があります。
24+
2. 生成されたコードを実行するには、「y」と入力してEnterキーを押すか、単にEnterキーを押します(プロンプトはデフォルトで「y」)。
25+
設定ファイルでは自動実行を設定でき、ユーザーの確認なしにコードを実行します。
26+
3. あとはエージェントが作業を行うのを見守るだけです。
27+
28+
## 前提条件
29+
30+
- PythonとPowerShell 7をインストールし、`PATH`環境変数に追加されていることを確認してください。
31+
- 設定ファイルでAIサービスを設定する必要があります
32+
- OpenAIの場合、**モデル名****APIキー**が必要です。ドキュメント: [OpenAIモデル][10], [OpenAI APIキー][09]
33+
- Azure OpenAIサービスの場合、**エンドポイント****デプロイメント名****モデル名****APIキー**が必要です。ドキュメント: [Azure OpenAIへのアクセス][07], [Azure OpenAIデプロイメントの作成][08]
34+
35+
## 設定
36+
37+
エージェントを設定するには、`/agent config interpreter`を実行してデフォルトのエディタで設定ファイルを開き、
38+
次の例に基づいてファイルを更新します。
39+
40+
```jsonc
41+
{
42+
// Azure OpenAIサービスを使用する場合:
43+
// - `Endpoint`をAzure OpenAIサービスのエンドポイントに設定します。
44+
// またはゲートウェイとしてAzure API Managementサービスを使用している場合は、そのエンドポイントに設定します。
45+
// - `Deployment`をAzure OpenAIサービスのデプロイメント名に設定します。
46+
// - `ModelName`をデプロイメントに使用されているモデルの名前(例: "gpt-4-0613")に設定します。
47+
// - `Key`をAzure OpenAIサービスのアクセスキーに設定します。
48+
// またはゲートウェイとしてAzure API Managementサービスを使用している場合は、そのキーに設定します。
49+
"Endpoint": "<Azure OpenAIエンドポイントを挿入>",
50+
"Deployment": "<デプロイメント名を挿入>",
51+
"ModelName": "<モデル名を挿入>",
52+
"Key": "<キーを挿入>",
53+
"AutoExecution": false, // 'true'でエージェントがコードを自動的に実行できるようにします。'false'でコードを実行する前に毎回プロンプトを表示します。
54+
"DisplayErrors": true // 'true'でコード実行時のエラーを表示します。'false'で冗長さを減らすためにエラーを非表示にします。
55+
56+
// 公開OpenAIサービスを使用する場合:
57+
// - `Endpoint`と`Deployment`キーは無視します。
58+
// - `ModelName`を使用するモデルの名前(例: "gpt-4o")に設定します。
59+
// - `Key`をOpenAIアクセストークンに設定します。
60+
// 上記を次のように置き換えてください:
61+
/*
62+
"ModelName": "<モデル名を挿入>",
63+
"Key": "<キーを挿入>",
64+
"AutoExecution": false,
65+
"DisplayErrors": true
66+
*/
67+
}
68+
```
69+
70+
## アーキテクチャ
71+
72+
このエージェントのアーキテクチャは以下の図に示されています。
73+
74+
1. エージェントは`interpreter.agent.json`ファイルを使用して初期化されます。
75+
2. モデルタイプ(関数呼び出しまたはテキストベース)は設定に基づいて決定されます。
76+
3. `TaskCompletionChat`がプログラムのメインループで、ユーザークエリが処理されます。
77+
- AIレスポンスに関数呼び出し/コードが含まれていない場合、メインプログラムループは終了します。
78+
- AIレスポンスに関数呼び出し/コードが含まれている場合、ユーザーの承認を得てコードが実行されます。
79+
4. コード出力が表示され、収集され、AIに返されます。
80+
5. コードの実行時にエラーが検出された場合、エージェントはそれらを修正し、コードを再実行しようとします。
81+
6. タスクが完了するか、さらに情報が必要になるまでメインループが続きます。
82+
83+
<img src="./assets/Interpreter-Agent-Architecture.png" alt="Interpreter-Agent" width="500"/>
84+
85+
### 実行フロー
86+
87+
このエージェントの実行フローは以下の図に示されています。
88+
89+
<img src="./assets/InterpreterAgentFlowChart.png" alt="Interpreter-Agent" width="500"/>
90+
91+
## 既知の制限
92+
93+
- AI生成コードはまだ不正確なコードとレスポンスを生成する可能性があります。
94+
- コード結果を検証する出力がない場合、エージェントはコード結果に関する幻覚を生じる可能性があります。
95+
- チャット履歴はモデルごとにgitトークン制限に制限されます。
96+
チャットが長すぎる場合、エージェントは最も古い結果のコンテキストを失います。
97+
- エージェントは同時タスクを処理できません。
98+
99+
<!-- リンク参照 -->
100+
[01]: ./assets/InterpreterAgentDemoSpedUp.gif
101+
[02]: #使用方法
102+
[03]: #前提条件
103+
[04]: #設定
104+
[05]: #アーキテクチャ
105+
[06]: #既知の制限
106+
[07]: https://aka.ms/oai/access?azure-portal=true
107+
[08]: https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal
108+
[09]: https://platform.openai.com/api-keys
109+
[10]: https://platform.openai.com/docs/models

0 commit comments

Comments
 (0)