モデルの選び方
ランキングはモデルの平均的な水準を教えてくれますが、あなたのタスクでどうかは教えてくれません。20 問で四つのモデル構成の正答率、速度、費用を比べ、自分の小さなテストセットで選ぶ方法を身につけます。
- 約 40 分
- 難易度:入門
- 検証:2026-09-14 deepseek-flash、deepseek-v4-pro
コードと実行結果は実際に動かしたときのまま載せているため、コメントと出力は中国語です。
新しいモデルはほぼ毎週登場し、どれもが何かのランキングで 1 位を取ったと言います。ランキングを見てモデルを選ぶのは、学歴だけを見て人を採用するようなものです。参考にはなりますが、その人があなたの仕事をうまくこなせるかどうかは決まりません。
この課では、もっと信頼できる方法を紹介します。自分のタスクから 20 問を用意し、候補のモデルに全部解かせて、どれが正しく、どれが速く、どれが安いかを見ます。たいしてお金もかからず、30 分で結果が出ます。
モデルを選ぶときに見ること
| 観点 | 問うべきこと |
|---|---|
| 品質 | 私のタスクで正しく答えられるか? |
| 料金 | 実際の利用量で、月にいくらかかるか? |
| 速度 | ユーザーはどれくらい待つのか?最初の文字が出るまで、全文を書き終えるまで、それぞれどれくらいか? |
| 機能 | ツール呼び出しに対応しているか?JSON 出力に対応しているか?画像を見られるか?コンテキストは十分に長いか? |
| 提供形態 | クラウドの API を呼べるか?データを社外に出してよいか?ローカルでのデプロイが必要か? |
| 安定性 | レート制限は厳しいか?障害は何回あったか?モデルが突然提供終了にならないか? |
品質が第一ですが、それだけではありません。正答率 95% でも 10 秒待たされるモデルは、チャット画面ではユーザーに遅いと思われます。正答率 90% でも 10 倍安いモデルは、1 日に数十万回呼ばれるバックグラウンド処理にはむしろ向いているかもしれません。
モデルのおおまかな種類
クローズドとオープンウェイト。クローズドモデルは API を通してしか呼べず、モデルそのものは手に入りません。オープンウェイトのモデルはパラメータを公開しているので、自分のサーバーにダウンロードして動かせ、データも外に出ませんが、GPU と運用は自分で用意する必要があります。オープンウェイトのモデルをローカルにデプロイする方法は第 10 モジュールで扱います。
思考するものとしないもの。以前は汎用モデルと推論モデルが別々のモデルでしたが、今は多くのモデルがパラメータ一つで切り替えられます。DeepSeek の deepseek-flash と deepseek-v4-pro はどちらも思考モードと非思考モードに対応していて、既定で思考がオンです。思考モードはより正確ですが、より遅く高くなります。
大きいものと小さいもの。同じ会社の製品ラインには、たいてい安くて速いモデルと、高くて能力の高いモデルがあります。DeepSeek の flash と pro のように。直感的には高いほうが必ずよさそうですが、次の実験が示すとおり、そうとは限りません。
2026 年 9 月時点で、中国国内から直接使える主な選択肢には DeepSeek、Alibaba Cloud 百煉(通義千問シリーズ)、Kimi などがあり、モジュール 00 第 2 課にそれぞれの API アドレスを載せています。具体的なモデルはどんどん更新されるので、ここでは一覧は載せません。各社のドキュメントで最新のものを見てください。大事なのは次の比較方法で、これは古びません。
実験:20 問で四つの構成を比べる
正解のある問題を 20 問用意しました。算数、単位換算、文字数え、漢字数え、簡単な推論、古詩、Python の常識です。そして四つの構成すべてに解かせました。deepseek-flash と deepseek-v4-pro、それぞれ思考オンとオフです。
プログラムの中心部分は次のとおりです(完全なコードは code/01-llm-basics/model_eval.py、費用計算には第 4 課で書いた cost_usd を使っています)。
QUESTIONS = [
("17 乘以 23 等于多少?", ["391"]),
("9.11 和 9.9 哪个大?", ["9.9"]),
("“秋天的叶子一片片落下”这句话有几个字?", ["10"]),
("如果今天是星期三,100 天后是星期几?", ["星期五", "周五"]),
("鸡兔同笼,共 35 个头,94 只脚,兔子有几只?", ["12"]),
# ……一共 20 道
]
def normalize(text):
# 去掉空格和标点,再去掉结尾的单位和"大"这类多余的字,只比较核心答案。
# 注意不能去掉小数点,否则 9.9 和 99 就分不清了。
text = re.sub(r"[\s,。,!!??::“”\"'、]", "", text.lower()).rstrip(".")
return re.sub(r"(个字|个|人|只|天|平方厘米|厘米|摄氏度|度|次|大)$", "", text)
def run_one(model, thinking, question):
start = time.time()
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "只回答最终答案本身,不要写单位以外的任何解释。"},
{"role": "user", "content": question},
],
extra_body={"thinking": {"type": "enabled" if thinking else "disabled"}},
)
return response.choices[0].message.content.strip(), time.time() - start, response.usage
各構成について 10 スレッドで 20 問を並行して解かせ、何問正解したか、1 問あたり平均何秒か、合計いくらかかったかを集計し、間違えた問題を表示します。私が実行した結果です。
deepseek-flash(不思考): 答对 19/20,平均 0.8 秒/题,20 题共 0.0002 美元
答错:9.11 和 9.9 哪个大? → 9.11
deepseek-flash(思考): 答对 20/20,平均 0.9 秒/题,20 题共 0.0026 美元
deepseek-v4-pro(不思考): 答对 16/20,平均 0.9 秒/题,20 题共 0.0009 美元
答错:9.11 和 9.9 哪个大? → 9.11
答错:“秋天的叶子一片片落下”这句话有几个字? → 9
答错:一个正方形的周长是 24 厘米,它的面积是多少平方厘米? → 9
答错:单词 raspberry 里有几个字母 r? → 2
deepseek-v4-pro(思考): 答对 20/20,平均 2.1 秒/题,20 题共 0.0114 美元
結果を読む
思考モードで間違いがすべて直った。二つのモデルとも、思考をオンにすると 20 問全問正解でした。思考なしで間違えたのは、どれも「一歩ずつ進める」必要がある問題でした。小数の比較、文字数え、先に辺の長さを求めてから面積を求める問題です。
高いモデルがよいとは限らない。deepseek-v4-pro は思考をオフにすると 16 問しか正解せず、安い flash より 3 問少なくなりました。正方形の問題では「9」と答えていて、おそらく「周の長さ 24」を面積の手がかりと取り違えたのでしょう。高いモデルは、より難しく自由度の高いタスクでは有利なことが多いのですが、あなたの具体的なタスクでは、安いほうに劣ることも十分にありえます。だからこそ自分で測る必要があるのです。
同じ全問正解でも、料金と速度は大きく違う。flash 思考オンと pro 思考オンはどちらも 20/20 ですが、pro は 4 倍以上高く(0.0114 対 0.0026 ドル)、2 倍以上遅い(2.1 秒対 0.9 秒)のです。この問題セットについては、flash 思考オンがはっきりよい選択です。
思考なしの flash が最もコストパフォーマンスがよい。正答率 19/20 で、費用は思考オンのときの 10 分の 1 です。あなたのタスクに「小数の比較」のような落とし穴がなければ、これで十分かもしれません。
この実験の限界
結論を述べたので、この実験の当てにならない点もはっきりさせておきます。
20 問は少なすぎる。16 問正解と 17 問正解の差は、ただの運かもしれません。2 回実行したところ、deepseek-v4-pro 思考オフの成績は 1 回目が 17 問、2 回目が 16 問で、間違えた問題も完全には一致しませんでした。20 問は「明らかに大きく違う」ケースを見つけるのには向いていますが、「だいたい同じ」二つのモデルを区別するには、もっと多くの問題が必要で、しかも 1 問ごとに何回か実行する必要があります。
採点スクリプト自体も間違える。最初に実行したとき、flash 思考オンは 2 問を不正解と判定されました。一つは「9.9 大」(9.9 のほうが大きい)、もう一つは「10个字」(10 文字)という回答でした。答え自体は正しかったのに、私の normalize 関数が「大」や「个字」といった後ろの部分を取り除いていなかったのです。直してから実行し直して、ようやく上の結果が得られました。ですから、不正解と判定された問題は必ず一問ずつ見て、モデルが間違えたのか、採点が間違えたのかを確かめてください。
これらの問題はあなたのタスクではない。算数、文字数え、古詩は、あなたが取り組むカスタマーサポート、コーディング、契約情報の抽出とは違います。この問題セットは方法を示すためのものにすぎません。自分のプロジェクトのモデルを選ぶときは、問題を必ず実際のタスクから取ってください。
自分のプロジェクトのモデルを選ぶ
- 実際の問題を 20 問集める。実際の場面から選びます。ユーザーが実際にした質問、実際に処理するドキュメント。簡単なものも、モデルが間違えやすいとわかっているものも入れます。
- 正誤の判定方法を決める。正解があるものが一番よく、プログラムで自動的に照合します。自由回答(たとえばカスタマーサポートの返信文)なら、採点基準を書いて人が評価するか、別のモデルに評価させます。そのやり方はモジュール 06 第 2 課で扱います。
- 候補を 2~4 個選ぶ。たいていは安いものと高いものを一つずつ、それに思考のオンオフの組み合わせを加えます。
- 一通り実行して、間違えた問題を見る。正答率だけを見るのではなく、間違えた問題を一問ずつ見て、モデルの問題なのか、問題文や採点の問題なのかを判断します。
- 実際の利用量で費用を計算する。第 4 課の
cost_usdを使い、1 日の呼び出し回数から月額を見積もります。 - 要件を満たす中で最も安いものを選ぶ。正答率が基準を満たしたら、次に速度と料金を見ます。
この 20 問は捨てないでください。今後モデルを替えたり、プロンプトを変えたり、バージョンを上げたりするたびにこれを実行すれば、悪くなっていないかがわかります。モジュール 06 でこれを本格的な評価セットに拡張します。
練習問題
model_eval.pyのQUESTIONSに、モデルが間違えやすいと思う問題を 5 問加えてください。たとえば複数ステップの日付計算や、罠のある論理問題です。四つの構成のどれが最もよい成績を出すでしょうか。- 他社の API キーを持っているなら、
CONFIGSに他社のモデルを加えて(run_oneを修正して別のクライアントを使えるようにし、他社が認識しないthinkingパラメータを取り除く必要があります)、結果を比べてください。 model_eval.pyを同じ構成で 3 回続けて実行し、毎回の正解数が同じか見てください。どの問題が正解したり間違えたりしますか。
確認テスト
1. ランキングで 1 位のモデルでも、自分の問題でテストする必要があるのはなぜですか?
ランキングが測っているのは汎用的な問題での平均的な水準で、あなたが気にしているのは具体的なタスクでの成績です。この二つは大きく違うことがあります。この課の実験では、より高価な deepseek-v4-pro が思考なしのモードでは、安い flash より多く間違えました。自分のタスクの実際の問題でテストして初めて、どのモデルがあなたに合っているかがわかります。
2. 20 問でテストしたら、モデル A は 17 問、モデル B は 16 問正解しました。A のほうが B よりよいと言えますか?
言えません。20 問は少なすぎ、1~2 問の差はただのランダムな揺らぎかもしれません。同じモデルを 2 回実行しても成績が違うことがあります。小さなテストセットは差が明らかなケースを見つけるのに向いています。近いモデルを区別するには、もっと多くの問題を用意し、1 問ごとに何回か実行して平均を取る必要があります。
3. 評価スクリプトが、モデルは 3 問間違えたと表示しました。次に何をすべきですか?
その 3 問の元の回答を一つずつ見て、モデルが本当に間違えたのか、採点スクリプトが誤判定したのか(たとえば回答に単位や句読点が余分に付いていた)を確かめます。問題文と正解そのものに問題がないかも確認します。確認できたら、間違えた問題の種類に応じて、モデルを替えるか、思考をオンにするか、プロンプトを変えるかを決めます。
質問と議論
このレッスンでつまずいたところは、ここで質問してください。他の人の質問に答えるのも歓迎です。
質問で 3 ポイント、回答で 6 ポイント。審査を通過すると公開されます。
議論を読み込んでいます…