toolkitbox

~/ / AI記事 / ローカルLLM × VPS / ローカルモデルを自分のコードから呼び出す: Ollama の構造化出力と OpenAI 互換 API

ローカルモデルを自分のコードから呼び出す: Ollama の構造化出力と OpenAI 互換 API

サーバーで Ollama が動いたら、自分のコードには二つのものが必要になります。決まった形で答えを受け取る方法と、すでに OpenAI API に対応しているライブラリからサーバーにつなぐ方法です。Ollama はどちらもドキュメントで説明しています。この記事では、構造化出力のページと OpenAI 互換のページを要約し、ドキュメントが未対応としている点も取り上げます。

この記事の末尾に、アフィリエイト広告(PR)のリンクがあります。

公開: · 約6分で読めます · 2026-10-26 に Ollama の公式ドキュメントで確認しました。対応している機能はバージョンによって変わるため、最新のドキュメントで確かめてください。

同じサーバーを呼び出す二つの方法

Ollama には独自の API があり、ドキュメントの例では http://localhost:11434/api/chat に POST しています。このほかに /v1/ 以下で OpenAI 互換 API も提供しており、既存の OpenAI クライアントは、ベース URL を変えるだけでつなげます。

項目ネイティブ APIOpenAI 互換 API
ベースアドレスhttp://localhost:11434/api/chathttp://localhost:11434/v1/
API キー例には記載なしapi_key='ollama'。ページには、必須だが無視されると書かれています
構造化出力のフィールドformatresponse_format

API キーの行は、ドキュメントにあるローカルサーバーの例に基づいています。クラウドの場合、ページには base_url に https://ollama.com/v1 を指定し、Ollama アカウントの API キーを使う例が示されており、これは別のケースです。

構造化出力: format フィールド

format フィールドは応答を制約します。一般的な JSON を指す文字列 json か、JSON schema オブジェクトを指定できます。ドキュメントの cURL の例では、リクエストボディに四つのフィールドがあります。model、messages、false に設定した stream、そして format です。例の schema には type、properties、required が含まれています。

format の値ドキュメントによる効果
"json"モデルは一般的な JSON で答えます
JSON schema オブジェクト応答がその schema に制約されます
  • ドキュメントによると、モデルの応答の土台を固めるために、JSON schema を文字列としてプロンプトにも含めるのが望ましいとされています。
  • また、より決定的な生成結果を得るために、temperature を 0 などに下げることも勧めています。
  • Python と JavaScript では、schema を Pydantic や Zod で定義すると、検証にも再利用できると提案しています。
  • ビジョンモデルでも同じ format パラメータを使えます。ドキュメントのビジョンの例では、画像と schema を一緒に渡しています。
  • ページによると、Ollama のクラウドは現時点では構造化出力に対応していません。

schema を使う前に確認しましょう。下の JSON Schema Validator なら、schema 自体が正しいかどうかと、サンプルの答えが schema に合っているかどうかがわかります。

送る schema を確認する

schema に間違いがあると、最初のリクエストがモデルに届いてから、ようやく失敗することがあります。schema と、期待する JSON のサンプルを貼り付けて、両者が合っているか確かめてください。

試してみる: JSON Schema Validator

対応しているキーワードについては、JSON Schema Draft 2020-12 に従っています。$ref は、同じ schema の中だけを読み取ります。

すべてブラウザの中で処理します。schema もデータもアップロードされません。

OpenAI 互換のエンドポイント

エンドポイントページに記載されているもの未対応として記載されているもの
/v1/chat/completionsチャット、ストリーミング、JSON mode、再現可能な出力、ビジョン、ツール、推論の制御logprobs、tool_choice、logit_bias、user、n。画像 URL(base64 を使用)
/v1/completionsコンプリーション、ストリーミング、JSON mode、再現可能な出力logprobs、best_of、echo、logit_bias、user、n
/v1/modelsモデルの一覧表示と取得記載なし
/v1/embeddings文字列または文字列配列の入力、エンコード形式、次元数トークン配列、user
/v1/responsesストリーミング、関数呼び出しのツール、推論の要約状態を持つリクエスト: previous_response_id、conversation、truncation
  • チャットのエンドポイントについて、ページは対応するリクエストフィールドとして response_format、tools、stream、stream_options、seed、stop、temperature、top_p、max_tokens、frequency_penalty、presence_penalty を挙げています。
  • ページには、構造化出力は response_format を通じて OpenAI 互換 API でも使えると書かれています。
  • 未対応の欄にあるフィールドをコードで使っている場合は、サーバー側で無視されることを期待せず、コードのほうを直してください。未対応のフィールドがそれぞれどう扱われるかは、ドキュメントに書かれていません。ただし音声については、未対応の値を指定すると 400 エラーが返ると書かれています。

ツールと、ツール定義の形式

ネイティブ API も OpenAI 互換のチャットエンドポイントも、tools を受け付けます。ツールを OpenAI の形式で記述する場合は、このサイトの Tool Definition Checker で、送る前に名前、説明、パラメータの schema がその形式に合っているか確認できます。

それでも答えが有効な JSON にならないとき

出力を制約するのは有効な JSON を得るためですが、別のモデルや古いバージョン、あるいは format を付けないリクエストから、コードがただの文章を受け取ることもあります。下のツールは、コードフェンス、末尾のカンマ、誤った引用符といった、よくある不具合を修復し、修復によって意味が変わる場合は警告します。

試してみる: LLM JSON Repair

インデント

答えが一つに決まる修正だけを適用します。それ以外は推測せず、位置とともに報告します。

すべてブラウザの中で処理します。貼り付けたテキストはアップロードされません。

アクセスについての注意

ドキュメントのローカルの例には、API キーは必須だが無視されると書かれています。ここからは私たちの解釈で、ドキュメントに書かれていることではありません。このキーはサーバーを守るものではないため、Ollama は既定のアドレスのままにして、ほかのマシンからつなぐ必要がある場合は、その手前に認証を置いてください。

VPSを選ぶときは:AIで使う目で6社を見る(PR)

プランは、まずメモリ、次にモデルを置くディスク、そのあとCPUの順に見ます。ここでは、国内の6つのVPSを、AIを動かす目で見て、公式ページに書かれていることと、当サイトの見立てを並べました。

同じ運営者のサイト sabakore.com の「AI・LLM向けVPS診断」では、動かしたいモデルと月額の上限から、メモリに載るプランを料金の安い順に並べられます(GPUは使わず、CPUだけで動かす前提の診断です)。

sabakore.com のAI・LLM向けVPS診断を開く

評価のものさし

  • メモリ: いちばん大きいプランのメモリ。12GB以上なら○(Qwen3 14B が4,096トークンで約10.3 GiB。記事「VPSでローカルLLMを動かすのに必要なメモリ」の表)、8GB以上なら△(Qwen3 8B が約6.4 GiB)。
  • AIツールの入れやすさ: 公式ページに AI 用のテンプレートやスクリプトの記載があれば○、Docker の構築環境だけなら△、記載がなければ×(使えない、という意味ではありません)。
  • 料金と速さは評価しません。料金は変わり、CPUだけで動かしたときの速さは公式に数字がないためです。

公式ページで確認した日:

以下の6社の紹介は、アフィリエイト広告(PR)です。リンク先で申し込みがあると、当サイトの運営者に報酬が支払われます。並びは名前順で、報酬額は並びに関係ありません。評価は、各社の公式ページの記載(確認日は下に表示)だけにもとづく当サイトの見立てで、実際に動かして測ったものではありません。プランの内容や料金は変わるので、申し込む前に公式で確認してください。この記事は、これらのサービスでの動作を保証するものではありません。

  • ConoHa VPS (PR)

    メモリ○AIツールの入れやすさ○

    公式ページに書かれていること

    • 料金表のメモリは512MBから128GBまで(CPUは最大40コア)
    • スタートアップスクリプトで OpenClaw、Claude Code、n8n、Dify などを導入できると書かれている
    • GPUプランは、このページには記載なし(GPU用の案内は別のページ)

    当サイトの見立て

    メモリの選択肢が広く、AIツールを入れる仕組みも公式に用意されているので、「まず Dify や n8n を動かして試す」使い方と、大きめのモデルを載せたい使い方のどちらにも向きます。

    申し込む前に

    最小プランの書き方がページ内で食い違っています(料金表は512MB、FAQは1GB〜)。申し込む前に、いま選べるプランを公式で確認してください。CPUだけで動かしたときの速さは公式に数字がありません。

    ConoHa VPSの公式サイトで申し込む(PR)公式ページ

  • KAGOYA CLOUD VPS (PR)

    メモリ△AIツールの入れやすさ○

    公式ページに書かれていること

    • メモリは1GB・2GB・4GB・8GB(CPUは最大6コア、SSDは100GB〜800GB)
    • 「オープンソースのAI開発基盤DifyをVPSで手軽に導入」できると書かれ、Docker の構築済みサーバーもある
    • 日額・月額(月額上限あり)と年額の定額プランがある

    当サイトの見立て

    Dify を動かす用途が公式に想定されています。日額の料金から使えるので、「まず試して合わなければやめる」進め方がしやすい一方、メモリは8GBまでなので、載せられるモデルは8B級までが目安です。

    申し込む前に

    8GBでの Qwen3 8B は、4,096トークンの見積もりで約6.4 GiBです。コンテキストを長くする、同時に使う人を増やすと足りなくなります。GPUプランはこのページに記載がありません。

    KAGOYA CLOUD VPSの公式サイトで申し込む(PR)公式ページ

  • XServer VPS (PR)

    メモリ○AIツールの入れやすさ○

    公式ページに書かれていること

    • 料金表に載っているのは2GB・4GB・8GBの3プラン(NVMe SSD、8GBは6コア・400GB)。FAQには高負荷の用途向けに最大64GBのプランがあると書かれている
    • アプリイメージに Dify があり、FAQは用途の例として「AIツールのホスティング」を挙げている
    • GPUは、別サービスの「GPUサーバー」へのリンクがあるだけで、VPSのページには記載なし

    当サイトの見立て

    Dify のアプリイメージと「AIツールのホスティング」という用途が公式に書かれています。小さく始めて、必要になったら大きいプランへ、という使い方ができそうです。

    申し込む前に

    64GBのプランの内容や料金は、このページには載っていません。大きいモデルを載せたいときは、申し込む前に、そのプランが今も選べるかを公式で確認してください。

    XServer VPSの公式サイトで申し込む(PR)公式ページ

  • お名前.com VPS (PR)

    メモリ○AIツールの入れやすさ×

    公式ページに書かれていること

    • メモリは1GBから16GBまで(CPUは最大10コア、SSDは100GB〜1TB)
    • KVM の仮想化で、Linux 環境を使える
    • AI や Docker のテンプレートは、このページには記載なし

    当サイトの見立て

    16GB・10コア・1TBまで選べるので、自分でモデルを入れて動かす前提なら、メモリとディスクには余裕があります。AIツールの導入は自分で組み立てることになります。

    申し込む前に

    AI向けのテンプレートや手順は公式にありません。このサイトの「VPSにOllamaを入れて動かし続ける」の手順で自分で入れることになります。

    お名前.com VPSの公式サイトで申し込む(PR)公式ページ

  • クラウドVPS byGMO (PR)

    メモリ○AIツールの入れやすさ×

    公式ページに書かれていること

    • Vシリーズは1GB・2GB・4GB・6GB・8GB・12GB(CPUは最大7コア、ディスクは50GB〜800GB)
    • プランの月額料金とは別に、サーチャージ費が課金される
    • AI や Docker のテンプレートは、このページには記載なし

    当サイトの見立て

    12GBまで選べるので、8B級のモデルを長めのコンテキストで使いたいときの選択肢になります。AIツールは自分で入れる前提です。

    申し込む前に

    月額に加えてサーチャージ費がかかるので、実際の支払いは料金表より増えます。申し込む前に、合計の目安を公式で確認してください。

    クラウドVPS byGMOの公式サイトで申し込む(PR)公式ページ

  • さくらのVPS (PR)

    メモリ△AIツールの入れやすさ△

    公式ページに書かれていること

    • メモリは512MBから8GBまで(CPUは最大6コア、SSDは25GB〜400GB。オプションで最大800GB)
    • 用途の例に「AI / 機械学習用途」があり、推奨はメモリ16GB〜・SSD 100GB〜と書かれている(掲載プランの最大は8GB)
    • スタートアップスクリプトに Docker の構築環境がある。AI専用のテンプレートは記載なし。石狩・大阪・東京から選べる

    当サイトの見立て

    公式がAI用途の推奨に挙げる16GBには、掲載プランの最大(8GB)が届きません。4B級までの小さなモデルや、Dify だけを動かす使い方なら選べます。

    申し込む前に

    8GBまでのプランで、AI用途の公式の推奨(16GB〜)を満たすものは、このページにはありません。GPUプランも記載がありません。

    さくらのVPSの公式サイトで申し込む(PR)公式ページ

出典

次に読む