ドキュメント
インテグレーション
Model Context Protocol (MCP)
モデル (model.yaml)
API
インテグレーション
Model Context Protocol (MCP)
モデル (model.yaml)
API
API
構造化出力
JSONスキーマを使用してLLMの応答フォーマットを強制します。
LM Studio の REST API (または任意の OpenAI クライアント) を介して、LM Studio の REST API を使用して /v1/chat/completions エンドポイントに JSON スキーマを提供することで、LLM から特定の応答フォーマットを強制することができます。
LM Studio をプログラムから自分のコードで使用するには、LM Studio をローカルサーバーとして実行してください。
サーバーは LM Studio の「開発者」タブから、または lms CLI を使用してオンにできます。
lms server start
npx lmstudio install-cli を実行して lms をインストールしてください。これにより、OpenAI ライクな REST API を介して LM Studio と対話できるようになります。LM Studio の OpenAI ライクな API の概要については、LM Studio をサーバーとして実行する を参照してください。
API は、JSON スキーマが提供された場合に、/v1/chat/completions エンドポイントを介して構造化された JSON 出力をサポートします。これにより、LLM は提供されたスキーマに準拠した有効な JSON で応答するようになります。
これは、OpenAI が最近発表した Structured Output API と同じ形式に従っており、OpenAI クライアント SDK を介して機能することが期待されます。
curl を使用した例
この例では、curl ユーティリティを使用した構造化出力リクエストを示します。
この例を Mac または Linux で実行するには、任意のターミナルを使用してください。Windows では、Git Bash を使用してください。
curl http://{{hostname}}:{{port}}/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "{{model}}", "messages": [ { "role": "system", "content": "You are a helpful jokester." }, { "role": "user", "content": "Tell me a joke." } ], "response_format": { "type": "json_schema", "json_schema": { "name": "joke_response", "strict": "true", "schema": { "type": "object", "properties": { "joke": { "type": "string" } }, "required": ["joke"] } } }, "temperature": 0.7, "max_tokens": 50, "stream": false }'
/v1/chat/completions で認識されるすべてのパラメータは尊重され、JSON スキーマは response_format の json_schema フィールドで提供する必要があります。
JSON オブジェクトは、通常の応答フィールドである choices[0].message.content で string 形式で提供され、JSON オブジェクトに解析する必要があります。
python を使用した例
from openai import OpenAI import json # Initialize OpenAI client that points to the local LM Studio server client = OpenAI( base_url="https://:1234/v1", api_key="lm-studio" ) # Define the conversation with the AI messages = [ {"role": "system", "content": "You are a helpful AI assistant."}, {"role": "user", "content": "Create 1-3 fictional characters"} ] # Define the expected response structure character_schema = { "type": "json_schema", "json_schema": { "name": "characters", "schema": { "type": "object", "properties": { "characters": { "type": "array", "items": { "type": "object", "properties": { "name": {"type": "string"}, "occupation": {"type": "string"}, "personality": {"type": "string"}, "background": {"type": "string"} }, "required": ["name", "occupation", "personality", "background"] }, "minItems": 1, } }, "required": ["characters"] }, } } # Get response from AI response = client.chat.completions.create( model="your-model", messages=messages, response_format=character_schema, ) # Parse and display the results results = json.loads(response.choices[0].message.content) print(json.dumps(results, indent=2))
重要: すべてのモデルが構造化出力を実行できるわけではありません。特に 7B パラメータ未満の LLM では困難です。
モデルが構造化出力をサポートしているか不明な場合は、モデルカードの README を確認してください。
GGUF モデルの場合: llama.cpp の文法ベースサンプリング API を利用してください。MLX モデルの場合: Outlines を使用します。MLX の実装は GitHub で利用可能です: lmstudio-ai/mlx-engine。
他の LM Studio ユーザーとチャットし、LLM、ハードウェアなどについて LM Studio Discord サーバーで議論しましょう。
このページのソースは GitHub で入手できます。