AI 에이전트 회고
AI를 잘 쓴다는 건, AI를 잘 의심한다는 것
정렬된 AI는 말을 잘 듣는 AI가 아니라, 내가 말하지 못한 맥락까지 같이 확인해주는 AI에 가깝다.
브라이언 크리스천의 『The Alignment Problem』을 스터디하면서, AI 정렬 문제가 생각보다 내 일상적인 에이전트 활용 경험과 가까운 문제라는 생각이 들었다.
요즘 브라이언 크리스천의 『The Alignment Problem』을 스터디하면서 AI 정렬 문제에 대해 생각하고 있다. 처음에는 정렬 문제를 “AI가 인간의 말을 잘 따르게 만드는 문제” 정도로 이해했다.
그런데 이야기를 따라가다 보니, 그렇게 단순한 문제가 아니었다. AI가 명령을 잘 수행하는 것과, 인간의 의도와 맥락을 제대로 이해하는 것은 꽤 다른 문제였다.
이 차이는 책 속의 이론으로만 느껴지지 않았다. 회사에서 코덱스 에이전트를 많이 쓰다 보니, 오히려 내 일상적인 경험과 더 가까운 문제처럼 보였다.
처음에는 구현 도구처럼 썼다
처음 에이전트를 쓸 때 나는 꽤 엔지니어적인 방식으로 접근했던 것 같다.
이 기능 구현해줘.
소켓 코딩하려고 하는데 자바 코드 짜줘.
이런 식이었다. 내가 필요한 구현이 있고, 에이전트는 그 구현을 빠르게 도와주는 도구에 가까웠다. 물론 이 방식도 충분히 유용했다. 코드를 빠르게 만들 수 있고, 막힌 부분을 넘길 수도 있고, 반복적인 작업을 줄일 수도 있었다.
그런데 어느 순간부터 약간 이상한 경험이 생겼다.
분명 내가 요청한 구현에 가까운 결과가 나왔다. 코드가 됐든, 디자인이 됐든, 기능 자체는 어느 정도 만들어졌다. 그런데 세부적인 동작이나 디테일이 내가 원하던 목표와 조금 달랐다.
어떤 때는 내가 원한 기능과 실제 동작이 미묘하게 달랐다. 어떤 때는 필요 없는 기능이 너무 많이 붙었다. 또 어떤 때는 내가 말하지 않은 부분을 에이전트가 자기 방식으로 과대해석했다.
해주긴 했는데, 이게 아닌데?
이건 단순히 AI가 일을 못했다는 말은 아니다. 오히려 표면적으로는 요청을 수행했다. 문제는 내가 말한 문장 뒤에 있던 맥락을 충분히 잡지 못했다는 데 있었다.
AI를 의심한다는 것
스터디를 하면서 가장 오래 남은 문장은 “사람도 AI를 의심해야 하고, AI도 사람을 의심해야 한다”였다.
여기서 의심은 불신이 아니다. “AI는 못 믿어”라는 태도와는 조금 다르다. 내가 말하는 의심은 검증에 가깝다.
AI를 의심한다는 건, AI가 똑똑한지 아닌지를 의심하는 일이 아니다. 내가 말한 문장 뒤에 있는 맥락을 정말 잡았는지 확인하는 일에 가깝다.
예를 들어 내가 “이 기능 구현해줘”라고 말했을 때, 그 문장 안에는 보통 많은 것이 생략되어 있다. 이 기능이 왜 필요한지, 어떤 사용자 흐름 안에 들어가는지, 어떤 방식은 피하고 싶은지, 지금은 빠른 실험이 중요한지 아니면 유지보수성이 더 중요한지 같은 것들이다.
사람은 자기 생각을 전부 말로 설명하지 못한다. 어떤 목표는 머릿속에 어렴풋이만 있고, 대화하거나 시안을 보거나 실패해보면서 점점 선명해진다. 그러니 AI에게 나와 같은 환경과 맥락을 완벽하게 주는 것은 거의 불가능에 가깝다.
그렇다면 AI를 항상 의심해야 한다.
다시 말해, 결과물이 나왔을 때 “이게 내가 시킨 일인가?”만 볼 것이 아니라 “이게 내가 진짜 원했던 방향인가?”를 봐야 한다.
맥락을 이해한 AI는 무엇이 달라야 할까
AI가 맥락을 제대로 파악했다면, 사용자 입장에서 미처 보지 못한 부분도 먼저 말할 수 있어야 한다고 생각한다.
단순히 요청한 기능을 구현하는 데서 멈추지 않고, 이런 식으로 말할 수 있어야 한다.
이 구현은 가능하지만, 기존 흐름과는 조금 어긋날 수 있습니다.
지금 요구사항대로 만들면 기능이 과해질 수 있습니다.
이 부분은 의도가 모호해서 먼저 확인하는 게 좋겠습니다.
빠르게 만들 수는 있지만, 나중에 유지보수가 어려워질 수 있습니다.
이런 반응은 사용자를 방해하는 것이 아니다. 오히려 사용자의 더 큰 목적을 지키는 일에 가깝다.
순응적인 AI는 사용자가 말한 것을 그대로 긍정하고 실행한다. 반면 정렬된 AI는 사용자의 말이 더 큰 목표와 충돌하지 않는지 본다. 사용자가 순간적으로 “그냥 빨리 해줘”라고 말했더라도, 앞서 유지보수성과 안정성을 중요하게 이야기했다면 그 충돌을 짚어줘야 한다.
물론 AI가 매번 질문만 하면 그것도 피곤하다. 사소한 선택까지 계속 물어보면 일은 앞으로 나아가지 않는다. 중요한 건 많이 묻는 것이 아니라, 물어볼 가치가 있는 질문을 고르는 것이다.
사용자가 이미 말한 것을 반복 확인하는 질문은 별로 도움이 되지 않는다. 오히려 사용자가 아직 생각하지 못했거나, 말로 꺼내지 못한 맥락을 드러내는 질문이 중요하다.
“세련되게 해드릴까요?” 같은 질문보다는, “이 화면은 신규 사용자를 설득하는 화면인가요, 아니면 반복 사용자가 빠르게 처리하는 업무 화면인가요?” 같은 질문이 더 낫다. 같은 세련됨이라도 목적에 따라 결과가 완전히 달라지기 때문이다.
내 사용법도 바뀌었다
나도 처음에는 에이전트를 거의 구현 도구처럼 썼다. 필요한 코드를 말하고, 결과를 받고, 고치고, 다시 요청하는 식이었다.
그런데 몇 달 동안 계속 쓰다 보니 점점 사용 방식이 바뀌었다. 처음에는 특정 코드 조각을 부탁하던 수준이었다면, 어느 순간부터는 전체적인 프로세스를 같이 구현하는 방식이 됐다.
그리고 최근에는 조금 더 달라졌다. 이제는 구현 전에 에이전트와 대화를 꽤 많이 한다. 바로 “이거 만들어줘”라고 하기보다, 먼저 큰그림이나 배경부터 같이 잡는다.
내가 무엇을 하려는지, 왜 하려는지, 어떤 방향은 피하고 싶은지, 지금 고민되는 지점이 무엇인지 먼저 말한다. 혼자 오래 고민한 뒤에 에이전트에게 결과만 던지는 것이 아니라, 고민 자체를 같이 한다.
이건 단순히 프롬프트를 길게 쓰는 기술은 아닌 것 같다. 태도의 변화에 더 가깝다.
예전에는 에이전트를 작업을 대신해주는 도구처럼 봤다면, 요즘은 같은 업무를 맡고 있는 비서이자 친구처럼 쓰고 있다. 실제로 교육을 나갔을 때도 비슷한 이야기를 했다. 에이전트를 같은 업무를 담당 중인 절친이라고 생각하고, 작은 고민이라도 계속 말하면서 진행해보라고 했다.
조금 민망한 표현일 수도 있지만, 나는 이 비유가 꽤 맞다고 생각한다.
같이 일하는 사람에게 일을 잘 맡기려면 배경을 공유해야 한다. “이것만 해줘”라고 던지는 것보다, “지금 이런 상황이고, 나는 이런 방향을 보고 있고, 여기서 헷갈리는 부분이 있다”고 말할수록 상대가 더 나은 판단을 할 수 있다.
AI 에이전트도 비슷하다. 물론 사람과 같지는 않다. 그래도 개인 LLM 비서가 있는 시대로 갈수록, 사용자는 결과만 요구하는 사람이 아니라 맥락을 같이 만들어가는 사람이 되어야 한다고 느낀다.
사용자가 똑똑해야 한다는 말
그래서 에이전트를 잘 쓰려면 결국 사용자가 똑똑해야 한다는 생각도 든다.
여기서 똑똑하다는 말은 거창한 전문성을 뜻하지 않는다. AI보다 모든 것을 더 잘 알아야 한다는 뜻도 아니다.
내가 말하는 똑똑함은 AI를 잘 의심하는 능력에 가깝다.
AI가 내 말을 제대로 이해했는지 의심해야 한다. 결과가 내 요청 문장에는 맞지만 전체 목표와 어긋나지 않는지 봐야 한다. 필요 없는 기능을 과하게 붙이지 않았는지 봐야 한다. 불확실한 부분을 질문하지 않고 임의로 채우지는 않았는지 봐야 한다.
그리고 가능하다면 처음부터 더 많은 맥락을 공유해야 한다. 완벽한 맥락을 줄 수는 없지만, 적어도 AI가 판단할 수 있는 재료를 조금 더 줘야 한다.
이 태도는 앞으로 더 중요해질 것 같다. AI가 좋아질수록 우리는 결과물을 더 쉽게 믿게 된다. 말투는 자연스럽고, 코드도 그럴듯하고, 디자인도 얼핏 보면 괜찮아 보인다. 그런데 바로 그럴수록 더 조심해야 한다.
그럴듯함은 맥락 이해와 다르다.
AI가 그럴듯한 결과를 냈다고 해서, 내가 원하던 방향을 이해했다는 뜻은 아니다. 그래서 사용자는 계속 확인해야 한다. 이 결과가 내 맥락과 맞는지, 내 목표와 맞는지, 내가 놓친 부분을 제대로 짚었는지.
좋은 AI라면 사용자도 의심해야 한다
물론 이 의심은 한쪽 방향만은 아니었으면 좋겠다.
사용자가 AI를 의심해야 하듯, 좋은 AI라면 사용자도 어느 정도 의심해야 한다. 사용자가 말한 요청이 이전에 말한 목표와 충돌하지 않는지, 순간적인 요구가 더 큰 방향을 해치지 않는지, 지금 바로 실행하는 것이 맞는지 확인할 수 있어야 한다.
이것은 사용자를 거스르는 태도가 아니다. 오히려 사용자의 큰 의도를 지켜주는 태도다.
사람도 항상 자기 의도를 완벽하게 알고 말하지 않는다. 나도 어떤 기능을 요청하면서, 막상 결과를 보고 나서야 “아, 내가 원한 건 이게 아니었구나”라고 깨닫는 경우가 있다. 그러니 AI가 사용자의 말을 무조건 따르는 것만으로는 충분하지 않다.
정렬된 AI는 복종하는 AI가 아니다.
정렬된 AI는 사용자의 말을 듣되, 그 말 뒤에 있는 목적과 맥락을 보려고 하는 AI다. 그리고 필요할 때는 “이건 이전 목표와 조금 다른 방향일 수 있다”고 말할 수 있는 AI다.
정렬은 복종이 아니라 상호 검증이다
이번 스터디를 하면서 AI 정렬 문제를 조금 다르게 보게 됐다.
정렬은 AI가 인간의 말을 그대로 따르게 만드는 문제가 아니다. 인간의 의도는 불완전하게 표현되고, 인간의 피드백도 항상 일관되지 않으며, AI는 주어진 지표나 요청을 너무 잘 최적화하다가 진짜 목적에서 벗어날 수 있다.
그래서 좋은 AI 활용은 명령과 수행의 관계만으로는 부족하다. 사용자는 AI가 맥락을 제대로 이해했는지 의심해야 하고, AI도 사용자의 순간 요청이 더 큰 목적과 맞는지 확인해야 한다.
사람도 AI를 의심해야 하고, AI도 사람을 의심해야 한다.
여기서 의심은 서로를 못 믿겠다는 말이 아니다. 서로의 불완전함을 인정하고, 더 나은 판단으로 가기 위한 검증에 가깝다.
요즘 내가 에이전트를 쓰면서 느끼는 변화도 결국 이쪽에 있다. 에이전트를 잘 쓴다는 건, 더 멋진 명령어를 쓰는 일이 아닐지도 모른다. 오히려 내 생각을 더 많이 공유하고, 결과를 더 잘 의심하고, 때로는 AI가 나를 의심하도록 허용하는 일에 가까울지도 모른다.
개인 LLM 비서의 시대가 온다면, 좋은 사용자는 AI를 무조건 믿는 사람이 아닐 것이다.
아마도 AI와 계속 대화하면서, 서로의 맥락을 맞춰가고, 그럴듯한 답변 뒤에 빠진 것을 같이 확인하는 사람일 것이다. 나는 그게 앞으로 에이전트를 쓰는 꽤 중요한 태도가 될 것 같다.