Modül 2 · Accessing Claude with the API · ⏱ 6 dakika

System prompt'lar

System prompts

Orijinal İngilizce video — Anthropic Academy / JWPlayer. Aşağıdaki Türkçe metin dersi birebir özetler.

Bu modül için tahmini süre: 6 dakika

Genel bakış

System prompt’lar, Claude’un kullanıcı input’una nasıl yanıt vereceğini özelleştirmenin güçlü bir yoludur. Genel cevaplar almak yerine Claude’un ton, stil ve yaklaşımını kendi use case’inize göre şekillendirebilirsiniz.

System prompt’lar neden önemli?

Bir matematik tutor chatbot’u kurduğunuzu düşünün. Öğrenci “5x + 2 = 3 denkleminden x’i nasıl bulurum?” diye sorduğunda, Claude’un cevabı yapıştırması yerine gerçek bir tutor gibi davranmasını istersiniz. İyi bir matematik tutor şunları yapmalı:

  • Tam çözüm yerine başlangıçta ipuçları vermeli
  • Sabırla öğrenciyi adım adım problemde gezdirmeli
  • Örnek olarak benzer problemlerin çözümlerini göstermeli

Claude’un kesinlikle yapmamasını istediğiniz şeyler:

  • Doğrudan cevap vermek
  • Öğrenciye “hesap makinesi kullan” demek

System prompt’lar nasıl çalışır

System prompt, Claude’a nasıl yanıt vereceğine dair rehberlik sağlar. Düz string olarak tanımlar ve create fonksiyonuna parametre olarak geçirirsiniz. Temel faydaları:

  • System prompt Claude’a nasıl yanıt vereceğine dair rehberlik sağlar
  • Claude, atanan rol’deki birinin nasıl yanıt vereceğine benzer şekilde yanıt vermeye çalışır
  • Claude’u görev odaklı tutmaya yardımcı olur

Temel yapı:

system_prompt = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""

client.messages.create(
    model=model,
    messages=messages,
    max_tokens=1000,
    system=system_prompt
)

Farkı görmek

System prompt olmadan Claude hemen tam bir adım adım çözüm verir. Bu yardımcı olabilir ama öğrenciyi problemde düşünmeye yönlendirmez.

Math tutor system prompt’u ile Claude’un yanıtı dramatik şekilde değişir. Tam çözüm yerine yönlendirici sorular sorar: “x’i izole etmek için iyi bir ilk adım ne olabilir? Terimleri taşımaya başlamak için her iki tarafa hangi operasyonu uygulamamız gerektiğini düşünün.”

Esnek bir chat fonksiyonu kurmak

System prompt’ları hard-code etmek yerine, chat fonksiyonunuzu parametre olarak system prompt kabul edecek şekilde daha yeniden kullanılabilir hale getirebilirsiniz:

def chat(messages, system=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
    }
    
    if system:
        params["system"] = system
    
    message = client.messages.create(**params)
    return message.content[0].text

Bu yaklaşım önemli bir detayı çözer: Claude’un API’si system=None kabul etmez, dolayısıyla system parametresini yalnızca sağlandığında koşullu olarak eklemeniz gerekir.

Artık chat fonksiyonunuzu system prompt ile veya olmadan çağırabilirsiniz:

# Without system prompt
answer = chat(messages)

# With system prompt
system = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""
answer = chat(messages, system=system)

System prompt’lar, amacına uygun şekilde tutarlı davranan AI uygulamaları kurmanın temel araçlarından biridir. Genel AI yanıtlarını role özgü, uzmanlaşmış etkileşimlere dönüştürürler.

Temel çıkarımlar

  • System prompt, Claude’un karakterini, tonunu ve davranış kurallarını request başında tanımlar
  • client.messages.create(...) çağrısına ayrı bir system parametresi olarak geçirilir (messages içinde değil)
  • API system=None kabul etmez; system parametresini sadece dolu olduğunda eklemek için if system: deyimini kullanın
  • Aynı messages listesi farklı system prompt’larla çok farklı yanıtlar üretebilir — system prompt davranışı şekillendirmenin en güçlü kaldıracıdır
  • Chat helper’ınıza opsiyonel system parametresi eklemek, ileride farklı persona’lar için aynı kodu yeniden kullanmanızı sağlar