AI VIDEO BRIEFING

AI 에이전트 구현 원리: 토큰 예측부터 에이전틱 루프와 가드레일까지 9단계 정리

마이크로소프트 세스 후아레스가 NDC 토론토 강연에서 LLM의 다음 토큰 예측부터 구조화 출력, 스레드, 툴 호출, 가드레일, 바인딩, 스티어링까지 AI 에이전트를 이루는 아홉 가지 기본 요소를 코드로 직접 시연했다.

“모델에는 자율성이 없다”… AI 에이전트를 만드는 것은 결국 런타임이다 영상 대표 이미지

핵심 메시지

  • 대규모 언어 모델이 실제로 하는 일은 다음에 올 토큰을 확률로 고르는 것 하나뿐이고, 대화처럼 보이는 것은 그 예측을 계속 되먹이는 반복문의 결과다.
  • 모델 자체에는 자율성이 없다. 출력에 따라 코드를 분기시키고 함수를 실제로 실행할지 결정하는 런타임이 자율성을 부여한다는 것이 강연의 핵심 주장이다.
  • 에이전트의 뼈대는 화려한 기술이 아니라 ‘툴 호출이 남아 있는 동안 실행하고 그 결과를 대화 스레드에 다시 붙이는’ 단순한 while 루프다.
  • 가드레일과 바인딩을 쓰면 사용자 ID처럼 모델이 판단할 필요가 없는 값을 아예 모델의 선택지에서 제거해 사고를 막을 수 있다.
  • 발표자는 온도(temperature) 값이 모델을 ‘창의적’으로 만든다는 설명은 부정확하며, 실제로는 토큰 확률 분포를 평평하게 왜곡하는 것일 뿐이라고 지적했다.

쉽게 이해하기

마이크로소프트에서 AI 분야를 담당하는 세스 후아레스는 NDC 토론토 강연에서 지금 업계가 AI를 잘못된 층위로 추상화하고 있다고 지적했다. 그 결과 개발자들조차 AI를 ‘나와 무관한 어떤 것’, 잘 만드는 회사가 서너 곳뿐인 마법 같은 기술로 여기게 됐다는 것이다. 그는 이 오해를 풀기 위해 문서 초안 작성 앱을 아홉 단계로 점점 복잡하게 만들어 가며 각 단계의 기본 요소를 코드와 함께 보여줬다.

출발점은 모델의 실제 동작이다. 언어 모델은 단어를 조각낸 토큰을 입력받아 다음 토큰의 확률 분포를 내놓고, 그중 하나를 골라 다시 입력에 붙이는 일을 반복한다. 학습 역시 예측한 분포와 정답을 빼서 나온 오차를 미분으로 되돌려 가중치를 고치는 과정이며, 파인튜닝은 자기 데이터로 그 가중치를 갱신하는 것, 증류는 더 똑똑한 모델이 만든 정답으로 작은 모델을 학습시키는 것이라고 그는 정리했다.

첫 세 단계는 단순한 텍스트 완성, 구조화 출력, 스레드다. 완성 모드는 모델이 아무 맥락도 기억하지 못하지만, 문의를 ‘지원’과 ‘영업’으로 분류하거나 블로그 댓글의 승인 여부를 판정하는 식의 의미 기반 분기에는 지금도 유용하다는 것이 그의 설명이다. 출력을 JSON으로 강제하면 앱이 결과를 필드 단위로 쓸 수 있고, 주고받은 메시지를 배열로 계속 넘기는 스레드가 생기면서 비로소 맥락이 이어지는 대화가 가능해진다.

진짜 전환점은 네 번째 단계다. 구조화 출력을 ‘함수 이름과 인자’ 모양으로 만들고 이를 툴 호출로 표시하자, 런타임이 그 값을 받아 실제 함수를 실행하고 결과를 스레드에 되붙일 수 있게 됐다. 툴 호출이 없어질 때까지 이 과정을 반복하는 것이 에이전틱 루프이며, 후아레스는 이것이 에이전시의 기본 단위라고 못 박았다. 이어 그는 메모리를 툴 호출로 구현해 보이다가 모델이 다른 사용자의 메모리를 읽어 오는 사고를 일부러 재현하고, 실행 직전에 인자를 검사하는 가드레일과 사용자 ID를 코드가 직접 주입하는 바인딩으로 이를 막았다.

마지막은 스티어링과 조합이다. 루프가 도는 중간에 사용자가 추가한 지시를 큐에서 꺼내 스레드에 흘려 넣는 것이 스티어링이고, 조사·초안·검토·제목이라는 네 개의 프롬프트가 같은 스레드를 공유하며 차례로 제어권을 넘기는 것이 조합 워크플로다. 그는 컨텍스트 압축, 추적, 프롬프트 튜닝, 모델 선택은 시간상 다루지 못했다고 덧붙였다.

주요 인사이트

  • “에이전트가 통제를 벗어나 날뛴다”는 말에 대해 발표자는 모델이 아니라 하네스를 만든 사람의 문제라고 잘라 말했다. 모델은 실행할 함수를 제안할 뿐이고, 실행 여부를 정하는 것은 언제나 런타임 소유자다.
  • 프롬프트 앞부분을 자주 바꾸면 안 되는 이유는 캐시 때문이다. 트랜스포머 연산에서 앞선 입력이 그대로면 계산 결과를 재사용할 수 있어, 앞부분을 고정하는 것만으로 속도와 비용이 달라진다.
  • 컨텍스트는 길수록 좋은 것이 아니다. 발표자는 마지막에 사용자 역할로 넣은 내용이 가장 강하게 반영된다는 경험을 근거로, 시연 안정성이 필요할 때 핵심 지시를 사용자 메시지 맨 뒤에 배치한다고 밝혔다.
  • 그는 MCP에 부정적인 입장을 밝혔다. 가능한 모든 툴 정의가 컨텍스트를 채워 모델을 둔하게 만들고, 무엇보다 ‘제안된 실행’과 ‘실제 실행’ 사이의 경계를 개발자가 직접 관리하지 못하게 된다는 이유다.
  • 메모리도 특별한 기술이 아니라 툴 호출 하나로 구현된다. 다만 프롬프트에 담긴 단기 기억, 사용자에 대한 일화 기억, 툴 정의 자체인 절차 기억처럼 종류를 나눠 관리해야 컨텍스트 창을 낭비하지 않는다.

자주 묻는 질문

에이전틱 루프란 무엇인가?

모델에게 대화 스레드를 넘긴 뒤 툴 호출이 돌아오면 런타임이 그 함수를 실행하고 결과를 스레드에 다시 붙인 다음, 툴 호출이 더는 나오지 않을 때까지 이 과정을 반복하는 while 루프다. 발표자는 이것을 에이전시의 기본 단위라고 표현했다.

모델이 스스로 함수를 실행할 수 있나?

없다. 모델이 하는 일은 ‘이 함수를 이런 인자로 실행하라’는 형태의 출력을 내놓는 것까지이고, 그 이름을 실제 함수에 연결해 실행할지 판단하는 것은 런타임이다. 강연에서는 이 경계를 관리하지 않은 코드가 다른 사용자의 데이터를 읽어 오는 사고로 이어지는 장면이 시연됐다.

가드레일과 바인딩은 어떻게 다른가?

가드레일은 실행 직전에 함수와 인자를 검사해 조건에 맞지 않으면 실행을 막는 장치다. 바인딩은 애초에 사용자 ID 같은 인자를 모델에게 보여주지 않고 런타임이 값을 주입하는 방식이어서, 모델이 그 값을 고민하거나 잘못 고를 여지 자체를 없앤다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식