Ollama ile yapılandırılmış çıktılar
(ollama.com)Yapılandırılmış çıktılar
6 Aralık 2024
Ollama artık model çıktısını JSON şemasıyla tanımlanmış belirli bir biçimle sınırlandırabilen yapılandırılmış çıktıları destekliyor. Ollama Python ve JavaScript kütüphaneleri de yapılandırılmış çıktıları destekleyecek şekilde güncellendi.
- Yapılandırılmış çıktıların kullanım alanları:
- Belgelerden veri ayrıştırma
- Görüntülerden veri çıkarma
- Tüm dil modeli yanıtlarını yapılandırma
- JSON moduna kıyasla daha yüksek güvenilirlik ve tutarlılık sağlama
Başlarken
- Ollama'nın en güncel sürümünü indirin
- Ollama Python veya JavaScript kütüphanesini en güncel sürüme yükseltin
cURL
formatparametresi kullanılarak modele yapılandırılmış çıktı iletilebilir
Çıktı
- Yanıt, isteğin JSON şemasıyla tanımlanan biçimde döner
Python
- Ollama Python kütüphanesi kullanılarak şema, JSON nesnesi olarak
formatparametresine iletilir - Şemayı serileştirmek için Pydantic kullanılması önerilir
Çıktı
name='Canada' capital='Ottawa' languages=['English', 'French']
JavaScript
- Ollama JavaScript kütüphanesi kullanılarak şema, JSON nesnesi olarak
formatparametresine iletilir - Şemayı serileştirmek için Zod kullanılması önerilir
Çıktı
{ name: "Canada", capital: "Ottawa", languages: [ "English", "French" ] }
Örnekler
Veri çıkarma
- Metinden yapılandırılmış veri çıkarmak için bilgiyi temsil eden bir şema tanımlanır
- Model, bilgiyi çıkarır ve veriyi tanımlanan şemaya göre JSON olarak döndürür
Örnek çıktı
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') ]
Görsel açıklama
- Yapılandırılmış çıktılar vision modelleriyle birlikte kullanılabilir
llama3.2-visionkullanılarak bir görsel açıklanır ve yapılandırılmış çıktı döndürülür
Örnek çıktı
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
OpenAI uyumluluğu
- OpenAI istemcisi kullanılarak yapılandırılmış çıktılarla uyumlu şekilde çalışılabilir
İpuçları
- Yapılandırılmış çıktıları güvenilir şekilde kullanmak için:
- Yanıt şemasını Pydantic (Python) veya Zod (JavaScript) ile tanımlayın
- Modelin isteği anlaması için prompt'a "JSON olarak döndür" ifadesini ekleyin
- Daha deterministik çıktı için temperature değerini 0 olarak ayarlayın
Sonraki adımlar
- Kontrollü üretim için logit exposure
- Yapılandırılmış çıktıların performans ve doğruluğunu iyileştirme
- Sampling için GPU hızlandırma
- JSON şemasının ötesinde ek biçim desteği
1 yorum
Hacker News görüşleri
llama.cpp'nin gbnf özelliğiyle daha güçlü çıktı kısıtlamaları ayarlanabiliyor
Normal prompt'ları yapılandırıp CSV verisine dönüştürürken gereksiz metni kaldırmak için kullanışlı
gemma2:2b kullanılarak metin girildiğinde yapılandırılmış JSON biçiminde çıktı alınabiliyor
{"amount": 190, "balance": 5098, "category": "Shopping", "place": "Fresh Mart"}LLM çıktısının kalitesinin kısıtlamalardan nasıl etkilendiğini merak eden görüşler var
Desteklenen modellerle birlikte kullanılıp kullanılamayacağına dair bir soru var
llama.cpp ve ollama'nın llama'nın yapılandırılmış çıktı özelliğini kullanıp kullanmadığı, yoksa bunun farklı bir şekilde mi uygulandığı merak ediliyor
outlinesile karşılaştırıldığında ne tür bir katma değer sunduğuna dair bir soru varoobabooga'yı kullanmaya devam etme nedeni, exlv2 desteği sayesinde çift 3090'larda daha verimli inference sunması
Önce
curlörneğinin gelmesi daha iyi olurduLLM'ye yapılandırılmış girdi vermenin en iyi yoluna dair bir soru var