Skip to content

API リファレンス ​

Chat Completions ​

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

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

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

モデル IDコンテキスト長最大アウトプットトークン数Reasoning対応
plamo-3.0-prime262,144 トークン20,480 トークン対応

サンプル ​

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-3.0-prime"
}
EOF
python
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    base_url="https://api.platform.preferredai.jp/v1",
    model="plamo-3.0-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-3.0-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-3.0-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-3.0-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-3.0-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-3.0-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-3.0-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-3.0-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-3.0-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 形式でリクエストボディに指定してください。

パラメータ型必須デフォルト値説明
modelstringyes使用するモデルの ID を指定します。
messagesarray of MessageObjectyesチャットメッセージをリスト形式で設定します。各メッセージは、role と content を持ちます。
frequency_penaltyfloatno0.0トークンの繰り返し頻度を制御します。有効な値は -2.0 から 2.0 の間の値です。
max_tokensinteger or nullno20480指定したトークン数まで生成した場合、そこで生成を打ち切ります。生成される内容によっては、これより早く生成が終了することがあります。モデルの最大アウトプットトークン数を超えて設定することはできません。
nintegerno11 回のリクエストで生成を実行する回数を指定します。有効な値は 1 か 2 です。
presence_penaltyfloatno0.0すでに出力されたトークンが再び出現することに対するペナルティを付与します。有効な値は -2.0 から 2.0 の間の値です。
reasoningReasoningObjectnonullreasoning 関連の設定を行えます。
reasoning_effortnone or mediumnononereasoning をどれくらい行うかを選べます。サポートされているのは reasoning しない none か、標準的な量の reasoning を行う medium のみです。reasoning 内の effort を指定した場合、こちらは無視されます。
response_formatResponseFormatObject or nullnonullレスポンスの出力形式を指定します。{ "type": "json_schema", "json_schema": {...} } を指定すると、指定した JSON Schema に従った JSON 形式のレスポンスを生成します。
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 は明示的に設定されなかった場合に20480が設定されます。そのため、入力がコンテキスト長未満だったとしてもエラーになります。 その場合は 入力トークン数+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-3.0-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-3.0-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 を設定します。

ReasoningObject ​

reasoning 関連のパラメータを指定します。

パラメータ型必須デフォルト値説明
summarystringnonullreasoning 本文の要約を生成するかどうかを指示できます。 auto / concise / detailed のいずれかを指定します。省略時は要約生成を行いません。なお、要約生成に利用したトークンはそのままトークン利用としてカウントされます。
effortnone or mediumnononereasoning をどれくらい行うかを選べます。サポートされているのは reasoning しない none か、標準的な量の reasoning を行う medium のみです。 reasoning_effort より優先されます。

ResponseFormatObject ​

レスポンスの出力形式を指定します。

パラメータ型必須デフォルト値説明
typestringyesjson_schema を指定してください。
json_schemaResponseFormatJsonSchemaObjectyesモデルが生成する JSON の構造を JSON Schema で指定します。

ResponseFormatJsonSchemaObject ​

Structured Outputs で利用する JSON Schema の設定を指定します。

パラメータ型必須デフォルト値説明
namestringyesレスポンス形式の名前です。
descriptionstring or nullnonullレスポンス形式の説明です。
schemaobjectyesレスポンスが従う JSON Schema オブジェクトです。JSON Schema の仕様については、JSON Schema を参照してください。
strictbooleannofalsetrue を指定すると、モデルは schema で定義した構造に厳密に従うレスポンスを生成します。利用できる JSON Schema には制限があります。

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エンドポイントをご利用ください。