Sınıflandırmada Güven ve Belirsizlik
Modelden güven düzeyini puanlamasını ve belirsiz sınıflandırmaları ele almasını isteyin.
Sınıflandırmada Güven ve Belirsizlik, 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.
Aşırı Güvenli Modeller Sorunu
Varsayılan olarak LLM'ler, girdi gerçekten muğlak olsa bile sınıflandırma görevlerini görünürde bir kesinlikle yanıtlar. Modele olumlu, olumsuz veya tarafsız döndürmesi söylendiğinde, emin değilim demek yerine her zaman birini seçer.
Üretim sistemlerinde, belirsiz sınıflandırmalara kesinmiş gibi göre hareket etmek maliyetli hatalara yol açar: yanlış yönlendirilen destek talepleri, hatalı öneriler, yanlış raporlar.
Sınıflandırma istemlerindeki belirsizlik nicelendirmesi bu sorunu çözer.
Güven Puanları 1-10
Modelden güvenini sayısal bir ölçekte derecelendirmesini istemek, sonraki sistemlerin eşik uygulayabileceği ayrıntılı bir sinyal sağlar:
import anthropic, json
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def classify_with_confidence(text):
prompt = f'''
Classify the sentiment of the text below.
Return JSON:
{{
"sentiment": "positive|negative|neutral",
"confidence": 1-10,
"reason": "brief explanation of confidence level"
}}
Confidence scale: 10=completely certain, 1=total guess, 5=genuinely ambiguous
Text: {text}
'''
r = client.messages.create(
model='claude-opus-4-5', max_tokens=100,
messages=[{'role': 'user', 'content': prompt}]
)
return json.loads(r.content[0].text)
print(classify_with_confidence('I sort of liked it but the wait was too long.'))
print(classify_with_confidence('This product is absolutely outstanding!'))UNCERTAIN Yanıtı
Sınıflandırma güveni bir eşiğin altındayken modelden açıkça UNCERTAIN yanıtını vermesini istemek, üç yönlü bir çıktı oluşturur: olumlu, olumsuz veya UNCERTAIN:
def classify_or_uncertain(text, uncertainty_threshold=4):
prompt = f'''
Classify the sentiment of the text: positive, negative, or neutral.
If the sentiment is genuinely ambiguous or you are not confident (confidence below {uncertainty_threshold}/10),
return UNCERTAIN instead of guessing.
Return JSON: {{"sentiment": "positive|negative|neutral|UNCERTAIN", "confidence": 1-10}}
Text: {text}
'''
r = client.messages.create(
model='claude-opus-4-5', max_tokens=80,
messages=[{'role': 'user', 'content': prompt}]
)
result = json.loads(r.content[0].text)
if result['sentiment'] == 'UNCERTAIN' or result['confidence'] < uncertainty_threshold:
print(f'Routing to human review: confidence={result["confidence"]}')
return result
print(classify_or_uncertain('It was fine, I guess. Not bad, not great.'))
print(classify_or_uncertain('Absolutely terrible product. Never buying again.'))Sıralanmış Kategori Olasılıkları
Tek bir kategoriyi zorunlu kılmak yerine modelden olası tüm kategorileri olasılıklarına göre sıralamasını isteyin. Bu, en yüksek olasılıklı iki kategorinin birbirine ne kadar yakın olduğunu gösterir:
def classify_ranked(text, categories):
cats = ', '.join(categories)
prompt = f'''
Classify this text into one of these categories: {cats}
Return ALL categories ranked by likelihood, highest first.
Return JSON: {{"ranked": [{{"category": str, "probability": 0.0-1.0}}]}}
Probabilities must sum to 1.0.
Text: {text}
'''
r = client.messages.create(
model='claude-opus-4-5', max_tokens=150,
messages=[{'role': 'user', 'content': prompt}]
)
result = json.loads(r.content[0].text)
return result['ranked']
cats = ['billing', 'technical', 'general', 'cancellation']
ranked = classify_ranked('I was charged twice and now my account is locked.', cats)
for item in ranked:
print(f'{item["category"]}: {item["probability"]:.0%}')Belirsizliği Tespit Etmek için Olasılık Farkını Kullanma
En yüksek olasılığa sahip iki kategori arasındaki fark, güvenilir bir belirsizlik sinyalidir. Farkın küçük olması modelin emin olmadığını, büyük olmasıysa güvendiğini gösterir:
def classify_with_ambiguity_detection(text, categories, ambiguity_threshold=0.15):
ranked = classify_ranked(text, categories)
top1_prob = ranked[0]['probability']
top2_prob = ranked[1]['probability'] if len(ranked) > 1 else 0
spread = top1_prob - top2_prob
is_ambiguous = spread < ambiguity_threshold
return {
'primary': ranked[0]['category'],
'secondary': ranked[1]['category'] if len(ranked) > 1 else None,
'confidence_spread': round(spread, 3),
'is_ambiguous': is_ambiguous,
'action': 'human_review' if is_ambiguous else 'auto_classify'
}
result = classify_with_ambiguity_detection(
'My upgrade did not apply and I think I was still charged.', ['billing', 'technical', 'general', 'cancellation']
)
print(result)Koşullu Belirsizlik: Emin Değilseniz Sorun
Konuşmaya dayalı uygulamalarda model, UNCERTAIN döndürmek yerine açıklama isteyebilir:
SYSTEM_CLARIFY = '''
You are a support ticket classifier.
If the customer message is clear, classify it and respond with JSON:
{"action": "classify", "category": str, "confidence": 1-10}
If the message is ambiguous or you are not sure which category applies, respond with:
{"action": "clarify", "question": "A single clarifying question to ask the customer"}
Categories: billing, technical, account, cancellation
Only ask for clarification when genuinely needed. Prefer classification when possible.
'''
def classify_or_ask(message):
r = client.messages.create(
model='claude-opus-4-5', max_tokens=100,
system=SYSTEM_CLARIFY,
messages=[{'role': 'user', 'content': message}]
)
return json.loads(r.content[0].text)
print(classify_or_ask('It is not working anymore.'))
print(classify_or_ask('Cancel my subscription immediately.'))Güveni Kalibre Etme: Sıcaklık ve Tutarlılık
Aynı sınıflandırmayı farklı sıcaklıklarda birden çok kez çalıştırmak, gerçek model belirsizliğini ortaya çıkarır. Yüksek değişkenlik = gerçekten muğlak girdi:
from collections import Counter
def calibrated_classify(text, n_samples=5):
results = []
for _ in range(n_samples):
r = client.messages.create(
model='claude-opus-4-5', max_tokens=50,
messages=[{'role': 'user', 'content': f'Classify as positive/negative/neutral. Return JSON: {{"sentiment": str}}\n\n{text}'}]
)
results.append(json.loads(r.content[0].text)['sentiment'])
counts = Counter(results)
dominant = counts.most_common(1)[0]
agreement_rate = dominant[1] / n_samples
return {
'classification': dominant[0],
'agreement_rate': agreement_rate,
'is_uncertain': agreement_rate < 0.7,
'all_results': dict(counts)
}
result = calibrated_classify('The product is okay, nothing special.')
print(result)Güvene Dayalı Yönlendirme
Üretim yönlendirme sistemi, farklı işleyicilere yönlendirme yapmak için güven düzeylerini kullanır:
def route_by_confidence(text, classify_fn, auto_threshold=8, human_threshold=4):
result = classify_fn(text)
confidence = result.get('confidence', 5)
category = result.get('category') or result.get('sentiment', 'unknown')
if confidence >= auto_threshold:
return {'route': 'auto_process', 'category': category, 'confidence': confidence}
elif confidence >= human_threshold:
return {'route': 'auto_process_with_flag', 'category': category, 'confidence': confidence,
'flag': 'Low confidence — monitor output'}
else:
return {'route': 'human_review', 'category': category, 'confidence': confidence,
'flag': 'Very low confidence — human classification required'}
print(route_by_confidence('Hate this product.', classify_with_confidence))
print(route_by_confidence('It is kind of okay but also not really.', classify_with_confidence))Yapılandırılmış Belirsizlik Alanları
Sınıflandırma çıktıları için kapsamlı bir belirsizlik şeması:
UNCERTAINTY_SCHEMA = '''
Return JSON:
{
"primary_category": "string",
"confidence": 1-10,
"uncertainty_type": "none | ambiguous_input | insufficient_context | boundary_case | none",
"alternative_categories": ["string"] or [],
"uncertainty_explanation": "string or null",
"recommended_action": "auto_classify | human_review | request_more_info"
}
Uncertainty types:
- ambiguous_input: The text could clearly mean multiple things
- insufficient_context: Need more information to classify correctly
- boundary_case: The text sits on the border between two categories
- none: Clear classification, no uncertainty
'''
print(UNCERTAINTY_SCHEMA)
print('Use this schema for any classification task requiring uncertainty quantification.')Üretimde Belirsizliği İzleme
İstem bozulmasını veya kategori kaymasını tespit etmek için üretimdeki belirsizlik oranlarını izleyin:
class ClassificationMonitor:
def __init__(self, human_review_threshold=0.15):
self.total = 0
self.uncertain = 0
self.threshold = human_review_threshold
self.category_counts = {}
def record(self, result):
self.total += 1
cat = result.get('category', 'unknown')
self.category_counts[cat] = self.category_counts.get(cat, 0) + 1
if result.get('confidence', 10) < 5 or result.get('sentiment') == 'UNCERTAIN':
self.uncertain += 1
def report(self):
uncertain_rate = self.uncertain / self.total if self.total else 0
alert = uncertain_rate > self.threshold
return {
'total': self.total,
'uncertain_rate': round(uncertain_rate, 3),
'alert': alert,
'category_distribution': self.category_counts
}
monitor = ClassificationMonitor()
print('Production monitoring system defined.')Yüksek Güvene Ne Zaman Güvenilmeli
Modelin yüksek güveni her zaman doğru sınıflandırma anlamına gelmez. Yüksek güven düzeyinde bile görülen yaygın hata türleri:
- Sistematik yanlılık: Model, belirli bir örüntüyü sürekli olarak yüksek güvenli yanlış yanıt şeklinde etiketler
- Alan kayması: Model kendinden emindir, ancak girdi stili eğitiminde kullandığı verilerden çok farklıdır
- Yaranmacılık: Model, güvenini gerçek kesinliğe değil, kulağa hoş gelen şeye göre ayarlar
Güven kalibrasyonunu her zaman etiketlenmiş bir sınama kümesine göre değerlendirin — yalnızca doğruluğu değil, yüksek güvenli tahminlerin gerçekten düşük güvenli tahminlerden daha doğru olup olmadığını da değerlendirin.
Hızlı Kontrol
Bir sınıflandırma sonucunda, sıralanmış kategori olasılıklarındaki en yüksek iki değer arasındaki farkın küçük olması neyi gösterir?
Sınıflandırmada Belirsizlik — Temel Çıkarımlar
Belirsizlik nicelendirmesi, sınıflandırmayı kara kutudan yönetilebilir bir sisteme dönüştürür:
- Her sınıflandırmayla birlikte güven puanları (1-10) isteyin — çıktılara hiçbir zaman eşit derecede güvenilir muamelesi yapmayın
- Bir kategori seçmeye zorlamak yerine gerçekten muğlak girdiler için UNCERTAIN yanıtını kullanın
- Tüm kategorileri olasılığa göre sıralayın — en yüksek olasılıklı iki kategori arasındaki fark, en iyi muğlaklık sinyalidir
- Güven eşik değerinin altındaysa insan incelemesine yönlendirin; üstündeyse otomatik olarak işleyin
- Konuşmaya dayalı uygulamalarda UNCERTAIN döndürmek yerine açıklayıcı sorular sorun
- Üretimdeki belirsizlik oranlarını izleyin — yükselen oranlar istem bozulmasına veya kategori kaymasına işaret eder
- Güven kalibrasyonunu her zaman etiketlenmiş verilere göre değerlendirin — yalnızca doğruluğu değil
Sıkça Sorulan Sorular
“Sınıflandırmada Güven ve Belirsizlik” dersi ücretsiz mi?
Evet — “Sınıflandırmada Güven ve Belirsizlik” 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.
“Sınıflandırmada Güven ve Belirsizlik” dersinde ne öğreneceğim?
Modelden güven düzeyini puanlamasını ve belirsiz sınıflandırmaları ele almasını isteyin. 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.
“Sınıflandırmada Güven ve Belirsizlik” 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
- Adlandırılmış Varlık Çıkarma İstemleri
- Şema Odaklı Veri Çıkarma
- Metin Sınıflandırıcısı Olarak LLM
- Sınıflandırmada Güven ve Belirsizlik