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

無料レッスン

はっきり伝えるプロンプト

このレッスンのあとで: あいまいな頼みを、役割、依頼、制限、形式を持つプロンプトに直せます。

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

四つの部分で伝わるプロンプト

プロンプトとは、言語モデルに送る文章のことです。モデルが読むのはその文章だけで、書かなかったことは推測できません。

「試合について教えて」では、毎回ちがう答えが返ります。役割、依頼、制限、形式を書けば、使える答えに近づきます。

このレッスンのゴール

メモ

あいまいな頼みを、役割、依頼、制限、形式を持つプロンプトに直せます。

キーワード

ことばいみ
プロンプトモデルに送る文章
役割モデルに演じてほしい立場
依頼今してほしい一つの仕事
制限答えが超えてはいけない範囲
形式答えの形
チェックリスト確かめる項目の一覧

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

プロンプトの四つの部分とは

役割は、モデルが演じる立場です。依頼は、してほしい一つの仕事です。制限は、長さや使う情報など、答えの範囲です。形式は、一文や箇条書きなど、答えの形です。

各部分を、名前を付けて一行ずつ書きます。名前があると、読みやすく、確かめやすくなります。

同じ頼みを悪く書く、よく書く

部分あいまいはっきり
役割(なし)あなたは学校新聞の記者です。
依頼試合について教えて。下の結果の見出しを書いて。
制限(なし)一文だけ。事実だけを使う。
形式(なし)記号なしの普通の文。

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

モデル用の補助を書く(1)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// 応答に含まれるトークン数。なければ null。' 'function count(data, name) {' '  return data.usage && typeof data.usage[name] === \"number\" ? data.usage[name] : null;' '}' > model.js"

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

モデル用の補助を書く(2)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function ask(messages, sample, max) {' '  try {' '    const res = await fetch(base + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, inTokens: count(d, \"prompt_tokens\"), outTokens: count(d, \"completion_tokens\"), recorded: false };' '  } catch (error) {' '    console.log(\"記録済みサンプル: モデルが答えませんでした (\" + error.message + \")。\");' '    return { text: sample, inTokens: null, outTokens: null, recorded: true };' '  }' '}' 'module.exports = { ask };' >> model.js"

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

プロンプトの採点を書く(1)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const vague = \"試合について教えて。\";' 'const good = [' '  \"役割: あなたは学校新聞の記者です。\",' '  \"依頼: 下の結果について、見出しを一行書いてください。\",' '  \"制限: 一文だけ。与えた事実だけを使うこと。\",' '  \"形式: 記号なしの普通の文。\",' '  \"事実: 北高 3 対 2 南高。決勝点は田中さん。\",' '].join(\"\n\");' > say1.js"

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

プロンプトの採点を書く(2)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const PARTS = [\"役割\", \"依頼\", \"制限\", \"形式\"];' 'function missing(prompt) {' '  const lines = prompt.split(\"\n\");' '  const gone = [];' '  for (const part of PARTS) {' '    const has = lines.some(function (l) {' '      return l.startsWith(part + \": \") && l.length > part.length + 2;' '    });' '    if (has === false) gone.push(part);' '  }' '  return gone;' '}' >> say1.js"

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

プロンプトの採点を書く(3)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const p of [vague, good]) {' '    const gone = missing(p);' '    console.log(\"点数 \" + (4 - gone.length) + \" / 4、足りない部分: \" + (gone.join(\"、\") || \"なし\"));' '  }' '  const sample = \"北高が南高に 3 対 2 で勝ち、決勝点は田中さんでした。\";' '  const reply = await ask([{ role: \"user\", content: good }], sample, 80);' '  console.log(\"モデル: \" + reply.text);' '}' 'main();' >> say1.js"

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

二つのプロンプトを採点する

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

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

Run が表示するもの

最初の二行は、あいまいなプロンプトと書いたプロンプトの点数です。あいまいなほうは 0 点で、四つとも足りません。書いたほうは 4 点です。

最後の行は、ラボのモデルの短い答えです。モデルがなければ、先に「記録済みサンプル」と出ます。答えの言葉は実行ごとに変わることがあり、それは普通です。

よくある間違い

注意

「長いプロンプトほどよい」と考えがちです。そうではありません。各部分があり、それぞれが一つのことを言っているプロンプトがよいのです。答えを絞るか、形を決める行だけを足してください。

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

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