Prompt Bileşenleri: System / User / Assistant / Tool Mesajları
Modern LLM API'lerinin temel rolleri (system, user, assistant, tool) ve her birinin görevi. Mesaj sırası, prefilling, multi-turn yönetimi.
Şükrü Yusuf KAYA
12 min read
BeginnerPrompt'un Yapı Taşları
Modern LLM API'leri mesaj rolleri üzerine kurulu. Bu rolleri net anlamak, profesyonel prompt yazmanın temelidir.
text
1. Rol: "Sen bir [X] asistanısın..."2. Kapsam: "Sadece [Y] konularında yardım edersin..."3. Davranış: "Net, kısa, eylem odaklı cevaplar verirsin..."4. Format: "Cevapları şu yapıda dönersin: ..."5. Kısıtlama: "Şunları yapma: ..."6. Tone: "Resmi/samimi/teknik..."7. Edge case: "Bilmiyorsan 'bilmiyorum' de, uydurma..."System prompt iskeleti
3. Assistant Mesajı#
Modelin önceki cevapları. Multi-turn'de geçmişi taşırsın.
Bonus: Prefilling — assistant rolünde kısmi cevap başlatabilirsin:
messages=[ {"role": "user", "content": "JSON formatında bir kişi bilgisi üret."}, ] # Çıktı: "Tabii, işte bir örnek: {...}" # Sorun: Düz JSON istiyorduk!
4. Tool / Function Mesajları#
Modern LLM'ler fonksiyon çağırabilir:
text
1. user → "İstanbul'da hava nasıl?"2. assistant → tool_use: get_weather(city="İstanbul")3. tool_result → {"temp": 18, "condition": "yağmurlu"}4. assistant → "İstanbul'da şu an 18°C ve yağmurlu."Tool calling akışı (Modül 6'da detay)
Mesaj Sırası: Önemli Mi?#
Evet. Ana kural: system → user → assistant → user → ... (ardışık olmalı, aynı rol art arda gelemez).
Anthropic & OpenAI: array'i, sıraya sıkıca uyar. order yanlışsa hata verir.
messages[]roleYaygın hata: İki user mesajını art arda göndermek. Çoklu kullanıcı turunu tek mesajda birleştir veya araya placeholder assistant cevabı koy.
python
# Multi-turn'de mesaj rolleriimport osfrom anthropic import Anthropicfrom dotenv import load_dotenvload_dotenv() client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) system = """Sen bir Türk yemek tarifleri uzmanısın. Verdiğin tarifler:- 5 satır altı malzeme listesiyle başlar- Sonra numaralı adımlarla devam eder- Her tarifin sonunda 1 ipucu (💡) bulunur""" messages = [ {"role": "user", "content": "Hızlı bir mercimek çorbası tarifi ver."}, # Modelin cevabını manuel ekledik (tipik multi-turn senaryo): {"role": "assistant", "content": "Malzemeler:\n- 1 su bardağı kırmızı mercimek\n- ..."}, # Yeni soru: {"role": "user", "content": "Bu tarifte mercimek yerine ne kullanabilirim?"},] r = client.messages.create( model="claude-haiku-4-5-20251001", max_tokens=400, system=system, messages=messages,)print(r.content[0].text) Modelin önceki cevabı bağlamı korur — 'bu tarifte' diyebiliyoruz.
Frequently Asked Questions
Çok benzer ama küçük farklar var. OpenAI: system, user, assistant, tool. Anthropic: system ayrı parametre, mesajlar user/assistant/tool_use/tool_result. Eğitim boyunca her iki SDK'da da örnek vereceğim.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Bu Eğitim Hakkında ve Verimli Çalışma Yöntemi
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Yapay Zekâ → Üretken AI → LLM: Bağlamsal Harita
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş