𝗢𝗹𝗹𝗮𝗺𝗮 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗢𝘂𝘁𝗽𝘂𝘁𝘀 𝗗𝗮𝗹𝗮𝗺 𝗣𝗿𝗮𝗸𝘁𝗶𝗸
Menjalankan LLM lokal sering kali menyebabkan kesalahan parsing JSON. Anda menyuruh model untuk hanya mengembalikan JSON. Namun, model tetap menambahkan markdown fences atau teks tambahan. Hal ini merusak kode Anda.
Sejak Ollama 0.3.0, Anda dapat memperbaiki hal ini menggunakan parameter format. Ini memaksa model untuk mengikuti skema JSON. Hal ini membuat model secara fisik tidak mungkin menambahkan teks tambahan atau markdown.
Saya menguji ini dengan Gemma4 dan Ollama 0.30.7. Berikut adalah hasilnya.
Masalah dengan Teks Alami
Model dilatih untuk percakapan. Mereka ingin mengatakan "Ini adalah JSON Anda." Bahkan dengan prompt yang ketat, mereka sering membungkus respons dalam blok kode. json.loads() di Python akan gagal saat menemui blok-blok tersebut.
Keunggulan Kecepatan
Menggunakan parameter format jauh lebih cepat.
- Tanpa structured output: 32 detik
- Dengan structured output: 5 detik
Ini adalah peningkatan kecepatan sebesar 6,4x. Model tidak membuang waktu untuk memutuskan bagaimana cara memformat teks. Model hanya menghasilkan token yang sesuai dengan skema Anda.
Menggunakan Pydantic untuk Type Safety Anda tidak perlu menulis skema JSON secara manual. Gunakan model Pydantic untuk menghasilkannya secara otomatis.
- Definisikan model Pydantic Anda.
- Gunakan
model_json_schema()untuk membuat skema. - Masukkan skema tersebut ke Ollama.
- Gunakan
model_validate_json()untuk memparsing dan memvalidasi data sekaligus.
Pendekatan ini sangat cocok untuk AI agent. Anda dapat menggunakannya untuk memutuskan tool mana yang harus dipanggil agent selanjutnya. Jika model mencoba mengarang nama tool yang tidak ada, Pydantic akan segera menangkapnya.
Batasan Saat Ini
- Skema yang bersarang dalam (deeply nested) terkadang dapat mengembalikan array kosong pada model yang lebih kecil.
- Field opsional mungkin mengembalikan string kosong alih-alih
null. - Skema yang besar menggunakan lebih banyak context window Anda.
Praktik Terbaik
- Gunakan ekstraksi sederhana untuk model kecil.
- Gunakan Pydantic untuk validasi dan pemilihan tool agent.
- Gunakan model yang lebih besar untuk data yang kompleks dan bersarang.
- Tambahkan logika retry saat Pydantic melempar error validasi.
Berhentilah berharap prompt Anda berhasil. Gunakan structured outputs untuk membuat pipeline LLM lokal Anda dapat diandalkan.
Komunitas belajar opsional: https://t.me/GyaanSetuAi