Pengurusan Konteks dan Sejarah Pelanggan
Respons diperibadikan menggunakan pembelian lalu, tiket dan pilihan pelanggan.
Pengurusan Konteks dan Sejarah Pelanggan ialah pelajaran Ejen AI percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ejen AI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.
Mengapa Konteks Membuatkan Ejen Berasa Seperti Manusia
Perbezaan antara ejen khidmat pelanggan yang sederhana dengan yang cemerlang ialah konteks. Apabila ejen berkata, “Saya nampak langganan anda diperbaharui minggu depan — adakah anda mahu menjedanya sebelum itu?”, pelanggan berasa dirinya dikenali, bukannya sekadar diproses.
Pelajaran ini menerangkan pembinaan lapisan konteks pelanggan yang kaya untuk ejen anda.
Skema Profil Pelanggan
Tentukan profil pelanggan standard yang mengagregatkan data daripada pelbagai sumber. Ejen menerima kamus ini pada permulaan setiap perbualan.
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}')
Mendapatkan Sejarah Pembelian
Dapatkan N pesanan terakhir daripada sistem belakang e-dagang anda. Sertakan tarikh pesanan, item, jumlah keseluruhan dan status. Ini memberitahu ejen perkara yang telah dibeli oleh pelanggan serta sama ada terdapat masalah pada mana-mana pesanan terkini.
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
]Mendapatkan Tiket Sokongan Terdahulu
Dapatkan N tiket sokongan terakhir untuk memahami masalah yang berulang. Jika masalah yang sama bagi pelanggan telah diselesaikan sebanyak tiga kali, itu ialah masalah produk — tingkatkan kepada pihak yang berkaitan dan tandakan sewajarnya.
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) >= 3Membaca Peringkat dan Status Langganan
Peringkat langganan menentukan perkara yang layak diterima oleh pelanggan. Pelanggan Pro yang bertanya tentang ciri yang tidak tersedia dalam pelan mereka memerlukan respons yang berbeza daripada pelanggan Enterprise dengan soalan yang sama.
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)
}Mengira Umur Akaun
Umur akaun menunjukkan kesetiaan pelanggan. Pelanggan yang telah bersama anda sejak 2021 patut dilayan secara berbeza daripada seseorang yang baru mendaftar semalam. Sebut tempoh mereka bersama anda apabila sesuai untuk membina hubungan baik.
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)'Membina Rentetan Konteks untuk LLM
Tukarkan profil pelanggan kepada blok konteks ringkas yang disuntik ke dalam gesaan sistem. Pastikan blok itu pendek — hanya sertakan fakta yang berkaitan secara langsung dengan sesi semasa.
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)Memperibadikan Respons dengan Konteks
Suntik blok konteks ke dalam gesaan sistem supaya LLM merujuknya secara semula jadi dalam respons tanpa perlu diarahkan secara jelas.
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.contentMenyimpan Konteks Pelanggan dalam Tembolok
Mendapatkan data profil daripada berbilang API pada setiap mesej adalah lambat dan mahal. Simpan profil dalam tembolok pada permulaan perbualan dan kemas kini hanya medan yang mungkin berubah (status pesanan, status tiket).
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()
}Mengesan Situasi Sensitif daripada Sejarah
Sejarah boleh mendedahkan corak yang memerlukan pengendalian khas: pelanggan yang tiga pesanan terakhirnya rosak, seseorang yang mengugut untuk membatalkan langganan pada bulan lalu, atau pengguna yang telah bersama anda selama 7 tahun.
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 flagsAliran Kerja Pemasangan Konteks Penuh
Gabungkan semua sumber data ke dalam satu fungsi assemble_context() yang dipanggil sekali pada permulaan perbualan.
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 profileBahagian konteks pelanggan yang manakah paling membolehkan ejen berkata, 'Saya nampak anda telah bersama kami sejak 2021'?
Memperibadikan respons memerlukan rujukan kepada titik data tertentu daripada profil pelanggan. Mengenal pasti medan yang membolehkan pernyataan ini ialah soalan ingatan yang praktikal.
Ringkasan Konteks Pelanggan
Ejen khidmat pelanggan yang hebat membina profil yang lengkap daripada sejarah pembelian, tiket sokongan, peringkat langganan dan umur akaun. Suntik blok konteks yang ringkas ke dalam gesaan sistem, simpan dalam tembolok sepanjang sesi dan gunakan penanda risiko untuk mengesan situasi sensitif sebelum menjadi lebih serius.
Pelajari Ejen AI dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 60
- Pelajaran
- 239
Soalan Lazim
Adakah pelajaran “Pengurusan Konteks dan Sejarah Pelanggan” percuma?
Ya — teks penuh “Pengurusan Konteks dan Sejarah Pelanggan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Ejen AI, tingkat taraf kepada CoddyKit PRO. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengurusan Konteks dan Sejarah Pelanggan”?
Respons diperibadikan menggunakan pembelian lalu, tiket dan pilihan pelanggan. Anda berlatih Ejen AI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Ejen AI?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Ejen AI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Pengurusan Konteks dan Sejarah Pelanggan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ejen AI ini?
Ya. Setiap pelajaran Ejen AI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Penghalaan Tiket dan Logik Eskalasi
- Integrasi CRM: Salesforce dan HubSpot
- Protokol Penyerahan kepada Manusia
- Pengurusan Konteks dan Sejarah Pelanggan