AI 에이전트의 내부 구조

AI 에이전트 데모는 영상으로 보면 매우 훌륭해 보입니다. 하지만 실제 질문을 던지면 실패하는 경우가 많습니다.

에이전트가 잘못된 행동을 합니다. 결정을 잊어버립니다. 존재하지 않는 도구를 호출합니다. 무한 루프에 빠집니다. 이것은 모델의 실패가 아니라 워크플로우의 실패입니다.

에이전트는 소프트웨어 워크플로우입니다. 언어 모델은 다음 단계를 선택하고 도구를 호출합니다. 지능은 모델 단독이 아니라 오케스트레이션(orchestration)에 있습니다.

모든 프로덕션 에이전트는 다섯 가지 기둥에 의존합니다:

  • 계획(Planning): 행동하기 전에 생각하기.
  • 도구 사용(Tool Use): 세상과 상호작용하기.
  • 메모리(Memory): 문맥과 사실 저장하기.
  • 제약 사항(Constraints): 경계와 예산 설정하기.
  • 검증(Verification): 작업이 올바른지 증명하기.

계획 스타일

단순한(Naive) 에이전트는 즉시 행동에 나섭니다. 이는 환각(hallucination)으로 이어집니다. 좋은 에이전트는 먼저 계획을 세웁니다.

  1. 계획 후 실행(Plan-then-execute): 모델이 전체 계획을 작성합니다. 감사(audit)하기는 쉽지만, 현실이 변했을 때 적응하기는 어렵습니다.
  2. ReAct (Reason + Act): 모델이 루프 내에서 생각하고, 행동하고, 관찰합니다. 더 적응력이 뛰어나지만 토큰과 시간이 더 많이 소요됩니다.

도구 사용

도구가 없다면 에이전트는 단순한 챗봇에 불과합니다. 도구에는 이름, JSON 스키마, 그리고 함수가 필요합니다.

모델은 설명을 바탕으로 도구를 선택합니다. 설명이 모호하면 에이전트는 실패할 것입니다. 설명을 사양서(spec sheet)처럼 다루십시오. 도구가 무엇을 위한 것인지, 무엇을 위한 것이 아닌지 정의하십시오.

항상 도구 호출을 검증하십시오. 모델이 잘못된 인자를 보내면 호출을 거부하고 에러를 모델에 다시 전달하십시오. 이는 에이전트가 루프 중간에 학습하는 데 도움이 됩니다.

메모리

메모리는 단지 한 가지가 아닙니다.

  • 작업 메모리(Working Memory): 현재 대화와 도구 결과.
  • 스크래치패드(Scratchpad): 에이전트가 스스로에게 메모를 남기는 공간.
  • 장기 메모리(Long-term Memory): 향후 세션을 위해 사실을 저장하는 것.

벡터 데이터베이스에만 의존하지 마십시오. 마크다운 파일을 사용하는 파일 기반 메모리가 종종 더 낫습니다. 감사, 편집 및 grep(검색)이 쉽기 때문입니다.

제약 사항 및 안전

프로덕션 에이전트에는 가드레일이 필요합니다. 다음 네 가지를 사용하십시오:

  • 도구 허용 목록(Tool allowlists): 특정된 이름의 도구만 허용합니다.
  • 반복 예산(Iteration budgets): 무한 루프를 방지하기 위해 단계 수를 제한합니다.
  • 토큰 예산(Token budgets): 총 토큰 수를 제한하여 비용을 관리합니다.
  • 승인 게이트(Approval gates): 이메일 전송이나 데이터 삭제와 같이 위험도가 높은 작업에는 사람의 허가를 요구합니다.

검증

모델이 작업이 완료되었다고 말할 때 절대 믿지 마십시오. 모델은 기본적으로 자신감이 넘칩니다.

실제 검증을 사용하십시오. 에이전트가 코드를 작성하면 테스트를 실행하십시오. JSON을 생성하면 스키마를 확인하십시오. 작업을 수행하면 쿼리를 실행하여 변경 사항을 확인하십시오.

최고의 에이전트는 루프 내부에서 검증을 사용합니다. 테스트가 실패하면 에러를 에이전트에 다시 전달하십시오. 다시 시도하게 만드십시오.

더 똑똑한 프롬프트를 쫓는 것을 멈추십시오. 더 나은 기반 구조(plumbing)를 구축하기 시작하십시오.

Source: https://dev.to/nazar_boyko/inside-an-ai-agent-planning-tool-use-memory-constraints-and-verification-2fcc

Optional learning community: https://t.me/GyaanSetuAi