Volver al blog
Guía de implementación·25 de mayo de 2026·7 min de lectura

Automatización con IA de centros de llamadas en coreano — procesa con Claude Haiku a una centésima parte del coste

El área donde las empresas coreanas de SaaS y comercio electrónico adoptan la IA más rápidamente: automatización de la atención al cliente. Clasifica con Haiku, genera respuestas con Sonnet y reduce los costes un 90 % mediante el almacenamiento en caché de prompts. 10 wones por caso y 280 000 wones al mes para procesar 1 000 casos diarios. Incluye coherencia en los honoríficos coreanos y cumplimiento de la Ley de Protección de Información Personal.

En las empresas coreanas de SaaS y comercio electrónico, la automatización de la atención al cliente es el ámbito en el que la IA se adopta más rápidamente. Si las personas procesan todo, cuesta decenas de millones de wones al mes, pero al automatizar la clasificación y los borradores de respuesta con Claude se pueden reducir los costes en un 90 % o más. Este artículo presenta código utilizable en producción real y los costes.

Estructura

  1. Clasificar los tickets entrantes con Claude Haiku 4.5 (el más barato)
  2. Buscar casos anteriores similares (base de datos vectorial)
  3. Generar un borrador de respuesta con Claude Sonnet 4.6
  4. El agente revisa y envía (o los de baja prioridad se envían automáticamente)

Paso 1: clasificación — Claude Haiku 4.5

Haiku 4.5 es muy barato para tareas sencillas como la clasificación. Con los precios de Kunavo: entrada $0.40/1M, salida $2.00/1M. Un ticket de 200 caracteres en coreano más una salida JSON de 50 tokens cuesta aproximadamente $0.00004 (0.06 wones) por caso.

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)

Paso 2: búsqueda de casos similares

Guarda casos de respuestas anteriores bien gestionadas mediante embeddings y pgvector; después busca los 5 casos principales según la similitud coseno con el embedding del nuevo ticket. Kunavo no ofrece embeddings, por lo que solo esta etapa llama directamente a OpenAI y se factura directamente allí —— consulta la tarifa en la página de precios de OpenAI. Utiliza Kunavo únicamente en la etapa de generación.

Paso 3: generación del borrador de respuesta — 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

Las directrices de la empresa (3.000 tokens) son siempre las mismas, así que se almacenan en caché mediante cache_control. A partir de la segunda llamada, esa parte solo se factura al 10 % de la tarifa de entrada.

Estimación del coste por caso (después de aplicar el caching):

  • Clasificación (Haiku 4.5): $0.00006
  • Embedding de búsqueda: $0.0000025
  • Generación de respuesta (Sonnet 4.6, cache hit): aproximadamente 1K tokens de entrada + 500 tokens de salida = $0.0042
  • Total: aproximadamente $0.004 (unos 6 wones)

Ejemplo de coste mensual

  • 100 casos al día: $13 al mes (aproximadamente 18.000 wones)
  • 1.000 casos al día: $130 al mes (aproximadamente 180.000 wones)
  • 10.000 casos al día: $1.300 al mes (aproximadamente 1,8 millones de wones)

Comparación: 1 agente de atención al cliente = aproximadamente 2,5 millones de wones al mes, con un límite de 100 casos diarios. Para procesar 1.000 casos diarios se necesitan 10 agentes = 25 millones de wones al mes. La automatización con IA supone una diferencia de costes de 100 veces o más.

Aspectos específicos del entorno coreano

  • Coherencia del lenguaje honorífico: indica repetidamente en el prompt del sistema «registro formal cortés (~습니다)». Para las variantes, realiza un muestreo de 100 respuestas y evalúalas como si fueran una entrevista
  • Consumo de tokens en coreano: el consumo de tokens en coreano es entre 1,5 y 2 veces el del inglés. La estimación anterior se basa en coreano
  • Cumplimiento de la Ley de Protección de la Información Personal: no incluyas nunca la PII del cliente (nombre, número de teléfono, dirección) en el prompt del sistema. Enmascárala antes de enviarla al LLM
  • Métodos de pago: puedes recargar el saldo de Kunavo con tarjetas internacionales, Apple Pay y Google Pay; si el proceso de pago aparece en wones, también con KakaoPay, Naver Pay, PAYCO, Samsung Pay y tarjetas nacionales (Toss no es compatible). No se emiten certificados fiscales ni facturas; como justificantes solo sirven los detalles del pago en el extracto de la tarjeta o del método de pago digital, y los registros de recargas y uso de /app/billing.

Lista de comprobación de implementación

  • Un agente de atención al cliente debe revisar el 100 % de los primeros 100 casos → tras confirmar una precisión del 90 % o más, automatiza gradualmente
  • Haz que las categorías urgentes siempre las revise una persona (el coste de los errores es alto)
  • Añade cada semana los casos mal clasificados a las directrices (aprendizaje iterativo)
  • Sigue el uso mensual en /app/usage y configura el límite diario en /app/keys (para evitar un aumento accidental del consumo)

Para empezar, regístrate gratis y recarga desde $10 para utilizar el servicio con facturación por uso. Consulta los precios por modelo y los métodos de pago en Precios y pagos de la API de Claude y en la página de precios; para comparar con OpenRouter, consulta Comparación de alternativas a OpenRouter. Documentación completa: /docs/quickstart; guía detallada de prompt caching: prompt caching deep dive.