- Playground が何であり、どこから開くブラウザ上の画面か
- Playground でできることと、隣接する画面・機能(Model Library・API・Batch Inference)との使い分け
- temperature / top_p / top_k / max_tokens / stop / presence_penalty / frequency_penalty など主要パラメータの意味と値の範囲
- temperature が出力の多様性をどう変え、max_tokens がなぜ出力を途中で打ち切るのかという仕組み
- Playground で見つけた設定を、そのまま API 呼び出しに持ち込む方法
これは何か
Playground は、コンソール(app.fireworks.ai)内にある、コードを 1 行も書かずにブラウザ上でモデルへリクエストを送り、応答を確認できる試し場である。画面をどこから開くかという正確な導線は公式ドキュメントに明記が無く、UI 更新でも変わりうるため、本章では導線の特定ではなく Playground を開いた後の使い方に集中する。確証があるのは、すでに専用デプロイ(第 9 章)を作っている場合、そのデプロイの詳細ページに「Playground」というクイックアクションがあり、そのデプロイ自身を対象に同じ画面を開けるということである。対象モデルには「Try the API」「Deploy on Demand」という CTA(行動喚起ボタン)も用意されており、試した内容から専用デプロイの作成へ進める導線になっている(公式の更新履歴で存在は確認できるが、どの画面に置かれているかは明示されていない)。
Playground のヘッダにはカテゴリタブが並ぶ。公式の更新履歴には LLM / Image / TTS / STT の 4 タブが確認できており、選んだモデルに応じて自動でカテゴリを判別し、カテゴリごとに妥当な既定値を出す設計になっている。ただし Image・TTS・STT 側の機能は後の更新履歴で見直しが入っているため、本章では最も確実に使える LLM タブ(チャット・テキスト生成モデル)を対象に解説する。
画面の要素としては、モデルを選ぶドロップダウンと、temperature や top_p といったパラメータを数値で直接編集できる入力欄がある。ドロップダウンには埋め込み(embedding)用モデルとリランク(rerank)用モデルは表示されない。これらは検索・並べ替え用のスコアを返すモデルで、応答を人間が読んで確かめる Playground の使い方とは噛み合わない。また、レプリカ数が 0(稼働中のサーバーがない状態)まで縮退した専用デプロイに対しては、Playground からのクエリがブロックされる。まずはそのデプロイを起こす操作が必要になる。
いつ使うのか
Playground が向いているのは、次のような「コードを書く前に確かめたい」場面である。
- 第 3 章の Model Library で候補に挙げたモデルが、実際に自分のタスク・文体をこなせるかを 1 回試してみる
- 同じプロンプトのまま temperature や top_p だけを変えて、出力がどう変わるかを目で見て比較し、コードに書き込む前に当たりを付ける
- すでに作成済みの専用デプロイ(第 9 章)が期待どおり応答するかを、アプリに組み込む前にさっと確認する
逆に言えば、Playground は「1 回のリクエストを人間が試す」ための画面であり、プログラムから繰り返し呼び出したり、大量のリクエストをまとめて処理したりする用途には向かない。隣接する機能との違いは次のとおり。
| 画面・機能 | 主な用途 | コードとリクエスト数 |
|---|---|---|
| Playground(本章) | プロンプトとパラメータを手探りで試す | コード不要。1 リクエストずつ手動で送る |
| Chat Completions API(第 5 章) | アプリに組み込んで本番で呼び出す | コードが必要。プログラムから任意の回数を送れる |
| Batch Inference(第 8 章) | 急がない大量のリクエストをまとめて非同期処理する | コードと JSONL データセットが必要。数百〜数万件単位 |
パラメータでモデルの出力を制御する
Playground の主役は、実はモデル選択そのものより、パラメータの数値入力欄である。これらは Chat Completions API のリクエストボディにそのまま対応する値であり、ここで意味を理解しておけば第 5 章で API を書くときに迷わない。API 側では、値を何も指定しない場合、Fireworks はそのモデルの Hugging Face generation_config.json に書かれた推奨値(temperature / top_k / top_p / min_p / typical_p)を自動的に適用する。これは前段で触れた Playground のカテゴリ別スマート既定値とは別の仕組みで、画面に最初から入っている数値がどちらに由来するかは公式ドキュメントには書かれていない。以下の値の範囲・既定値はいずれも 2026-09 時点のものである。
| パラメータ | 何を制御するか | 既定値・値の範囲 |
|---|---|---|
temperature | 出力のランダムさ。小さいほど毎回同じ答えに近づき、大きいほど言い回しが揺れる | 0〜2(未指定時はモデルの推奨値) |
top_p | 確率の高い候補から、合計確率が top_p に達するまでだけを候補にする(nucleus sampling) | 0〜1(未指定時はモデルの推奨値) |
top_k | 確率が高い上位 k 個のトークンだけを候補にする | 0〜100(未指定時はモデルの推奨値) |
max_tokens | 生成する完成部分(応答)の最大トークン数 | 未指定時は 2048 |
stop | 出力にこの文字列が現れた時点で生成を止める。返るテキストに stop 文字列自体は含まれない | 最大 4 個の文字列を指定可 |
presence_penalty | 一度でも出た単語の再登場を抑え、新しい話題を持ち込みやすくする | -2〜2 |
frequency_penalty | すでに出た回数が多い単語ほど出にくくする(繰り返しの抑制) | -2〜2 |
加えて、会話の最初に置く「システムプロンプト」もここで一緒に調整する対象になる。モデルの人格・役割・制約を指示する文で、API 側では messages の先頭に role: "system" のメッセージとして渡す値と同じものである。
先ほど触れた自動適用の対象には、表に挙げた 3 つ以外に min_p と typical_p も含まれる。min_p は確率がある閾値を下回るトークンを候補から除外するもの、typical_p は珍しすぎず平凡すぎない「ふつうの確からしさ」のトークンを選ぶ値(公式の説明では「分布のエントロピーに近い確率を持つトークン」)で、いずれも 0〜1 の範囲を取る。これらは temperature や top_p ほど頻繁に触る対象ではないが、モデルの既定挙動の一部として裏側で効いていることは覚えておくとよい。
temperature が出力の多様性を変える仕組み
モデルは次に来るトークンの候補それぞれに確率を割り当ててから、そこから 1 つを選んで生成する。temperature はこの確率の付き方そのものを作り直す係数で、公式ドキュメントは「0 で決定的、大きいほど創造的(0 = deterministic, higher = more creative)」と説明している。temperature を 0 に近づけると、最も確率の高かった候補にほぼ全ての確率が集中し、毎回ほとんど同じトークンが選ばれる。逆に temperature を上げると、確率の高かった候補への集中が崩れ、次点・次々点の候補にも確率が分散していく。
top_p と top_k は、この確率分布に対して「候補をどこまで絞るか」を決める別軸のフィルタである。top_p は確率の高い順に足し合わせて top_p の値に達するところまでを候補として残し、top_k は確率の高い上位 k 個だけを候補として残す。temperature が確率の「形」を変え、top_p・top_k がその中から「候補として残す範囲」を絞る、という 2 段構えで最終的にサンプリングされるトークンが決まる。
max_tokens とコンテキスト窓の関係
コンテキストウィンドウは、プロンプトと生成される応答を合わせて 1 回のリクエストで扱えるトークン数の上限である。max_tokens はこの中で「応答として生成してよい最大トークン数」を別途キャップするパラメータで、指定しなければ既定値の 2048 が使われる。モデルの実際のコンテキストウィンドウがどれだけ大きくても、max_tokens を上げない限り応答は 2048 トークンで頭打ちになる。
プロンプトが長く、プロンプト長と max_tokens の合計がコンテキストウィンドウを超えてしまう場合の挙動にも注意が要る。この挙動は context_length_exceeded_behavior というパラメータで制御されていて、既定値は「切り詰める(truncate)」である。超えた分だけ max_tokens を自動的に小さくして収め、エラーにはならない。もう 1 つの選択肢である「エラーにする(error)」を明示的に指定しない限り、この自動切り詰めが働く。OpenAI の API から移行してきた場合はここが逆で、OpenAI の既定は「エラーにする」側の挙動に相当する。切り詰めが起きたリクエストは、応答に finish_reason: "length" が付く。
Playground からコードへ ── 同じ設定を API で再現する
Playground でプロンプトとパラメータの当たりが付いたら、次にやることは同じ内容を API 呼び出しとして再現することである。プロンプト・システムプロンプト・temperature や top_p などの数値は、そのまま Chat Completions API のリクエストボディの値に対応する。前段で触れた「Try the API」という CTA も、この橋渡しのための入口として用意されている(設置画面は明示されていない)。
from fireworks import Fireworks
client = Fireworks()
response = client.chat.completions.create(
model="accounts/fireworks/models/<MODEL_ID>",
messages=[
{"role": "system", "content": "Playgroundで固めたシステムプロンプトをそのまま入れる"},
{"role": "user", "content": "Playgroundで試したのと同じプロンプト"}
],
temperature=0.9,
max_tokens=500
)
print(response.choices[0].message.content)
パラメータを何も指定しなかった場合に、API 側で実際どの値が適用されたかは、レスポンスヘッダの fireworks-sampling-options で確認できる。設定を数値としてコードに固定してしまえば、Playground で毎回手で合わせていた条件を再現性のある形で持ち運べる。この続きは第 5 章で扱う。
model、数値パラメータはそのままの値、システムプロンプトは role: "system" のメッセージになる。実際にやってみる
ここまでの内容を、実際に手を動かして確かめる。どちらのハンズオンも実モデルへ本物のリクエストを送るため、選んだモデルが Serverless モデルであれば通常の推論と同じ扱いと考えるのが安全である。Playground のリクエストもクォータの対象になっており、超過するとエラーメッセージが表示されることが公式の更新履歴で確認できる。正確な課金の扱いと単価は料金ページと第 5 章で確認すること。
以下のハンズオンは何度もモデルを実行する内容になっている。無料枠や既存のクレジットの範囲で収まっているか、料金ページで確認してから進めること。
ハンズオン 4-1 同じプロンプトを temperature 違いで比較する
- モデル選択のドロップダウンから、チャット向けのテキストモデルを 1 つ選ぶ(埋め込み・リランク用のモデルはここには出てこない)。
- プロンプトとして、短い創作系の指示を入れる。例:「一言で、今日の天気について気の利いたコメントをして」。
- temperature の数値入力欄を 0 に設定し、生成を 2 回実行する。返ってくる文章がほぼ同じであることを確認する。
- temperature を 1.2 程度まで上げ、同じプロンプトのまま 2〜3 回生成する。実行のたびに言い回しが変わることを確認する。
temperature を上げるほど毎回の応答のばらつきが大きくなっていれば、図 4-1 で説明した「確率の分散」が実際に起きている。
ハンズオン 4-2 top_p を Playground で、max_tokens・stop・繰り返し抑制パラメータを curl で動かす
- Playground で temperature を 1.0 に固定したまま、top_p の数値入力欄を 1.0 に設定し、短い創作系プロンプト(例:「一言で、今日の天気について気の利いたコメントをして」)で 2〜3 回生成する。
- top_p を 0.3 まで絞り、同じプロンプトのまま再度 2〜3 回生成する。候補が絞り込まれ、言い回しの揺れが小さくなっていることを確認する。
max_tokens・stop・繰り返し抑制パラメータの入力欄が Playground にあるかどうかは公式ドキュメントに明記が無いため、ここからは確証のある curl(API)で挙動を確認する。以降の curl 例が使うモデル ID はglm-5p2(2026-09 時点で Serverless 提供)である。ターミナルで API キーを環境変数にセットし(export FIREWORKS_API_KEY=...)、max_tokensを小さい値(20)にして次のコマンドを実行する。長めの説明を求めているのに、文章が意味の切れ目でないところで途切れることを確認する。curl https://api.fireworks.ai/inference/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $FIREWORKS_API_KEY" \ -d '{ "model": "accounts/fireworks/models/glm-5p2", "messages": [ {"role": "user", "content": "日本の四季について詳しく説明して"} ], "max_tokens": 20 }'max_tokensを 500 に増やし、stopに句点「。」を 1 つ設定して同じプロンプトを再実行する。生成が最初の一文で止まり、レスポンスのchoices[0].message.contentに「。」自体が含まれていないことを確認する。curl https://api.fireworks.ai/inference/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $FIREWORKS_API_KEY" \ -d '{ "model": "accounts/fireworks/models/glm-5p2", "messages": [ {"role": "user", "content": "日本の四季について詳しく説明して"} ], "max_tokens": 500, "stop": ["。"] }'stopを外し、presence_penaltyを 0.5 程度まで上げて、同じ話題を繰り返させやすいプロンプト(例:「好きな食べ物を 5 つ、理由付きで教えて」)を実行する。単語の繰り返しが減っていることを確認する。curl https://api.fireworks.ai/inference/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $FIREWORKS_API_KEY" \ -d '{ "model": "accounts/fireworks/models/glm-5p2", "messages": [ {"role": "user", "content": "好きな食べ物を5つ、理由付きで教えて"} ], "presence_penalty": 0.5 }'
つまずきポイント
temperature の範囲は 0〜2 である。0〜1 の範囲を採用している他社の API に慣れていると、1.0 を「最大値」だと思い込みがちだが、Fireworks では 1.0 はまだ中間的な値にすぎない。
max_tokens の既定値は 2048 である。指定しなければ、モデルの実際のコンテキストウィンドウがどれだけ大きくても応答は 2048 トークンで打ち切られる(finish_reason: "length")。長い出力を狙うときは明示的に大きい値を指定する。
埋め込み(embedding)用モデルとリランク(rerank)用モデルは、Playground のモデル選択ドロップダウンに表示されない。探しても見つからないのは不具合ではなく仕様である。
自分の専用デプロイ(第 9 章)を Playground で開いても、レプリカ数が 0 まで縮退している状態ではクエリがブロックされる。まずデプロイを稼働させる必要がある。
理解度チェック
Q1. Fireworks の temperature パラメータが取りうる値の範囲はどれか?
0〜2 である。0 が決定的(毎回ほぼ同じ出力)、値が大きいほど出力の多様性が増す。0〜1 の範囲を前提にした感覚のまま使うと、想定より低いつもりの値でも実際には出力が大きく揺れることがある。
Q2. max_tokens を指定しなかった場合の既定値は何トークンか?
2048 トークンである。モデルの実際のコンテキストウィンドウがもっと大きくても、明示的に max_tokens を増やさない限り応答はこの値で打ち切られる。
Q3. Playground のモデル選択ドロップダウンに表示されないのはどんな種類のモデルか?
埋め込み(embedding)モデルとリランク(rerank)モデルである。これらは検索・並べ替え用の出力を返すモデルで、応答を人間が読んで確かめる Playground の使い方とは噛み合わない。
Q4. stop パラメータには最大いくつまで文字列を指定できるか?
最大 4 個までである。指定した文字列のいずれかが出力中に現れた時点で生成が止まり、その文字列自体はレスポンスのテキストには含まれない。
まとめ
- Playground はコンソール内の、コード不要の試し場である。デプロイ詳細ページのクイックアクションから開けることは確認できるが、それ以外の導線は公式ドキュメントに明記が無い
- 埋め込み・リランクモデルは対象外、レプリカ 0 のデプロイはクエリ不可という制約がある
- temperature(0〜2)・top_p・top_k は確率分布の形と絞り込み範囲を、max_tokens・stop は生成の長さと終了条件を制御する
- パラメータを指定しなければ、API 側ではモデルごとの推奨既定値(generation_config.json 由来)が自動適用される。Playground はカテゴリを自動判別してカテゴリごとの既定値を出す設計だが、画面に最初から入っている数値がどちらに由来するかは公式ドキュメントには書かれていない
- Playground で固めた設定は、そのまま Chat Completions API のパラメータとして持ち込める
次の第 5 章では、ここで触れたパラメータを実際の API 呼び出しとして書き、Serverless 推論の課金・レート制限の仕組みまで踏み込む。