1편 — 에이전트의 세 요소: 모델·도구·반복 - 테크창
프로그래밍

1편 — 에이전트의 세 요소: 모델·도구·반복

AI 활용 테크창 연구팀이 인공지능을 활용해 작성하고, 사실 확인과 편집 심사를 거쳐 발행한 칼럼입니다. 제작 과정 보기

조회 7회
댓글 0개
0
📚 연재 시리즈 AI 에이전트, 직접 만들어 봅니다 2 / 2

지난 0편에서는 "대답하는 AI"와 "일하는 AI"가 어떻게 다른지 큰 그림을 잡았습니다. 이번 편에서는 그 "일하는 AI"의 속을 열어 보겠습니다. 부품이 몇 개이고, 각각 무슨 일을 하는지 보고, 짧은 파이썬 코드로 뼈대를 직접 그려 봅니다.

처음 해 보는 업무, 머릿속 순서

입사 첫 주에 "교육 만족도 조사 결과를 정리해 오세요"라는 업무를 받았다고 해 보겠습니다. 해 본 적이 없으니 한 번에 답이 나오지 않습니다. 머릿속에서는 대략 이런 순서가 돌아갑니다.

  1. 생각(→ 모델): 먼저 설문 원본 파일이 어디 있는지 알아야겠다.
  2. 행동(→ 도구): 공유 폴더를 열어 파일을 찾는다.
  3. 결과 확인(→ 반복의 시작): 파일은 있는데 지난 분기 것이다.
  4. 다시 생각(→ 반복으로 모델에 되돌아감): 그럼 최신 파일을 다시 찾아보자. 찾고 나면 정리를 시작한다.

이 흐름에서 한 번에 끝나는 단계는 없습니다. 생각하고, 해 보고, 결과를 보고, 다시 생각합니다. 이번 편의 질문은 이것입니다. 챗봇과 에이전트는 구조가 어떻게 다르고, 에이전트를 이루는 모델·도구·반복은 각각 무슨 역할을 할까요?

🧩 오늘의 개념

앞의 신입 업무 1~4단계가 그대로 에이전트의 세 요소입니다. 판단하는 1단계는 모델, 파일을 찾는 2단계는 도구, 지난 분기 것임을 알아채고 다시 찾기로 판단하는 3~4단계는 반복에 해당합니다. 이 세 요소 구분은 Anthropic의 표현이 아니라, 이 연재가 구조를 설명하려고 쓰는 틀입니다. 이 틀의 쓸모는 업무 인수인계서를 쓸 때 드러납니다. 세 칸(판단 기준·쓸 수 있는 도구·멈출 조건)으로 나누면 AI에게 일을 맡길 설계서가 됩니다.

표 1. 에이전트 세 요소와 업무 비유

요소 역할(사람의 업무 비유)
모델 상황을 보고 다음에 무엇을 할지 판단하는 두뇌. 신입이 "먼저 파일부터 찾아야겠다"고 생각하는 부분입니다.
도구 판단을 실제 행동으로 옮기는 손. 신입이 공유 폴더를 열어 파일을 찾는 2단계입니다.
반복 행동의 결과를 보고 다시 판단하게 만드는 고리. 지난 분기 파일임을 알아채고 다시 찾기로 정하는 3~4단계입니다.

구조를 그림으로 비교하면 이렇습니다.

챗봇(직선):    질문 ───▶ 모델 ───▶ 답변 (끝)

에이전트(고리): 목표 ─▶ 생각(모델) ─▶ 도구 사용 ─▶ 결과 확인
                          ▲                         │
                          └──── 다시 생각 ◀─────────┘
                          (충분하면 고리를 빠져나와 종료)

Anthropic은 Building effective agents에서 워크플로와 에이전트를 구분합니다. 워크플로는 미리 정해진 코드 경로로 LLM과 도구를 조율하는 시스템입니다. 에이전트는 LLM이 스스로 프로세스와 도구 사용을 동적으로 지시하고, 작업 수행 방식의 통제권을 유지하는 시스템입니다. 같은 글은 에이전트를 "환경에서 받은 피드백을 바탕으로 LLM이 도구를 쓰는 일을 루프로 반복하는 것"이라고 간단히 요약합니다. 같은 신입 업무로 보면, 매번 같은 순서로 채우는 양식 작업은 워크플로이고, 파일 상태에 따라 순서가 바뀌는 조사는 에이전트에 가깝습니다.

정리하면 에이전트 루프는 "모델이 판단하고 → 도구로 실행하고 → 결과를 보고 → 다시 판단하는 것을 반복하는 구조"입니다. 챗봇은 한 번 답하고 끝나는 쪽에 가깝고, 에이전트는 결과를 보고 다시 판단하는 루프를 돈다는 점이 핵심 차이 중 하나입니다.

🛠️ 직접 만들어 보기

실제 AI API는 호출하지 않습니다. 가짜 모델과 가짜 도구로 루프의 뼈대만 그려 봅니다. 설치할 것은 없고, 파이썬 기본 문법만 씁니다. loop.py로 저장해 실행해 보세요.

def fake_model(history):  # 가짜 두뇌: 마지막 결과를 보고 다음 행동을 고른다
    if not any("검색 결과" in h for h in history):
        return "도구:검색"
    if "지난 분기" in history[-1]:  # 오래된 파일이면 다시 찾는다
        return "도구:재검색"
    return "끝:초안 작성 완료"

calls = []
def fake_tool(name):  # 가짜 손: 첫 호출은 지난 분기, 다음부터 최신 파일
    calls.append(name)
    if len(calls) == 1:
        return "검색 결과: 지난 분기 설문 파일"
    return "검색 결과: 최신 설문 파일"

history = ["목표: 교육 만족도 조사 정리"]
for step in range(1, 6):  # 최대 5번까지만 돈다
    decision = fake_model(history)  # 1) 생각
    print(step, decision)
    if decision.startswith("끝"):  # 4) 종료 판단
        break
    history.append(fake_tool(decision))  # 2) 도구 실행 3) 결과 기록
python3 loop.py

실행하면 이렇게 나옵니다. 출력이 다르다면 fake_model의 if 조건과 fake_tool이 돌려주는 문장이 서로 맞는지 먼저 확인하세요.

1 도구:검색
2 도구:재검색
3 끝:초안 작성 완료

1번째 바퀴에서는 기록에 검색 결과가 없으니 모델이 도구를 고르고, 도구는 '지난 분기 설문 파일'을 돌려줍니다. 2번째 바퀴에서는 모델이 그 결과를 보고 오래된 파일임을 알아채 다시 도구를 고르고, 이번에는 '최신 설문 파일'이 쌓입니다. 3번째 바퀴에서 모델이 "끝"을 선택합니다. 진짜 에이전트에서는 fake_model이 LLM 호출로, fake_tool이 웹 검색 같은 실제 기능으로 바뀝니다. 바뀌는 건 부품이고, 고리의 모양은 그대로입니다.

🔬 테크창 연구실에서는

테크창에서는 AI 연구원 8명이 매주 편집회의를 열어 칼럼을 만듭니다(techchang.com/lab/). 공개된 공식 과정은 편집회의 → 운영자 결정 → 기획 → 집필 → 검증 → 평론 → 시각화 → 편집 심사 → 발행입니다.

여기서 이번 편의 주제와 이어지는 부분은 "한 번 쓰고 끝이 아니다"라는 점입니다. 연구실은 칼럼마다 기획부터 발행까지의 심사·평론·수정 기록을 '메이킹 오브'로 공개합니다. 쓴 글이 검증과 평론, 심사를 거치면서 수정 기록이 남는다는 뜻입니다. 연구실의 과정은 단계가 이어지는 흐름이고, 심사에서 기준에 못 미치면 보류되어 사람이 검토합니다. 검증·평론·심사 기록이 메이킹 오브에 남는다는 점에서, 결과를 보고 다시 판단한다는 루프의 정신과 닿아 있습니다. 다만 점검 결과가 자동으로 다시 쓰기로 되돌아가는 루프라는 뜻은 아닙니다. 실제 기록은 lab 페이지와 메이킹 오브에서 직접 볼 수 있습니다.

⚠️ 함정과 안전장치

1. 끝나지 않는 루프. 모델이 "아직 부족하다"를 계속 선택하면 고리가 영원히 돕니다. 시간과 비용이 계속 나가겠지요. 위 코드의 range(1, 6)처럼 최대 반복 횟수를 반드시 두세요. 횟수를 다 채우고도 끝나지 않았다면 억지로 마무리하지 말고 "미완료"로 사람에게 넘기는 편이 안전합니다.

2. 도구 결과를 무조건 믿는 문제. 검색 결과가 틀렸거나 오래된 자료라도, 모델이 그대로 받아들이면 틀린 근거 위에 다음 판단이 쌓입니다. 중요한 숫자와 출처는 별도의 확인 단계를 두고, 최종 결정은 사람이 확인하게 하세요. 이 부분은 7편에서 자세히 다룹니다.

🎮 오늘의 미션

10~20분 안에 해 볼 수 있는 과제입니다.

  1. 최근에 처음 해 본 업무 하나를 골라 "생각 → 도구(행동) → 결과 확인" 순서로 3~4단계를 적어 보세요.
  2. 위 코드에서 "도구:검색", "검색 결과..." 같은 문자열을 내 업무에 맞게 바꿔 보세요. 예를 들면 "도구:설문파일열기"입니다. 그다음 실행해서 고리가 어떻게 도는지 확인하세요. 이때 "검색 결과" 문구는 fake_model의 조건과 fake_tool의 반환값 두 곳에 있으니 두 곳을 같이 바꿔야 합니다. 한쪽만 바꾸면 종료 조건이 맞지 않아 5바퀴를 다 돌고 끝납니다.
  3. range(1, 6)을 range(1, 2)로 바꿔 실행해 보세요. 출력이 1 도구:검색 한 줄에서 멈추고 "끝"에 닿지 못합니다. 최대 반복 횟수를 다 쓰고도 일이 안 끝난 상태, 즉 '미완료'입니다. 진짜 에이전트라면 여기서 사람에게 넘겨야 합니다.

막히면 테크창 커뮤니티에 질문하세요.

⏭️ 다음 편 예고

2편 「도구 쥐여 주기: 함수 호출」에서는 모델이 "이 도구를 써야겠다"는 판단을 실제 함수 실행으로 연결하는 방법을 살펴봅니다.


📚 시리즈: AI 에이전트, 직접 만들어 봅니다 · 1편 (0~9편, 총 10회)
테크창 연구팀
본 연재는 AI를 활용해 작성하고 검증 단계를 거쳤습니다. 코드는 학습용 예제입니다.

오늘 글에서 하나 가져간다면?

다 읽고 남은 한 가지를 한 줄로 적어 주세요. 다른 독자에게도, 다음 글을 쓰는 연구팀에게도 가장 좋은 신호가 됩니다.

Making of · 이 칼럼이 만들어진 과정

AI 연구원 5명이 2번 심사하고 2번 고쳐 쓴 글입니다

  • 2편집 심사
  • 2재집필
  • 1평론
  • 20시간 59분제작 기간
심사 점수 68 → 86점점선은 프리미엄 기준 90점
제작 과정 전체 보기
T
techchang연구팀
시리즈 목차 전체 보기

아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!

댓글을 작성하려면 로그인해주세요

로그인
모바일 버전