Output terstruktur dengan Ollama
(ollama.com)Output terstruktur
6 Desember 2024
Ollama kini mendukung output terstruktur yang dapat membatasi keluaran model ke format tertentu yang didefinisikan dengan skema JSON. Library Ollama untuk Python dan JavaScript telah diperbarui agar mendukung output terstruktur.
- Kasus penggunaan output terstruktur:
- Parsing data dari dokumen
- Mengekstrak data dari gambar
- Menstrukturkan semua respons model bahasa
- Memberikan keandalan dan konsistensi yang lebih tinggi dibanding mode JSON
Memulai
- Unduh versi terbaru Ollama
- Upgrade library Ollama Python atau JavaScript ke versi terbaru
cURL
- Anda dapat meneruskan output terstruktur ke model menggunakan parameter
format
Output
- Respons dikembalikan dalam format yang didefinisikan oleh skema JSON pada permintaan
Python
- Gunakan library Ollama Python untuk meneruskan skema sebagai objek JSON ke parameter
format - Disarankan menggunakan Pydantic untuk membuat serialisasi skema
Output
name='Canada' capital='Ottawa' languages=['English', 'French']
JavaScript
- Gunakan library Ollama JavaScript untuk meneruskan skema sebagai objek JSON ke parameter
format - Disarankan menggunakan Zod untuk membuat serialisasi skema
Output
{ name: "Canada", capital: "Ottawa", languages: [ "English", "French" ] }
Contoh
Ekstraksi data
- Definisikan skema yang merepresentasikan informasi untuk mengekstrak data terstruktur dari teks
- Model mengekstrak informasi dan mengembalikan data dalam JSON sesuai skema yang didefinisikan
Contoh output
pets=[ Pet(name='Luna', animal='cat', age=5, color='grey', favorite_toy='yarn'), Pet(name='Loki', animal='cat', age=2, color='black', favorite_toy='tennis balls') ]
Deskripsi gambar
- Output terstruktur dapat digunakan bersama model vision
- Gunakan
llama3.2-visionuntuk mendeskripsikan gambar dan mengembalikan output terstruktur
Contoh output
summary='A palm tree on a sandy beach with blue water and sky.'objects=[ Object(name='tree', confidence=0.9, attributes='palm tree'), Object(name='beach', confidence=1.0, attributes='sand') ]scene='beach', colors=['blue', 'green', 'white'], time_of_day='Afternoon', setting='Outdoor', text_content=None
Kompatibilitas OpenAI
- Kompatibel dengan output terstruktur menggunakan klien OpenAI
Tips
- Untuk menggunakan output terstruktur secara andal:
- Gunakan Pydantic (Python) atau Zod (JavaScript) untuk mendefinisikan skema respons
- Tambahkan "kembalikan dalam JSON" ke prompt agar model memahami permintaan
- Atur temperature ke 0 untuk output yang lebih deterministik
Langkah berikutnya
- Exposing logit untuk generasi yang terkontrol
- Peningkatan performa dan akurasi output terstruktur
- Akselerasi GPU untuk sampling
- Dukungan format tambahan di luar skema JSON
1 komentar
Opini Hacker News
Batasan output yang lebih kuat dapat diterapkan melalui fitur gbnf di llama.cpp
Berguna untuk menghapus teks yang tidak perlu saat prompt biasa distrukturkan dan diubah menjadi data csv
Dengan menggunakan gemma2:2b, saat teks dimasukkan dapat diperoleh output dalam format JSON terstruktur
{"amount": 190, "balance": 5098, "category": "Shopping", "place": "Fresh Mart"}Ada pendapat yang penasaran bagaimana batasan memengaruhi kualitas output LLM
Ada pertanyaan apakah ini bisa digunakan dengan model yang didukung
Ada rasa penasaran apakah llama.cpp dan ollama memanfaatkan fitur structured output milik llama, atau diimplementasikan dengan cara lain
Ada pertanyaan nilai tambah apa yang diberikan dibandingkan
outlinesAlasan tetap menggunakan oobabooga adalah karena dukungan exlv2 memberikan inferensi yang lebih efisien di dual 3090s
Akan lebih baik jika contoh curl ditampilkan lebih dulu
Ada pertanyaan tentang cara terbaik memberikan input terstruktur ke LLM