LLM 엔지니어링9장 · 도구를 쓰는 LLM 과 Agentic Workflow3 / 21← 이전목차다음 →MetaContents

9장. 도구를 쓰는 LLM 과 Agentic Workflow

AI 에이전트란

비서를 둔다는 것은 말만 잘하는 사람을 두는 것이 아닙니다. 전화기, 달력, 계산기를 쓸 줄 알고, 일이 끝날 때까지 스스로 다음 할 일을 정하는 사람을 두는 것입니다. AI 에이전트도 LLM 에 도구와 반복을 더한 것입니다.

LLM, 도구, 기억, 반복의 네 부품을 카드로 놓은 에이전트의 짜임

네 카드가 에이전트를 이루는 부품입니다. LLM 은 다음 할 일을 정하는 머리, 도구는 실제로 일을 하는 손, 기억은 지금까지 주고받은 메시지, 반복은 일이 끝날 때까지 돌게 하는 루프입니다. 여기서 비서의 판단이 LLM, 전화기와 달력이 도구입니다. 비유와 다른 점은, LLM 은 도구를 직접 만지지 못하고 "써 달라"고 요청만 하며, 실제 실행은 늘 우리 코드가 한다는 것입니다.

챗봇과 에이전트

견줄 것챗봇(6~8장)에이전트(이 장)
하는 일질문에 글로 답한다도구를 써서 일을 끝낸다
바깥 세상붙여 준 문서만 본다검색, 계산, 예약 같은 도구로 알아보고 바꾼다
한 번에답 하나여러 걸음(도구 호출이 여러 번)
틀리면틀린 글틀린 예약, 잘못 보낸 메일처럼 되돌리기 어려운 일

에이전트가 하는 일의 생김새

에이전트 한 번의 일은 메시지가 쌓이는 모습으로 볼 수 있습니다.

Python
# 에이전트가 일하는 동안 쌓이는 메시지의 꼴(설명용으로 적은 내용)
trace = [
    ("user", "내일 오후 2시에 6명 회의실 잡아 줘"),
    ("assistant", "도구 호출: find_free_rooms(date=2026-10-28, start=14:00, end=15:00, people=6)"),
    ("tool", "['별빛']"),
    ("assistant", "도구 호출: book_room(room=별빛, date=2026-10-28, start=14:00, end=15:00)"),
    ("tool", "예약됨"),
    ("assistant", "내일 오후 2시부터 3시까지 별빛 회의실을 예약했습니다."),
]
for role, text in trace:
    print(f"{role:9s} {text}")
print("도구 호출 수:", sum(t.startswith("도구 호출") for _, t in trace))

사용자의 말 하나에 assistant 와 tool 메시지가 번갈아 쌓이고, 마지막 assistant 메시지가 사용자에게 보여 줄 답입니다. 도구 호출은 2번입니다.

코드에 나오는 함수

코드쉬운 뜻
trace = [(역할, 글), ...]trace 는 "발자취"라는 뜻이다. 누가(역할) 무엇을(글) 말했는지 짝을 지어 차례로 담는다
for role, text in trace짝마다 역할과 글을 나눠 꺼낸다
f"{role:9s}"역할 글자를 9칸에 맞춰 적는다. s 는 string(글자)이다. 칸을 맞추면 줄이 가지런해진다
t.startswith("도구 호출")starts with(~로 시작하다). 글이 "도구 호출"로 시작하면 True 다
sum(... for _, t in trace)True 를 1, False 를 0 으로 더한다. 곧 도구 호출로 시작하는 글의 수를 센다

이 코드가 뜻하는 것

비서의 업무 일지를 한 줄씩 읽는 일입니다. 일지에는 "사장님 부탁", "예약 시스템 조회", "조회 결과", "예약", "보고"가 차례로 적혀 있습니다. 여기서 업무 일지가 trace, 일지의 한 줄이 메시지 하나입니다.

줄하는 일쉽게 말하면
("user", ...)사용자의 부탁사장님이 맡긴 일
("assistant", "도구 호출: find_free_rooms(...)")모델이 도구를 써 달라고 요청한다비서가 "빈 방을 조회해 주세요"라고 적는다
("tool", "['별빛']")우리 코드가 도구를 실행한 결과조회 화면에 뜬 답
("assistant", "도구 호출: book_room(...)"), ("tool", "예약됨")다시 도구를 요청하고 결과를 받는다예약하고 확인 문자를 받는다
마지막 ("assistant", ...)사용자에게 보여 줄 답사장님께 드리는 보고
print("도구 호출 수:", ...)도구 요청이 몇 번인지 센다일지에서 시스템을 쓴 횟수를 센다

출력의 도구 호출 수: 2 는 부탁 하나를 끝내는 데 도구를 두 번 썼다는 뜻입니다. 비유와 다른 점은, 이 일지는 설명을 위해 손으로 적은 것이고 실제 일지는 모델과 코드가 주고받으며 쌓는다는 것입니다(실습 2부터).

주의할 점

  • 에이전트는 잘못하면 글이 아니라 행동으로 틀립니다. 처음에는 읽기만 하는 도구(검색, 조회)로 시작하고, 쓰는 도구(예약, 보내기)는 안전장치를 갖춘 뒤에 붙입니다.
  • 모든 일에 에이전트가 필요하지는 않습니다. 순서가 정해진 일은 워크플로가 더 믿을 만합니다("워크플로와 에이전트" 절).
← 이전 절9장 · 용어 짚고 가기다음 절 →9장 · 도구란