0Pricing
AI Prompt Engineering · Ders

Metin Sınıflandırıcısı Olarak LLM

Duygu, niyet, konu ve çok etiketli sınıflandırma için istemleri kullanın.

Metin Sınıflandırıcısı Olarak LLM, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. 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.

Metin Sınıflandırıcıları Olarak LLM'ler

Geleneksel metin sınıflandırması, etiketli eğitim verileri, modelin ince ayarı ve dağıtım altyapısı gerektirir. LLM'ler yalnızca bir istemle metni sınıflandırabilir — eğitim verisi gerekmez.

LLM tabanlı sınıflandırıcılar şu durumlarda özellikle başarılıdır:

  • Kategoriler yalnızca anahtar sözcük eşleştirmesi değil, anlamsal kavrayış gerektirdiğinde
  • Yeniden eğitim yapmadan yeni kategoriler eklemeniz gerektiğinde
  • Etiketli örnekleriniz sınırlı olduğunda
  • Kategoriler ince ayrımlar içerdiğinde (yalnızca konu değil, iletinin ardındaki niyet)

Duygu Sınıflandırması

Duygu, en yaygın sınıflandırma görevlerinden biridir. İyi hazırlanmış bir istem, ince ayrımlar içeren durumlarda basit anahtar sözcük eşleştirmesinden daha başarılı olur:

import anthropic, json

client = anthropic.Anthropic(api_key='YOUR_API_KEY')

def classify_sentiment(text):
    prompt = f'''
Classify the sentiment of the text below.
Return ONLY JSON: {{"sentiment": "positive|negative|neutral", "confidence": "high|medium|low"}}

Definitions:
- positive: Overall favorable opinion or emotion
- negative: Overall unfavorable opinion or dissatisfaction
- neutral: Factual, balanced, or no clear sentiment

Text: {text}
'''
    r = client.messages.create(
        model='claude-opus-4-5', max_tokens=50,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return json.loads(r.content[0].text)

print(classify_sentiment('The product works but setup was painful.'))
print(classify_sentiment('Delivery was incredibly fast and packaging was perfect!'))

Niyet Sınıflandırması

Niyet sınıflandırması, kullanıcının ne yapmaya çalıştığını belirler — sohbet robotları, destek sistemleri ve arama uygulamaları için temel bir işlemdir:

INTENT_CATEGORIES = [
    'purchase_intent: User wants to buy or is ready to purchase',
    'complaint: User is dissatisfied and reporting a problem',
    'question: User is asking for information or help',
    'cancellation: User wants to cancel a service or subscription',
    'compliment: User is expressing satisfaction or praise',
    'other: Does not fit any category above'
]

def classify_intent(message):
    categories_str = '\n'.join(f'- {c}' for c in INTENT_CATEGORIES)
    prompt = f'''
Classify the intent of this customer message.
Return JSON: {{"intent": str, "confidence": "high|medium|low"}}

Categories:
{categories_str}

Message: {message}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=80, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

print(classify_intent('I love the app but I need to cancel my plan.'))
print(classify_intent('How do I export my data to CSV?'))

Konu Sınıflandırması

Konu sınıflandırması, metinlere tematik bir kategori atar. İçeriği yönlendirmek, akışları filtrelemek ve destek taleplerini kategorilere ayırmak için kullanışlıdır:

def classify_topic(article_text, topics):
    topic_list = ', '.join(topics)
    prompt = f'''
Classify the topic of this article. Choose EXACTLY ONE from the list.
Return JSON: {{"topic": str, "secondary_topic": str or null}}

Available topics: {topic_list}

Article (first 300 chars): {article_text[:300]}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=80, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

topics = ['technology', 'sports', 'politics', 'business', 'science', 'health', 'entertainment']
text = 'The FDA approved a new mRNA vaccine for seasonal influenza, marking a breakthrough in vaccine technology.'
result = classify_topic(text, topics)
print(result)

Aciliyet Sınıflandırması

Aciliyet sınıflandırması, destek taleplerine, e-postalara ve olaylara öncelik vermeye yardımcı olur. Aciliyet düzeylerini kesin biçimde tanımlamak kritik öneme sahiptir:

URGENCY_PROMPT = '''
Classify the urgency of this support ticket.
Return JSON: {{"urgency": str, "reason": str}}

Urgency levels:
- critical: Service is completely down, data loss occurring, or security breach
- high: Major functionality broken, many users affected, no workaround
- medium: Non-critical feature broken, workaround exists, single user affected
- low: Cosmetic issue, enhancement request, general question

Be conservative: only use critical if the ticket explicitly describes a system-wide outage or data loss.

Ticket: {ticket}
'''

def classify_urgency(ticket_text):
    prompt = URGENCY_PROMPT.replace('{ticket}', ticket_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_urgency('The entire production database is down. All customers affected.'))
print(classify_urgency('Dark mode button is slightly off-center.'))

Çok Etiketli Sınıflandırma

Bir metin parçası bazen aynı anda birden çok kategoriye ait olabilir. Çok etiketli sınıflandırma, uygulanabilir tüm kategorileri döndürür:

def multi_label_classify(text, labels):
    label_list = ', '.join(labels)
    prompt = f'''
Classify this text. It may belong to multiple categories.
Return JSON: {{"labels": [str], "primary_label": str}}

Available labels: {label_list}

Rules:
- Include all labels that clearly apply
- Do NOT include labels that only marginally apply
- primary_label is the single most relevant label

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)

labels = ['technical', 'billing', 'account', 'bug_report', 'feature_request', 'security']
text = 'I found a bug that exposes other users billing information on my account page.'
print(multi_label_classify(text, labels))

Sınıflandırma İstemi Şablonları

Her kategori kümesiyle çalışan yeniden kullanılabilir bir sınıflandırma istemi şablonu:

def build_classifier(category_definitions, additional_rules=''):
    cats = '\n'.join(f'- {k}: {v}' for k, v in category_definitions.items())
    return f'''
Classify the input text into exactly one category below.
Return JSON: {{"category": str, "confidence": "high|medium|low"}}

Categories:
{cats}
{('\nAdditional rules:\n' + additional_rules) if additional_rules else ''}

Text: {{text}}
'''

language_classifier = build_classifier({
    'formal': 'Business or academic writing, professional context',
    'informal': 'Casual, conversational, slang or colloquial',
    'technical': 'Domain-specific jargon, code, or specialized terminology',
    'emotional': 'High emotional content, personal, expressive'
})

print(language_classifier[:200])

Muğlak Sınıflandırmaları Ele Alma

Bazı girdiler gerçekten birden fazla kategoriye uyabilir. Muğlaklığı açıkça ele alacak şekilde sınıflandırma istemleri tasarlayın:

AMBIGUITY_PROMPT = '''
Classify this customer message. If the message is ambiguous or could fit multiple categories,
choose the category that would be most useful for routing it to the correct team.

Return JSON:
{{
  "category": str,
  "is_ambiguous": true | false,
  "alternative": str or null,
  "reasoning": str
}}

Categories: billing, technical_support, sales, account_management

Message: {message}
'''

message = 'I upgraded my plan but I am still seeing the free tier features.'
r = client.messages.create(
    model='claude-opus-4-5', max_tokens=150,
    messages=[{'role': 'user', 'content': AMBIGUITY_PROMPT.format(message=message)}]
)
print(json.loads(r.content[0].text))

Verimlilik için Toplu Sınıflandırma

Ögeleri tek tek sınıflandırmak maliyetlidir. Toplu sınıflandırma, tek bir API çağrısında birden çok girdiyi işler:

def batch_classify(items, categories):
    items_str = '\n'.join(f'{i+1}. {item}' for i, item in enumerate(items))
    cat_str = ', '.join(categories)

    prompt = f'''
Classify each item below. Categories: {cat_str}
Return JSON: {{"results": [{{"id": int, "category": str, "confidence": str}}]}}

Items:
{items_str}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=300, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)['results']

texts = [
    'Absolutely love this product!',
    'It crashed twice today.',
    'What is your refund policy?',
    'The color options are limited.'
]
results = batch_classify(texts, ['positive_feedback', 'bug_report', 'inquiry', 'feature_request'])
for r in results:
    print(f'{texts[r["id"]-1][:30]}... -> {r["category"]} ({r["confidence"]})')

Sınıflandırıcı Doğruluğunu Değerlendirme

LLM sınıflandırıcıları, etiketlenmiş örneklere göre sistematik değerlendirme gerektirir. Küçük bir sınama kümesi oluşturun ve doğruluğu ölçün:

labeled_test_set = [
    {'text': 'Great product, no issues!', 'expected': 'positive'},
    {'text': 'The app keeps crashing on startup.', 'expected': 'negative'},
    {'text': 'The screen resolution is 1080p.', 'expected': 'neutral'},
    {'text': 'Worst experience of my life.', 'expected': 'negative'},
    {'text': 'Works as advertised, decent value.', 'expected': 'positive'},
]

def evaluate_classifier(test_set, classify_fn):
    correct = 0
    for example in test_set:
        result = classify_fn(example['text'])
        if result['sentiment'] == example['expected']:
            correct += 1
        else:
            print(f'WRONG: "{example["text"][:40]}" -> got {result["sentiment"]}, expected {example["expected"]}')
    accuracy = correct / len(test_set)
    print(f'Accuracy: {correct}/{len(test_set)} = {accuracy:.0%}')
    return accuracy

evaluate_classifier(labeled_test_set, classify_sentiment)

Sınıflandırma İstemlerinde Birkaç Örnek Kullanımı

Sınıflandırma istemine birkaç örnek eklemek, uç durumlarda ve nüanslı kategorilerde doğruluğu artırır. Benzer kategoriler arasındaki ayrımı gösteren 2-3 örnek yerleştirin:

few_shot_classifier = '''
Classify each customer message as: billing, technical, or general.

Examples:
  Input: "I was charged twice for this month." -> billing
  Input: "The app crashes when I open the dashboard." -> technical
  Input: "Do you have a mobile app?" -> general
  Input: "My invoice shows the wrong plan." -> billing
  Input: "I cannot log in, I get error 403." -> technical

Now classify:
Input: {message}
Return JSON: {"category": str, "confidence": "high|medium|low"}
'''

message = "My subscription was renewed but I cancelled last week."
prompt = few_shot_classifier.replace("{message}", message)
print(prompt)

Hızlı Kontrol

Bir metni sınıflandırmak için geleneksel olarak eğitilmiş bir sınıflandırıcıya kıyasla LLM kullanmanın temel avantajı nedir?

LLM'yi Sınıflandırıcı Olarak Kullanma — Temel Çıkarımlar

LLM tabanlı sınıflandırma güçlü, esnek ve hızlı bir şekilde kullanıma alınabilir:

  • Kategorileri yalnızca adlarıyla değil, açıklamalarıyla tanımlayın — nüanslı durumları doğru ele almak için
  • Her sınıflandırma için kategori + güven içeren JSON döndürün
  • Yaygın örüntüler: duygu (olumlu/olumsuz/tarafsız), amaç, konu, aciliyet
  • Çok etiketli sınıflandırma, birincil etiketin yanı sıra uygulanabilir tüm kategorileri döndürür
  • Verimlilik için toplu sınıflandırma, tek bir API çağrısında birden çok girdiyi işler
  • Belirsiz girdileri açıkça ele alın — birincil kategoriyi, alternatifleri ve gerekçeyi isteyin
  • Üretime almadan önce doğruluğu etiketlenmiş bir sınama kümesine göre değerlendirin

Sıkça Sorulan Sorular

“Metin Sınıflandırıcısı Olarak LLM” dersi ücretsiz mi?

Evet — “Metin Sınıflandırıcısı Olarak LLM” 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.

“Metin Sınıflandırıcısı Olarak LLM” dersinde ne öğreneceğim?

Duygu, niyet, konu ve çok etiketli sınıflandırma için istemleri kullanın. 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 3. dersidir.

“Metin Sınıflandırıcısı Olarak LLM” 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

  1. Adlandırılmış Varlık Çıkarma İstemleri
  2. Şema Odaklı Veri Çıkarma
  3. Metin Sınıflandırıcısı Olarak LLM
  4. Sınıflandırmada Güven ve Belirsizlik
← AI Prompt Engineering Sayfasına Dön