モデルカタログ
- 規範的
- ドラフト 1.0
- 更新日
- Markdown で表示
5.1 モデルの一覧
GET /lmsp/v1/models?capability=chat&ready_only=false
Authorization: Bearer <token>
| クエリパラメーター | 意味 |
|---|---|
capability |
指定した機能を持つモデルだけを返す。例: chat、embeddings、tools。 |
ready_only |
true のとき、status が ready のモデルだけを返す。既定は false。 |
{
"object": "list",
"catalog_revision": "42",
"data": [
{
"id": "qwen3:14b-q4_k_m",
"object": "model",
"display_name": "Qwen3 14B Q4_K_M",
"owned_by": "local",
"family": "qwen3",
"revision": "sha256:8f27c1a4e9b05d36f2a7c8e1b4d90a63c5e2f7b8a1d4c9e60b3f5a7d2c8e1b04",
"status": "ready",
"capabilities": {
"chat": true,
"completion": true,
"embeddings": false,
"tools": true,
"vision": false,
"structured_output": true,
"streaming": true
},
"input_modalities": ["text"],
"output_modalities": ["text"],
"context_window": 32768,
"max_output_tokens": 8192,
"runtime": {
"backend": "llama.cpp",
"device": "metal",
"load_on_demand": true
}
}
]
}
クライアントがカタログ全体を何度も取得し直さずに済むよう、サービスは ETag ヘッダー、catalog_revision フィールド、またはその両方を返すべきである。
catalog_revisionは、カタログが変わるたびに変わる不透明な文字列である。ETagを送るサービスは、一致するIf-None-Matchに対して304 Not Modifiedで応答するべきである。
5.2 モデルオブジェクト
| フィールド | 意味 |
|---|---|
id |
安定したモデル識別子。モデルを指定するすべてのリクエストで使う。 |
object |
常に "model"。 |
display_name |
人間が読める名前。ユーザーが変更できる。 |
aliases |
別名の任意のリスト。参考情報にすぎない。 |
owned_by |
モデルの出どころ。このデバイスにインストールされたモデルでは local。 |
family |
モデルファミリー。例: qwen3。 |
revision |
モデル内容のダイジェスト。例: sha256:8f27...。 |
status |
ライフサイクル状態(5.3 節)。 |
capabilities |
真偽値のフラグ: chat、completion、embeddings、tools、vision、structured_output、streaming。 |
input_modalities, output_modalities |
モデルが読み書きするコンテンツの種類。1.0 で定義されているモダリティは text だけである。 |
context_window |
コンテキストの最大トークン数。 |
max_output_tokens |
1 回のレスポンスの最大トークン数。 |
runtime |
backend(例: llama.cpp)、device(例: metal)、load_on_demand。 |
error |
status が error のときに存在する。problem オブジェクト(9.3 節)。 |
モデルの id は安定していなければならない。表示名と別名はユーザーが変更できるため、主キーとして使ってはならない。
5.3 モデルのライフサイクル
installed --> loading --> ready --> unloading --> installed
|
+-----> error
| 状態 | 意味 |
|---|---|
installed |
モデルは存在するが、ロードされていない。 |
loading |
メモリの確保中、またはランタイムの初期化中。 |
ready |
モデルがすぐにリクエストを処理できる。 |
unloading |
リソースを解放中。 |
error |
ロードに失敗した。モデルオブジェクトは構造化されたエラーを持つべきである。 |
error 状態のモデルは、新しいロードリクエストによって loading に戻る。
リクエストが installed 状態のモデルを指定し、その runtime.load_on_demand が true の場合、サービスはリクエストの一部としてそのモデルをロードする。モデルがすぐに使えず、オンデマンドでもロードされない場合、サービスは 409 と model_not_ready で応答する。ロードに失敗した場合のエラーは model_load_failed である。
5.4 モデルの操作
GET /lmsp/v1/models/{model_id} は 1 つのモデルオブジェクトを返す。未知の ID では 404 と model_not_found を返す。
2 つの任意エンドポイントで、ロードを明示的に制御できる。これらは model_management 機能が true の場合に利用でき、models:manage スコープを必要とする(10.3 節)。
| エンドポイント | 動作 |
|---|---|
POST /lmsp/v1/models/{model_id}/load |
モデルを事前ロードする。ロードが開始された場合はモデルオブジェクトを 202 Accepted で返し、すでに ready の場合は 200 で返す。 |
POST /lmsp/v1/models/{model_id}/unload |
モデルをアンロードする。モデルオブジェクトを返す。同じリクエストを繰り返しても害はない。 |
どちらも Idempotency-Key(9.2 節)を受け付ける。