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

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系やその他のモデルも試して遊ぶことができるのでは。
楽しみである

Deepseekをローカルで

少し前からDeepseekの名前は見かけていましたが、先日の発表から一気に広がりましたね。
というわけで、早速試してみようと思います。

参考にさせていただいたのはこちら

DeepSeek R1をほぼ準備なしからローカルGPUで動かす
https://note.com/cppp_cpchan/n/n3c1039c80dd0

CUDAの確認

私の環境では、CUDAは12.3だった

llama.cppをダウンロードしてくる。
https://github.com/ggerganov/llama.cpp/releases

見る限り、この2つなのだが、ローカルがCUDA 12.3で行けるものなのか。
試してみてから考える

試してみた

common_init_from_params: setting dry_penalty_last_n to ctx_size = 4096
common_init_from_params: warming up the model with an empty run - please wait ... (--no-warmup to disable)
ggml_cuda_compute_forward: ADD failed
CUDA error: the provided PTX was compiled with an unsupported toolchain.
  current device: 0, in function ggml_cuda_compute_forward at D:\a\llama.cpp\llama.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:2230
  err
D:\a\llama.cpp\llama.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:71: CUDA error
sh: ./llama-server.exe: このアプリケーションで、スタック ベースのバッファーのオーバーランが検出されました。このオーバーラン により、悪質なユーザーがこのアプリケーションを制御できるようになる可能性があります。 Error 0xc0000409

実行してみると、エラーとなってしまった。
エラーメッセージからは、「unsupported toolchain」ということで、12.3環境で12.4を動かしたことによるエラーではないかと推察する。

そこでCUDA 12.8(最新)を入れようとするもエラー・・・。

しょうがないので、llamaとバージョンを合わせた12.4を拾ってくる

CUDA Toolkit 12.4 Update 1 Downloads
https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local

同じエラーになった。。。

Nsight Coputeというものが原因のようだが、これは使わないっぽいのでカスタムインストールで設定を外してみる

とりあえずインストール出来たっぽい

smiで確認してみると、ちゃんとバージョンが上がっている

さて、実行です。
実行パラメータとしては以下を行っています

./llama-server.exe -m ../DeepSeek-R1-Distill-Qwen-14B-Q6_K.gguf -ngl 26 -b 2048 --temp 0.6

最初、nglの値を49にして実施してみたが、メモリが足りないというエラーとなってしまい、26でやるとエラーにならずに出来た。

このあたりのパラメータの加減は環境ごとに見極める必要がありそう。
言われているURLへアクセスすると

それっぽい画面が出来ている!

早速問い合わせてみたのだが、「Thinking」からかなりの長時間が経過しているが変化ない

GPUのパフォーマンスをタスクマネージャで確認して見ると、「専有GPUメモリ使用量」は張り付いていて、「3D」となっているところはギザギザの波形が出ている。

かなりの時間が経過した後に応答があった。

とりあえず、動くには動いたが、パフォーマンスはというとひどいものである。
パラメータを見直してなんとかなるものかはちょっとわからないが、試してみるだけ試してみようとは思う

Copilot が使えるようになっていた!

朝、メールを見ると。。。

おぉおぉ?
どゆこと?

メールにも書かれているけれど、いくつか制限があるようです

  • 2,000 code suggestions a month: Get context-aware suggestions tailored to your VS Code workspace and GitHub projects.
  • 50 Copilot Chat messages a month: Use Copilot Chat in VS Code and on GitHub to ask questions and refactor, debug, document, and explain code.
  • Choose your AI model: You can select between Anthropic’s Claude 3.5 Sonnet or OpenAI’s GPT 4o.
  • Render edits across multiple files: Use Copilot Edits to make changes to multiple files you’re working with.
  • Access the Copilot Extensions ecosystem: Use third-party agents to conduct web searches via Perplexity, access information from Stack Overflow, and more.

制限として大きいのは2000コード提案と50チャットの部分。
なんかあっという間に制限に引っかかりそうな気がしますね・・・。
それも利用仕方の問題なのかな

最近、WebでCaludeのほうを使う機会のほうが多くなっている気もしますが、まだまだ生成AIを使ったスタイルに馴染みがないので手を動かせるようにしていきたいものです。

開発環境の構築は開発よりも難しい

購読しているSoftware Designの12月号

連載のLLMが前号に引き続きのHIL(Human In the Loop)をお題にしたもので、読んでいて面白そうだったので試してみることに。

リポジトリはこちらです
https://github.com/mahm/softwaredesign-llm-application/tree/main/14

やってみる

ReadMeにしたがって、ポチポチしていきます。
poetryというのは初めて使います。正直言って、業務でPythonを使っているわけじゃない身としては、試しに触るたびに新しいパッケージマネージャーを使わされている気がします。
なんでPython使いはパッケージマネージャーをどんどん作るのでしょう。
どれだけパッケージ使いづらいんでしょうかね。。。
それとも、「俺が作る最強のパッケージマネージャーを見せてやる」ってイキってる人が多いということなのかもしれません。

さて、最終的に実行を行ってみるのですが。。。

ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'
Traceback:
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\.venv\Lib\site-packages\streamlit\runtime\scriptrunner\exec_code.py", line 88, in exec_func_with_error_handling
    result = func()
             ^^^^^^
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\.venv\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 590, in code_to_exec
    exec(code, module.__dict__)
File "C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14\app.py", line 5, in <module>
    from agent import HumanInTheLoopAgent
...

知ってる。チュートリアルってエラーになるんだぜ。

この “pydantic_core.pydantic_core”が見つからないってのはOpenAI関連のLambdaレイヤーを構築する際に起こるエラーとググったら出てくる。
Lambdaレイヤーなんて作っちゃいないんだけど、どうやらWindows環境では確実にこうなるようだ。
Software Designにそんな環境依存の話書いてあっただろうか?と思わずひとりごちた。
ちくしょう。

正直、なぜLambdaレイヤーと言われているのかは定かではないけれど、対応にはFastAPIの0.99.0を入れるとある

Lambda Layers で No module named ‘pydantic_core._pydantic_core’
https://qiita.com/ganessa/items/bb67517a095f2c510926

試して見る

C:\Dev\llm\softwaredesigne\softwaredesign-llm-application\14> pip install fastapi==0.99.0
...
Using cached starlette-0.27.0-py3-none-any.whl (66 kB)
Installing collected packages: pydantic, starlette, fastapi
  Attempting uninstall: pydantic
    Found existing installation: pydantic 2.9.2
    Uninstalling pydantic-2.9.2:
      Successfully uninstalled pydantic-2.9.2
  Attempting uninstall: starlette
    Found existing installation: starlette 0.41.2
    Uninstalling starlette-0.41.2:
      Successfully uninstalled starlette-0.41.2
  Attempting uninstall: fastapi
    Found existing installation: fastapi 0.115.4
    Uninstalling fastapi-0.115.4:
      Successfully uninstalled fastapi-0.115.4
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
composio-core 0.5.40 requires pydantic<3,>=2.6.4, but you have pydantic 1.10.19 which is incompatible.
Successfully installed fastapi-0.99.0 pydantic-1.10.19 starlette-0.27.0

なんかERRORは出るものの、最終的にはpydantic-1.10.19がインストールされた。
さて試してみる

変わらず・・・

試してみる(2)

問題の根本としては、Windows環境で試していることが原因っぽい。
というわけで、Dockerも検討したけれど手元にMacもあったので試してみる

あっさり動いたーーーー。

すごい釈然としない。。2024年においてもまだ環境依存は簡単にはこえられない壁として我々の前には立ち塞がっていると言うことなんだろう・・・。

そして、本当はそんなことをしたいのではなくここから仕組みの理解や改変を通した学びを得たいところだったのだけれど、すでに徒労感がある。

悲しい。

動かしてみると

そりゃ、LLMアプリを勉強するくらいであったら課金くらいしろよってのは、まぁ、そうなのかもしれないけれど、試すことすら出来ないのは悲しいところです。

ChatGPTにしろAnthropicにしろ、開発中もひたすらに料金がかかり続けるモデルだと、お勉強エンジニアには厳しいお財布事情になりそうです。

これ、複数のLLMで試したいと思ったら全部課金するって話になるんですよね。。。