Sohbet Arayüzünü Anlama
LLM sohbet kullanıcı arayüzlerinin nasıl çalıştığını öğrenin: roller, turlar ve oturum bağlamı.
Sohbet Arayüzünü Anlama, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 1. 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.
Üç Rol
LLM ile yapılan her görüşme üç role dayanır: sistem, kullanıcı ve asistan.
system rolü, görüşme başlamadan önce kuralları ve kişiliği belirler. user rolü sizin mesaj göndermenizi temsil eder. assistant rolü ise modelin yanıt verdiği roldür.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
message = client.messages.create(
model='claude-opus-4-5',
max_tokens=256,
system='You are a helpful cooking assistant.',
messages=[
{'role': 'user', 'content': 'What is mise en place?'}
]
)
print(message.content[0].text)Sistem İletisi
Sistem iletisi, modelin kullanım kılavuzudur. İlk kullanıcı turundan önce çalışır ve oturumun tamamı boyunca etkin kalır.
Bunu kişiliği, üslubu, alan kısıtlamalarını veya çıktı biçimini belirlemek için kullanın. Model, görüşme boyunca bunu yol gösterici bağlamı olarak ele alır.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[
{
'role': 'system',
'content': 'You are a senior Python engineer. '
'Always include type hints and docstrings in your examples.'
},
{
'role': 'user',
'content': 'Show me a function that parses JSON safely.'
}
]
)
print(response.choices[0].message.content)Turlar ve Görüşme Akışı
Bir görüşme turlardan oluşan bir dizidir. Her tur sırayla ilerler: kullanıcı konuşur, asistan yanıtlar, sonra kullanıcı yeniden konuşur.
Model her istekte tüm tur geçmişini görür. Bu, görüşmenin kesintisiz bir diyalog gibi hissettirmesini sağlar; ancak teknik olarak her API çağrısı durum bilgisi içermez ve her seferinde tüm bağlamı alır.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Each call sends the FULL conversation history
history = [
{'role': 'system', 'content': 'You are a geography tutor.'},
{'role': 'user', 'content': 'What is the capital of France?'},
{'role': 'assistant', 'content': 'The capital of France is Paris.'},
{'role': 'user', 'content': 'And its population?'} # follow-up turn
]
response = client.chat.completions.create(
model='gpt-4o',
messages=history
)
print(response.choices[0].message.content)Oturum Bağlamı
Oturum bağlamı, görüşmenizin sürekli belleğidir. Her kullanıcı ve asistan iletisi geçmiş dizisinde birikir.
Modelin ayrı bir bellek deposu yoktur — yalnızca mevcut bağlam penceresinde gördüklerinden hareketle akıl yürütür. Yeni bir oturum başlatırsanız, bu bilgiyi yeniden eklemediğiniz sürece önceki oturumları hatırlamaz.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Simulating 3-turn session context
conversation = [
{'role': 'user', 'content': 'My name is Alex.'},
{'role': 'assistant', 'content': 'Nice to meet you, Alex!'},
{'role': 'user', 'content': 'What is 5 times 7?'},
{'role': 'assistant', 'content': '5 times 7 is 35.'},
{'role': 'user', 'content': 'Can you repeat my name?'} # uses session context
]
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=128,
messages=conversation
)
print(response.content[0].text) # expects: Your name is Alex.İleti Geçmişinin Yapısı
İleti geçmişi, her birinde bir role ve content anahtarı bulunan basit bir sözlükler listesidir.
Bu listeyi kodda kendiniz yönetirsiniz. Her asistan yanıtından sonra yanıtını append edersiniz, ardından sonraki kullanıcı iletisini append edersiniz — bir sonraki çağrıda listenin tamamını yeniden gönderirsiniz.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
def chat(history, user_message):
history.append({'role': 'user', 'content': user_message})
response = client.chat.completions.create(
model='gpt-4o',
messages=history
)
reply = response.choices[0].message.content
history.append({'role': 'assistant', 'content': reply})
return reply, history
history = [{'role': 'system', 'content': 'You are a math tutor.'}]
reply, history = chat(history, 'What is a prime number?')
print(reply)
print('History length:', len(history))Belirteç Sınırlarının Açıklaması
Her modelin belirteçlerle ölçülen bir bağlam penceresi vardır. Bir belirteç, İngilizcede yaklaşık 4 karaktere veya 0,75 sözcüğe karşılık gelir.
Hem girdiniz (sistem + tüm geçmiş) hem de modelin çıktısı bu sınıra dâhildir. GPT-4o 128 bin belirteci, Claude Opus 4.5 ise 200 bin belirteci destekler. Sınıra ulaşıldığında eski iletiler kaldırılmalı veya özetlenmelidir.
import tiktoken
# Count tokens before sending to avoid exceeding the limit
encoding = tiktoken.encoding_for_model('gpt-4o')
messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Explain quantum entanglement in simple terms.'}
]
total_tokens = 0
for msg in messages:
total_tokens += len(encoding.encode(msg['content']))
total_tokens += 4 # overhead per message
print(f'Estimated input tokens: {total_tokens}')
print(f'GPT-4o limit: 128,000 tokens')
print(f'Budget remaining: {128000 - total_tokens:,} tokens')Belirteç Sınırına Ulaşıldığında Ne Olur
Konuşma geçmişi bağlam penceresini aştığında üç seçeneğiniz vardır:
- Kesme — en eski iletileri çıkarma
- Özetleme — modelden önceki turları kısa bir özete dönüştürmesini isteme
- Kayan pencere — yalnızca son N iletiyi tutma
Yanlış stratejiyi seçmek, modelin kritik bağlamı kaybetmesine ve tutarsız yanıtlar vermesine neden olabilir.
def trim_history(history, max_messages=10, keep_system=True):
'''Keep the system message and the last N non-system messages.'''
system_msgs = [m for m in history if m['role'] == 'system']
non_system = [m for m in history if m['role'] != 'system']
if len(non_system) > max_messages:
non_system = non_system[-max_messages:]
print(f'Trimmed to last {max_messages} messages.')
return system_msgs + non_system if keep_system else non_system
history = [{'role': 'system', 'content': 'You are a tutor.'}]
for i in range(15):
history.append({'role': 'user', 'content': f'Question {i}'})
history.append({'role': 'assistant', 'content': f'Answer {i}'})
trimmed = trim_history(history, max_messages=6)
print('Trimmed history length:', len(trimmed))Çok Turlu Bağlam Uygulamada
Bağlamı iş başında görelim. Çok turlu bir konuşmada model, takip sorularını doğru yanıtlamak için önceki her iletiyi kullanır.
Bu nedenle, neye gönderme yaptığınızı tekrarlamadan 'bunu daha basit açıklayın' diyebilirsiniz; model tüm geçmişi görür ve neyi kastettiğinizi bilir.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
history = [{'role': 'system', 'content': 'You are a science teacher.'}]
# Turn 1
history.append({'role': 'user', 'content': 'What is photosynthesis?'})
r1 = client.chat.completions.create(model='gpt-4o', messages=history)
reply1 = r1.choices[0].message.content
history.append({'role': 'assistant', 'content': reply1})
# Turn 2 — refers to prior answer without repeating it
history.append({'role': 'user', 'content': 'Can you explain that using only 3 bullet points?'})
r2 = client.chat.completions.create(model='gpt-4o', messages=history)
print(r2.choices[0].message.content)Durumsuz API, Durum Bilgili Kullanıcı Deneyimi
Burada temel bir çıkarım var: API tamamen durumsuzdur. Sunucu çağrılar arasında hiçbir şeyi hatırlamaz.
Sohbet ürünleri, konuşma geçmişini kendi veritabanlarında depolayıp her API çağrısına yeniden ekleyerek bellek yanılsaması create eder. Siz de aynı mekanizmayı kendiniz oluşturabilirsiniz.
# Illustration: two isolated API calls vs one with history
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# ❌ WITHOUT history — model has no memory
r1 = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': 'My dog is named Biscuit.'}]
)
r2 = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': "What's my dog's name?"}]
)
print('Without history:', r2.choices[0].message.content) # will not know
# ✅ WITH history injected
r3 = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'user', 'content': 'My dog is named Biscuit.'},
{'role': 'assistant', 'content': 'Got it, your dog is named Biscuit!'},
{'role': 'user', 'content': "What's my dog's name?"}
]
)
print('With history:', r3.choices[0].message.content)Sohbet Arayüzünü Kullanmak İçin Pratik İpuçları
Sohbet arayüzünden en iyi şekilde yararlanmak için:
- Kalıcı talimatları her kullanıcı turunda tekrarlamak yerine sistem iletisine koyun
- Önceki turları öz tutun — uzun geçmiş belirteçleri hızla tüketir
- Konuları değiştirirken bağlamın kirlenmesini önlemek için yeni bir oturum başlatın
- Uzun bir projeye devam ederken geçmiş bağlamın yalnızca ilgili alt kümesini ekleyin
# Good practice: compact system message + focused history
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
system = (
'You are a concise Python code reviewer. '
'Reply with: 1) one-line verdict, 2) top 3 issues, 3) fixed snippet.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
system=system,
messages=[
{'role': 'user', 'content': 'def add(a,b): return a+b\nprint(add(1,2))'}
]
)
print(response.content[0].text)Özet: Sohbet Arayüzü
Sohbet arayüzünün nasıl çalıştığına dair temel fikirleri gözden geçirelim:
- Üç rol: sistem kuralları belirler, kullanıcı istemler gönderir, asistan yanıtlar
- Tam geçmiş her API çağrısında gönderilir — sunucu durumsuzdur
- Belirteç sınırları toplam bağlamı sınırlar; bunlara yaklaşırken geçmişi kısaltın veya özetleyin
- Oturum bağlamı, kendi kodunuzda yönettiğiniz bir listeden ibarettir
- Bağlamı temiz tutmak için konuları değiştirirken yeni oturumlar başlatın
# Summary: minimal chat loop skeleton
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
history = [{'role': 'system', 'content': 'You are a helpful assistant.'}]
def ask(question):
history.append({'role': 'user', 'content': question})
res = client.chat.completions.create(model='gpt-4o', messages=history)
answer = res.choices[0].message.content
history.append({'role': 'assistant', 'content': answer})
return answer
print(ask('Hello! What can you help me with?'))Bilginizi Sınayın
Sohbet arayüzünün işleyişini ne kadar anladığınızı sınayın.
Bir kullanıcı yepyeni bir oturum başlatır ve yapay zekâya şunu sorar: 'Dün ne hakkında konuştuk?' Yapay zekânın dünkü oturumla ilgili hiçbir belleği yoktur. Neden?
Öğrendikleriniz
Artık her yapay zekâ sohbet etkileşiminin temelini anlıyorsunuz:
- Her konuşmayı şekillendiren sistem/kullanıcı/asistan rol yapısı
- Belleği taklit etmek için her çağrıda tam ileti geçmişinin nasıl gönderildiği
- API'nin neden durumsuz olduğu ve sohbet ürünlerinin bunun üzerine nasıl bellek oluşturduğu
- Belirteç sınırlarının bağlamı nasıl kısıtladığı ve bunların nasıl yönetileceği
Bu zihinsel model, daha iyi istemler hazırlamanıza ve yapay zekâ destekli daha akıllı uygulamalar geliştirmenize yardımcı olacaktır.
Sıkça Sorulan Sorular
“Sohbet Arayüzünü Anlama” dersi ücretsiz mi?
Evet — “Sohbet Arayüzünü Anlama” 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.
“Sohbet Arayüzünü Anlama” dersinde ne öğreneceğim?
LLM sohbet kullanıcı arayüzlerinin nasıl çalıştığını öğrenin: roller, turlar ve oturum bağlamı. 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 1. dersidir.
“Sohbet Arayüzünü Anlama” 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
- Sohbet Arayüzünü Anlama
- Yapay Zekanın İşleyebileceği İstek Türleri
- Yapay Zeka Yanıtları Nasıl Üretir?
- Yapay Zeka Neleri Yapamaz?