0Pricing
AI Agents · Ders

İnsanlara Devretme Protokolleri

Devretme tetikleyicilerini algılama ve canlı aracılara sorunsuz biçimde aktarma.

İnsanlara Devretme Protokolleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 3. 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.

Bir Temsilci Ne Zaman Aktarma Yapmalıdır?

Her görüşme baştan sona bir yapay zekâ temsilcisi tarafından yürütülmemelidir. Ne zaman aktarma yapılacağını bilmek, nasıl yanıt verileceğini bilmek kadar önemlidir. Yaygın tetikleyiciler:

  • Müşteri açıkça bir insanla görüşmek ister
  • Öfke veya sıkıntı algılanır
  • Temsilcinin kapsamı dışındaki karmaşık veya belirsiz bir durum söz konusudur
  • Hukuki, güvenlik veya uyumluluk açısından hassasiyet vardır

Aktarma Tetikleyicilerini Algılama

Aktarma tetikleyicilerini gerçek zamanlı olarak algılamak için bir LLM sınıflandırıcısı kullanın. Denetimi yalnızca ilk mesajda değil, temsilcinin her turunda gerçekleştirin.

import openai, json

client = openai.OpenAI(api_key='YOUR_OPENAI_KEY')

def should_handoff(message: str, history: list[dict]) -> dict:
    context = '\n'.join(f"{m['role']}: {m['content']}" for m in history[-4:])
    prompt = (
        f'Conversation context:\n{context}\n'
        f'Latest message: "{message}"\n'
        f'Should this be handed to a human agent? Reasons: '
        f'angry_customer, explicit_human_request, complex_issue, legal_risk, other.\n'
        f'JSON: {{"handoff": true/false, "reason": "..."}}'
    )
    resp = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        response_format={'type': 'json_object'}
    )
    return json.loads(resp.choices[0].message.content)

Sıcak ve Soğuk Aktarma

İki aktarma biçimi vardır:

  • Sıcak aktarma: temsilci kendisini ve müşteriyi insan temsilciye tanıtır, görüşmeyi özetler ve çıkmadan önce insanın onayını bekler.
  • Soğuk aktarma: görüşme, döküm özetiyle birlikte aktarılır ve temsilci hemen bağlantıyı keser.

Sıcak aktarmalar müşteri memnuniyetsizliğini azaltır ancak bir insan temsilcinin gerçek zamanlı olarak hazır bulunmasını gerektirir.

Görüşme Özetini Oluşturma

Aktarmadan önce temsilci, görüşmenin yapılandırılmış bir özetini oluşturur. Bu özet, bağlam olarak insan temsilciye gösterilir ve müşterinin kendini tekrar etmesi gerekmez.

def generate_handoff_summary(history: list[dict]) -> str:
    transcript = '\n'.join(
        f"{m['role'].upper()}: {m['content']}" for m in history
    )
    prompt = (
        f'Summarize this support conversation for a human agent.\n'
        f'Include: customer issue, what was tried, current status, and urgency level.\n'
        f'Be brief (3-5 sentences).\n\n'
        f'TRANSCRIPT:\n{transcript}'
    )
    resp = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}]
    )
    return resp.choices[0].message.content

summary = generate_handoff_summary([
    {'role': 'user', 'content': 'My account was charged twice for January'},
    {'role': 'assistant', 'content': 'I can look into that for you...'}
])
print(summary)

Aktarma Sırasında Zendesk Destek Talebi Oluşturma

Aktarma sırasında özet ve tam dökümle birlikte bir Zendesk destek talebi oluşturun. İnsan temsilci destek talebini açtığında gerekli bağlama anında sahip olur.

import requests

ZENDESK_DOMAIN = 'yourcompany.zendesk.com'
ZENDESK_TOKEN = 'YOUR_ZENDESK_API_TOKEN'
ZENDESK_EMAIL = 'agent@yourcompany.com'

def create_zendesk_ticket(customer_email: str, subject: str,
                          summary: str, transcript: str) -> str:
    payload = {
        'ticket': {
            'subject': subject,
            'comment': {'body': f'AI Agent Summary:\n{summary}\n\nFull Transcript:\n{transcript}'},
            'requester': {'email': customer_email},
            'tags': ['ai_handoff'],
            'priority': 'high'
        }
    }
    resp = requests.post(
        f'https://{ZENDESK_DOMAIN}/api/v2/tickets.json',
        json=payload,
        auth=(f'{ZENDESK_EMAIL}/token', ZENDESK_TOKEN)
    )
    resp.raise_for_status()
    return str(resp.json()['ticket']['id'])

Intercom Görüşmesi Aktarımı

Intercom ile görüşmeyi Intercom API'sini kullanarak belirli bir ekibe veya temsilciye atayarak aktarın. İnsan temsilci, görüşmeye devam etmeye hazır olduğuna dair bir bildirim alır.

import requests

INTERCOM_TOKEN = 'YOUR_INTERCOM_ACCESS_TOKEN'

def handoff_to_intercom_team(conversation_id: str, team_id: str,
                             note: str) -> bool:
    headers = {
        'Authorization': f'Bearer {INTERCOM_TOKEN}',
        'Content-Type': 'application/json'
    }
    # Add a note with the AI summary
    requests.post(
        f'https://api.intercom.io/conversations/{conversation_id}/parts',
        headers=headers,
        json={'type': 'note', 'body': note}
    )
    # Assign to human team
    resp = requests.put(
        f'https://api.intercom.io/conversations/{conversation_id}/parts',
        headers=headers,
        json={'type': 'assignment', 'assignee_id': team_id,
              'message_type': 'assignment'}
    )
    return resp.status_code == 200

Aktarma Sırasında Müşteriye Gönderilen Mesaj

Aktarma sırasında müşterinin aldığı mesaj önemlidir. Mesaj, aktarımı kabul etmeli, bekleme süresiyle ilgili beklentileri belirlemeli ve konunun ciddiye alındığını ifade etmelidir.

def generate_handoff_message(reason: str, wait_minutes: int = 5) -> str:
    messages = {
        'explicit_human_request':
            f'Of course! I am connecting you with a human agent right now. '
            f'Estimated wait: {wait_minutes} minutes. Your conversation history '
            f'has been shared so you will not need to repeat anything.',
        'angry_customer':
            f'I completely understand your frustration. Let me get a senior '
            f'team member on the line immediately. Wait: ~{wait_minutes} min.',
        'complex_issue':
            f'This situation needs specialist attention. I am escalating now '
            f'and sharing all the context we have discussed. Wait: ~{wait_minutes} min.',
        'legal_risk':
            f'This matter requires our compliance team. Connecting you now.'
    }
    return messages.get(reason, f'Connecting you with a human agent. ~{wait_minutes} min wait.')

if __name__ == '__main__':
    print(generate_handoff_message('angry_customer', wait_minutes=3))
    print(generate_handoff_message('explicit_human_request'))

Hiçbir İnsan Temsilci Uygun Değilken Kuyruğa Alma

Mesai saatleri dışında veya yoğunluk sırasında hiçbir insan temsilci hemen uygun olmayabilir. Aktarmayı kuyruğa alın, müşteriye bir referans numarası içeren onay gönderin ve nöbetçi ekibi Slack veya PagerDuty üzerinden bilgilendirin.

import requests

SLACK_WEBHOOK = 'https://hooks.slack.com/services/YOUR/WEBHOOK/URL'

def notify_on_call(ticket_id: str, summary: str, priority: str):
    payload = {
        'text': f'*New AI Handoff* [{priority.upper()}]',
        'attachments': [{
            'color': '#ff0000' if priority == 'high' else '#ffcc00',
            'fields': [
                {'title': 'Ticket ID', 'value': ticket_id, 'short': True},
                {'title': 'Summary', 'value': summary[:500]}
            ]
        }]
    }
    requests.post(SLACK_WEBHOOK, json=payload)

Aktarma Sonrası Temsilci Davranışı

Aktarma tetiklendikten sonra temsilci sorunu çözmeye çalışmayı bırakmalıdır. Gerçeğe dayalı soruları (sipariş durumu, ilke bağlantıları) hâlâ yanıtlayabilir ancak taahhütte bulunmamalı veya karar vermemelidir.

def agent_post_handoff_response(message: str, handoff_complete: bool) -> str:
    if not handoff_complete:
        return 'Connecting you now...'

    # Still answer simple factual questions
    simple_keywords = ['status', 'where', 'when', 'policy', 'link']
    if any(kw in message.lower() for kw in simple_keywords):
        return 'I can help with that while you wait for the agent.'

    # Defer everything else
    return (
        'Your case has been assigned to a specialist. '
        'They will respond shortly. I will step back to avoid confusion.'
    )

if __name__ == '__main__':
    print(agent_post_handoff_response('Where is my order?', handoff_complete=True))
    print(agent_post_handoff_response('I want a refund now', handoff_complete=True))

Aktarma Ölçümlerini Takip Etme

Aktarma oranını, nedenlerin dağılımını ve aktarma sonrası çözüm süresini ölçün. Belirli bir niyetteki yüksek aktarma oranları, temsilcinin o konu için daha iyi kapsam sunması gerektiğini gösterir.

from collections import Counter
import json

handoff_log = []  # In production: a database table

def record_handoff(session_id: str, reason: str, turn_number: int):
    handoff_log.append({
        'session_id': session_id,
        'reason': reason,
        'turns_before_handoff': turn_number
    })

def handoff_analytics() -> dict:
    reasons = Counter(h['reason'] for h in handoff_log)
    avg_turns = sum(h['turns_before_handoff'] for h in handoff_log) / max(len(handoff_log), 1)
    return {
        'total_handoffs': len(handoff_log),
        'reason_breakdown': dict(reasons),
        'avg_turns_before_handoff': round(avg_turns, 1)
    }

if __name__ == '__main__':
    record_handoff('s1', 'angry_customer', 4)
    record_handoff('s2', 'complex_issue', 7)
    record_handoff('s3', 'angry_customer', 2)
    stats = handoff_analytics()
    print(f"Total handoffs: {stats['total_handoffs']}")
    print(f"Reasons: {stats['reason_breakdown']}")
    print(f"Avg turns before handoff: {stats['avg_turns_before_handoff']}")

Eksiksiz Aktarma Orkestrasyonu

Tetikleyici algılandığında temsilcinin bir kez çağırdığı execute_handoff() işlevinde tüm adımları birleştirin.

def execute_handoff(session: dict, reason: str) -> str:
    # 1. Generate summary
    summary = generate_handoff_summary(session['history'])
    transcript = '\n'.join(
        f"{m['role']}: {m['content']}" for m in session['history']
    )
    # 2. Create ticket
    ticket_id = create_zendesk_ticket(
        session['customer_email'],
        f'AI Handoff: {reason}',
        summary,
        transcript
    )
    # 3. Notify on-call team
    notify_on_call(ticket_id, summary, priority='high')
    # 4. Record metrics
    record_handoff(session['id'], reason, len(session['history']))
    # 5. Return customer-facing message
    wait = 5  # fetch from queue depth in production
    return generate_handoff_message(reason, wait)

Sıcak ve soğuk aktarma arasındaki temel fark nedir?

Doğru aktarma biçimini seçmek müşteri deneyimini ve operasyonel karmaşıklığı etkiler. Bu ayrımı anlamak, uygun protokolü uygulamanıza yardımcı olur.

İnsan Temsilciye Aktarma Protokollerinin Özeti

Etkili aktarma şunları gerektirir: tetikleyicileri algılama (öfke, açık istek, karmaşıklık), insan temsilci için özet oluşturma, tam dökümle birlikte Zendesk/Intercom'da destek talebi oluşturma, nöbetçi ekibi bilgilendirme ve müşteriye açık bir beklenti mesajı verme.

Aktarmadan sonra temsilci geri çekilir ve tüm kararları insana bırakır.

Sıkça Sorulan Sorular

“İnsanlara Devretme Protokolleri” dersi ücretsiz mi?

Evet — “İnsanlara Devretme Protokolleri” 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.

“İnsanlara Devretme Protokolleri” dersinde ne öğreneceğim?

Devretme tetikleyicilerini algılama ve canlı aracılara sorunsuz biçimde aktarma. 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 3. dersidir.

“İnsanlara Devretme Protokolleri” 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

  1. Bilet Yönlendirme ve Üst Birime Aktarma Mantığı
  2. CRM Entegrasyonu: Salesforce ve HubSpot
  3. İnsanlara Devretme Protokolleri
  4. Müşteri Bağlamı ve Geçmişi Yönetimi
← AI Agents Sayfasına Dön