クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

言語モデルの選び方

このレッスンのあとで: 仕事に合うモデルを選び、その理由を言える。

60分のレッスンコマンド2件AI コーディングエージェントのラボ:opencode でコードを説明・修正し、その結果を確かめる

一番大きいモデルが最良とは限らない

言語モデルを選ぶとは、仕事にモデルを合わせることです。判断の材料は、費用、速さ、大きさ、読める文章の量、動く場所です。

この選択は、呼び出しのたびに繰り返されるので重要です。必要より十倍高いモデルを百万回呼べば、何の得もなく、大きな請求になります。

この課のゴール

メモ

仕事に合うモデルを選び、その理由を言える。

キーワード

ことばいみ
コンテキストウィンドウモデルが一回の呼び出しで読める最大の文章量
レイテンシ返答を待つ時間
トークン単価一トークンあたりの値段。100万単位で示すことが多い
ホスト型事業者が動かし、インターネット越しに使うもの
ローカル自分のコンピュータで動かすもの

学生が入力するセルは、このプレビューでは空白です。

比べる五つのこと

まず、仕事から考えます。仕事には大きさがあります。たとえば、入る文章の量と、出る文章の量です。人が許せる待ち時間と、予算もあります。

次に、表のとおり、各モデルに五つの問いをします。一つでも満たさないモデルは、ほかが優れていても外します。

五つの問い

要素たずねること
費用この仕事のトークンはいくらか。
速さ人にとって十分に速い返答か。
大きさ仕事の文章を全部読めるか。
品質自分の例で十分によいか。
場所文章を自分のコンピュータの外へ出してよいか。

学生が入力するセルは、このプレビューでは空白です。

ラボのモデルを二つの仕事で測る

コマンド
docker exec -w /home/node/project agent node -e 'const lab = require("./lab.js"); const asks = [ { name: "短い", max: 10, text: "果物を一つ挙げてください。", sample: "りんご。" }, { name: "長い", max: 100, text: "雨の日の様子を三文で書いてください。", sample: "雨が窓をたたいています。通りは静かで灰色です。" }, ]; (async () => { for (const one of asks) { const started = Date.now(); const got = await lab.ask({ max_tokens: one.max, messages: [{ role: "user", content: one.text }] }, one.sample); const ms = Date.now() - started; if (got.label === "記録済みのサンプル") { console.log(one.name + ":記録済みのサンプル、時間は測っていません。"); continue; } const used = got.data.usage ? got.data.usage.completion_tokens + " トークンを生成" : "返答にトークン数なし"; console.log(one.name + ":モデルの答え、" + ms + " ms、" + got.text.length + " 文字、" + used + "。"); } })();'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

呼ぶ前に費用を計算する

価格は、100万トークンあたりで示されます。入力トークンの価格と、通常はそれより高い出力トークンの価格があります。呼び出し一回の費用は、二つの積の合計です。入力トークンに入力価格をかけ、出力トークンに出力価格をかけて足します。

典型的な仕事のトークン数を数え、一回分を計算し、予想する呼び出しの回数をかけます。ここで使う価格表は作り話で、本物なのは方法だけです。

作り話の三つのモデルで仕事を計算する

コマンド
docker exec -w /home/node/project agent node -e '/* 作り話の価格表です。価格は100万トークンあたりの単位数です。 */ const models = [ { name: "小", inPrice: 20, outPrice: 80, delay: 600, context: 8000 }, { name: "中", inPrice: 100, outPrice: 400, delay: 1500, context: 32000 }, { name: "大", inPrice: 500, outPrice: 2000, delay: 4000, context: 128000 }, ]; const job = { inTokens: 3000, outTokens: 300, maxDelay: 2000, budget: 0.5 }; console.log("仕事:入力 " + job.inTokens + " トークン、出力 " + job.outTokens + " トークン、" + job.maxDelay + " ms 以内の返答。"); for (const m of models) { const cost = (job.inTokens * m.inPrice + job.outTokens * m.outPrice) / 1000000; const ok = job.inTokens + job.outTokens <= m.context && m.delay <= job.maxDelay && cost <= job.budget; console.log(m.name + " 費用 " + cost.toFixed(3) + " 単位、遅延 " + m.delay + " ms、" + (ok ? "合う" : "合わない")); }'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

例:一つの仕事、三つのモデル

モデル一回の費用遅延合うか
小0.084 単位600 msはい
中0.420 単位1500 msはい
大2.100 単位4000 msいいえ、遅すぎて予算の 0.5 単位も超える

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

一番大きいモデルがいつも最良だと考える人が多くいます。たいてい一番遅く一番高く、簡単な仕事なら小さなモデルで十分なこともあります。自分の例で各モデルを試し、合格した中で一番安いものを選びます。

動く場所が条件を変える

ホスト型のモデルは、事業者が動かします。文章をインターネット越しに送り、トークンごとに支払います。ローカルのモデルは自分のコンピュータで動きます。文章は手元に残りますが、機材が要り、遅いこともあります。

私的な文章を扱う仕事は、ローカルに限られるかもしれません。そのときの規則は、許されたものの中で一番安いもの、です。

さらに:自分の仕事を計算する

費用のスクリプトの仕事を、自分が作りたいものに変えます。入出力のトークン数と、人が待てる時間を決めて、実行してください。

どのモデルを選び、どの要素が決め手だったかを書きましょう。その選択を信じる前に、次に何を試すかも言ってください。

このラボとソースについて: AI コーディングエージェントのラボ:opencode でコードを説明・修正し、その結果を確かめる

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。