🤖

Cursor でも Bedrock 経由で Claude 3 Opus を使いたい!!!

2024/04/19に公開

はじめに

Amazon Bedrock で Claude 3 Opus が利用できるようになりましたね!

https://aws.amazon.com/jp/blogs/news/anthropics-claude-3-opus-model-on-amazon-bedrock/

ですが、私のお気に入りのエディタである Cursor は、Anthropic の API を直で叩いたり、Azure OpenAI Service の API は利用できるものの、Bedrock には対応していません。。。

いつかアップデートされるのを待つしかないかなぁ、と思っていたところ以下の記事を見つけました。
https://zenn.dev/kazuph/articles/f25ddab23db43e

なるほど!OpenAI 互換のエンドポイントを用意すれば、いろんな API を叩くことができるのか!

そこで、この記事では AWS 上に OpenAI 互換の API を用意し、その API 経由で Bedrock を呼び出すことで Cursor から Bedrock の Claude 3 Opus を利用できるか試してみたいと思います。

利用するもの

ALB + Lambda で実装するかあ、と考えていたらこんな素晴らしいリポジトリが aws-samples にありました。
https://github.com/aws-samples/bedrock-access-gateway

ALB + (Lambda または Fargate)で OpenAI 互換の API をサクっと構築できるようです。
CloudFormation テンプレートもあるので、このアセットを使っていくことにします。

カスタム API key を作成する

まずは、カスタム API Key を用意します。この API Key を利用して前述の API を呼び出すのですが、CloudFormation テンプレートのデフォルト値は bedrock になっています。セキュアにするために、独自の API Key を用意しましょう。

  1. AWSマネジメントコンソールを開き、Systems Managerサービスに移動します。
  2. 左側のナビゲーションペインで、「パラメータストア」をクリックします。
  3. 「パラメータの作成」ボタンをクリックします。
  4. 「パラメータの作成」ウィンドウで、以下のオプションを選択します:
    • 名前: BedrockProxyAPIKey など何のパラメータかわかる任意の名前を入力します
    • 説明: オプションで、パラメータの説明を入力します。
    • 利用枠: 標準 を選択します。
    • タイプ: 安全な文字列 を選択します。
    • 値: 任意の文字列を入力します。ここで設定した値が API Key になります。
      (※ スペースや特殊文字などは利用しないこと)
  5. 「パラメータの作成」をクリックします。

使用したパラメータ名(例: "BedrockProxyAPIKey")は次の手順で使うので控えておきましょう。API Key として設定した値も、最後に Cursor の設定を行うときに利用します。

Bedrock Access Gateway をデプロイする

https://github.com/aws-samples/bedrock-access-gateway
リポジトリの中ごろに CloudFormation の Launch ボタンがあります。

Lambda または ECS(Fargate) が利用可能です。

You can also choose to use AWS Fargate behind the ALB instead of AWS Lambda, the main difference is the latency of the first byte for streaming response (Fargate is lower).

とのことなので、好きな方を選びましょう。今回は ECS(Fargate) のほうをデプロイしてみます。

スタックの作成画面が開くので、次へを押します。

任意のスタック名を入力しましょう。
ApiKeyParam 欄には作成したパラメータストアの名前を入力します。

スタックオプションの設定画面では特に設定は行わないため、画面下部にスクロールして 次へ を押します。

確認して作成画面の下部にスクロールし、チェックを入れます。
設定値が問題ないことが確認できたら、送信 を押します。

スタックの作成が始まり、5 分程度待ってステータスが CREATE_COMPLETE に変わったら作成完了です。

出力 タブに発行された URL が API の BaseUrl となります。

Cursor にエンドポイントを設定する

Cursor を立ち上げ、右上の歯車ボタンを押して設定画面を開きます。

Models を開き、+ Add model からモデルを追加します。

今回は以下の 3 つのモデルを追加しましょう。

anthropic.claude-3-opus-20240229-v1:0
anthropic.claude-3-sonnet-20240229-v1:0
anthropic.claude-3-haiku-20240307-v1:0

また、Bedrock で利用できるモデル以外はすべて OFF にしておきます。

次に OpenAI API Key 欄に入力をしていきます。
Override OpenAI Base URL 欄に BaseUrl の値を入力し、Save を押します。
そして、パラメータストアに設定した API Key の値を入力し、Verify を押します。

以上で設定は完了です。

使ってみる

あとはいつもの Cursor の使い方と一緒です。
Chat を開いて、model を anthropic.claude-3-opus-20240229-v1:0 に設定すれば、Bedrock 経由で Opus を利用することができます!

もちろん Mistral など他モデルも利用できます。

おわりに

この記事では、AWS 上に OpenAI 互換の API を用意することで、Cursor から Amazon Bedrock の Claude 3 Opus などのモデルを利用する方法を試してみました。

無理やり動かしているからか、AI Edit 機能などの挙動がちょっと怪しいところもあったので色々検証してみたいと思います。

Discussion