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

無料レッスン

評価結果を読んで直す点を選ぶ

このレッスンのあとで: 私は、評価結果を読み、最初に何を変えるかを決められます。

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

評価から直す点を選ぶ

評価結果を読むとは、失敗を種類ごとにまとめ、いちばん安く、いちばん多く直せるものを変えることです。どの変更も、直るケースと壊れるケースを生むので、大切です。

図書館の最初の版は、10件中5件に合格しました。チームには案が4つあります。最初に出す価値があるのは一つだけで、得点がそれを教えてくれます。

このレッスンのゴール

メモ

私は、評価結果を読み、最初に何を変えるかを決められます。

キーワード

ことばいみれい
失敗の種類ケースが失敗した理由invented
候補行おうか考えている変更
リグレッション前は合格し、今は失敗するケース
1000件あたりの費用答え1000件を作る費用
最も安い直し方得られるものに対して費用が最小の変更

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

失敗を種類ごとにまとめる

10件中5件という得点は、どれだけ間違いがあるかを示します。なぜかは示しません。5つの失敗を種類ごとにまとめると、やることが見えてきます。

種類ごとに、原因も、安い直し方も違います。種類まるごとへの直し方は、5件への5つの直し方より優れています。

例: 5つの失敗

種類ケースありそうな原因
作り話c3、c7プロンプトが推測を禁じていない
あいまいc5質問に一般的な言葉で答えた
断りc8プロンプトが慎重すぎる
長すぎc9長さを制限するものがない

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

まず最も安い直し方を試す

候補を費用の順に並べます。プロンプトに一行足すと、答えのたびに費用が少しだけ増えます。長いプロンプトは、もう少し増えます。大きなモデルは、約3倍かかります。

最も安いものを先に動かして、採点します。次のものは、得点が求めたときだけ重ねます。

例: 4つの候補

実行変更合格1000件あたりの費用
v1最初の版540
v2シートの数字だけを使う742
v3v1 に「一文で答える」を足す442
v4v2 に「シートに事実があれば答える」を足す944
v5v1 を大きなモデルで動かす7130

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

1件を直し、2件を壊す

実行 v3 は、長すぎる答え c9 を直します。ただ、合格していた c2 と c10 も壊します。一文という規則が、数字を削ったからです。合計は5から4に下がりました。

合計は、これを隠します。二つの実行をケースごとに比べ、何が直り、何が壊れたかを書き出します。

よくある間違い

注意

何かを直した変更は良い変更だと考える人が多いです。壊したものを見てください。合格していたものを何も壊さないとき、または壊れるものを承知で受け入れるときだけ、変更を出します。

結果を読む道具を書く(1)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' '// ケース c1 から c10 の、記録済みの実行5つ。v2: シートの数字だけを使う。' '// v3: v1 に「一文で答える」を足す。v4: v2 に「シートに事実があれば答える」を足す。' '// v5: 最初のプロンプトを、大きなモデルで動かす。費用は答え1000件あたり。' 'const RUNS = {' '  v1: { cost: 40, kinds: \"ok ok invented ok vague ok invented refusal long ok\" },' '  v2: { cost: 42, kinds: \"ok ok ok ok vague ok ok refusal long ok\" },' '  v3: { cost: 42, kinds: \"ok vague invented ok vague ok invented refusal ok vague\" },' '  v4: { cost: 44, kinds: \"ok ok ok ok ok ok ok ok long ok\" },' '  v5: { cost: 130, kinds: \"ok ok ok ok vague ok ok refusal long ok\" },' '};' 'for (const name in RUNS) RUNS[name].kinds = RUNS[name].kinds.split(\" \");' 'fs.writeFileSync(\"runs.json\", JSON.stringify(RUNS, null, 1));' > analyse.js"

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

結果を読む道具を書く(2)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function isOk(kind) { return kind === \"ok\"; }' 'function failures(kinds) {' '  const out = {};' '  kinds.forEach(function (k) { if (isOk(k) === false) out[k] = (out[k] || 0) + 1; });' '  return out;' '}' 'const base = RUNS.v1.kinds;' 'let best = null;' >> analyse.js"

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

結果を読む道具を書く(3)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'for (const name in RUNS) {' '  const kinds = RUNS[name].kinds;' '  const fixed = [];' '  const broke = [];' '  kinds.forEach(function (k, i) {' '    if (isOk(base[i]) === false && isOk(k)) fixed.push(\"c\" + (i + 1));' '    if (isOk(base[i]) && isOk(k) === false) broke.push(\"c\" + (i + 1));' '  });' '  const passed = kinds.filter(isOk).length;' '  console.log(name, \"合格 \" + passed, \"費用 \" + RUNS[name].cost, \"直った [\" + fixed + \"]\", \"壊れた [\" + broke + \"]\", JSON.stringify(failures(kinds)));' '  if (name === \"v1\" || broke.length > 0) continue;' '  const cost = RUNS[name].cost;' '  if (best === null || passed > best.passed || (passed === best.passed && cost < best.cost)) best = { name, passed, cost };' '}' 'console.log(\"選択: \" + best.name + \" (合格 \" + best.passed + \"、費用 \" + best.cost + \")\");' >> analyse.js"

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

5つの実行を読む

コマンド
docker exec -w /home/node/project agent node analyse.js

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

Run の表示

行意味
v1合格5、費用40、直ったものも壊れたものもなし
v2合格7、c3 と c7 が直り、壊れたものなし
v3合格4、c9 が直り、c2 と c10 が壊れた
v4合格9、4件が直り、壊れたものなし
v5合格7、費用130
最後の行選択: v4 (合格 9、費用 44)

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

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

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