23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
에이닷을 사용하는 사용자에 필요한 정보를 제공하는 가장 좋은 방법에는 어떤 것 들이 있을까요?
여러 가지 방법들이 있겠지만 그 중 하나는 사용자의 요청이 없어도 먼저 말을 걸어 알려 주는 방법을 생각해 볼 수 있습니다.
하지만 사용자의 직접 적인 요청이 없어도 잘 제공할 수 있을까요?
이를 위해 어떻게 하면 먼저 말을 잘 걸 수 있을지 고민하고 개발한 내용을 소개해 드리도록 하겠습니다.
새롭게 개편된 에이닷을 사용해 보면 에이닷이 먼저 말을 걸어 옵니다.
정해진 말만 하는 것은 아닐까 하는 생각이 들 수도 있지만 조금만 에이닷을 사용해 보면 다양한 내용으로 말을 걸어 오는 것을 볼 수 있습니다.
우선 우리는 에이닷이 말을 먼저 거는 기능을 '선톡'으로 부르며 다음과 같은 종류로 나누었습니다.
선톡의 종류
오퍼링 선톡 - 개인 정보(통화, 수면, 일정, 위치 등등)을 활용해서 정보를 알려 주며 말 걸기
대화 선톡 - 개인적인 관심사, 좋아하는 음악 등에 대해서 말 걸기
일반 선톡 - 전반적인 날씨, 시간 등에 대해서 말 걸기
개발의 방향은 필요한 정보를 Context로 구성하고 개인화 Agent에서 이를 활용하여 선톡을 Offering 하는 구조를 기본으로 하고 있습니다.
Offering 을 효율적으로 하면서 고도화도 유연하게 하기 위해 다음과 같이 Context 영역과 Agent 영역을 구분했습니다.
주요 기능들은 아래와 같은 모듈들이 담당하고 있습니다.
Context 영역
UPS (User Profile System) - 사용자 별 Context를 담당
One Model - 사용자 별 선톡을 모델링
Agent 영역
LLM (Offering 추천) - 선톡 선호도 제공
Content API - 선톡 관련 정보를 제공
LLM (생성) - 선톡 메시지를 생성
선톡의 시작은 사용자의 Context에서 시작 됩니다. Context에 대해서 다음과 같이 3가지 영역으로 문제를 정의하고 개발을 하였는데 수집부터 활용까지 하나씩 알아 보도록 하겠습니다.
Context 확보 - 개인화 Profile 및 실 시간 정보 수집
Context 가공 - LLM Prompting에 활용하기 좋은 형태로 가공
Context 활용 - Agent가 사용하기 편한 API 제공
필요한 Context를 정의하고 수집하는 단계로 아래 표는 대표적인 Context의 예시 입니다.
Categroy | 상세 정보 | 예시 |
|---|---|---|
요즘 관심사 | 앱에서 설정한 취향 | 스포츠 응원팀 |
내 일정 | 캘린더 정보 | 캘린더 이벤트 |
음악 | 에이닷 음악 관련 정보 | 선호 장르, 가수, 듣고 있는 음악 |
수면 | 수면 정보 | 수면 리포트 |
자주 방문하는 지역 | 위치 정보 | 여행 장소, 자주 방문한 장소, 지하철 이용 프로파일 |
그 밖에도 전화, 라디오 정보 등 다양한 Context가 있고 하루 하루 계속 추가가 되고 있습니다.
다만 수집된 Context 정보는 아래 예시와 같이 약어로 표기된 필드명과 알기 어려운 단순한 숫자 값으로 되어 있는데
이는 개인화 Agent (LLM 활용)에 바로 사용하기 어려운 경우가 많습니다.
여행 위치 정보
{
"skt_ict_traveler":
{
"traveler":
{
"date": "20240821",
"latitude": "36.35467",
"longitude": "127.375349",
"total_duration": "9376"
}
}
}듣고 있는 음악
{
"songId": "21431368",
"artistId": "405655350"
}필요한 항목만 선택하여 LLM이 이해하기 쉬운 형태로 아래와 같이 변경을 합니다.
{
"specialized_offering_context": {
"새로운 지역에 방문 중": {
"방문 중인 지역": {
"방문 중인 지역(시/도)": "대전광역시",
"방문 중인 지역(시/군/구)": "서구"
}
},
"듣고 있는 음악": {
"청취 중 음악": [
{
"음악": {
"곡명": "고민중독",
"아티스트명": "QWER"
}
}
]
}
}
}Context는 UPS에 저장되어 있는데 선톡에서 원하는 Context를 쉽게 조회 할 수 있도록 API를 제공하고 있습니다.
해당 API에서는 원하는 Context 항목을 선정하고 세부 조건을 설정합니다.
아래와 같이 개인화 Agent의 LLM Prompt에 적합한 형태로 사용하게 되고,
# User's Context
{'category': '새로운 지역에 방문 중', 'category_key_info': {'방문 중인 지역': {'방문 중인 지역(시/도)': '대전광역시', '방문 중인 지역(시/군/구)': '서구'}}}개인화 Agent는 아래와 같이 선톡을 생성합니다.
* 대전 서구는 어땠나요? 대전의 성심당 빵집 가보셨나요? 다양한 빵과 디저트로 유명한 곳이에요.
* 대전의 유명 관광지 알려줘
* 대전의 전통 음식 뭐가 있어?
* 대전의 유명 축제가 언제 열리는지 알려줘Context의 종류는 매우 많고 앞으로는 더욱 더 많아 질 것이기 때문에 해당 Context를 기반으로 제공할 수 있는 수 많은 선톡 중에서 어떤 선톡을 선택해서 제공할 지가 Agent의 핵심 요소입니다.
우리는 최적의 선톡을 선택하기 위해 평가 시스템 (Evaluation System)을 다음과 같이 만들었습니다.
평가 시스템 구조도
가장 처음에 하는 일은 선톡의 종류에 따른 우선 순위를 정하는 것입니다. 기본적으로 아래와 같은 순위를 가지고 있습니다.
오퍼링 선톡
대화 선톡
일반 선톡
선톡을 위한 핵심 Context는 있지만 보다 정확한 선톡을 제공하기 위해 Rule Engine에서 선톡 후보에 대해서 추가적으로 판단합니다.
사용하는 Context를 추가 할 수도 있고 범위도 판단 할 수도 있습니다.
예를 들면 아래와 같은 사항을 확인 합니다.
SKT 고객인가?
지금 위치가 관심 있는 지하철 역과 500m 이내인가?
현재 음악을 듣고 있는 중인가?
Rule Engine을 통과한 n개의 선톡은 다시 개인화 모델링을 통해 우선 순위가 정해 집니다.
동일한 선톡이 반복적으로 나오는 것을 방지하기 위해 중요도에 따른 선톡 이력을 관리합니다.
예를 들어 일정과 관련된 중요한 선톡은 매번 제공될 수 있고, 관심사에 관련된 선톡은 하루에 1번 정도 제공하면서 다른 선톡으로 사용자에게 다양하게 말을 걸 수 있도록 합니다.
마지막으로 선택된 선톡은 에이닷 앱 UI에 맞게 정해진 규격으로 생성됩니다.
에이닷이 현재 제공하는 있는 선톡 예시들 입니다.
혼잡도를 알려주는 선톡
남은 혜택을 알려주는 선톡
관심사에 대해 말을 거는 선톡
현재 날씨에 관련해서 말을 거는 선톡
선톡을 제공하고 사용자의 반응 정보가 흘러 들어 올 수 있는 데이터 파이프라인은 구성되어 있습니다.
제공한 정보의 효과성 여부를 평가 기준으로 발화가이드를 클릭 했는지 발화나 텍스트 입력으로 반응을 했는지 별도의 평가를 진행할 예정입니다.
많은 선톡을 제공하고 많은 사용자의 반응을 보면서 오퍼링 선톡과 대화 선톡의 비중을 조절하거나
오퍼링 선톡 항목의 선호도를 조율해 나갈 예정입니다.
먼저 말을 걸어 주는 것이 에이닷이 사용자에게 더 가까이 가는 한 걸음이 될 수 있도록 노력하겠습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.