AI/Machine Learning」カテゴリーアーカイブ

Claude code を Amazon Bedrockで動かす

Claude codeを動作させるには、基本的にはAnthropicのAPIに対して課金をする必要があるのですが、BedrockのCaludeを利用することでもできるらしいとのことで、やってみた。

正確に言えば、やろうとしたけれどうまく行ってない

環境変数の設定

Windows環境でClaude codeを動かしているので、wsl上の環境変数を設定して上げる必要がある

# WSLを起動
wsl
# AWS用 環境変数を設定
export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'
# or export AWS_PROFILE='...'
export AWS_REGION=us-east-1

# Claude code用環境変数を設定
export CLAUDE_CODE_USE_BEDROCK=1
export ANTHROPIC_MODEL='us.anthropic.claude-3-7-sonnet-20250219-v1:0'
export DISABLE_PROMPT_CACHING=1

現時点ではclaude 3.7 は東京リージョンでは利用できないのでusリージョンのものを使用する

モデルの有効化

AWS Bedrock上でも 3.7 sonet に対してリクエストを実施しておく必要がある。

このリクエストには会社名など利用する上で申告が必要になるが、実際のところそれほど意味を感じない。

すぐにアクセスは付与される

claudeの起動

ここまで進めば、あとは通常通り”claude”コマンドでclaude codeを起動して使う

claude

claude code 自体は問題なく起動することが出来ているようなので、Bedrock接続は出来ているみたい。
早速試しにinitを実行してみたところ・・・

エラーがおきた

どうやら、Quotaに引っかかっているよう。

AWSの Service Quotasを見てみると、確かにクォータの制限はかかっているのだが、本当に制限がかかるくらい使っているということなのだろうか。。。

もうちょっと調べてみたい

LLMによるおべっか

そんなこともあるんだと

Sycophancy in GPT-4o: What happened and what we’re doing about it
https://openai.com/index/sycophancy-in-gpt-4o

上記ポストによると、ChatGPTがユーザからの質問に対して過度に反応してしまうと。
どんな話が出ていたのかというと

ということで、とても褒められたものではないアイディアに対してChatGPTが$30kを賭ける勝ちがあると言い出しているとのこと。

結論として、そういう答えを導き出したということよりも、その伝え方として過度に肯定的な発言内容だったり、ユーザに沿った回答をしてしまっているということでした。

何をどう伝えるか。
難しいのは人間だけじゃないですね

それを含めて、随分と人間っぽい内容だなぁと思わずにはおれませんでした。

MCPにおけるセキュリティリスク整理

Claude codeなどLLMを用いた開発を爆速で加速させそうなMCPですが、あくまでAIが使うツールとしてのやり取りを標準化しようとしているだけで、現時点ではセキュリティ的な観点からは、ほぼ野ざらしなようでここ数ヶ月でいろいろな記事が出ています

MCP Servers: The New Security Nightmare
https://equixly.com/blog/2025/03/29/mcp-server-new-security-nightmare

MCP Security Notification: Tool Poisoning Attacks
https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks

コードに対する著作権という問題も別途ありますが、これらで取り上げられているMCPの脆弱性は気をつけるべきものではあるものの、「そんな野良MCP使わないでしょ」と思わなくもない。

MCPが必要となるシーンでは、基本的に企業ユースであれば何かしらの公式ベンダーが出しているものを利用することになるのでは、と思っています。
もちろん、個人利用で面白そうな仕組みをGithubからホイホイとダウンロードしてきたらその限りではありませんが。。。

根本的には、OSSをはじめとしたツールに内在したセキュリティリスクに対してどのように対応していくのか?という、これまでOSS利用でも言われてきた内容の延長でしかないとは思います。

最も、OSSとして公開されているソースと、実際にインスタンスとして提供されているMCPサーバーが同じである保証はどこにもないので、やはり自前でMCP Server立てる以外は注意が必要なんだろう。

とりあえず、現時点では雑にそう考えることにした。

Claude codeを少し使ってみた感想

先日セットアップしたClaude code。
個人開発プロジェクトとして作っている、Electronアプリで色々とプロンプトを試しています。
面白いです

自分でコードして、ビルドしてみたら失敗して、調整して、、、って繰り返すのを見ていると、いや、本当人間っぽいなと思ってしまいます。

ただ、コーディングスピードは流石に早く、それなりのボリュームを持った作業をさせると、一度に大量のコードが書かれるために、正直これを読んでいたらこういうツールを使っている意味が薄くなりそうだなと思いました。

動かしてみてうまくいかなければ、それはコードを確認するのではなくプロンプトで指示を投げるような形でしょうか。
そういう意味で、変なデグレードをなくすためにテストコードを書かせながら進めることが大事になりそうです。

一方で、何かしらトラブルが有るたびにプロンプトで指示を与えるということが本当に正しいやり方なんだっけ?と思うと必ずしもそうではなく、コードを読まないといけないシーンはそれなりにあるはず。
そう考えると、コーディングなどに対する理解は必要で。。。いや、それすらプロンプトでAIによるコードの解説を受けながら問題を特定するようになるのだろうか・・・?
うーん、そのほうが現実的なのかもしれない。

誰がどの程度使うことになるのか?

そう考えると、若手に使わせたほうがチームの生産性は上がるかもしれないが一方で学ぶ機会を失うことにもなりかねない懸念はあります。

また、全員が使うのか・・・?協力会社さんがいる場合は・・・?

使ったほうが生産性やスピードが上る可能性は高い一方で、使いこなせないとひたすらプロンプトを打ち続けることになり課金額がそれなりに行くことが考えられます。

もちろん、人件費のほうが高いケースが多いとは思いますが、必要最低限なプロンプトで最大の結果を得るような評価基準が将来のエンジニア評価で用いられる可能性もありそうです。

手でコードを書くという行為と、AIにコード生成させるという行為。
ケースによって違うとは思いますが、このあたりのバランスは試行錯誤を通じて作り上げていく必要があるのかもしれません。

Claude code を Windows で

いい加減、AIを活用した形での開発というものに対応していかないと、ということで、Claudeに課金もしているのでClaude codeを試してみることにしました。
ちなみに、やっていく過程で知ったのですが、チャットのClaudeへの課金とAPI利用となるClaude codeの課金は別に必要でした。。。

WSL環境としての準備

のほほんと、@anthropic-ai/claude-codeをインストールしようとしたところ、Windows非対応と怒られてしまいました。
Windows環境でClaude codeを使うにはWSL上で呼び出して上げる必要があるようです。

WSLの起動

WSLの起動自体は”wsl”コマンドを打つだけです

wsl

ubuntuがインストールされていなかったり、デフォルトがubuntuではなくなっている可能性もあり、その場合はエラーが出てしまいます

> wsl
<3>WSL (24 - Relay) ERROR: CreateProcessParseCommon:863: Failed to translate C:\Users\krote
<3>WSL (24 - Relay) ERROR: CreateProcessParseCommon:909: getpwuid(0) failed 2

この場合は、一覧を確認し、デフォルトをUbuntuに変更しておきましょう

> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop-data    Running         2
  Ubuntu                 Running         2
  docker-desktop         Running         2

> wsl --setdefault ubuntu
この操作を正しく終了しました。

> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

nodeのインストール

WSL環境に、nodejsをインストールします

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Claude code のインストール

下準備が揃ったので、Claude code をインストールします

su
npm install -g @anthropic-ai/claude-code

問題なくインストールが終わりバージョン確認ができればOKです

> claude -v
0.2.69 (Claude Code)

4/13日時点では0.2.69ということで、まだresearch preview。バージョン1には満たない状態です。

インストール時のエラー

npm install を実行したときに下記エラーが起きました。

npm install -g @anthropic-ai/claude-code
npm error code 1
npm error path C:\Users\XXX\AppData\Roaming\fnm\node-versions\v22.14.0\installation\node_modules\@anthropic-ai\claude-code
npm error command failed
npm error command C:\WINDOWS\system32\cmd.exe /d /s /c node scripts/preinstall.js
npm error Error: Claude Code is not supported on Windows.
npm error Claude Code requires macOS or Linux to run properly.
npm error If you are using WSL (Windows Subsystem for Linux):
npm error   1. Make sure you are running npm install from within the WSL terminal, not from PowerShell or CMD
npm error   2. If you're still seeing this message in WSL, your environment may be incorrectly reporting as Windows
npm error Please visit https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#check-system-requirements for troubleshooting information.

これは、エラーメッセージにも書かれているように、WSL上ではなくPowershellやCMD上で実行されている事によるエラーです。
WSL上のTerminalで実行する必要があります

Claude code の実行

早速使ってみたいと思います。

claude

コマンドを実行すると起動します

注意書きが続き。。。

アカウントとの紐づけをリクエストしてきますので紐づけます

一通り終わると、チャットウィンドウが残り使えるようになるので、早速エラーが出て若干放置気味だったプロジェクトで内容確認を試してみたのですが。。。

> このコードベースを説明してください
  ⎿  Credit balance too low · Add funds: https://console.anthropic.com/settings/billing

> /init is analyzing your codebase…
  ⎿  Credit balance too low · Add funds: https://console.anthropic.com/settings/billing

ということで、カネがないと。
ここで、チャット側で課金していてもAPIは別だということを知ります。

しょうがないので、$5課金してもう一度試してみたところ

● Task(Please analyze this codebase and explain what it does. Look at the main files and structure to understand the project's …
      purpose and architecture. Focus on:…)
  ⎿  Done (7 tool uses · 12.6k tokens · 28.5s)

● これはXXXX用のElectron+Next.jsデスクトップアプリケーションです。SQLiteデータベースを使用し、データの表示・分析機能を提供し
  ます。TypeScriptで記述され、TailwindCSSでスタイリングされています。メイン機能はSQLクエリ実行、データ可視化(グラフ)、結果表示
  などです。Electronのプリロードスクリプトを通じてUIとデータベース操作を安全に連携させています。

読み込んでくれました!

この一発でAPIとしては、$0.15ほど消費したようです

ここから

ようやく環境としてはできたので、ここからですね。
少し、今のコードベース上で発生していた起動時のエラーに関しての修正を指示したところそれなりに動いてくれました。

どういう形で回していくとより良いのか。いじっていきたいと思います。

MCPとはなにか

ここ数ヶ月、MCPがアチラコチラで話題になっています。
ほんと、LLMに関する技術の日進月歩はすごいものですね。

なんとなくざっくりは理解しているものの、一度このあたりでまとめて見ようと思った個人的まとめとなります。

MCPとは何なのか

MCP(Messaging Channel Protocol)は、Anthropicが開発した大規模言語モデル(LLM)とツールを接続するためのプロトコルです。MCPは、Claudeなどのモデルが外部ツールと連携する際の通信フレームワークを提供し、これによりLLMの機能を大幅に拡張することができます。

MCPの主な特徴:

  • LLMとツールの間で構造化されたメッセージをやり取りする標準プロトコル
  • ツールの使用を通じてLLMの能力を拡張(計算、情報検索、外部システムとの連携など)
  • エージェントがユーザーの意図を理解し、適切なツールを選択・実行できるようにする
  • 複雑なタスクを段階的に処理するためのフレームワークを提供

MCPは、LLMを単なるテキスト生成システムから、実際のタスクを実行できる強力なエージェントへと進化させる重要な技術です。

以前、ローカルにあるシステムの情報をLLMと接続させることで、自然言語を用いたシステムの操作というモノができないかな?と考えたものの、ピンときていなかった答えが少し見えてきた気がします。

MCPの概念・構成要素

MCPに関してはAnthropicのドキュメントに構成要素が描かれている

https://modelcontextprotocol.io/introduction#general-architecture

MCP Client としてはVSCodeやClineなどのツールが存在し、MCP Serverと連携。
MCP Server はLLMに対して MCP Protocolを用いて連携し、必要に応じてデータソース等から情報を提供する、、、と。
上記図の”Local Data Source”としては「Your computer’s files, databases, and services that MCP servers can securely access」とあるので、ファイルであるかもしれないし、システムであるかもしれないという位置づけ。

MCP Server が提供するもの

LLMに対して情報を提供する入口となる MCP Server ですが、これが何を提供するのかというと、下記3点となるそうです

  1. Resources: File-like data that can be read by clients (like API responses or file contents)
  2. Tools: Functions that can be called by the LLM (with user approval)
  3. Prompts: Pre-written templates that help users accomplish specific tasks

https://modelcontextprotocol.io/quickstart/server#core-mcp-concepts

主にはToolsが重要な一度を占めることになりそう。
公式では、天気予報に関してのToolを提供するMCP Serverをサンプルとして提示されていた

For Server Developers
https://modelcontextprotocol.io/quickstart/server

実際のLLMとMCPサーバーとのやり取り、それらに関してはすでにリファレンス実装などもあるようなのでそのあたりを見ながら理解を深めていくことができればと考えている

Generative AI Use Case を試す

先日、クラスメソッドさんが開催した「Amazon Bedrock GenUハンズオン(東京開催) #2:GenU環境でRAGを体験」に参加してきました

Amazon Bedrock GenUハンズオン(東京開催) #2:GenU環境でRAGを体験
https://classmethod.connpass.com/event/346443/

手順に従ってハンズオンを進めていたのですが、、、最終的にエラーが発生して時間内に予定していた内容を完了させることができませんでした。
原因としては、ユースケースがOSSで作られており、直前のコミットで不具合が埋め込まれてしまったとのこと。。。
なんとも、、なところです。

というわけで、手順は公開されているので手元でやってみました

Generative AI Use Cases JP (GenU)を使ってRAGを体験してみよう(KnowledgeBases編)
https://dev.classmethod.jp/articles/generative-ai-use-cases-jp-handson-kb-rag/

リージョンを変えることによる影響

ハンズオンで一度やっている内容ではあるので、進めていきます。
ただ、ハンズオンでは us-east-1リージョンを使っていたんですよね。手元では、ap-northeas-1(東京)でSageMakerStudioを起動してみました。

流れとしては、

  1. SageMakerStudioの構築(開発環境準備)
  2. モデルの有効化
  3. ユースケースの構築

というようなものがざっくりとした内容。
1のSageMakerStudioをap-northeast-1で構築したからと言って、3によるユースケースのデプロイ先やモデルの参照先がap-northeast-1になるわけではないようです。

そのため、最初やってみるとナレッジベースで同期する予定だったファイルはus-east-1にできており、更に動かしてみるとエラーとなりました

対応としては、今回はus-east-1で必要となるモデルを有効化。
その後、us-east-1でBedrockのナレッジベースを同期させ実行することでエラーは解消されました

ちなみに、上のキャプチャで1回目はナレッジベースの同期を行う前。
そして同期を行ったあとでは正しく返答が返ってくることが確認できました。

1回目、なんで英語で返ってきたのかがいまいちよくわかりませんが。。。。

モデルの参照先自体は、cdk.json内の”modelRegion”を適切な値にすれば大丈夫だと思います。

気になったのは、ナレッジベースへの登録先リージョンですね。。。
SageMakerStudio自体はap-northeast-1で起動しているので、パラメータが特に存在していないのであれば自動的に現在のリージョンで作って欲しいところですが。。

おそらくCDKの中にあるのだとは思うので、後でちょっと調べてみよう。。

GensparkでDeep Research

先日紹介したGensparkですが、Deep Researchが1日1回無料で利用が可能です。
より正確に言うと、通常の検索以外の画像生成など、プラスアルファの機能が時限的な回数制限となっていて、Deep Researchもその一つということですね。

まず、Deep Researchをするにはホーム画面でディープリサーチアイコンを押します

その後、調査したい内容をプロンプトに記述します。

そうすることで、複数のLLMでまずリサーチプランを作成し、それらをマージしたプランを提示してくれます。
現時点ではGPT-4o、Claude3.5Sonnet、gemini-1.5proが使われるようです。

提示してくれたプランをそのまま実行してもいいですし、編集を押して追加の指示を与えることも出来ます

”リサーチを開始”を押下すると、20~30分程度調査に時間を要します。

この間、ブラウザは落としてしまっても問題ありません。作業が完了したらログイン時に参照することも出来ますし、完了時にメールでお知らせもしてくれます。

面白い

調査結果に関しては、鵜呑みにすることはまだ怖いですが、非常に面白いと思いました。
Gensparkの場合、通常の検索の時点でSparkpageなどを作ったりして一つの調査結果かと思うような出来栄えではありますが、Deep Researchという名前をつけているだけのことはありそうです。

検索として、単純にざっくりと調べたいときは通常検索。
もう少しより深いところまで調査した結果を見たいときにはDeep Researchという形でしょうか。

一方で、プロンプトの作り方次第では、なんだかすごく浅い調査一覧みたいな形になってしまう可能性もあります。
このあたりはDeep Researchを使うときのプロンプトの出し方をもう少し工夫したりして、そもそも自分がほしいアウトプットとはなんだったっけ?を明確化しないといけませんね。
もう少しトライ・アンド・エラーしたいところですが、無料では1日1回なのが歯がゆいところです

正直言って、そんなに調査することってあるんだっけ?という話はなくはないのですが、検索してみた結果から更に似たような話や、疑問が湧いてきます。
いい具合に好奇心を刺激してくれそうです。

招待リンク

https://www.genspark.ai/invite?invite_code=NzA4OGE2MTlMMjRlNkw4NzA0TDc0YWFMNTAwZmY0NjA4OGE1

この招待リンクから会員登録をして電話番号認証を行うことで、Deep Researchをはじめとした有料プランが一ヶ月無料になります。気が向いたら登録してもらえると嬉しいです。

Gensparkを試す

生成AI自体を触っている頻度は段々と上がってきている毎日ですが、まだDeep Researchのような、重厚な調査タスクを行うエージェントは試したことがありません。

OpenAIだとProプラン、つまり月額200ドル必要なんですよね、、、

なにかいい方法はないかな?と調べてみたら、Gensparkという、現時点ではベータ版が提供されているサービスがあり、Deep Researchも限定的ではあるものの利用が可能なようです

通常の検索

先日の焼き肉屋さんの業界動向も、実はGensparkで聞いてみたのでした

検索結果は、なんとなくPerplexityに似ている気がします。
複数のソースから検索結果がまとめられ、それぞれ言及している事柄に対してのソースを確認することが出来ます。

そして、生成した結果にはなぜか毎回マインドマップがついてきます。

マインドマップがあることで、AIのマインド(?)がわかるかな?
何度か試してみましたが、そこまで複雑なマインドマップが出るようなことはなかったです。これは検索したキーワードによるところでしょう。

エージェントの組み合わせを試す

検索結果がお気に召さない、そのときに「エージェントの組み合わせを試す」ボタンがあり、これを押すと、各AIそれぞれが導き出した問いに対する回答を確認することが出来ます。

Sparkpage

もう一つ特徴的なのが、Sparkpageというページを生成します。検索結果自体が複数のエージェントやソースからの検索家かをまとめているわけですが、このSparkpageはリアルタイムにカスタムページを作成します。

検索結果に上記のようにSparkpageがついているのですが、これを選択すると

一つのまとまったページとして各情報ソースから抽出してきた情報をグラフなどを交えながら組み合わせて表示してくれます。
なんというか、レポートが出来上がった感覚であります。

招待リンク

これらの検索は現在Gensparkがベータ版ということもあり、無制限に使える状態なのが今です。Perplexityと異なり、スマホアプリがないのが悔やまれます。

一方で、Deep Researchや画像生成などは無料ユーザには制限(おそらく1日1回?)がかかっています。
OpenRouterと同様にこういった複数のAIプロバイダーにまたがって提供されているサービスに課金するのか、それとも個別に課金するのか。悩ましいところです。

ただ、Gensparkでは招待リンクの仕組みが用意されています。

https://www.genspark.ai/invite?invite_code=NzA4OGE2MTlMMjRlNkw4NzA0TDc0YWFMNTAwZmY0NjA4OGE1

この招待リンクから会員登録をして電話番号認証を行うことで、有料プランが一ヶ月無料になります。気が向いたら登録してもらえると嬉しいです。

いやー、生成AI、面白いですね

OpenRouterに登録した

随分と前からClineをはじめとするコーディングエージェントに興味はあったのだが、どうにも手がつかない。

このあたりの知識や経験は、早晩必要になるかあまりにもパラダイムが変わりすぎて使い物にならなくなるかという振れ幅の大きいものではあるが、触った事で損するということはないはず。
だがしかし、手がつかない。

Nikeのように「Just do it」と触ってしまえばいいだけじゃないかと言われればそれまでなのだが、”興味はある”と言いながらここまで触らないのも珍しいな、といい加減重い腰を上げた。

OpenRouterってなんだ

公式サイト
https://openrouter.ai/

VSCodeにRoo Code拡張をインストールすると、API Keyを入れることになるのだが選択肢のデフォルトはOpenRouterとなっている。
OpenRouterという生成AIは聞いたことがないぞ?と思い調べてみると、単一のAPIKeyで複数のモデルを使い分けしてくれるようなサービスのようだ。

生成AIにはそれぞれ得手不得手があるので、複数に課金するよりも確かにOpenRouterに課金することで効率が良さそうである。

アカウント作成

まずはSingUpということで公式でアカウントを作る必要がある。

SingUpでMetaMaskの選択肢が出てくるのは初めて見る。
ということは、仮想通貨での支払いができるということなのだろう。これまた珍しいものだ。

あえてMetaMaskで進めてもいいのだが、大人しくGoogleアカウントと紐づけることにする。

$支払いとなるので、カードかAmazonPayかな?
私はUSAmazonのアカウント持っているのですんなり行ったけれど、もしかしたら通常は難しいのかもしれない。

クレジットの追加は$5からとなる。
Deepseekが最小が$2だったことを考えると、Deepseek限定で使うのであればやはりDeepseekに課金するというのが一番なのだろう。

まぁ、ここは勉強代とする

API Key自体はCreditを追加していなくても作ることはできる。
ただし、Roo CodeなどでAPIを呼び出す際に

Creditが足らんと怒られてしまうので注意が必要。

VSCodeに Roo Codeも入れたことだし、あとは色々と動かしてみることかな。

余談

今回はOpenRouterを使ったのだけれど、せっかく複数のモデルにアクセスできるのであればコード生成以外にも使いたくなる。

Roo CodeでOpenRouterを使うチャットを作ってしまうというなんともシュールなことをしてもらいいのだけれど、、、と思っていたらよく見たらOpenRouter自体にその選択肢が用意されていた

これで、OpenAI系やその他のモデルも試して遊ぶことができるのでは。
楽しみである