에이아이씨엑스
경력근거: 고객 문의 이해, 응대 흐름 관리, 상담원 전환, 통화 결과 기록
※ 실제 산출물이 아닌 AI 예측 시안입니다.
에이아이씨엑스는 마이리얼트립의 자회사로 전화 채널의 고객 응대를 자동화하는 Voice AI 팀을 두고 있어, 이 콜봇 흐름은 여행 예약이라는 구체적 상담 도메인 위에서만 의미가 생깁니다. 이 포트폴리오는 상담 흐름을 상태머신으로 설계하고 LLM과 RAG, tool calling을 연결하는 제품 엔지니어링 역량을 보여주며, 음성 인식(STT/TTS)이나 실시간 통신 인프라 자체의 깊이는 주장하지 않습니다. 모르는 부분은 면접에서 모른다고 말하는 편이 낫다고 봅니다.
고객 문의 이해, 응대 흐름 관리, 상담원 전환, 통화 결과 기록을 콜봇의 백엔드 기능으로 설계합니다.
STT, TTS, LLM, RAG, tool calling을 실제 상담 흐름 안에서 동작하도록 연결합니다.
통화 이력, 응대 결과, 처리 성공률, 상담원 전환율을 SQL과 BI로 분석해 기능을 개선합니다.
여행 예약 고객센터의 전화 상담을 다루는 관리자 페이지입니다. 상담록 한 건을 넣으면 문의 의도를 분류하고, 여행 상담 지식에서 답변 근거를 찾아 안내하며, 예약 조회 같은 업무 처리로 연결하거나 상담원에게 전환한 뒤, 통화 결과를 구조화된 기록으로 남깁니다.
여행 예약 문의 전화를 받으며 같은 질문에 반복 응대하고, 어떤 통화를 상담원에게 넘겨야 하는지 매번 판단하던 상담 운영자가, 통화마다 의도와 처리 결과가 자동으로 정리되는 것을 한 화면에서 확인하고 싶은 상황입니다.
전화 상담의 의도 분류와 상담원 전환 판단을 상태머신과 LLM으로 자동화하면, 반복 문의는 콜봇이 끝까지 처리하고 사람은 정말 사람이 필요한 통화에 집중할 수 있다는 가설입니다.
더미 상담록을 입력하면 의도 분류, 안내 문구, 상담원 전환 여부, 통화 결과 기록과 근거 인용을 내놓는 웹 콘솔입니다. STT는 이미 텍스트로 전사된 상담록을 가정하고, 음성 실시간 처리는 범위에서 제외합니다.
사람이 라벨링한 전환 여부와 콜봇 판단의 일치도를 재고, RAG 안내 문구가 근거 문서를 정확히 인용했는지 점검하는 리포트입니다.
콘솔을 AWS로 배포하고, STT와 TTS를 연결해 짧은 음성 통화 한 건이 콜봇 흐름을 실제로 통과하는 데모입니다.
더미 상담록을 넣으면 의도 분류, 안내 문구, 상담원 전환 여부, 통화 결과 기록에 근거 인용이 붙어 나오는 것을 시연합니다.
결측·경계·미등록 상담록 30종을 넣어도 통화 결과 레코드의 출력 형식이 깨지지 않는 것을 보여줍니다.
상담원 전환 판단과 사람 라벨의 일치도를 Cohen's κ(두 채점자가 우연 이상으로 얼마나 일치하는지 나타내는 값, 1에 가까울수록 일치)로 재는데, 단 정답 전환 라벨을 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
── 진짜 성능 검증은 여기서 멈춥니다: 위 수치는 더미 상담록 자가채점이며, 실제 전환 정확도와 처리 성공률은 에이아이씨엑스의 실제 통화 데이터와 상담 운영자 검수가 있어야 측정 가능합니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 상담록 자가채점이라 성능 증명이 아니므로, 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.
정답 전환 라벨을 작성자가 만들었으니 잘 맞는 것이 당연하므로, 애매한 다중 의도·중간 침묵·거친 표현 같은 경계 상담록을 더미에 일부러 섞습니다.
이 포트폴리오는 상담 흐름의 상태머신 설계와 LLM 연결을 보여주며, 음성 인식 정확도나 실시간 통신 품질은 실제 STT/TTS와 통신 인프라가 있어야 확인되는 도입 단계 과제입니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
콜봇이 소비하는 여행 예약 고객센터의 전사된 상담록입니다. 의도와 전환 여부의 정답 라벨을 함께 담아 자가채점의 입력이 됩니다.
| call_id | utterances | intent_raw | intent_id | booking_ref | transfer_label |
|---|---|---|---|---|---|
| c-001 | [{"speaker":"고객","text":"다음 주 오사카 예약 날짜를 바꾸고 싶어요."},{"speaker":"콜봇","text":"예약 번호를 말씀해 주시겠어요?"}] | 일정 변경 | reschedule | BK-20481 | false |
| c-002 | [{"speaker":"고객","text":"환불 규정이 어떻게 되나요?"}] | 환불 | refund_policy | — | false |
| c-003 | [{"speaker":"고객","text":"취소하고 싶은데 위약금이 얼마죠?"}] | 취소 | refund_policy | BK-20492 | false |
| c-004 | [{"speaker":"고객","text":"어제 결제했는데 카드가 두 번 빠졌어요. 당장 처리해 주세요."}] | 중복 결제 | payment_issue | BK-20455 | true |
| c-005 | [{"speaker":"고객","text":"..."},{"speaker":"콜봇","text":"말씀이 잘 들리지 않았습니다. 다시 말씀해 주시겠어요?"}] | — | — | — | — |
다음 JSON Schema에 맞는 여행 예약 상담록 행을 더 생성하세요: {"type":"object","properties":{"call_id":{"type":"string"},"utterances":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"string","enum":["고객","상담원","콜봇"]},"text":{"type":"string"}}}},"intent_raw":{"type":["string","null"]},"intent_id":{"type":["string","null"]},"booking_ref":{"type":["string","null"]},"transfer_label":{"type":["boolean","null"]}},"required":["call_id","utterances"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) 결측 intent_id=null(마스터에 없는 새 의도), (2) 경계값 무발화·침묵 상담록, (3) 미등록 booking_ref(조회 불가 예약번호), (4) 표기 불일치 intent_raw에 '취소'/'환불'/'reschedule'처럼 같은 의도의 다른 표기. 형식 깨뜨리기 시도(타입 위반) 3건도 별도 표시해 검증기가 걸러내는지 확인하세요.{"type":"object","properties":{"call_id":{"type":"string"},"utterances":{"type":"array","items":{"type":"object","properties":{"speaker":{"type":"string","enum":["고객","상담원","콜봇"]},"text":{"type":"string"}}}},"intent_raw":{"type":["string","null"]},"intent_id":{"type":["string","null"]},"booking_ref":{"type":["string","null"]},"transfer_label":{"type":["boolean","null"]}},"required":["call_id","utterances"]}RAG 안내가 근거로 인용하는 여행 상담 지식 문서입니다. 안내 문구가 이 문서를 정확히 인용했는지 검증하는 기준이 됩니다.
출발 7일 전 취소 시 전액 환불, 3일 전 50%, 당일 환불 불가입니다. 항공권은 항공사 규정을 별도로 따릅니다.
예약 번호 확인 후 잔여 좌석이 있으면 변경 가능하며, 요금 차액이 발생할 수 있습니다.
다음 JSON Schema에 맞는 여행 상담 지식 문서를 더 생성하세요: {"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["title","body"]} 쉬운 데이터만 만들지 말 것 — 규정이 서로 충돌하는 문서(예: 환불 예외), 숫자·기한이 겹치는 문서, 콜봇이 처리하면 안 되는 경계 사례를 의도적으로 섞어 RAG 인용이 정확한 문서를 고르는지 검증하세요.{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"}},"required":["title","body"]}| Python | 콜봇 백엔드와 상태머신, 통화 결과 레코드 생성 로직을 구현합니다. |
| LLM API | 상담록에서 문의 의도를 분류하고 안내 문구를 생성합니다. |
| RAG | 여행 상담 지식 문서에서 답변 근거를 찾아 안내 문구에 인용합니다. |
| tool calling | 예약 조회 같은 업무 처리를 외부 시스템 호출로 연결합니다. |
| STT/TTS | 1주차는 전사된 텍스트를 가정하고, 3주차에 음성 입출력을 연결합니다. |
| 상태머신 | 안내, 업무 처리, 상담원 전환으로 이어지는 응대 흐름과 예외를 관리합니다. |
| SQL | 통화 이력과 처리 성공률, 상담원 전환율을 집계해 기능 효과를 분석합니다. |
✓ pass → 그대로 멈춰도 콜봇 흐름 데모로 완결됩니다. 더 키우려면 전환 판단이 사람 기준과 맞는지 검증합니다.
✓ pass → 판단 신뢰도를 확인했다면, AWS 배포와 실시간 음성 연동으로 실제 통화 흐름을 시연합니다.
콜봇이 통화 한 건을 처리한 결과를 구조화한 레코드입니다. 의도, 처리 방식, 전환 사유, 근거 인용을 담습니다.
{"type":"object","properties":{"call_id":{"type":"string"},"intent":{"type":"string"},"resolution":{"type":"string","enum":["콜봇처리","상담원전환"]},"transfer_reason":{"type":["string","null"]},"answer_text":{"type":"string"},"evidence":{"type":"array","items":{"type":"object","properties":{"kb_title":{"type":"string"},"quote":{"type":"string"}}}}},"required":["call_id","intent","resolution","evidence"]}[
{
"call_id": "c-002",
"intent": "refund_policy",
"resolution": "콜봇처리",
"transfer_reason": null,
"answer_text": "출발 7일 전 취소 시 전액 환불되며, 3일 전은 50%, 당일은 환불이 불가합니다.",
"evidence": [
{
"kb_title": "환불 규정",
"quote": "출발 7일 전 취소 시 전액 환불, 3일 전 50%, 당일 환불 불가입니다."
}
]
},
{
"call_id": "c-004",
"intent": "payment_issue",
"resolution": "상담원전환",
"transfer_reason": "결제 오류로 즉시 처리가 필요한 통화입니다.",
"answer_text": "이중 결제가 확인되어 상담원에게 바로 연결해 드리겠습니다.",
"evidence": [
{
"kb_title": "중복 결제 처리",
"quote": "급한 경우 상담원이 즉시 처리합니다."
}
]
},
{
"call_id": "c-005",
"intent": "unknown",
"resolution": "상담원전환",
"transfer_reason": "발화가 없어 의도를 판별할 수 없는 통화입니다.",
"answer_text": "음성이 확인되지 않아 상담원에게 연결해 드리겠습니다.",
"evidence": []
}
][자동 검증 — 규칙으로 채점] 1. resolution enum(콜봇처리·상담원전환) 형식 통과 여부를 확인해 잘못된 값을 걸러냅니다. 2. resolution이 상담원전환이면 transfer_reason이 비어 있지 않은지 확인합니다. 3. evidence의 각 quote가 support_kb의 실제 문서 본문에 그대로 있는 문장인지 대조해 인용 환각을 걸러냅니다. [수동 검증 — 사람이 확인] 1. 전환 판단이 상담 운영자 기준과 맞는지 표본으로 점검합니다. 2. 안내 문구가 규정을 오해 없이 전달하는지 읽어 확인합니다.
근거: 고객 문의 이해, 응대 흐름 관리, 상담원 전환, 통화 결과 기록