API リファレンス
Chat Completions
POST https://api.platform.preferredai.jp/v1/chat/completions
与えられたチャットメッセージに対して、生成 AI モデルが応答を生成します。
現在サポートしているモデルは PLaMo Prime のみになります。
| モデル ID | コンテキスト長 | 最大アウトプットトークン数 | Reasoning対応 |
|---|---|---|---|
plamo-2.2-prime | 32,768 トークン | 4,096 トークン | 未対応 |
plamo-3.0-prime-beta | 65,536 トークン | 20,000 トークン | 対応 |
plamo-2.2-prime 以前のモデルは、2026/01/28 で plamo-2.2-prime にアップグレードされました。
plamo-3.0-prime-beta は別モデルとして利用可能ですが、現在モニター企業様のみに提供中です。ご興味のある方は こちらのフォームからお問い合わせ・申し込みください。
サンプル
curl の場合は PLaMoのAPIキーを PLAMO_API_KEY という環境変数に、 Pythonのライブラリの場合は OPENAI_API_KEY という環境変数にセットしてください。
リクエスト
$ curl \
-H "Authorization: Bearer ${PLAMO_API_KEY}" \
-H "Content-Type: application/json" \
"https://api.platform.preferredai.jp/v1/chat/completions" \
-d @- << EOF
{
"messages": [
{
"role": "system",
"content": "あなたは旅行アドバイザーです"
},
{
"role": "user",
"content": "金沢で朝から夕方まで1日のおすすめの観光ルートを教えて下さい"
}
],
"model": "plamo-2.2-prime"
}
EOFimport os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://api.platform.preferredai.jp/v1",
model="plamo-2.2-prime",
streaming=True,
# other params...,
)
messages=[
{"role": "system", "content": "あなたは旅行アドバイザーです"},
{"role": "user", "content": "金沢で朝から夕方まで1日のおすすめの観光ルートを教えて下さい"},
]
for chunk in llm.stream(messages):
print(chunk.content, end="", flush=True)import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.platform.preferredai.jp/v1",
# other params...,
)
completion = client.chat.completions.create(
model="plamo-2.2-prime",
messages=[
{"role": "system", "content": "あなたは旅行アドバイザーです"},
{"role": "user", "content": "金沢で朝から夕方まで1日のおすすめの観光ルートを教えて下さい"},
],
stream=True,
)
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="", flush=True)レスポンス
{
"id": "chat-eb6da3a371c546c8a8c4629794328c5b",
"object": "chat.completion",
"created": 1733220118,
"model": "plamo-2.2-prime",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "二次方程式の解の公式は以下の通りで....",
"tool_calls": []
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null
}
],
"usage": {
"prompt_tokens": 169,
"total_tokens": 394,
"completion_tokens": 225
},
"prompt_logprobs": null
}data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[{"index":0,"delta":{"role":"assistant"},"logprobs":null,"finish_reason":null}],"usage":{"prompt_tokens":143,"total_tokens":143,"completion_tokens":0}}
data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[{"index":0,"delta":{"content":"PL"},"logprobs":null,"finish_reason":null}],"usage":{"prompt_tokens":143,"total_tokens":144,"completion_tokens":1}}
data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[{"index":0,"delta":{"content":"a"},"logprobs":null,"finish_reason":null}],"usage":{"prompt_tokens":143,"total_tokens":145,"completion_tokens":2}}
data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[{"index":0,"delta":{"content":"Mo"},"logprobs":null,"finish_reason":null}],"usage":{"prompt_tokens":143,"total_tokens":146,"completion_tokens":3}}
data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[{"index":0,"delta":{"content":""},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":143,"total_tokens":148,"completion_tokens":5}}
data: {"id":"chat-e05656fa4721494a93d54410881f00c8","object":"chat.completion.chunk","created":1734345308,"model":"plamo-2.2-prime","choices":[],"usage":{"prompt_tokens":143,"total_tokens":148,"completion_tokens":5}}
data: [DONE]/chat/completions エンドポイントでは、Reasoningに対応しているモデルの場合、 reasoning および reasoning_content をサポートしています。 非ストリーミング時のレスポンスでは各 choice.message に reasoning と reasoning_content が含まれます。 ストリーミング時(stream: true)は各チャンクの choice.delta に reasoning と reasoning_content が段階的に含まれます。
リクエストパラメータ
以下のパラメータを JSON 形式でリクエストボディに指定してください。
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| model | string | yes | 使用するモデルの ID を指定します。 | |
| messages | array of MessageObject | yes | チャットメッセージをリスト形式で設定します。各メッセージは、role と content を持ちます。 | |
| frequency_penalty | float | no | 0.0 | トークンの繰り返し頻度を制御します。有効な値は -2.0 から 2.0 の間の値です。 |
| max_tokens | integer or null | no | 4096 | 指定したトークン数まで生成した場合、そこで生成を打ち切ります。生成される内容によっては、これより早く生成が終了することがあります。モデルの最大アウトプットトークン数を超えて設定することはできません。 |
| n | integer | no | 1 | 1 回のリクエストで生成を実行する回数を指定します。有効な値は 1 か 2 です。 |
| presence_penalty | float | no | 0.0 | すでに出力されたトークンが再び出現することに対するペナルティを付与します。有効な値は -2.0 から 2.0 の間の値です。 |
| seed | integer or null | no | null | トークンを生成する際の乱数のシード値を指定します。内部状態によっては、同じシード値を指定しても異なる結果が得られることがあります。 |
| safety_identifier | string or null | no | null | ユーザを識別するための識別子です。PLaMo API側で不正を検知した場合などに利用する場合があります。サーバ側で永続化されうるため、個人情報や機密情報などは含めないでください。 |
| stop | array of strings, strings or null | no | null | 指定した単語が出てきた場合に生成を終了します。 |
| stream | boolean | no | false | ストリーミングレスポンスを利用する場合は 'true' を指定します。 |
| stream_options | StreamOptionObject or null | no | null | stream を有効にした場合のオプションを指定します。詳しくは後述の StreamOptionObject を参照してください。 |
| temperature | float | no | 0.3 | サンプリング温度を指定します。有効な値は 0 から 2.0 の間の値です。 |
| tools | array of ChatCompletionToolsObject | no | null | Function Calling で使う Function を設定します。 |
| tool_choice | ChatCompletionToolChoiceObject or "none" or "auto" or "required" | no | null | 呼び出す Function を指定します。 |
| top_p | float | no | 1.0 | トークンの生成結果をどこまで考慮するかを指定します。有効な値は 0 から 1.0 の間の値です。 |
レスポンス(ストリーミングを利用しない場合)
| フィールド | 型 | 説明 |
|---|---|---|
| id | string | メッセージごとに固有の ID が付与されます。 |
| choices | array of ChoiceObject | チャット形式の生成結果を返します。 |
| created | integer | 生成した UNIX 時間を返します。 |
| model | integer | モデル ID を返します。 |
| object | string | 'chat.completion' を固定で返します。 |
| usage | UsageObject | 利用状況に関するオブジェクトを返します。 |
レスポンス(ストリーミングを利用する場合)
レスポンスはserver-sent eventsを利用して返されます。 なお、最後には event: [DONE] が返されます。
| フィールド | 型 | 説明 |
|---|---|---|
| id | string | メッセージごとに固有の ID が付与されます。 |
| choices | array of StreamChoiceObject | チャット形式の生成結果を返します。 |
| created | integer | 生成した UNIX 時間を返します。 |
| model | integer | モデル ID を返します。 |
| object | string | 'chat.completion.chunk' を固定で返します。 |
| usage | UsageObject | 利用状況を保存したオブジェクトを返します。 |
max_tokensにおける注意事項
現在、APIは 入力トークン数+max_tokens がモデルのコンテキスト長を超えた場合にエラーを出力します。 実際に文字を生成した場合に、出力として出てくるトークン数がコンテキスト長に収まる場合であったとしても、入力の時点でエラーを出力します。
特に max_tokens は明示的に設定されなかった場合に4096が設定されるため、入力がコンテキスト長未満だったとしてもエラーになります。 その場合は 入力トークン数+max_tokens がモデルのコンテキスト長を超えないように、明示的に指定をしてください。
Tokenize API
POST https://api.platform.preferredai.jp/v1/tokenize
与えられた文字列をトークンに変換し、トークン列およびトークン数を返します。 なお、Chat Completion ではチャットに変換されるため、さまざまなプロンプトが自動で挿入されます。 そのため、このトークン数と実際にテキストが生成される際のトークン数とは厳密に一致はしません。
また、PLaMo で利用しているTokenizerは公開されているため、同様の機能を API 経由ではなくシステム内部に組み込むことも可能です。
サンプル
リクエスト
$ curl \
-H "Authorization: Bearer ${PLAMO_API_KEY}" \
-H "Content-Type: application/json" \
"https://api.platform.preferredai.jp/v1/tokenize" \
-d '{"prompt": "こんにちは", "model": "plamo-2.2-prime"}'レスポンス
{
"count": 4,
"max_model_len": 16384,
"tokens": [
1,
1,
35913,
37607
]
}リクエストパラメータ
以下のパラメータを JSON 形式でリクエストボディに指定してください。
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| model | string | yes | 使用するモデルの ID を指定します。 | |
| prompt | string | messages か prompt のどちらかは必須 | トークンを計算したい文字列を指定します。 | |
| messages | array of MessageObject | messages か prompt のどちらかは必須 | トークンを計算したい文字列を指定します。Chat Completions エンドポイントで使用するチャットメッセージと同じ形式が使用できます。 | |
| add_special_tokens | boolean | no | true | BOSなどの特殊トークンを追加するかどうかを指定します。 |
| add_generation_prompt | boolean | no | true | 内部で付与する生成用の文字まで適応してtokenize計算をするかどうかを指定します。messages を指定した場合のみ有効です。 |
レスポンス
| フィールド | 型 | 説明 |
|---|---|---|
| count | integer | 全体のトークン数です。 |
| max_model_len | integer | モデルが受け付けられる最大のトークン数です。 |
| tokens | array of integer | 実際の各トークンです。 |
Models API
利用可能なモデルなどのデータを取得します。
サンプル
リクエスト
curl の場合は PLaMoのAPIキーを PLAMO_API_KEY という環境変数に、 Pythonのライブラリの場合は OPENAI_API_KEY という環境変数にセットしてください。
$ curl \
-H "Authorization: Bearer ${PLAMO_API_KEY}" \
-H "Content-Type: application/json" \
"https://api.platform.preferredai.jp/v1/models"from openai import OpenAI
client = OpenAI(
base_url="https://api.platform.preferredai.jp/v1",
)
models = client.models.list()
print(models)
model_name = models.data[0].id
model = client.models.retrieve(model_name)
print(model)レスポンス
{
"data": [
{
"id": "plamo-2.2-prime",
"created": 1732978800,
"object": "model",
"owned_by": "system"
}
],
"object": "list"
}Index Models
GET https://api.platform.preferredai.jp/v1/models
利用可能なモデル一覧を取得します。
レスポンス
| フィールド | 型 | 説明 |
|---|---|---|
| object | string | listが固定で入ります。 |
| data | array of ModelObject | モデルオブジェクトを返します |
Get Model
GET https://api.platform.preferredai.jp/v1/models/{model}
指定したモデルの情報を取得します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | yes | 使用するモデルの ID を指定します。 |
レスポンス
ModelObject を返します。
オブジェクト一覧
MessageObject
チャットメッセージを示します。主に System, User, Assistant からなります。
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| content | string | yes | メッセージの内容を示します。 | |
| role | string | yes | メッセージの役割を示します。'system', 'user', 'assistant' のどれかである必要があります。 | |
| name | string | no | 同じ role をさらに識別する際に利用する名前です。 | |
| reasoning | string | no | レスポンスで送られてきた reasoning を設定します。 | |
| reasoning_content | string | no | レスポンスで送られてきた reasoning_content を設定します。 |
StreamOptionObject
ストリーミングレスポンスを利用したときのオプションを示します。
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
| include_usage | boolean | no | ストリーミングレスポンスが終わる直前に利用状況を返すか否かを指定します。 |
ChatCompletionToolsObject
Function Calling 機能で利用する Function を定義します。
| フィールド | 型 | 説明 |
|---|---|---|
| type | string | 'function' を指定してください。 |
| function | ChatCompletionsToolsFunctionObject | Function Calling 機能で利用する Function 本体を定義します。 |
ChatCompletionToolsFunctionObject
Function 本体を定義します。
| フィールド | 型 | 説明 |
|---|---|---|
| name | string | Function の名前です |
| description | string | Function の説明です。 |
| parameters | string | JSON Schema で表現される Function に与えることができる引数の定義です。JSON Schema についてはこちらを参照してください。 https://json-schema.org/understanding-json-schema |
ChatCompletionToolChoiceObject
どの Function を利用するかを定義します。
| フィールド | 型 | 説明 |
|---|---|---|
| type | string | 'function' を指定してください。 |
| function | ChatCompletionToolChoiceFunctionObject | 利用する Function を指定します。 |
ChatCompletionToolChoiceFunctionObject
Function を指定します。
| フィールド | 型 | 説明 |
|---|---|---|
| name | string | 'tools' パラメータで指定した Function の名前を指定してください。 |
ChoiceObject
Chat 形式で生成した発言の結果を示します。
| フィールド | 型 | 説明 |
|---|---|---|
| index | integer | 複数の ChoiceObject があった場合に何番目の Object かを返します。 |
| finish_reason | 'stop' or 'length' | 指定した単語が出てきた場合や、トークンの生成の結果自然に終了した場合は stop を、最大生成トークン数を超えた場合は length を返します。 |
| logprobs | null | 現在サポートされていません。 |
| message | ChatMessageObject | 発言の内容を返します。 |
| stop_reason | integer or string or null | 現在サポートされていません。 |
ChatMessageObject
発言の内容を示します。
| フィールド | 型 | 説明 |
|---|---|---|
| content | string | メッセージの内容を返します。 |
| reasoning | string or null | モデルの推論内容を返します。Reasoning対応モデルでのみ含まれる可能性があります。 |
| reasoning_content | string or null | reasoning と同じ内容が含まれます。 |
| role | string | メッセージの役割を返します。'system', 'user', 'assistant' のどれかになります。 |
| tool_calls | ChatMessageToolCallsObject | モデルによって生成された Function Calling の情報です。 |
ChatMessageToolCallsObject
Functionの結果を示します。
| フィールド | 型 | 説明 |
|---|---|---|
| id | string | 一意に割り振られたIDです。 |
| type | string | 'function' になります。 |
| function | ChatMessageToolCallsFunctionObject | Function Calling で呼び出された Function の情報です。 |
ChatMessageToolCallsFunctionObject
呼び出された Function の情報です。
| フィールド | 型 | 説明 |
|---|---|---|
| name | string | Function の名前を示します。 |
| arguments | string | JSON で記述された Function の引数です。 |
StreamChoiceObject
Chat 形式で生成した発言の結果をストリームで示します。
| フィールド | 型 | 説明 |
|---|---|---|
| index | integer | 複数の ChoiceObject があった場合に何番目の Object かを返します。 |
| finish_reason | 'stop' or 'length' | 指定した単語が出てきた場合や、トークンの生成の結果自然に終了した場合は stop を、最大生成トークン数を超えた場合は length を返します。 |
| logprobs | null | 現在サポートされていません。 |
| delta | ChatMessageDeltaObject | 追加で生成した発言の内容を返します。 |
| stop_reason | integer or string or null | 現在サポートされていません。 |
ChatMessageDeltaObject
発言の内容をストリームで示します。
| フィールド | 型 | 説明 |
|---|---|---|
| content | string | メッセージの内容を返します。role の割り当てが実行されたときなど、content フィールドが存在しない場合もあります。 |
| reasoning | string or null | モデルの推論内容を返します。Reasoning対応モデルでのみ含まれる可能性があります。 |
| reasoning_content | string or null | reasoning と同じ内容が含まれます。 |
| role | string | メッセージの役割を返します。'system', 'user', 'assistant' のどれかになります。なお、新しい role が割り当てられたときのみ設定されます。 |
UsageObject
トークン生成の結果などを示します。
| フィールド | 型 | 説明 |
|---|---|---|
| completion_tokens | integer | 生成したトークン数を返します。 |
ModelObject
モデルに関する情報を示します。
| フィールド | 型 | 説明 |
|---|---|---|
| id | string | モデルを識別する文字列です。APIのパラメータに利用できます。 |
| created | integer | モデルが作成された時刻です。 |
| object | string | このオブジェクトの種類を表します。現在は常に model が入ります。 |
| owned_by | string | モデルの所有者を示します。現在は常に system が入ります。 |
旧APIエンドポイントについて
https://platform.preferredai.jp/api/completion/v1 以下のAPIエンドポイントは移行されました。 新しいエンドポイントは https://api.platform.preferredai.jp/v1 です。
旧APIエンドポイントは引き続き利用可能ですが、非推奨です。新しいAPIエンドポイントをご利用ください。
