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

無料レッスン

トークンと呼び出しの費用

このレッスンのあとで: 呼び出しを行う前に、その費用を見積もれる。

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

モデルAPIはトークンで課金される

たいていのモデルAPIは、呼び出しの回数ではなく、トークンの数で課金します。短い質問と長い作文では、費用が大きく違います。

呼び出す前に費用を見積もれば、請求書で驚かずにすみます。このレッスンで、その方法を学びます。

このレッスンのゴール

メモ

呼び出しを行う前に、その費用を見積もれる。

キーワード

ことばいみ
トークン数えられて課金される、文章の小さなかたまり
入力トークンプロンプトで送るトークン
出力トークンモデルが書いて返すトークン
100万あたりの価格100万トークンの値段
予算使ってよいと決めた最大の金額

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

入力と出力のトークンが課金される

送る入力トークンと、モデルが書く出力トークンの両方に、お金を払います。1トークンあたりでは、出力のほうが高いのがふつうです。

価格は、100万トークンあたりで示されます。このレッスンの価格は作り物です。本物の価格は変わるので、提供元のページを読みましょう。

例:呼び出し1回

部分トークン数100万あたりの価格(円)費用(百万分の1円)
入力1000200200000
出力500800400000
合計1500該当なし600000、つまり0.6円

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

文字数からトークンを見積もる

コマンド
docker exec -w /home/node/project agent node -e "const text='APIキーとは何かを一文で説明してください。';let a=0,k=0;for(const c of text){if(c.charCodeAt(0)<128)a++;else k++}console.log('文字数:'+text.length);console.log('推定トークン数:'+(k+Math.ceil(a/4)))"

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

呼ぶ前にトークンは見積もれる

日本語は、英語より多くのトークンを使います。このレッスンの目安は、日本語の文字は1文字で約1トークン、半角の英数字は4文字で約1トークンです。たとえば日本語の100文字は、約100トークンです。

これはおおまかな見積もりです。呼び出しのあとには、たいてい本当の数が返ります。

モデルを呼んでトークン数を読む

コマンド
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const show=(a,b)=>{console.log('入力トークン:'+a+'、出力トークン:'+b);console.log('レッスンの価格での費用:'+(a*200+b*800)+' 百万分の1円')};(async()=>{try{const r=await fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:'APIキーとは何かを一文で説明してください。'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('答え:'+j.choices[0].message.content);if(j.usage)show(j.usage.prompt_tokens,j.usage.completion_tokens);else console.log('トークン数は報告されませんでした。')}catch(e){console.log('応答なし('+e.message+')。記録済みサンプル:');console.log('答え:APIキーは、リクエストが自分のものだと証明する秘密です。');show(24,30)}})()"

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

上限で出力を短く保つ

入力は、短いプロンプトを書くことで抑えます。出力は max_tokens で抑えます。これは、答えをそのトークン数で打ち切ります。

チャットでは、新しいやり取りのたびに、前のメッセージをすべて送り直します。そのため、長いチャットはやり取りごとに高くなります。

予算が尽きたら止める

コマンド
docker exec -w /home/node/project agent node -e "const calls=[[1000,500],[2000,800],[1500,1200],[3000,2000],[500,100]];let spent=0;const limit=4000000;for(let i=0;i<calls.length;i++){const c=calls[i][0]*200+calls[i][1]*800;if(spent+c>limit){console.log((i+1)+'回目は '+c+' かかるので、止めます。使った合計 '+spent);break}spent+=c;console.log((i+1)+'回目:費用 '+c+'、使った合計 '+spent)}"

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

よくある間違い

注意

どの呼び出しも同じ費用だと考える人が多くいます。費用は、入力と出力のトークンが増えると上がり、長いチャットは履歴を送り直します。ループを動かす前に、トークンを数え、上限をつけ、予算を決めましょう。

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

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