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 のようなビジョンモデルと互換性があります。これにより、詳細な画像分析が可能になり、モデルは summaryobjects(信頼度スコア付き)、scenecolorstime_of_day といった特定のフィールドを構造化された形式で返却します。

信頼性のためのベストプラクティス

最も決定論的で信頼性の高い構造化出力を確保するために、Ollama は以下のプラクティスを提案しています:

  • スキーマ定義: 応答スキーマを定義するために Pydantic (Python) または Zod (JavaScript) を使用する。
  • プロンプトエンジニアリング: モデルを導くために、プロンプトに「return as JSON」というフレーズを明示的に含める。
  • 決定論的なサンプリング: 出力の変動を減らすために temperature を 0 に設定する。

将来のロードマップ

Ollama は、制御された生成を改善するために、いくつかの今後の拡張予定を概説しています:

  • 生成に対するよりきめ細かな制御を行うための logits の公開。
  • 構造化出力のパフォーマンスと精度の向上。
  • サンプリングのための GPU 加速の実装。
  • JSON schema を超えた形式のサポートの拡大。

Sources

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch