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

無料レッスン

言語モデルの仕組み

このレッスンのあとで: 言語モデルがどのように文章を作るかを、数式を使わずに説明できる。

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

モデルは次の言葉を予想する

言語モデルは、次に来る言葉を予想して文章を書くプログラムです。スマホが次の単語を提案するのは、その小さな例です。

モデルの上に作る機能は、この予想の性質を受け継ぎます。仕組みが分かれば、不思議な答えも理解できます。

このレッスンのゴール

メモ

言語モデルがどのように文章を作るかを、数式を使わずに説明できる。

キーワード

ことばいみ
モデル大量の文章からパターンを学んだプログラム
プロンプトモデルに送る文章
トークン文章の小さなかたまり。単語や単語の一部のこと
コンテキスト1回の答えのためにモデルが見る文章すべて
温度予想のばらつきの大きさを決める設定

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

モデルは1トークンずつ書く

モデルは答え全体を計画しません。プロンプトを読み、次のトークンを予想して足し、また予想します。

これを答えが終わるまでくり返します。トークンは、そこまでに書いた文章すべて、つまりコンテキストから選ばれます。

例:次の言葉

ここまでの文章次の言葉10回中の回数
今日は天気がよいので、公園を散歩6
今日は天気がよいので、公園を歩き3
今日は天気がよいので、公園を掃除1

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

次の言葉をたずねる

コマンド
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());post('「今日は天気がよいので、公園を」の続きを、一語だけで答えてください。',12,0.7).then(j=>console.log('モデル:'+j.choices[0].message.content)).catch(e=>console.log('記録済みサンプル(モデルの応答なし):散歩'))"

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

同じプロンプトでも答えは変わる

モデルは、可能なトークンそれぞれに確率をつけ、その中から1つを引きます。温度は、引き方の大胆さを決める設定です。温度が低いと、ほぼ必ず最も確からしいトークンを選びます。高いと、珍しいトークンもよく選びます。

モデルは電卓ではありません。2回たずねると、答えが2つ返ることがあります。

同じプロンプトを2回送る

コマンド
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());const s=['散歩','歩き'];(async()=>{for(let i=0;i<2;i++){let t;try{const j=await post('「今日は天気がよいので、公園を」の続きを、一語だけで答えてください。',12,1);t='モデル:'+j.choices[0].message.content}catch(e){t='記録済みサンプル(モデルの応答なし):'+s[i]}console.log((i+1)+'回目:'+t)}})()"

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

確からしいことと正しいことは別

モデルは文章から学んだので、もっともらしい文を書くのが得意です。事実を調べることはできません。間違った文がもっともらしく見えれば、落ち着いた自信のある調子で書いてしまうことがあります。

大切なことを確かめるのは、開発者の仕事です。

知りえないことをたずねる

コマンド
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const post=(m,t,x)=>fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:m}],max_tokens:t,temperature:x})}).then(r=>r.json());post('私の猫の名前は何ですか。短い一文で答えてください。',40,0.7).then(j=>console.log('モデル:'+j.choices[0].message.content)).catch(e=>console.log('記録済みサンプル(モデルの応答なし):あなたの猫の名前は分かりません。'))"

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

よくある間違い

注意

モデルは検索エンジンのように事実を調べる、と考える人が多くいます。しかし、そうではありません。モデルは、確からしいトークンで文章を続けるだけです。答えは、別の情報と照らし合わせてから信用しましょう。

さらに:自分だけの小さなモデル

課題は、小さな言語モデルです。回数の表と、選び方の規則でできています。本物のモデルも同じ考え方です。表ははるかに大きく、はるかに多くの文章から作られ、コンテキストもずっと広く見ます。

表に自分で言葉と回数を足して、どんな文章ができるか見てみましょう。

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

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