Skip to content

API リファレンス

Chat Completions

POST https://api.platform.preferredai.jp/v1/chat/completions

与えられたチャットメッセージに対して、生成 AI モデルが応答を生成します。

現在サポートしているモデルは PLaMo Prime のみになります。

モデル IDコンテキスト長最大アウトプットトークン数Reasoning対応
plamo-2.2-prime32,768 トークン4,096 トークン未対応
plamo-3.0-prime-beta65,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 という環境変数にセットしてください。

リクエスト

bash
$ 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"
}
EOF
python
import 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)
python
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)

レスポンス

json

{
    "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
}
json
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.messagereasoningreasoning_content が含まれます。 ストリーミング時(stream: true)は各チャンクの choice.deltareasoningreasoning_content が段階的に含まれます。

リクエストパラメータ

以下のパラメータを JSON 形式でリクエストボディに指定してください。

パラメータ必須デフォルト値説明
modelstringyes使用するモデルの ID を指定します。
messagesarray of MessageObjectyesチャットメッセージをリスト形式で設定します。各メッセージは、role と content を持ちます。
frequency_penaltyfloatno0.0トークンの繰り返し頻度を制御します。有効な値は -2.0 から 2.0 の間の値です。
max_tokensinteger or nullno4096指定したトークン数まで生成した場合、そこで生成を打ち切ります。生成される内容によっては、これより早く生成が終了することがあります。モデルの最大アウトプットトークン数を超えて設定することはできません。
nintegerno11 回のリクエストで生成を実行する回数を指定します。有効な値は 1 か 2 です。
presence_penaltyfloatno0.0すでに出力されたトークンが再び出現することに対するペナルティを付与します。有効な値は -2.0 から 2.0 の間の値です。
seedinteger or nullnonullトークンを生成する際の乱数のシード値を指定します。内部状態によっては、同じシード値を指定しても異なる結果が得られることがあります。
safety_identifierstring or nullnonullユーザを識別するための識別子です。PLaMo API側で不正を検知した場合などに利用する場合があります。サーバ側で永続化されうるため、個人情報や機密情報などは含めないでください。
stoparray of strings, strings or nullnonull指定した単語が出てきた場合に生成を終了します。
streambooleannofalseストリーミングレスポンスを利用する場合は 'true' を指定します。
stream_optionsStreamOptionObject or nullnonullstream を有効にした場合のオプションを指定します。詳しくは後述の StreamOptionObject を参照してください。
temperaturefloatno0.3サンプリング温度を指定します。有効な値は 0 から 2.0 の間の値です。
toolsarray of ChatCompletionToolsObjectnonullFunction Calling で使う Function を設定します。
tool_choiceChatCompletionToolChoiceObject or "none" or "auto" or "required"nonull呼び出す Function を指定します。
top_pfloatno1.0トークンの生成結果をどこまで考慮するかを指定します。有効な値は 0 から 1.0 の間の値です。

レスポンス(ストリーミングを利用しない場合)

フィールド説明
idstringメッセージごとに固有の ID が付与されます。
choicesarray of ChoiceObjectチャット形式の生成結果を返します。
createdinteger生成した UNIX 時間を返します。
modelintegerモデル ID を返します。
objectstring'chat.completion' を固定で返します。
usageUsageObject利用状況に関するオブジェクトを返します。

レスポンス(ストリーミングを利用する場合)

レスポンスはserver-sent eventsを利用して返されます。 なお、最後には event: [DONE] が返されます。

フィールド説明
idstringメッセージごとに固有の ID が付与されます。
choicesarray of StreamChoiceObjectチャット形式の生成結果を返します。
createdinteger生成した UNIX 時間を返します。
modelintegerモデル ID を返します。
objectstring'chat.completion.chunk' を固定で返します。
usageUsageObject利用状況を保存したオブジェクトを返します。

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 経由ではなくシステム内部に組み込むことも可能です。

サンプル

リクエスト

bash
$ 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"}'

レスポンス

bash
{
    "count": 4,
    "max_model_len": 16384,
    "tokens": [
        1,
        1,
        35913,
        37607
    ]
}

リクエストパラメータ

以下のパラメータを JSON 形式でリクエストボディに指定してください。

パラメータ必須デフォルト値説明
modelstringyes使用するモデルの ID を指定します。
promptstringmessages か prompt のどちらかは必須トークンを計算したい文字列を指定します。
messagesarray of MessageObjectmessages か prompt のどちらかは必須トークンを計算したい文字列を指定します。Chat Completions エンドポイントで使用するチャットメッセージと同じ形式が使用できます。
add_special_tokensbooleannotrueBOSなどの特殊トークンを追加するかどうかを指定します。
add_generation_promptbooleannotrue内部で付与する生成用の文字まで適応してtokenize計算をするかどうかを指定します。messages を指定した場合のみ有効です。

レスポンス

フィールド説明
countinteger全体のトークン数です。
max_model_lenintegerモデルが受け付けられる最大のトークン数です。
tokensarray of integer実際の各トークンです。

Models API

利用可能なモデルなどのデータを取得します。

サンプル

リクエスト

curl の場合は PLaMoのAPIキーを PLAMO_API_KEY という環境変数に、 Pythonのライブラリの場合は OPENAI_API_KEY という環境変数にセットしてください。

bash
$ curl \
    -H "Authorization: Bearer ${PLAMO_API_KEY}" \
    -H "Content-Type: application/json" \
    "https://api.platform.preferredai.jp/v1/models"
python
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)

レスポンス

json
{
    "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

利用可能なモデル一覧を取得します。

レスポンス

フィールド説明
objectstringlistが固定で入ります。
dataarray of ModelObjectモデルオブジェクトを返します

Get Model

GET https://api.platform.preferredai.jp/v1/models/{model}

指定したモデルの情報を取得します。

パスパラメータ

パラメータ必須説明
modelstringyes使用するモデルの ID を指定します。

レスポンス

ModelObject を返します。

オブジェクト一覧

MessageObject

チャットメッセージを示します。主に System, User, Assistant からなります。

パラメータ必須デフォルト値説明
contentstringyesメッセージの内容を示します。
rolestringyesメッセージの役割を示します。'system', 'user', 'assistant' のどれかである必要があります。
namestringno同じ role をさらに識別する際に利用する名前です。
reasoningstringnoレスポンスで送られてきた reasoning を設定します。
reasoning_contentstringnoレスポンスで送られてきた reasoning_content を設定します。

StreamOptionObject

ストリーミングレスポンスを利用したときのオプションを示します。

パラメータ必須デフォルト値説明
include_usagebooleannoストリーミングレスポンスが終わる直前に利用状況を返すか否かを指定します。

ChatCompletionToolsObject

Function Calling 機能で利用する Function を定義します。

フィールド説明
typestring'function' を指定してください。
functionChatCompletionsToolsFunctionObjectFunction Calling 機能で利用する Function 本体を定義します。

ChatCompletionToolsFunctionObject

Function 本体を定義します。

フィールド説明
namestringFunction の名前です
descriptionstringFunction の説明です。
parametersstringJSON Schema で表現される Function に与えることができる引数の定義です。JSON Schema についてはこちらを参照してください。 https://json-schema.org/understanding-json-schema

ChatCompletionToolChoiceObject

どの Function を利用するかを定義します。

フィールド説明
typestring'function' を指定してください。
functionChatCompletionToolChoiceFunctionObject利用する Function を指定します。

ChatCompletionToolChoiceFunctionObject

Function を指定します。

フィールド説明
namestring'tools' パラメータで指定した Function の名前を指定してください。

ChoiceObject

Chat 形式で生成した発言の結果を示します。

フィールド説明
indexinteger複数の ChoiceObject があった場合に何番目の Object かを返します。
finish_reason'stop' or 'length'指定した単語が出てきた場合や、トークンの生成の結果自然に終了した場合は stop を、最大生成トークン数を超えた場合は length を返します。
logprobsnull現在サポートされていません。
messageChatMessageObject発言の内容を返します。
stop_reasoninteger or string or null現在サポートされていません。

ChatMessageObject

発言の内容を示します。

フィールド説明
contentstringメッセージの内容を返します。
reasoningstring or nullモデルの推論内容を返します。Reasoning対応モデルでのみ含まれる可能性があります。
reasoning_contentstring or nullreasoning と同じ内容が含まれます。
rolestringメッセージの役割を返します。'system', 'user', 'assistant' のどれかになります。
tool_callsChatMessageToolCallsObjectモデルによって生成された Function Calling の情報です。

ChatMessageToolCallsObject

Functionの結果を示します。

フィールド説明
idstring一意に割り振られたIDです。
typestring'function' になります。
functionChatMessageToolCallsFunctionObjectFunction Calling で呼び出された Function の情報です。

ChatMessageToolCallsFunctionObject

呼び出された Function の情報です。

フィールド説明
namestringFunction の名前を示します。
argumentsstringJSON で記述された Function の引数です。

StreamChoiceObject

Chat 形式で生成した発言の結果をストリームで示します。

フィールド説明
indexinteger複数の ChoiceObject があった場合に何番目の Object かを返します。
finish_reason'stop' or 'length'指定した単語が出てきた場合や、トークンの生成の結果自然に終了した場合は stop を、最大生成トークン数を超えた場合は length を返します。
logprobsnull現在サポートされていません。
deltaChatMessageDeltaObject追加で生成した発言の内容を返します。
stop_reasoninteger or string or null現在サポートされていません。

ChatMessageDeltaObject

発言の内容をストリームで示します。

フィールド説明
contentstringメッセージの内容を返します。role の割り当てが実行されたときなど、content フィールドが存在しない場合もあります。
reasoningstring or nullモデルの推論内容を返します。Reasoning対応モデルでのみ含まれる可能性があります。
reasoning_contentstring or nullreasoning と同じ内容が含まれます。
rolestringメッセージの役割を返します。'system', 'user', 'assistant' のどれかになります。なお、新しい role が割り当てられたときのみ設定されます。

UsageObject

トークン生成の結果などを示します。

フィールド説明
completion_tokensinteger生成したトークン数を返します。

ModelObject

モデルに関する情報を示します。

フィールド説明
idstringモデルを識別する文字列です。APIのパラメータに利用できます。
createdintegerモデルが作成された時刻です。
objectstringこのオブジェクトの種類を表します。現在は常に model が入ります。
owned_bystringモデルの所有者を示します。現在は常に system が入ります。

旧APIエンドポイントについて

https://platform.preferredai.jp/api/completion/v1 以下のAPIエンドポイントは移行されました。 新しいエンドポイントは https://api.platform.preferredai.jp/v1 です。

旧APIエンドポイントは引き続き利用可能ですが、非推奨です。新しいAPIエンドポイントをご利用ください。