電通総研 テックブログ

電通総研が運営する技術ブログ

Visual Studio Code から Amazon Bedrock を呼びだす

こんにちは。クロスイノベーション本部クラウドイノベーションセンターの柴田です。

ここ数年、生成 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 の基盤モデルへのアクセス許可の設定

設定方法はそれぞれのユーザーガイドをご参照ください。

設定方法

Visual Studio Code から Amazon Bedrock を呼びだすための設定をします。

  1. Visual Studio Code を起動します。
  2. コマンドパレットを開きます。
  3. Tasks: Open User Tasks と入力します。すると tasks.json が開きます。
  4. 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 を呼び出してみます。

  1. Visual Studio Code を起動します。
  2. 空のテキストファイルを作成し、生成 AI へ送信するプロンプトを記述します。例として以下の内容を prompt.txt という名前で保存します。
素数を小さい方から5個教えてください。
  1. 先ほどの prompt.txt を開いたままコマンドパレットを開きます。
  2. Tasks: Run Task と入力します。
  3. 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 を実行しています。

Tasks in Visual Studio Code

実行されるコマンドは以下のとおりです。

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 converseAmazon Bedrock の Converse API を呼びだすためのコマンドです。

  • --model-id には使用する基盤モデルの ID を指定します。
  • --messages には Converse API に送信するメッセージを指定します。
    1. ${file}Visual Studio Code によって現在開いているファイルのパスに置換されます。詳しくは Visual Studio Code Variables Reference をご参照ください。
    2. jq を使って現在開いているファイルの中身を Converse API に送信するメッセージへ変換します。例えば先ほどの実行例の場合、以下のようなメッセージに変換されます。
[
  {
    "role": "user",
    "content": [{ "text": "素数を小さい方から5個教えてください。" }]
  }
]
  • --query output.message.content[*].text --output textaws bedrock-runtime converse コマンドの実行結果のうち基盤モデルによって生成されたテキストメッセージのみを抜き出して表示しています。

おわりに

この記事では Visual Studio Code から AWS CLI を使って Amazon Bedrock の Converse API を呼びだす方法をご紹介しました。これによりエディタからブラウザの生成 AI サービスへプロンプトをコピー&ペーストする手間を省くことができます。

残念ながらこの方法では生成 AI との単発の受け答えしか行えません。もし生成 AI との対話(複数回の受け答え)が必要な場合は従来通りブラウザから生成 AI サービスを利用するのがよいでしょう。

また今は生成 AI サービスを利活用したエディタ(例: Cursor )や Visual Studio Code 拡張機能(例: GitHub CopilotCline )も存在します。エディタと生成 AI サービスをより高度に連携させたい場合はそれらの利用を検討するとよいでしょう。

最後までお読みいただき、ありがとうございました。

私たちは一緒に働いてくれる仲間を募集しています!

電通総研 キャリア採用サイト 電通総研 新卒採用サイト

執筆:@shibata.takao
Shodoで執筆されました