Ollama 構造化出力のリリース
Ollama は構造化出力をサポートし、開発者が言語モデルの応答を JSON schema で定義された特定の形式に制約できるようにしました。このアップデートにより、以前の JSON モードよりも高い信頼性と一貫性が提供され、Ollama の cURL API、Python、および JavaScript ライブラリ全体でサポートされます。
主要な機能とユースケース
構造化出力により、モデルは事前定義されたスキーマに厳密に従うことができ、これは LLM の応答をプログラム的なワークフローに統合するために不可欠です。主なユースケースには以下が含まれます:
- データ解析: 非構造化ドキュメントから構造化された情報を抽出する。
- 視覚分析: ビジョンモデルを使用して、画像からデータと説明を抽出する。
- 応答の標準化: すべての言語モデルの応答が、後続の処理のために一貫した形式に従うようにする。
実装方法
構造化出力を使用するには、リクエストに format パラメータを渡す必要があります。これは、いくつかのインターフェースを通じて実現できます:
cURL API
format パラメータは、必要なプロパティとその型(例:string、array)を定義する JSON schema オブジェクトを受け入れます。
Python ライブラリ
Ollama は、スキーマを定義するために Pydantic を使用することを推奨しています。スキーマは model_json_schema() メソッドを使用して format パラメータに渡されます。
JavaScript ライブラリ
Ollama は、format パラメータ用のスキーマをシリアル化するために、Zod と zod-to-json-schema を組み合わせて使用することを推奨しています。
OpenAI 互換性
Ollama は OpenAI 互換の beta.chat.completions.parse メソッドをサポートしており、ローカルの Ollama インスタンスに接続する際に、開発者が Pydantic モデルを response_format として使用することを可能にします。
高度なアプリケーション
構造化データの抽出
スキーマ(例:PetList を含む Pet オブジェクトのリスト)を定義することで、モデルは複数のエンティティの自然言語による説明を解析し、検証済みの JSON 配列として返却することができます。
ビジョンモデルの統合
構造化出力は llama3.2-vision のようなビジョンモデルと互換性があります。これにより、詳細な画像分析が可能になり、モデルは summary、objects(信頼度スコア付き)、scene、colors、time_of_day といった特定のフィールドを構造化された形式で返却します。
信頼性のためのベストプラクティス
最も決定論的で信頼性の高い構造化出力を確保するために、Ollama は以下のプラクティスを提案しています:
- スキーマ定義: 応答スキーマを定義するために Pydantic (Python) または Zod (JavaScript) を使用する。
- プロンプトエンジニアリング: モデルを導くために、プロンプトに「return as JSON」というフレーズを明示的に含める。
- 決定論的なサンプリング: 出力の変動を減らすために
temperatureを 0 に設定する。
将来のロードマップ
Ollama は、制御された生成を改善するために、いくつかの今後の拡張予定を概説しています:
- 生成に対するよりきめ細かな制御を行うための logits の公開。
- 構造化出力のパフォーマンスと精度の向上。
- サンプリングのための GPU 加速の実装。
- JSON schema を超えた形式のサポートの拡大。
Sources
- OriginalStructured outputs
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch