여행 플래너에 AI를 붙이겠다고 결정했을 때, 첫 번째로 맞닥뜨린 질문은 기술적인 것이 아니었다. "AI가 뭘 할 수 있게 해줄 건가?"였다.
채팅만 되는 AI의 한계
초기에는 단순한 채팅 인터페이스였다. 사용자가 "3월 16일에 컨퍼런스 일정 추가해줘"라고 하면 AI가 "네, 추가했습니다"라고 답하는 척한다. 실제로는 아무것도 바뀌지 않는다. 사용자가 직접 입력해야 한다.
이게 얼마나 불편한지 직접 겪어봤다. AI한테 "이 구간 이동 시간 계산해줘"라고 물어보면 답은 잘 해준다. 그런데 그 정보를 일정에 반영하려면 내가 다시 들어가서 수동으로 입력해야 한다. AI가 말한 것과 실제 일정 사이에 복붙이라는 마찰이 존재한다.
그 마찰이 쌓이면 사람들은 AI를 쓰지 않게 된다.
도구 실행 권한을 주기로 했다
그래서 결정했다. AI가 직접 일정을 추가하고, 수정하고, 삭제할 수 있게 하자. 메모를 남기고, 예산을 입력하고, 장소를 검색해서 좌표까지 저장할 수 있게 하자.
기술적으로는 Function Calling이다. AI에게 도구 목록을 주고, 필요하면 직접 실행하게 한다. 사용자가 "샌프란시스코 3월 20일 일정 전부 지워줘"라고 하면 AI가 DB에서 해당 일정을 실제로 삭제한다.
이 결정을 하고 나서 설계가 복잡해졌다. AI가 실수로 잘못된 일정을 삭제하면 어떡하나? 취소(undo)가 없으면 큰일이다. 확인 없이 삭제가 일어나면 사용자가 당황한다.
권한 설계의 딜레마
AI에게 권한을 많이 주면 편하지만 위험하다. 적게 주면 안전하지만 불편하다. 이 사이 어딘가에 균형점이 있다.
Travly에서 내린 결론은 이렇다. 읽기는 자유롭게, 쓰기는 사용자 의도가 명확할 때만.
일정 조회, 날씨 확인, 이동 시간 계산 같은 건 AI가 알아서 한다. 그런데 일정 추가나 삭제, 메모 수정처럼 데이터를 바꾸는 작업은 사용자가 명시적으로 요청했을 때만 실행한다. "추가해줘", "지워줘"처럼 동사가 명확할 때.
그래도 불안했다. 그래서 AI가 실행한 모든 작업을 채팅 히스토리에 남기게 했다. "3월 16일 09:00 컨퍼런스 세션 일정을 추가했습니다"처럼. 뭔가 이상하면 직접 확인하고 되돌릴 수 있게.
여행 중에도 AI가 일정을 바꿔도 될까
여행모드를 만들면서 이 질문이 다시 떠올랐다. 여행 중에도 AI가 일정을 수정할 수 있어야 하나?
예를 들어 "비가 와서 야외 일정 취소하고 실내로 바꿔줘"라고 하면 AI가 그냥 해줘야 한다. 그런데 여행 중에는 실수의 비용이 더 크다. 잘못 삭제하면 이미 예약된 식당 정보가 날아간다.
결론은 여행 중에도 쓰기 권한을 허용하되, 여행모드에서는 확인 메시지를 한 번 더 넣었다. "정말 삭제할까요?" 같은 게 아니라, 실행 후 "방금 이렇게 변경했습니다. 취소하려면 말씀하세요" 방식이다. 거슬리지 않으면서 안전망이 된다.
AI의 권한 설계는 기술 문제가 아니라 신뢰 문제다. 사용자가 AI를 얼마나 믿는지에 따라 적절한 권한이 달라진다. 아직도 정답을 찾는 중이다.
다음 화: 여행모드 — 실제 여행 중에 쓰는 앱의 요건