こんにちは。クロスイノベーション本部クラウドイノベーションセンターの柴田です。
ここ数年、生成 AI サービスが非常に注目を集めていますね。電通総研でも Know Narrator シリーズや minnect AI アシスト などのソリューションを提供しています。
さて。私はプロンプトを書くとき、まず Visual Studio Code で書いてから、それをブラウザの生成 AI サービスにコピー&ペーストしています。慣れ親しんだエディタの方が文章(プロンプト)を書きやすいからです。しかしあるときこう思いました。 「エディタからブラウザへプロンプトをコピー&ペーストするのが面倒だな🤔」「 Visual Studio Code から直接生成 AI サービスを呼び出せないかな🤔」 と。
そこで Visual Studio Code から生成 AI サービスを直接呼びだす方法を考えてみました。本記事ではその方法を紹介します。なお生成 AI サービスには Amazon Bedrock を使用します。
※この記事では Visual Studio Code から AWS CLI を使って Amazon Bedrock の Converse API を呼びだす方法をご紹介します。 特定の拡張機能( Cline など)を使った Visual Studio Code と生成 AI サービスの高度な連携については扱いません。 ご承知おきください。
必要なもの
前提条件
以下は事前に完了しているものとします。
- AWSCLI のセットアップ
- Amazon Bedrock の基盤モデルへのアクセス許可の設定
設定方法はそれぞれのユーザーガイドをご参照ください。
- Configuring settings for the AWS CLI - AWS Command Line Interface
- Add or remove access to Amazon Bedrock foundation models - Amazon Bedrock
設定方法
Visual Studio Code から Amazon Bedrock を呼びだすための設定をします。
- Visual Studio Code を起動します。
- コマンドパレットを開きます。
Tasks: Open User Tasksと入力します。するとtasks.jsonが開きます。tasks.jsonに以下の内容を入力して保存します。
{ "version": "2.0.0", "tasks": [ { "label": "bedrock", "type": "shell", "command": "aws", "args": [ "bedrock-runtime", "converse", "--model-id", "anthropic.claude-3-5-sonnet-20240620-v1:0", "--messages", "\"$(jq -csR '[{\"role\":\"user\",\"content\":[{\"text\":.}]}]' < '${file}')\"", "--query", "output.message.content[*].text", "--output", "text" ], "presentation": { "clear": true, "close": false, "echo": false, "focus": true, "showReuseMessage": false }, "problemMatcher": [] } ] }
実行方法
では実際に Visual Studio Code から Amazon Bedrock を呼び出してみます。
- Visual Studio Code を起動します。
- 空のテキストファイルを作成し、生成 AI へ送信するプロンプトを記述します。例として以下の内容を
prompt.txtという名前で保存します。
素数を小さい方から5個教えてください。
- 先ほどの
prompt.txtを開いたままコマンドパレットを開きます。 Tasks: Run Taskと入力します。bedrockを選択します。するとprompt.txtの内容が Amazon Bedrock へ送信されます。しばらく待つと Amazon Bedrock からレスポンスが返ってきて表示されます。
はい、素数を小さい方から 5 個お教えします。 1. 2 2. 3 3. 5 4. 7 5. 11 これらが最小の 5 つの素数です。 補足説明: - 素数とは、1 とその数自身以外に約数を持たない自然数のことです。 - 1 は慣習的に素数とは見なされません。 - 2 は唯一の偶数の素数です。 - これらの数以降の素数は 13, 17, 19, 23...と続きます。

解説
何を行っているのか解説します。
Visual Studio Code には外部ツールを呼びだす機能があります。これを使って AWS CLI を実行しています。
実行されるコマンドは以下のとおりです。
aws bedrock-runtime converse \
--model-id anthropic.claude-3-5-sonnet-20240620-v1:0 \
--messages "$(jq -csR '[{\"role\":\"user\",\"content\":[{\"text\":.}]}]' < '${file}')" \
--query output.message.content[*].text \
--output text
aws bedrock-runtime converse は Amazon Bedrock の Converse API を呼びだすためのコマンドです。
--model-idには使用する基盤モデルの ID を指定します。- 今回は Claude 3.5 Sonnet を使用しています。利用可能な基盤モデルは Supported foundation models in Amazon Bedrock - Amazon Bedrock をご参照ください。
--messagesには Converse API に送信するメッセージを指定します。${file}は Visual Studio Code によって現在開いているファイルのパスに置換されます。詳しくは Visual Studio Code Variables Reference をご参照ください。jqを使って現在開いているファイルの中身を Converse API に送信するメッセージへ変換します。例えば先ほどの実行例の場合、以下のようなメッセージに変換されます。
[ { "role": "user", "content": [{ "text": "素数を小さい方から5個教えてください。" }] } ]
--query output.message.content[*].text --output textでaws bedrock-runtime converseコマンドの実行結果のうち基盤モデルによって生成されたテキストメッセージのみを抜き出して表示しています。
おわりに
この記事では Visual Studio Code から AWS CLI を使って Amazon Bedrock の Converse API を呼びだす方法をご紹介しました。これによりエディタからブラウザの生成 AI サービスへプロンプトをコピー&ペーストする手間を省くことができます。
残念ながらこの方法では生成 AI との単発の受け答えしか行えません。もし生成 AI との対話(複数回の受け答え)が必要な場合は従来通りブラウザから生成 AI サービスを利用するのがよいでしょう。
また今は生成 AI サービスを利活用したエディタ(例: Cursor )や Visual Studio Code 拡張機能(例: GitHub Copilot 、 Cline )も存在します。エディタと生成 AI サービスをより高度に連携させたい場合はそれらの利用を検討するとよいでしょう。
最後までお読みいただき、ありがとうございました。
執筆:@shibata.takao
(Shodoで執筆されました)



