ドキュメンテーション
構造化された応答
JSONスキーマを.respond()
メソッドに提供することで、LLMからの特定の応答形式を強制できます。これにより、モデルの出力が提供されたスキーマに準拠することが保証されます。
JSONスキーマは直接提供することも、lmstudio.ModelSchema
プロトコルを実装するオブジェクト(pydantic.BaseModel
やlmstudio.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を生成させたい場合、pydantic
やmsgspec
のようなライブラリを使用して、クラスベースのスキーマ定義を提供することをお勧めします。
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スキーマを使用して、構造化された応答を強制することもできます。
# 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 }
このページ
クラスベースのスキーマ定義を使用して強制する
- クラスベースのスキーマを定義する
- 構造化された応答を生成する
JSONスキーマを使用して強制する
- JSONスキーマを定義する
- 構造化された応答を生成する