Per le aziende SaaS / e-commerce coreane, l'adozione più rapida dell'AI riguarda l'automazione dell'assistenza clienti. Se tutto viene gestito da persone, il costo è di decine di milioni di won al mese; automatizzando classificazione e bozze di risposta con Claude, è possibile ridurlo di oltre il 90%. Questo articolo presenta codice e costi realmente utilizzabili in produzione.
Struttura
- Classificare i ticket in arrivo con Claude Haiku 4.5 (il più economico)
- Cercare casi passati simili (database vettoriale)
- Generare una bozza di risposta con Claude Sonnet 4.6
- L'operatore esamina e invia (oppure i casi a bassa priorità vengono inviati automaticamente)
Fase 1: classificazione — Claude Haiku 4.5
Haiku 4.5 è molto economico per attività semplici come la classificazione. Ai prezzi Kunavo: input $0,40/1M, output $2,00/1M. Un ticket coreano di 200 caratteri più un output JSON di 50 token costano circa $0,00004 (0.06 won) per ticket.
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)Fase 2: ricerca di casi simili
Salva le risposte passate gestite correttamente tramite embedding + pgvector e cerca i 5 risultati più simili usando la similarità coseno con l'embedding del nuovo ticket. Kunavo non fornisce embedding, quindi solo questa fase viene chiamata direttamente su OpenAI e fatturata direttamente. Verifica il prezzo nella pagina dei prezzi OpenAI. Per la generazione utilizza Kunavo.
Fase 3: generazione della bozza di risposta — Claude Sonnet 4.6 + prompt caching
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.contentLe linee guida aziendali (3.000 token) sono sempre uguali, quindi vengono memorizzate nella cache con cache_control. Dalla seconda chiamata in poi, quella parte viene addebitata solo al 10% del prezzo di input.
Stima del costo per ticket (dopo l'applicazione della cache):
- Classificazione (Haiku 4.5): $0,00006
- Embedding per la ricerca: $0,0000025
- Generazione della risposta (Sonnet 4.6, cache hit): circa 1K token di input + 500 token di output = $0,0042
- Totale: circa $0,004 (circa 6 won)
Esempio di costo mensile
- 100 ticket al giorno: $13 al mese (circa 18.000 won)
- 1.000 ticket al giorno: $130 al mese (circa 180.000 won)
- 10.000 ticket al giorno: $1.300 al mese (circa 1.800.000 won)
Confronto: 1 operatore = circa 2.500.000 won al mese, con un limite di 100 ticket al giorno. Per gestire 1.000 ticket al giorno servono 10 persone = 25.000.000 won al mese. L'automazione con IA crea una differenza di costo di almeno 100 volte.
Considerazioni specifiche per l'ambiente coreano
- Coerenza del registro onorifico: specifica ripetutamente nel prompt di sistema "stile formale cortese (~습니다)". Per le varianti, campiona 100 risposte e valuta come in un colloquio
- Consumo di token in coreano: il coreano consuma 1.5-2 volte più token rispetto all'inglese. Le stime dei costi sopra sono basate sul coreano
- Conformità alla legge sulla protezione dei dati personali: non inserire mai nel prompt di sistema i dati PII dei clienti (nome, numero di telefono, indirizzo). Trasmettili al modello LLM dopo averli mascherati
- Metodo di pagamento: potete ricaricare il saldo Kunavo con carte internazionali, Apple Pay, Google Pay e, se il checkout mostra gli importi in won, KakaoPay, Naver Pay, PAYCO, Samsung Pay e carte nazionali (Toss non è supportato). Non emettiamo certificati fiscali né fatture — come prova sono disponibili solo i dettagli del pagamento nell'estratto conto della carta o del pagamento semplificato e i registri delle ricariche e dell'utilizzo in /app/billing.
Checklist di implementazione
- Per i primi 100 ticket, revisione al 100% da parte degli operatori → automatizzazione graduale dopo aver verificato una precisione del 90%+
- Le categorie urgenti devono essere sempre revisionate da una persona (il costo degli errori è elevato)
- Aggiungi ogni settimana i casi classificati erroneamente alle linee guida (apprendimento iterativo)
- Monitora l'utilizzo mensile in /app/usage e imposta il limite giornaliero in /app/keys (per evitare picchi accidentali)
Per iniziare, registrati gratuitamente, ricarica a partire da $10 e usa il servizio a consumo. Consulta Prezzi e pagamenti dell'API Claude e la pagina dei prezzi per le tariffe per modello e i metodi di pagamento; per il confronto con OpenRouter, leggi Confronto delle alternative a OpenRouter. Documentazione completa: /docs/quickstart; guida al prompt caching: approfondimento sul prompt caching.