AI入門ガイド
システムプロンプトと temperature: それぞれの役割と設定方法
OpenAI 互換リクエストにおけるシステムメッセージと temperature の役割を、CheapTokens モデルに送信できる Python と curl の例とともに説明します。

このページの内容
システムプロンプトとは、役割がsystemであるメッセージで、モデルにあらゆる回答でどう振る舞うかを伝えるものです。何者か、どの形式を使うか、何を避けるか。Temperature は通常 0 から 2 の間の数値(範囲はモデルによって異なります)で、文言がどれだけ変動してよいかを設定します。低い値では焦点が絞られ再現性のある回答になり、高い値ではより多様な回答になります。どちらも同じ Chat Completions リクエストに入れて、https:/ に送信します。
以下では、それぞれが何か、最初にどの値から始めるか、Python または curl で実行できるリクエストを説明します。まだリクエストを送ったことがない場合は、CheapTokens での最初の API リクエストから始めてください。
システムプロンプトとは?#
チャットリクエストはメッセージのリストで、各メッセージには役割があります。Chat Completions リファレンスには 4 つが記載されています: system、user、assistant、tool(DeepSeek API リファレンス、2026年10月22日確認)。最初のリクエストには 3 つ必要です:
system— あなた(開発者)からの常設の指示。モデルはこれを会話のルールとして扱います。user— このターンで人が尋ねたり提供したりする内容。assistant— モデルの以前の回答。会話を続けるときに自分で追加します。
システムメッセージには role を system に設定し、content を文字列として指定する必要があります。name フィールドは任意です。
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
]システムメッセージは先頭に置きます。ユーザーメッセージが実際のタスクです。
役立つシステムプロンプトの書き方#
- モデルが何をするかを一文で述べる: 「あなたは編集者です」「あなたはサポートチケットを分類します」。
- 出力形式を指定する: 「書き換えたテキストだけを返してください」「2 文で答えてください」「有効な JSON で返信してください」。
- ルールは短く直接的な文で与える。長い一段落より、明確な複数行のほうがうまく機能します。
- 短く保つ。システムプロンプトは毎回のリクエストで送信され、入力トークンとして数えられるため、長いものは毎回課金されます。入力と出力の課金方法は入力トークンと出力トークンにあります。
Temperature は何をする?#
モデルは次に来る各トークンを、候補の集合から選びます。Temperature は、最も確率の高い候補にどれだけ厳密に従うかを制御します。DeepSeek API リファレンス(2026年10月22日確認)によると、temperature は 0 から 2 の値を受け付け、デフォルトは 1 です。高い値ではよりランダムな出力、低い値ではより焦点が絞られた決定論的な出力になります。範囲はモデルによって異なります。DeepSeek は 0 から 2、Z.ai は GLM-5.3 について 0 から 1 を記載しています(いずれも2026年10月22日確認)。そのため 0 から 1 の値なら両方で安全です。お使いのモデルの範囲はドキュメントで確認してください。
ほとんどのタスクで機能する出発点です。これは経験則であり、保証ではありません:
テーブルを右にスクロールしてください →
| タスク | 開始値 |
|---|---|
| 抽出、分類、コード、厳密な形式 | 0 から 0.3 |
| 質疑応答、要約、書き換え | 0.3 から 0.7 |
| ブレインストーミング、名前、創造的なテキスト | 0.8 から 1 |
知っておくべき 3 つのこと:
- 低い temperature はより再現性が高いが、同一ではない。 バイト単位で等しい回答を期待しないでください。
- temperature か top_p のどちらか一方を変え、両方は変えない。 これは DeepSeek の推奨です。
top_pはデフォルト 1 の第 2 のサンプリングパラメータです。学習中はそのままにしておいてください。 - 一部のモードは temperature を無視する。 DeepSeek リファレンスによると、thinking モードでは temperature は効果がなく、非 thinking モードでは
top_pは 1.0 に固定されています。値を変えても違いが見られない場合は、まずモデルのモードを確認してください。
両方を指定してリクエストを送る#
キーは環境変数として設定し、コードに残らないようにします(API キーとは何か、安全に保存する方法を参照)。正確なモデル ID は CheapTokens ドキュメントから取得してください。プロバイダーによって同じモデルの名前が異なります。この例では MiniMax-M2.7 を使用します。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key=os.environ["CHEAPTOKENS_API_KEY"],
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."},
],
temperature=0.3,
max_tokens=1000,
)
print(response.choices[0].message.content)
print(response.choices[0].finish_reason)同じリクエストを curl で:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [
{"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
{"role": "user", "content": "Send me the report by tonight or I will be upset."}
],
"temperature": 0.3,
"max_tokens": 1000
}'表示されるべきもの: その文の短くより親しみやすいバージョンと、finish_reason としての stop。finish_reason が length の場合、回答が max_tokens の上限に達しています。AI の回答が途中で止まる理由を参照してください。
Temperature の働きを見る#
Temperature を理解する最良の方法は、同じ質問を何度か尋ねることです。このループは、上の例の client を使って、短いリクエストを 0 で 3 回、1 で 3 回送信します:
for temp in (0, 1):
print("temperature", temp)
for _ in range(3):
r = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[
{"role": "system", "content": "Answer with one word."},
{"role": "user", "content": "Name a fruit."},
],
temperature=temp,
max_tokens=500,
)
print(" ", r.choices[0].message.content)0 では 3 行は通常同じ単語になり、1 では通常より多くの異なる単語が見られます。答える前に推論するモデルは、その推論に max_tokens の一部を使うことがあるため、1 語の回答でも上限を余裕をもって設定してください。次にシステムプロンプトだけを変更し(たとえば「1 語でフランス語で答えてください」)、もう一度実行してください。システムメッセージのルールはどの temperature でも適用されます。
このような実験は小規模です。目安として、約 120 入力トークンと 80 出力トークンのリクエスト 100 回分のコストを示します(例示的なワークロードで、トークン数はプロンプトによって異なります):
| モデル | 入力 $/1M | 出力 $/1M | リクエストあたり | 100 リクエスト | OpenRouter、100 リクエスト |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0000056 | $0.00056 | $0.0011 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0000098 | $0.00098 | $0.0018 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000018 | $0.0018 | $0.0132 |
リクエストあたり 120 入力トークンと 80 出力トークン。100万トークンあたりの価格は現行のもので、当社の料金体系に合わせて変動します。OpenRouter 列は同じワークロードの参考価格を示しています。
どのモデルで試すか#
- MiniMax-M2.7 は多くの短いテストリクエストに適した最初の選択肢で、同じシステムプロンプトを再利用して回答を比較できます: 180K コンテキスト、最大 8,192 出力トークン、入力・出力の両方で OpenRouter の参照価格より安価です。現在の価格: 入力 $0.05、出力 $0.15(100 万トークンあたり)。
1 つの残高ですべてをカバーできるため、モデルの切り替えは model の 1 行の変更です。現在の価格はすべて料金ページにあります。
うまくいかない場合#
- 401 または認証エラー: キーがない、入力ミス、またはこのターミナルで環境変数が設定されていません。
echo $CHEAPTOKENS_を確認してください。API_ KEY - モデルが見つからない: モデル ID をドキュメントからプレフィックスを含めて正確にコピーしてください。
- 無効なパラメータに関するエラー:
temperatureをモデルがサポートする範囲内(0 から 1 なら安全)に保ち、文字列ではなく数値を渡してください。 - モデルがルールを無視する: 短く直接的な一文にし、システムメッセージの先頭に移動し、希望する正確な形式を繰り返してください。
- temperature を変えても何も変わらない: それを無視するモードを使っているか(上記参照)、回答が非常に制約されている(「1 語」「有効な JSON」)ため変動がほとんどない可能性があります。
- 回答が途中で切れる:
max_tokensを上げてください。max_tokens ガイドで方法を説明しています。
次のステップ#
システムメッセージに明確なルールを 1 つ入れ、表から temperature を選び、自分のタスクで上のループを実行してください。結果が望むものであれば、システムプロンプトを短く保ち再利用してください。キーを取得し、現在の価格をドキュメントで確認してください。



