Kembali ke blog
Panduan implementasi·25 Mei 2026·Baca 7 menit

Otomatisasi pusat panggilan berbahasa Korea dengan AI — memproses dengan biaya seperseratus menggunakan Claude Haiku

Area yang paling cepat mengadopsi AI bagi perusahaan SaaS / e-commerce Korea: otomatisasi layanan pelanggan. Klasifikasi dengan Haiku, pembuatan respons dengan Sonnet, dan penghematan biaya 90% melalui prompt caching. Biaya 10 won per kasus, 280.000 won per bulan untuk 1.000 kasus per hari. Termasuk konsistensi tingkat kesopanan bahasa Korea dan kepatuhan terhadap Undang-Undang Perlindungan Informasi Pribadi.

Perusahaan SaaS / e-commerce Korea paling cepat menerapkan AI untuk otomatisasi layanan pelanggan. Jika semuanya ditangani manusia, biayanya puluhan juta won per bulan, tetapi dengan mengotomatiskan klasifikasi + draf respons menggunakan Claude, biaya dapat dikurangi lebih dari 90%. Artikel ini mengungkapkan kode dan biaya yang benar-benar dapat dioperasikan.

Struktur

  1. Klasifikasikan tiket masuk dengan Claude Haiku 4.5 (paling murah)
  2. Cari kasus serupa dari masa lalu (vector DB)
  3. Buat draf respons dengan Claude Sonnet 4.6
  4. Agen layanan meninjau lalu mengirim (atau kirim otomatis untuk prioritas rendah)

Tahap 1: Klasifikasi — Claude Haiku 4.5

Haiku 4.5 sangat murah untuk tugas sederhana seperti klasifikasi. Dengan harga Kunavo, input $0,40/1M, output $2,00/1M. Tiket berbahasa Korea 200 karakter + output JSON 50 token = sekitar $0,00004 (0.06 won Korea) per tiket.

classify.py
import json
from openai import OpenAI

client = OpenAI(
    api_key="sk-kn-...",
    base_url="https://api.kunavo.com/v1",
)

# Claude는 json_schema로 지정한 response_format만 지킵니다 (json_object는 보장 안 됨).
TICKET = {
    "type": "object",
    "properties": {
        "category": {"type": "string", "enum": ["결제", "배송", "반품", "기술", "기타"]},
        "priority": {"type": "string", "enum": ["긴급", "보통", "낮음"]},
        "summary": {"type": "string"},
    },
    "required": ["category", "priority", "summary"],
    "additionalProperties": False,
}

def classify_ticket(text: str) -> dict:
    """들어온 고객 문의를 카테고리 + 우선순위로 분류."""
    resp = client.chat.completions.create(
        model="claude-haiku-4-5",  # 가장 저렴, 분류엔 충분
        messages=[
            {
                "role": "system",
                "content": (
                    "당신은 한국어 고객 문의 분류기입니다. "
                    "다음 JSON 형식으로만 응답하세요: "
                    '{"category": "결제|배송|반품|기술|기타", '
                    '"priority": "긴급|보통|낮음", '
                    '"summary": "한 문장 요약"}'
                ),
            },
            {"role": "user", "content": text},
        ],
        response_format={"type": "json_schema",
                         "json_schema": {"name": "ticket", "schema": TICKET}},
        max_tokens=200,
    )
    return json.loads(resp.choices[0].message.content)

Tahap 2: Pencarian kasus serupa

Simpan respons masa lalu yang berhasil ditangani menggunakan embedding + pgvector, lalu cari 5 teratas berdasarkan kemiripan kosinus dengan embedding tiket baru. Karena embedding tidak disediakan Kunavo, hanya tahap ini yang memanggil OpenAI secara langsung dan ditagihkan langsung kepada Anda —— lihat halaman harga OpenAI untuk tarifnya. Hanya tahap pembuatan yang menggunakan Kunavo.

Tahap 3: Pembuatan draf respons — Claude Sonnet 4.6 + prompt caching

reply.py
def generate_reply(ticket: dict, context: list[str]) -> str:
    """과거 유사 사례 5건을 참조해 응답 초안 생성."""
    references = "\n\n".join(context)
    resp = client.chat.completions.create(
        model="claude-sonnet-4-6",  # 응답 품질은 Sonnet
        messages=[
            {
                "role": "system",
                "content": [
                    {
                        "type": "text",
                        "text": COMPANY_GUIDELINES,  # 회사 톤 & 정책
                        "cache_control": {"type": "ephemeral"},
                    },
                ],
            },
            {
                "role": "user",
                "content": (
                    f"## 고객 문의\n{ticket['original_text']}\n\n"
                    f"## 분류\n{ticket['category']} / {ticket['priority']}\n\n"
                    f"## 참고할 과거 응답 (5건)\n{references}\n\n"
                    "## 작성 지침\n"
                    "1. 정중한 격식체 (~습니다)\n"
                    "2. 3문단 이내\n"
                    "3. 다음 단계가 무엇인지 명확히 안내\n"
                ),
            },
        ],
        max_tokens=600,
    )
    return resp.choices[0].message.content

Pedoman perusahaan (3.000 token) selalu sama, jadi cache dengan cache_control. Mulai panggilan kedua, bagian tersebut hanya dikenai 10% dari harga input.

Perkiraan biaya per tiket (setelah caching diterapkan):

  • Klasifikasi (Haiku 4.5): $0,00006
  • Embedding pencarian: $0,0000025
  • Pembuatan respons (Sonnet 4.6, cache hit): sekitar 1K token input + 500 token output = $0,0042
  • Total: sekitar $0,004 (sekitar 6 won Korea)

Contoh biaya bulanan

  • 100 tiket per hari: $13 per bulan (sekitar 18.000 won)
  • 1.000 tiket per hari: $130 per bulan (sekitar 180.000 won)
  • 10.000 tiket per hari: $1.300 per bulan (sekitar 1,8 juta won)

Perbandingan: 1 agen layanan = sekitar 2,5 juta won per bulan, dengan batas kapasitas 100 tiket per hari. Untuk menangani 1.000 tiket per hari, diperlukan 10 orang = 25 juta won per bulan. Otomatisasi AI menghasilkan perbedaan biaya setidaknya 100 kali lipat.

Pertimbangan khusus lingkungan Korea

  • Konsistensi tingkat kesopanan: Nyatakan berulang kali dalam system prompt "gaya formal yang sopan (~습니다)". Untuk variasi, lakukan sampling 100 respons lalu uji seperti evaluasi pewawancara
  • Konsumsi token bahasa Korea: Bahasa Korea mengonsumsi 1,5–2 kali lebih banyak token dibandingkan bahasa Inggris. Perkiraan biaya di atas menggunakan bahasa Korea
  • Kepatuhan terhadap Undang-Undang Perlindungan Informasi Pribadi: Jangan pernah memasukkan PII pelanggan (nama, nomor telepon, alamat) ke dalam system prompt. Masking terlebih dahulu sebelum meneruskannya ke LLM
  • Metode pembayaran: Anda dapat mengisi saldo Kunavo dengan kartu internasional, Apple Pay, Google Pay, dan jika halaman pembayaran ditampilkan dalam won Korea, Kakao Pay, Naver Pay, PAYCO, Samsung Pay, serta kartu domestik (Toss tidak didukung). Kami tidak menerbitkan sertifikat pajak maupun faktur — satu-satunya bukti yang dapat digunakan adalah riwayat pembayaran pada laporan kartu atau pembayaran sederhana serta catatan pengisian dan penggunaan di /app/billing.

Daftar periksa penerapan

  • Untuk 100 tiket pertama, agen meninjau 100% → setelah memastikan akurasi 90%+, lakukan otomatisasi bertahap
  • Kategori darurat selalu ditinjau manusia (biaya kesalahan tinggi)
  • Tambahkan kasus yang salah diklasifikasikan ke pedoman setiap minggu (pembelajaran berulang)
  • Lacak penggunaan bulanan di /app/usage, dan tetapkan batas harian di /app/keys (untuk mencegah lonjakan akibat kesalahan)

Untuk memulai, daftar gratis, lalu isi saldo mulai dari $10 dan gunakan dengan skema bayar sesuai pemakaian. Periksa harga per model dan metode pembayaran di Ringkasan harga dan pembayaran Claude API serta halaman harga, dan lihat perbandingan alternatif OpenRouter untuk perbandingan dengan OpenRouter. Dokumentasi lengkap: /docs/quickstart, panduan caching prompt: pendalaman prompt caching.