同じリフィル立てのCADを、Claude Codeとローカルモデル3つに作らせて比べた

目次(9 節)

やってみたかったこと

替え芯(リフィル)を立てておくスタンドを、CADで作ってみたいと思いました。形はとても簡単です。40×100×40mm の箱に、直径4mm・深さ25mm の穴を9個あけるだけ。

子どもが、勉強の丸付けで使い切った赤ペンの芯(リフィル)を立てておいて、「こんなに頑張った」と見えるようにしたい、と言ったのがきっかけです。ちょうどローカルのモデルにCADを作らせてみたかったので、試しにこれでやってみました。

せっかくなので、同じ課題を AI に作らせて比べてみることにしました。1回目はクラウドの Claude Code、2回目は手元の PC で動かすローカルモデル3つです。

なぜローカルモデルで比べたか

AI を使うとき、ローカルでないとできないことは、基本的にあまりないと感じています。ただ、手元のPCの中にデータがあるものを扱うなら、Claude Code や Codex を使うか、ローカルの LLM を使う必要があります。

Codex や Claude Code、Grok など、クラウドのサービスはいろいろあります。そのなかで、ローカルで比べたいと思ったのは、トークンをたくさん使う作業です。たとえば、単純な作業をひたすらさせること。大量の情報を処理させること。そして、やりたいのにまだできていない、今回の CAD です。自分で仕様書を作って、その通りに CAD で図面や3Dモデルを作ってもらいたいと思っています。

そこで、クラウドの一般的な有料サブスクのモデルでやった場合と、ローカルのモデルでやった場合を比べてみたくなりました。

何を使ったか

  • CAD:build123d(Python で形を作るライブラリ)と、それを AI から操作するための build123d-mcp。AI は MCP を通して形を作り、寸法や穴の数を自分で測って確かめられます。
  • AI の実行役:Claude Code。4つとも Claude Code の仕組みの上で動かし、中のモデルを入れ替えました(版や動かした場所などの違いは、「全体で分かったこと」の注意に書きました)。
    • 1回目:Claude Code(2.1.302、WSL)+ クラウドのモデル Claude Opus 5.5
    • 2回目:Claude Code(2.1.305、Windows)+ ローカルモデル3つ
      • FlashNextの2ビット版:Qwen3.8-Flash-Next を IQ2_XS で量子化したもの(GGUF)。Strata v0.2.0-beta で動かす
      • FlashNextの3ビット版:同じモデルを IQ3_S で量子化したもの(GGUF)。Strata v0.2.0-beta で動かす
      • Qwen3.8-27B:Unslothが配っている量子化版「UD-Q5_K_XL」。Ollama 0.34.0 で動かす(タグは hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL)
    • コンテキストの長さは、ローカルの3つとも 32k と 64k で試しました(Strata は起動時の設定、Ollama は1回ごとの num_ctx で指定)。
  • PC:Windows と WSL(Ubuntu 24.04)。GPU のメモリは 32,607 MiB、RAM は 64GB です。
  • 採点:同じ測定スクリプト(measure.py)で、外から寸法を測って合否を決めました。

やったこと

課題(寸法表)

項目値
外形40×100×40 mm
穴9個、直径4.0mm、深さ25mm(貫通しない平底)
並び2列の千鳥(5個+4個)、列は中心から ±8mm、同じ列の間隔20mm、もう一方の列は10mmずらす
底の残り15mm

外形・穴の数・径・深さを決めて、並び方や平底などは仮に決めました。

合格の基準

  • 外形が ±0.1mm 以内
  • 穴(数・径・深さ・位置・向き)が ±0.05mm 以内
  • 体積が ±1% 以内
  • STL に穴があいていない(水密)
  • STEP を読み直せる
  • 直しは3回まで

AI には「MCP で確かめて、ずれていたら直す。直しは最大3回」と頼みました。

起きたこと

こうしてみた → ダメだった → 次にこうした、の順に書きます。

クラウドの Claude Code(Claude Opus 5.5)でやってみた

1回の実行で27ターン、約4分。MCP での最初の確認で全部の項目が期待どおりで、直しは0回でした。

ただ、すんなりとはいきませんでした。

  • ダメだった:MCP の中では argparse などの import が禁止されていて、コードのファイルをそのまま実行できませんでした。→ 次にこうした:形を作る部分だけを貼り付けて確かめました。
  • ダメだった:外から測る側のスクリプトが、shapely というライブラリがなくて途中で止まりました。Claude Code は「pip でのインストール禁止」の指示どおり、そこで止まりました。→ 次にこうした:あとから shapely を足して測り直し、全部合格しました。コードのずれではないので、直しの回数には数えていません。
  • ダメだった:最初にバックグラウンドで動かした分は、WSL のセッションが終わって起動しませんでした。→ 次にこうした:前面で動かして解決しました。

ローカルモデル3つでやってみた

1. コンテキスト 32k で動かした → 3つとも失敗

まず、コンテキスト(AI が一度に扱える文章の量)を32kにして動かしました。原因はどれもコンテキスト不足でした。Claude Code のシステムプロンプトと52個のツールの説明だけで、約19kトークンを使います。そこに作業のやりとりが重なって、途中で上限に当たりました。

  • FlashNextの2ビット版と3ビット版:途中でプロンプトが 32,811 トークンになり、上限の 32,768 を超えて止まりました。
  • Qwen3.8-27B:上限で応答が6回途中切れになり、止まりました。

どれも、STEP や STL はできていません。

2. コンテキストを 64k に上げてやり直した → 3つとも合格

64k に上げると、3つとも全部の項目に合格しました。外からの手助け(フィードバック)は3つとも0回です。作業中に実際に使ったコンテキストは、いちばん多くて36k〜38kでした。それぞれ、途中でこうつまずいています。

  • FlashNextの2ビット版(182秒):Circle() に center という引数がなく、TypeError。→ スケッチの平面の位置を穴の中心に置く書き方に直しました(自己申告の直し1回)。
  • FlashNextの3ビット版(143秒):Locations() に数字を3つばらばらに渡して ValueError。→ タプル1つにまとめて直しました(直し1回)。
  • Qwen3.8-27B(897秒):MCP の上で書き方の試行錯誤が5件ありました。その中で、穴9個が全部原点に重なってしまうミスがあり、体積のずれ(159,921)を MCP の上で試しているうちに自分で見つけて直しています。そのあと書いたコードは1回目で合格したので、コードの直し(自己申告)は0回です。

結果

Claude Code(クラウド)FlashNextの2ビット版FlashNextの3ビット版Qwen3.8-27B
動かした場所・モデルクラウド・Claude Opus 5.5ローカル・Qwen3.8-Flash-Next IQ2_XSローカル・Qwen3.8-Flash-Next IQ3_Sローカル・Qwen3.8-27B(Unslothが配っている量子化版「UD-Q5_K_XL」)
動かし方Claude Code 2.1.302(WSL)Claude Code 2.1.305(Windows)→ Strata v0.2.0-betaClaude Code 2.1.305(Windows)→ Strata v0.2.0-betaClaude Code 2.1.305(Windows)→ Ollama 0.34.0(hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL)
32k(試していない)失敗(82秒・8ターン)失敗(85秒・6ターン)失敗(662秒・9ターン)
結果(ローカルは 64k)合格※2合格合格合格
かかった時間約4分182秒(3.0分)143秒(2.4分)897秒(15.0分)
ターン数27332737
直し(自己申告)0回1回1回0回
外からの手助け0回※0回0回0回
使ったコンテキストの最大(記録なし)37,59236,40036,441
おもなつまずきMCPで import 禁止、測定側に shapely がないCircle の TypeErrorLocations の ValueError穴が原点に重なる(自分で発見)

※ クラウドの Claude Code は、測る側のスクリプトに shapely を足して測り直している(コードの直しではない)。 ※2 クラウドのモデルでは、64k の設定はしていない。

できた形は4つとも同じでした。外形 40×100×40、穴9個(直径4.000、深さ25.000、平底、位置のずれ0)。

できた形を同じ向きで見比べる

4つのモデルが書き出したSTLを、同じカメラ・同じ縮尺・同じ背景と照明で描きました(Blender 4.2、正投影、拡大縮小・回転なし。底面の中心を原点にそろえただけ)。大きさが違えば、そのまま違って見えます。

斜め上から

4モデルのリフィル立てを斜め上から同じ条件で描いた比較画像

真上から(穴の並び)

4モデルのリフィル立てを真上から同じ条件で描いた比較画像

正面から

4モデルのリフィル立てを正面から同じ条件で描いた比較画像

Claude Code(クラウド)FlashNextの2ビット版FlashNextの3ビット版Qwen3.8-27B
斜め上Claude Code 斜め上FlashNext 2ビット版 斜め上FlashNext 3ビット版 斜め上Qwen3.8-27B 斜め上
真上Claude Code 真上FlashNext 2ビット版 真上FlashNext 3ビット版 真上Qwen3.8-27B 真上
書き出したファイルrefill_stand.step / .stlrefill_stand_a_iq2xs.step / .stlrefill_stand_b_iq3s.step / .stlrefill_stand_c_ollama27b.step / .stl
ダウンロードSTEP・STLSTEP・STLSTEP・STLSTEP・STL

※ どれも簡単な形なので、特にダウンロードして使うほどのモデルではありません。

3Dで回して見比べるページ:4つのモデルを並べた3D表示

やってみて思ったこと

ローカルの3つのモデルは、それぞれどうだったか

モデル動かし方32k64k時間・ターン直し(自己申告)つまずき
FlashNextの2ビット版(IQ2_XS)ローカル(Strata v0.2.0-beta)失敗(82秒・8ターン)合格182秒(3.0分)・33ターン1回Circle() に center がなく TypeError。スケッチの平面で回避
FlashNextの3ビット版(IQ3_S)ローカル(Strata v0.2.0-beta)失敗(85秒・6ターン)合格143秒(2.4分)・27ターン1回Locations() に数字3つを渡して ValueError。タプルに直した
Qwen3.8-27B(Unslothが配っている量子化版「UD-Q5_K_XL」)ローカル(Ollama 0.34.0、hf.co/unsloth/Qwen3.8-27B-GGUF:UD-Q5_K_XL)失敗(662秒・9ターン)合格897秒(15.0分)・37ターン0回試行錯誤5件。穴9個が原点に重なり、体積のずれを自分で見つけて直した
  • FlashNextの2ビット版:32kでは止まりましたが、64kで合格しました。かかった時間は182秒です。直しは1回でした。
  • FlashNextの3ビット版:32kでは止まりましたが、64kで合格しました。3つのうちいちばん短い143秒でした。直しは1回でした。
  • Qwen3.8-27B:32kでは止まりましたが、64kで合格しました。時間は3つのうちいちばん長い897秒(15.0分)でした。コードの直しは0回でした(試している途中のミスは自分で直しています)。

全体で分かったこと

  • この課題を Claude Code + MCP で動かすなら、コンテキストは32kでは足りませんでした。仕組みだけで約19kを使い、作業中は37k前後まで増えたからです。64kで3つとも合格しました。
  • FlashNextの2ビット版と3ビット版は、クラウドの Claude Code(約4分)と同じくらいの時間で合格しました。Qwen3.8-27B は15分で、FlashNextの2つの5〜6倍かかりました。
  • ただし、比べるときの注意がいくつかあります。
    • 試したのは簡単な形1つで、実行は組み合わせごとに1回ずつです。差には偶然も入っています。
    • FlashNext と Qwen の差は、モデルだけの差ではありません。動かす仕組み(ランタイム)も、量子化の仕方も、中継のしかたも違います。
    • クラウドの実行とローカルの実行では、Claude Code の版や動かした場所(WSL と Windows)が違います。課題文はパスと Python の呼び方だけ変えて、採点のスクリプトは同じものを使いました。

やってみて、意外にどのモデルもちゃんとできているな、ということが分かりました。できた形も、見た目はほぼ正しいと思います。ただ、頼んだ形が簡単すぎて、あまり差が出ませんでした。

次にやること

次は、もう少し難しい形を作ってもらって比べるのがいいかな、と思っています。


このブログの3Dプリントで使っているもの 【PR】

【PR】この記事にはAmazonアソシエイトリンクを含みます。