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

無料レッスン

AIの透明性と記録の残し方

このレッスンのあとで: AI だと人に伝え、AI が作ったものに表示を付け、審査に要る記録を残せる。

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

相手は人か、プログラムか

AI の透明性とは、相手が AI システムだと人に伝え、AI が作ったものを示すことです。プログラムが書いた返事だと知っていれば、人はその返事を違う目で見ます。

もう半分は、記録を残すことです。何か問題が起きたとき、審査では、何を聞かれ、どのモデルが答え、だれが承認したかを知る必要があります。

このレッスンのゴール

メモ

AI だと人に伝え、AI が作ったものに表示を付け、審査に要る記録を残せる。

キーワード

ことばいみれい
開示相手が AI だと人に伝えること
表示AI が作ったと分かる目に見える印
記録AI の一つの答えを保存したもの
モデルの版実際に答えたモデルの正確な版v3
保存期間記録を残しておく長さ
システムカードAI 機能を説明する短い一枚

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

相手が AI だと伝える

人が返事を頼りにする前に、目に入る場所で伝えます。チャットの最初、答えのすぐ横、電話の最初のひと言に置きます。

できることとできないこと、人に代わる方法も一行で添えます。期待の伝え方は「AI機能への期待をどう伝えるか」で詳しく学びます。

AI が作ったものに表示を付ける

モデルが作った文章、画像、要約には、読む人に見える短い表示を付けます。表示が伝えるのは、だれが作ったかです。正しいかどうかではありません。

ファイルが製品の外に出るときは、ファイルの情報欄にも書いておきます。そうすれば、だれかがコピーしても表示が残ります。

例: どこで伝えるか

場所人に見えるもの
チャットの最初AI アシスタントがお答えします。人に代わることもできます。
画像の下AI で作成
メールの下書きの末尾AI が下書きし、高橋 翔が確認しました
電話の最初のひと言こちらは自動音声のアシスタントです。

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

記録に入れるもの

記録には、何を聞かれたか、どのモデルの版が答えたか、操作をだれが承認したかを入れます。版がなければ、どのモデルが間違えたのかだれにも分かりません。

記録は審査に要る間だけ残し、要らない個人データは入れません。安全な記録は「AIアプリで安全に記録する」で、個人データは「AIアプリのプライバシーとデータ保護」で学びます。

よくある間違い

注意

「記録は多いほど安全」と考え、何でも永久に残しがちです。個人データだらけの記録を何年も残すと、それ自体が危険になります。審査に要る欄だけを、要る間だけ残します。

短いシステムカードで機能を説明する

システムカードは、モデルカードとも呼ばれ、AI 機能やモデルについての短い一枚です。目的、限界、評価のしかた、責任者、連絡先を書きます。

その機能を一度も見たことのない人に向けて書きます。空の欄は抜けです。審査の抜けと同じです。

決まりがこれを求める場面が増えている

EU や英国の決まりは、AI だと伝えること、作ったものに表示を付けること、記録を残すことを、作り手に求める場面が増えています。何をいつから求めるかは、場所によって違い、変わっていきます。

これは一般的な情報であり、法的助言ではありません。最新の公式な文書を確かめるか、資格のある人に相談してください。これらをしただけで、製品がどれかの決まりを満たすことにはなりません。

例: 短いシステムカード

欄注文アシスタント
目的注文についての質問に答える
限界支払いと住所は変えられない
評価記録した 40 件のうち 37 件が合格
責任者山本 葵
連絡先[email protected]

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

モデル用の補助を書く(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 KEEP_DAYS = 90; // これより古い記録は消す' '// サポート用アシスタントの架空の記録。経過日数は時計ではなく、ただの日数。' 'const records = [' '  { id: 1, asked: \"注文した品はどこですか\", version: \"v3\", action: false, approvedBy: \"\", age: 12, personal: false },' '  { id: 2, asked: \"注文 88 を返金して\", version: \"v3\", action: true, approvedBy: \"\", age: 30, personal: false },' '  { id: 3, asked: \"住所を変えてください\", version: \"\", action: true, approvedBy: \"高橋 翔\", age: 120, personal: false },' '  { id: 4, asked: \"なぜ二回請求されたのですか\", version: \"v2\", action: false, approvedBy: \"\", age: 5, personal: true },' '];' > records.js"

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

記録のチェックを書く(2)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function problems(r) {' '  const found = [];' '  if (r.asked.trim() === \"\") found.push(\"質問がない\");' '  if (r.version.trim() === \"\") found.push(\"モデルの版がない\");' '  if (r.action && r.approvedBy.trim() === \"\") found.push(\"承認者がいない\");' '  if (r.age > KEEP_DAYS) found.push(\"保存期間を過ぎた\");' '  if (r.personal) found.push(\"不要な個人データ\");' '  return found;' '}' >> records.js"

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

記録のチェックを書く(3)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// 機能の短いカード。どの欄にも言葉が入っているべき。' 'const card = { purpose: \"注文の質問に答える\", limits: \"支払いは変えられない\", evaluations: \"\", owner: \"山本 葵\", contact: \"[email protected]\" };' 'const labels = { purpose: \"目的\", limits: \"限界\", evaluations: \"評価\", owner: \"責任者\", contact: \"連絡先\" };' >> records.js"

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

記録のチェックを書く(4)

コマンド
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  records.forEach(function (r) {' '    const p = problems(r);' '    console.log(\"記録 \" + r.id + \": \" + (p.length === 0 ? \"問題なし\" : p.join(\"、\")));' '  });' '  const empty = Object.keys(card).filter(function (k) { return card[k].trim() === \"\"; });' '  console.log(\"カードに足りない欄: \" + (empty.length === 0 ? \"なし\" : empty.map(function (k) { return labels[k]; }).join(\"、\")));' '  const q = \"AI と話していることを利用者に伝えるため、チャット画面に出す短い一文を書いてください。\";' '  const r = await ask([{ role: \"user\", content: q }], \"AI アシスタントがお答えします。間違えることがあり、いつでも人に代われます。\", 60);' '  console.log(\"お知らせの例: \" + r.text);' '}' 'main();' >> records.js"

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

記録のチェックを実行する

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

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

出力の例

行示していること
記録 1: 問題なし足りないものはない
記録 2: 承認者がいないだれの名前もない返金
記録 3: モデルの版がない、保存期間を過ぎたどのモデルが答えたか分からず、古すぎる
記録 4: 不要な個人データ審査に要る以上のものを持っている
カードに足りない欄: 評価カードがテストについて何も書いていない
お知らせの例: ...あなた自身の呼び出し。実行ごとに変わるか、記録済みサンプルと出る

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

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

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