~/ / 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.
| Butir | Native API | OpenAI-compatible API |
|---|---|---|
| Alamat dasar | http://localhost:11434/api/chat | http://localhost:11434/v1/ |
| Kunci API | tidak disebut dalam contoh | api_key='ollama', yang oleh halaman tersebut ditandai wajib tetapi diabaikan |
| Field untuk structured output | format | response_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 format | Efek menurut dokumentasi |
|---|---|
| "json" | Model menjawab dengan JSON generik |
| sebuah objek JSON schema | Respons 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
| Endpoint | Yang dicantumkan halaman | Dicantumkan sebagai tidak didukung |
|---|---|---|
| /v1/chat/completions | chat, streaming, JSON mode, keluaran yang dapat direproduksi, vision, tools, kontrol penalaran | logprobs, tool_choice, logit_bias, user, n; URL gambar (gunakan base64) |
| /v1/completions | completions, streaming, JSON mode, keluaran yang dapat direproduksi | logprobs, best_of, echo, logit_bias, user, n |
| /v1/models | menampilkan daftar dan mengambil model | tidak dicantumkan |
| /v1/embeddings | input berupa string atau larik string, format encoding, dimensi | larik token, user |
| /v1/responses | streaming, tools pemanggilan fungsi, ringkasan penalaran | permintaan 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
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
- Open WebUI di VPS: jalankan dengan Docker dan hubungkan ke OllamaJalankan Open WebUI dengan Docker dan hubungkan ke Ollama di server Anda sendiri: perintahnya, akun pertama, dua jenis koneksi, dan cara memperbarui.
- Apa saja yang bisa dilakukan model lokal? Tools, thinking, vision, dan embedding di Ollama, serta apa yang muat di VPSTools, thinking, vision, embedding: arti label di pustaka Ollama, model mana yang membawanya, dan seberapa besar unduhannya.
- Memasang Ollama di VPS dan menjaganya tetap berjalan: instalasi, layanan systemd, pengaturan, dan pembaruanPasang Ollama di VPS Linux dan jaga tetap berjalan: perintah instalasi, layanan systemd, variabel lingkungan, penyimpanan model, dan pembaruan, dari dokumentasi resmi.
- Berapa memori yang dibutuhkan LLM lokal di VPS? File model plus cache KVFile model plus cache KV: apa kata pustaka Ollama, FAQ Ollama, dan konfigurasi model resmi tentang memori yang dibutuhkan LLM lokal di VPS.