Streaming Yapılandırılmış Çıktıları İşlemek
Yavaş tek seferlik bekleyiş yerine streaming ile UX'i iyileştirme. Partial JSON parsing, ilk-kelime-hızı (TTFT), backpressure.
Şükrü Yusuf KAYA
9 dakikalık okuma
OrtaStreaming Yapılandırılmış Çıktılar
Cevap üretilirken token-by-token alma. UX'i dramatik iyileştirir (4 saniye bekleyiş yerine 0.5sn'de görünür akış).
python
# Streamingimport osfrom anthropic import Anthropicfrom dotenv import load_dotenvload_dotenv() client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) with client.messages.stream( model="claude-haiku-4-5-20251001", max_tokens=500, messages=[{"role": "user", "content": "Türk kahvesi tarihini 5 paragrafta anlat."}]) as stream: for text in stream.text_stream: print(text, end="", flush=True) print("\n\n--- Bitti ---") Streaming text — kullanıcı yazıyor gibi görür.
JSON Streaming: Partial Parse#
JSON streaming zor — yarım JSON parse edilemez. Çözüm: partial parser (json5, ijson).
python
# Streaming JSON — naïve bufferbuffer = ""items_seen = [] with client.messages.stream(...) as stream: for text in stream.text_stream: buffer += text # Her } gördüğümüzde dene parse if "}" in text: try: # Partial JSON parse (json5 lib) import json5 parsed = json5.loads(buffer + "}") # naïve if "items" in parsed and len(parsed["items"]) > len(items_seen): new_item = parsed["items"][-1] print(f"Yeni item: {new_item}") items_seen.append(new_item) except: passPartial JSON streaming — production'da partial-json-parser lib öner
Streaming + tool calling = karmaşık. Tool çağrısı tamamlanmadan parse edilemez. Genelde non-streaming kullanılır tool flow'larda.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Bu Eğitim Hakkında ve Verimli Çalışma Yöntemi
Öğrenmeye Başla1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Yapay Zekâ → Üretken AI → LLM: Bağlamsal Harita
Öğrenmeye Başla1. Temeller — Yapay Zekâ ve LLM'lere Giriş