Onarım ve Doğrulama Döngüleri
Hatalı biçimlendirilmiş çıktıyı düzeltme.
Onarım ve Doğrulama Döngüleri, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
Onarım Döngüleri Neden Vardır
Şemalar kullanılsa bile çıktı başarısız olabilir: belirteç sınırı nedeniyle kesilmiş JSON, halüsinasyon ürünü fazladan alanlar, sayı gerekirken bir dize veya ihlal edilmiş bir iş kuralı. Onarım döngüsü, hatayı algılar ve düzeltmesi için modele geri iletir.
Bu döngü, %98'lik başarı oranını %99,9'a çıkaran güvenlik ağıdır.
Doğrulama-Onarım Döngüsü
Temel döngü şudur: üretin, doğrulayın ve geçersizse belirli hatayı belirterek sınırlı sayıda denemeye kadar yeniden istem gönderin.
def generate_valid(prompt, schema, max_tries=3):
msgs = [{'role': 'user', 'content': prompt}]
for _ in range(max_tries):
out = call_model(msgs)
ok, err = validate(out, schema)
if ok:
return out
msgs.append({'role': 'assistant', 'content': out})
msgs.append({'role': 'user',
'content': 'Invalid. Fix this error and resend JSON only: ' + err})
raise ValueError('repair budget exhausted')Özel Hatalar Genel Hatalardan Üstündür
Onarım kalitesi, geri bildirimin kesinliğine bağlıdır. 'Geçersiz JSON' pek yardımcı olmaz; 'rating alanı 1 ile 5 arasında bir tam sayı olmalıdır; 7 geldi' ise neredeyse her zaman tek turda düzeltme sağlar.
Doğrulayıcınızın tam hata mesajını (yol ve neden bilgisiyle birlikte) modele geri iletin.
def validate(obj, schema):
v = jsonschema.Draft202012Validator(schema)
errs = sorted(v.iter_errors(obj), key=lambda e: e.path)
if not errs:
return True, None
msg = '; '.join(f"{list(e.path)}: {e.message}" for e in errs)
return False, msgKatmanlı Doğrulama
Doğrulamanın katmanları vardır; önce en ucuz olanı check edin:
- Sözdizimsel — JSON olarak ayrıştırılabiliyor mu?
- Yapısal — şemayla eşleşiyor mu?
- Anlamsal — değerler iş kurallarını ve alanlar arası değişmezleri karşılıyor mu?
Her ikisi de geçerli sayılar olsa bile indirim ara toplamı aşamaz; bu anlamsal bir check işlemidir.
def semantic_ok(o):
return o['discount'] <= o['subtotal'] and o['total'] == o['subtotal'] - o['discount']Onarım Öncesi Belirlenimci İşlemler
Bir model çağrısı yapmadan önce, yaygın kusurlar için ucuz ve belirlenimci düzeltmeleri deneyin:
- Markdown kod çitlerini kaldırın.
- Çevresindeki düzyazıdan en dıştaki JSON nesnesini çıkarın.
- Sondaki virgülleri kaldırın.
Belirlenimci temizlik başarısız olursa ancak o zaman model onarımına geçin.
def extract_json(text):
text = text.strip().removeprefix('json').strip()
start, end = text.find('{'), text.rfind('}')
if start != -1 and end != -1:
return text[start:end + 1]
return textKesilmeyi Ele Alma
finish_reason == 'length' ise JSON yarıda kesilmiştir; parçayı onarmaya çalışmak boşunadır. Bunun yerine max_tokens değerini artırın, istenen yükü azaltın veya akışla gönderip devamını isteyin. Kesilmeyi bozuk çıktıdan ayırın; çünkü bu iki durum birbirinin tersi tepkiler gerektirir.
if resp.choices[0].finish_reason == 'length':
# do NOT feed truncated JSON back; regenerate with more room
return retry_with(max_tokens=resp_max * 2)Döngüyü Sınırlandırma
Sınırlandırılmamış onarım bir maliyet ve gecikme riski oluşturur; takılan bir model de sonsuza kadar döngüde kalabilir. Deneme sayısını her zaman sınırlayın, istek başına bir bütçe ekleyin ve bir geri dönüş tanımlayın (zararı azaltarak devam edin, insan incelemesi için kuyruğa alın veya güvenli bir varsayılan döndürün).
try:
data = generate_valid(prompt, schema, max_tries=3)
except ValueError:
log_for_review(prompt)
data = SAFE_DEFAULTAraç Çağrıları İçinde Onarım
İşlev çağırmada onarım kanalı araç sonucudur. Yapılandırılmış bir hata döndürdüğünüzde model sonraki turda kendini düzeltir; ayrı bir döngüye gerek kalmaz.
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps({'error': 'amount must be positive', 'got': args['amount']})})
# next model turn will re-issue the call with a corrected argumentYineleme Güvenliği ve Yan Etkiler
Bir onarım döngüsü yalnızca üretimi değil, bir eylemi de kapsıyorsa yeniden denemelerin aynı sonucu koruduğundan emin olun. Yineleme anahtarları kullanın; böylece yeniden gönderilen bir çağrı iki kez ücretlendirmeye veya bir kaydı çoğaltmaya yol açmaz. Yan etkileri uygulamaya başlamadan önce doğrulayın; asla sonrasında değil.
Onarım Oranlarını İzleme
Onarım oranı, kalitenin öncü göstergesidir. Oranın yükselmesi bir istem gerilemesine, fazla katı bir şemaya veya modelin zaman içindeki değişimine işaret eder. Başarı başına deneme sayısını ve en sık hata yollarını kaydedin; bunlar ani yükseldiğinde uyarı verin.
metrics.histogram('llm.repair.attempts', tries)
metrics.increment('llm.repair.error', tags={'path': top_error_path})Kısıtları Onarımla Birleştirme
En güçlü işlem hattı savunmaları katmanlandırır: hataları en aza indirmek için kısıtlı kod çözme veya katı şema modu, ucuz düzeltmeler için belirlenimci temizlik ve nadiren kalan hatalar için sınırlı bir model onarım döngüsü. Tek bir katman tek başına yeterli değildir.
Hızlı Kontrol
API, kesilmiş JSON ile birlikte finish_reason olarak length döndürüyor. Doğru tepki nedir?
Özet
Sağlam onarım işlem hatları:
- Doğrulamayı katmanlar hâlinde yapın: sözdizimsel, yapısal, anlamsal.
- Kesin ve yol düzeyindeki hataları modele geri iletin.
- Bir model çağrısı için ödeme yapmadan önce belirlenimci temizliği deneyin.
- Kesilmeyi ayrı olarak algılayın ve çıktıyı yeniden üretin.
- Denemeleri sınırlandırın, yineleme güvenliğini sağlayın ve onarım oranlarını izleyin.
Yapılandırılmış üretimi tamamladınız. Sıradaki kurs: güvenlik bariyerleri ve çıktı doğrulama.
Sıkça Sorulan Sorular
“Onarım ve Doğrulama Döngüleri” dersi ücretsiz mi?
Evet — “Onarım ve Doğrulama Döngüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Onarım ve Doğrulama Döngüleri” dersinde ne öğreneceğim?
Hatalı biçimlendirilmiş çıktıyı düzeltme. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Onarım ve Doğrulama Döngüleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yapılandırılmış Çıktı Neden Önemlidir
- İstemlerde JSON Şeması
- Araç ve İşlev Şemaları
- Onarım ve Doğrulama Döngüleri