ドキュメンテーション

使用開始

エージェントフロー

テキスト埋め込み

トークン化

モデルの管理

モデル情報

構造化された応答

JSONスキーマを.respond()メソッドに提供することで、LLMからの特定の応答形式を強制できます。これにより、モデルの出力が提供されたスキーマに準拠することが保証されます。

JSONスキーマは直接提供することも、lmstudio.ModelSchemaプロトコルを実装するオブジェクト(pydantic.BaseModellmstudio.BaseModelなど)を提供することによっても可能です。

lmstudio.ModelSchemaプロトコルは次のように定義されています

@runtime_checkable
class ModelSchema(Protocol):
    """Protocol for classes that provide a JSON schema for their model."""

    @classmethod
    def model_json_schema(cls) → DictSchema:
        """Return a JSON schema dict describing this model."""
        ...

スキーマが提供されると、予測結果のparsedフィールドには、与えられたスキーマに準拠する文字列キーの辞書が含まれます(非構造化結果の場合、このフィールドはcontentと同じ値を含む文字列フィールドです)。

クラスベースのスキーマ定義を使用して強制する

モデルに与えられたスキーマを満たすJSONを生成させたい場合、pydanticmsgspecのようなライブラリを使用して、クラスベースのスキーマ定義を提供することをお勧めします。

Pydanticモデルはlmstudio.ModelSchemaプロトコルをネイティブに実装しており、一方lmstudio.BaseModel.model_json_schema()を適切に実装するmsgspec.Structのサブクラスです。

クラスベースのスキーマを定義する

from pydantic import BaseModel

# A class based schema for a book
class BookSchema(BaseModel):
    title: str
    author: str
    year: int

構造化された応答を生成する

result = model.respond("Tell me about The Hobbit", response_format=BookSchema)
book = result.parsed

print(book)
#           ^
# Note that `book` is correctly typed as { title: string, author: string, year: number }

JSONスキーマを使用して強制する

JSONスキーマを使用して、構造化された応答を強制することもできます。

JSONスキーマを定義する

# A JSON schema for a book
schema = {
  "type": "object",
  "properties": {
    "title": { "type": "string" },
    "author": { "type": "string" },
    "year": { "type": "integer" },
  },
  "required": ["title", "author", "year"],
}

構造化された応答を生成する

result = model.respond("Tell me about The Hobbit", response_format=schema)
book = result.parsed

print(book)
#     ^
# Note that `book` is correctly typed as { title: string, author: string, year: number }