Müşteri Bağlamı ve Geçmişi Yönetimi
Geçmiş satın alımları, biletleri ve tercihleri kullanarak kişiselleştirilmiş yanıtlar oluşturma.
Müşteri Bağlamı ve Geçmişi Yönetimi, CoddyKit'te ücretsiz bir AI Agents 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 Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Bağlam Temsilcileri Neden İnsan Gibi Hissettirir?
Vasat ve mükemmel bir müşteri hizmetleri temsilcisi arasındaki fark bağlamdır. Temsilci “Aboneliğinizin gelecek hafta yenileneceğini görüyorum — o zamandan önce duraklatmak ister misiniz?” dediğinde müşteri yalnızca bir işlemden geçiyormuş gibi değil, tanınıyormuş gibi hisseder.
Bu derste temsilcileriniz için zengin bir müşteri bağlamı katmanı oluşturmayı ele alıyoruz.
Müşteri Profili Şeması
Birden çok kaynaktaki verileri birleştiren standart bir müşteri profili tanımlayın. Temsilci, her görüşmenin başında bu sözlüğü alır.
from dataclasses import dataclass, field
from datetime import date
@dataclass
class CustomerProfile:
customer_id: str
name: str
email: str
join_date: date
subscription_tier: str # 'free', 'pro', 'enterprise'
account_age_days: int
lifetime_value_usd: float
previous_tickets: list[dict] = field(default_factory=list)
recent_purchases: list[dict] = field(default_factory=list)
preferences: dict = field(default_factory=dict)
@property
def is_long_term_customer(self) -> bool:
return self.account_age_days > 365
if __name__ == '__main__':
from datetime import date
profile = CustomerProfile(
customer_id='cust_1', name='Jane Doe', email='jane@example.com',
join_date=date(2023, 1, 15), subscription_tier='pro',
account_age_days=400, lifetime_value_usd=1250.50,
)
print(f'{profile.name} ({profile.subscription_tier}) - long-term customer: {profile.is_long_term_customer}')
Satın Alma Geçmişini Getirme
E-ticaret arka ucunuzdan son N siparişi getirin. Sipariş tarihini, ürünleri, toplam tutarı ve durumu ekleyin. Bu bilgiler, ajana müşterinin neler satın aldığını ve yakın tarihli siparişlerde sorun olup olmadığını gösterir.
import requests
SHOP_API = 'https://api.yourshop.com'
SHOP_KEY = 'YOUR_SHOP_API_KEY'
def get_purchase_history(customer_id: str, limit: int = 10) -> list[dict]:
resp = requests.get(
f'{SHOP_API}/customers/{customer_id}/orders',
headers={'Authorization': f'Bearer {SHOP_KEY}'},
params={'limit': limit, 'sort': '-created_at'}
)
resp.raise_for_status()
orders = resp.json()['orders']
return [
{
'order_id': o['id'],
'date': o['created_at'][:10],
'total_usd': o['total'],
'status': o['status'],
'items': [i['name'] for i in o['line_items']]
}
for o in orders
]Önceki Destek Taleplerini Getirme
Tekrarlayan sorunları anlamak için son N destek talebini getirin. Müşterinin aynı sorunu üç kez çözüme kavuşturması, bunun bir ürün sorunu olduğunu gösterir; durumu uygun şekilde üst ekibe iletin ve işaretleyin.
def get_support_history(customer_id: str, limit: int = 5) -> list[dict]:
resp = requests.get(
f'{SHOP_API}/customers/{customer_id}/tickets',
headers={'Authorization': f'Bearer {SHOP_KEY}'},
params={'limit': limit, 'sort': '-created_at'}
)
resp.raise_for_status()
tickets = resp.json()['tickets']
return [
{
'ticket_id': t['id'],
'subject': t['subject'],
'status': t['status'],
'resolved': t.get('resolved_at', ''),
'category': t.get('category', 'general')
}
for t in tickets
]
def has_recurring_issue(tickets: list[dict], category: str) -> bool:
return sum(1 for t in tickets if t['category'] == category) >= 3Abonelik Seviyesini ve Durumunu Okuma
Abonelik seviyesi, müşterinin hangi haklara sahip olduğunu belirler. Planında bulunmayan bir özellik hakkında soru soran Pro müşterisine verilecek yanıt, aynı soruyu soran bir Enterprise müşterisine verilecek yanıttan farklı olmalıdır.
def get_subscription_info(customer_id: str) -> dict:
resp = requests.get(
f'{SHOP_API}/customers/{customer_id}/subscription',
headers={'Authorization': f'Bearer {SHOP_KEY}'}
)
if resp.status_code == 404:
return {'tier': 'free', 'status': 'active', 'renewal_date': None}
resp.raise_for_status()
sub = resp.json()
return {
'tier': sub['plan'],
'status': sub['status'], # active / past_due / canceled
'renewal_date': sub.get('current_period_end', '')[:10],
'cancel_at': sub.get('cancel_at_period_end', False)
}Hesap Yaşını Hesaplama
Hesap yaşı, müşteri bağlılığı hakkında bilgi verir. 2021'den beri sizinle olan bir müşteriye, dün kaydolan birinden farklı şekilde yaklaşılmalıdır. Yakınlık kurmak için uygun olduğunda müşterinin ne kadar süredir sizinle olduğunu belirtin.
from datetime import datetime, timezone
def calculate_account_age(join_date_str: str) -> dict:
join = datetime.fromisoformat(join_date_str.replace('Z', '+00:00'))
now = datetime.now(timezone.utc)
delta = now - join
years = delta.days // 365
months = (delta.days % 365) // 30
return {
'days': delta.days,
'years': years,
'months': months,
'label': f'{years} year(s) and {months} month(s)' if years else f'{months} month(s)'
}
age = calculate_account_age('2021-03-15T00:00:00Z')
print(age['label']) # e.g. '5 year(s) and 2 month(s)'LLM için Bağlam Dizesi Oluşturma
Müşteri profilini, sistem istemine eklenen kısa bir bağlam bloğuna dönüştürün. Kısa tutun; yalnızca mevcut oturumla doğrudan ilgili bilgileri ekleyin.
def build_context_block(profile: CustomerProfile) -> str:
recent_order = profile.recent_purchases[0] if profile.recent_purchases else None
last_ticket = profile.previous_tickets[0] if profile.previous_tickets else None
parts = [
f'Customer: {profile.name} ({profile.email})',
f'Account age: {profile.account_age_days} days | Tier: {profile.subscription_tier}',
f'Lifetime value: USD {profile.lifetime_value_usd:.0f}',
]
if recent_order:
parts.append(
f'Last order: {recent_order["date"]} — '
f'{', '.join(recent_order["items"][:2])} ({recent_order["status"]})'
)
if last_ticket:
parts.append(f'Last ticket: "{last_ticket["subject"]}" ({last_ticket["status"]})')
return '\n'.join(parts)Yanıtları Bağlamla Kişiselleştirme
LLM'nin kendisine açıkça söylenmeden yanıtlarında bu bağlama doğal biçimde başvurabilmesi için bağlam bloğunu sistem istemine ekleyin.
import openai
client = openai.OpenAI(api_key='YOUR_OPENAI_KEY')
def respond_with_context(user_message: str, profile: CustomerProfile) -> str:
context = build_context_block(profile)
system_prompt = (
f'You are a helpful customer service agent for ShopCo.\n'
f'Customer context:\n{context}\n\n'
f'Be warm and personal. Reference their history when relevant. '
f'Address the customer by first name.'
)
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': user_message}
]
)
return resp.choices[0].message.contentMüşteri Bağlamını Önbelleğe Alma
Her iletide birden fazla API'den profil verisi getirmek yavaş ve maliyetlidir. Görüşmenin başında profili önbelleğe alın ve yalnızca değişebilecek alanları (sipariş durumu, talep durumu) güncelleyin.
import time
profile_cache: dict[str, dict] = {} # customer_id -> {profile, fetched_at}
CACHE_TTL = 300 # 5 minutes
def get_cached_profile(customer_id: str) -> CustomerProfile | None:
entry = profile_cache.get(customer_id)
if entry and time.time() - entry['fetched_at'] < CACHE_TTL:
return entry['profile']
return None
def set_cached_profile(customer_id: str, profile: CustomerProfile):
profile_cache[customer_id] = {
'profile': profile,
'fetched_at': time.time()
}Geçmişten Hassas Durumları Algılama
Geçmiş, özel işlem gerektiren örüntüleri ortaya çıkarabilir: son üç siparişi kusurlu olan bir müşteri, geçen ay aboneliğini iptal etmekle tehdit eden biri veya yedi yıldır sizinle olan bir kullanıcı.
def assess_risk_flags(profile: CustomerProfile) -> list[str]:
flags = []
# Check for cancellation risk
cancel_keywords = ['cancel', 'unsubscribe', 'quit', 'competitor']
for ticket in profile.previous_tickets:
if any(kw in ticket.get('subject', '').lower() for kw in cancel_keywords):
flags.append('cancellation_risk')
break
# Defective product pattern
defective = sum(1 for o in profile.recent_purchases if o.get('status') == 'refunded')
if defective >= 2:
flags.append('product_quality_issue')
# High-value customer
if profile.lifetime_value_usd > 5000:
flags.append('high_value_customer')
return flagsTam Bağlam Birleştirme Akışı
Tüm veri kaynaklarını, görüşmenin başında bir kez çağrılan tek bir assemble_context() işlevinde birleştirin.
from datetime import date
def assemble_context(email: str) -> CustomerProfile:
# Try cache first
# In production: look up customer_id from email in your user DB
customer_id = 'CUST_123'
cached = get_cached_profile(customer_id)
if cached:
return cached
# Fetch from all sources
sub = get_subscription_info(customer_id)
orders = get_purchase_history(customer_id)
tickets = get_support_history(customer_id)
profile = CustomerProfile(
customer_id=customer_id,
name='Alice Smith',
email=email,
join_date=date(2021, 3, 15),
subscription_tier=sub['tier'],
account_age_days=calculate_account_age('2021-03-15T00:00:00Z')['days'],
lifetime_value_usd=1240.00,
previous_tickets=tickets,
recent_purchases=orders
)
set_cached_profile(customer_id, profile)
return profileAjanın "2021'den beri bizimle olduğunuzu görüyorum" demesini en doğrudan sağlayan müşteri bağlamı parçası hangisidir?
Yanıtları kişiselleştirmek, müşteri profilindeki belirli veri noktalarına başvurmayı gerektirir. Bu ifadeyi mümkün kılan alanı belirlemek, uygulamaya dönük bir hatırlama sorusudur.
Müşteri Bağlamının Özeti
İyi bir müşteri hizmetleri ajanı; satın alma geçmişinden, destek taleplerinden, abonelik seviyesinden ve hesap yaşından zengin bir profil oluşturur. Kısa bir bağlam bloğunu sistem istemine ekleyin, oturum boyunca önbelleğe alın ve hassas durumları tırmanmadan önce algılamak için risk işaretlerini kullanın.
Sıkça Sorulan Sorular
“Müşteri Bağlamı ve Geçmişi Yönetimi” dersi ücretsiz mi?
Evet — “Müşteri Bağlamı ve Geçmişi Yönetimi” 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 Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Müşteri Bağlamı ve Geçmişi Yönetimi” dersinde ne öğreneceğim?
Geçmiş satın alımları, biletleri ve tercihleri kullanarak kişiselleştirilmiş yanıtlar oluşturma. AI Agents 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 Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, 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.
“Müşteri Bağlamı ve Geçmişi Yönetimi” 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 Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents 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
- Bilet Yönlendirme ve Üst Birime Aktarma Mantığı
- CRM Entegrasyonu: Salesforce ve HubSpot
- İnsanlara Devretme Protokolleri
- Müşteri Bağlamı ve Geçmişi Yönetimi