toolkitbox

~/ / Artikel AI / LLM lokal di VPS / Memanggil model lokal dari kode Anda: structured outputs dan API yang kompatibel dengan OpenAI di Ollama

Memanggil model lokal dari kode Anda: structured outputs dan API yang kompatibel dengan OpenAI di Ollama

Setelah Ollama berjalan di server Anda, kode Anda sendiri membutuhkan dua hal: cara untuk mendapatkan jawaban dalam bentuk yang tetap, dan cara untuk menjangkau server dari pustaka yang sudah berbicara dengan API OpenAI. Ollama mendokumentasikan keduanya. Artikel ini merangkum halaman structured outputs dan halaman kompatibilitas OpenAI, serta menunjukkan apa yang menurut dokumentasi tidak didukung.

Terbit: · 4 menit baca · Diperiksa terhadap dokumentasi resmi Ollama pada 2026-10-26. Fitur yang didukung berubah antarversi, jadi pastikan lagi di dokumen terbaru.

Dua cara memanggil server yang sama

Ollama punya API sendiri, tempat contoh di dokumentasi melakukan POST ke http://localhost:11434/api/chat. Ollama juga menyediakan API yang kompatibel dengan OpenAI di bawah /v1/, sehingga klien OpenAI yang sudah ada dapat berkomunikasi dengannya cukup dengan mengganti base URL.

ButirNative APIOpenAI-compatible API
Alamat dasarhttp://localhost:11434/api/chathttp://localhost:11434/v1/
Kunci APItidak disebut dalam contohapi_key='ollama', yang oleh halaman tersebut ditandai wajib tetapi diabaikan
Field untuk structured outputformatresponse_format

Baris kunci API berasal dari contoh server lokal di dokumentasi. Untuk cloud, halaman tersebut menampilkan base_url https://ollama.com/v1 dengan kunci API dari akun Ollama Anda, yang merupakan kasus berbeda.

Structured outputs: field format

Field format membatasi respons. Field ini menerima string json untuk JSON generik, atau sebuah objek JSON schema. Pada contoh cURL di dokumentasi, isi permintaan memiliki empat field: model, messages, stream yang diatur ke false, dan format. Schema pada contoh memiliki type, properties, dan required.

Nilai formatEfek menurut dokumentasi
"json"Model menjawab dengan JSON generik
sebuah objek JSON schemaRespons dibatasi sesuai schema tersebut
  • Dokumentasi menyebut sebaiknya JSON schema juga disertakan sebagai string di dalam prompt, untuk mengarahkan respons model.
  • Dokumentasi juga menyarankan menurunkan temperature, misalnya ke 0, agar hasil lebih deterministik.
  • Untuk Python dan JavaScript, dokumentasi menyarankan mendefinisikan schema dengan Pydantic atau Zod, sehingga dapat dipakai ulang untuk validasi.
  • Model vision menerima parameter format yang sama. Contoh vision di dokumentasi mengirim gambar bersama sebuah schema.
  • Menurut halaman tersebut, cloud Ollama saat ini tidak mendukung structured outputs.

Sebelum mengandalkan sebuah schema, periksa dulu. JSON Schema Validator di bawah memberi tahu apakah schema itu sendiri valid dan apakah contoh jawaban sesuai dengannya.

Periksa schema yang Anda kirim

Schema yang keliru bisa gagal belakangan, ketika permintaan pertama sampai ke model. Tempelkan schema beserta contoh JSON yang Anda harapkan, lalu lihat apakah keduanya sesuai.

Coba sekarang: JSON Schema Validator

Mengikuti JSON Schema Draft 2020-12 untuk keyword yang didukungnya. $ref hanya dibaca di dalam schema yang sama.

Semuanya berjalan di browser Anda. Schema dan data tidak diunggah.

Endpoint yang kompatibel dengan OpenAI

EndpointYang dicantumkan halamanDicantumkan sebagai tidak didukung
/v1/chat/completionschat, streaming, JSON mode, keluaran yang dapat direproduksi, vision, tools, kontrol penalaranlogprobs, tool_choice, logit_bias, user, n; URL gambar (gunakan base64)
/v1/completionscompletions, streaming, JSON mode, keluaran yang dapat direproduksilogprobs, best_of, echo, logit_bias, user, n
/v1/modelsmenampilkan daftar dan mengambil modeltidak dicantumkan
/v1/embeddingsinput berupa string atau larik string, format encoding, dimensilarik token, user
/v1/responsesstreaming, tools pemanggilan fungsi, ringkasan penalaranpermintaan stateful: previous_response_id, conversation, truncation
  • Pada endpoint chat, halaman tersebut mencantumkan field permintaan berikut di antara yang didukung: response_format, tools, stream, stream_options, seed, stop, temperature, top_p, max_tokens, frequency_penalty, dan presence_penalty.
  • Halaman tersebut menyatakan bahwa structured outputs bekerja lewat API yang kompatibel dengan OpenAI melalui response_format.
  • Jika kode Anda memakai field dari kolom tidak didukung, ubah kodenya dan jangan berharap server akan mengabaikannya. Dokumentasi tidak menjelaskan bagaimana setiap field yang tidak didukung ditangani, kecuali untuk speech, yang nilai tidak didukungnya mengembalikan error 400.

Tools dan format definisi tool

Baik API native maupun endpoint chat yang kompatibel dengan OpenAI menerima tools. Jika Anda mendeskripsikan tool dalam bentuk OpenAI, Tool Definition Checker di situs ini memeriksa nama, deskripsi, dan schema parameter terhadap format tersebut sebelum Anda mengirimnya.

Ketika jawabannya tetap bukan JSON yang valid

Pembatasan keluaran dimaksudkan untuk memberi Anda JSON yang valid, tetapi kode Anda sendiri mungkin tetap menerima teks dari model lain, versi yang lebih lama, atau permintaan tanpa format. Alat di bawah memperbaiki kesalahan yang umum, seperti code fence, koma di akhir, dan tanda kutip yang salah, serta memberi peringatan bila sebuah perbaikan mengubah makna.

Coba sekarang: LLM JSON Repair

Indentasi

Hanya perbaikan dengan satu jawaban yang jelas yang diterapkan. Selebihnya dilaporkan beserta posisinya, bukan ditebak.

Semuanya berjalan di browser Anda. Teks yang Anda tempelkan tidak diunggah.

Catatan tentang akses

Contoh lokal di dokumentasi menyebut bahwa kunci API wajib tetapi diabaikan. Pembacaan kami, bukan pernyataan dari dokumen: kunci itu tidak melindungi server, jadi biarkan Ollama pada alamat bawaannya dan pasang autentikasi di depannya bila mesin lain harus menjangkaunya.

Sumber

Baca selanjutnya