9장. 도구를 쓰는 LLM 과 Agentic Workflow
워크플로와 에이전트
식당에는 정해진 코스 요리도 있고, 손님 말을 듣고 주방장이 알아서 만드는 요리도 있습니다. 코스 요리는 늘 같은 맛을 내고, 알아서 만드는 요리는 다양한 주문에 맞춥니다. LLM 서비스에도 순서를 코드로 정한 워크플로와, LLM 이 순서를 정하는 에이전트가 있습니다.
왼쪽 워크플로는 "조건 뽑기 → 빈 방 찾기 → 예약 → 답 쓰기"처럼 순서를 코드가 정하고, LLM 은 조건 뽑기와 답 쓰기 같은 칸에서만 일합니다. 오른쪽 에이전트는 어떤 도구를 몇 번 부를지 LLM 이 정합니다. 여기서 코스 요리가 워크플로, 주방장 마음대로가 에이전트입니다. 둘 사이에 여러 단계가 있어서, 워크플로의 한 칸만 에이전트로 두기도 합니다(Agentic Workflow).
자주 쓰는 짜임
| 짜임 | 하는 일 | 예 |
|---|---|---|
| 체인 | 앞 단계의 결과를 다음 단계에 넘긴다 | 조건 뽑기 → 빈 방 찾기 → 예약 |
| 라우팅 | 질문의 종류를 가려 알맞은 길로 보낸다 | 예약 요청은 예약 흐름, 규정 질문은 RAG 로 |
| 병렬 | 여러 일을 한꺼번에 하고 모은다 | 세 검색기의 결과를 모아 섞기 |
| 평가하고 고치기 | 결과를 검사해 틀리면 다시 시킨다 | 출처가 없으면 다시 답하게 하기 |
| 에이전트 | LLM 이 도구와 순서를 정한다 | 무엇을 물을지 모르는 열린 요청 |
무엇을 고를까
def choose(steps_known, model_small, can_undo):
"""설명용 판단 규칙: 순서를 알고, 모델이 작고, 되돌리기 어려울수록 워크플로 쪽으로"""
score = steps_known + model_small + (not can_undo)
return "워크플로" if score >= 2 else "에이전트"
print("회의실 예약(순서 정해짐, 작은 모델, 되돌리기 번거로움):", choose(True, True, False))
print("열린 조사(순서 모름, 큰 모델, 읽기만):", choose(False, False, True))앞 줄은 "워크플로", 뒤 줄은 "에이전트"가 나옵니다. 판단 규칙은 설명을 위해 단순하게 만든 것이고, 실제로는 같은 일 묶음으로 둘을 재 보고 고릅니다(프로젝트).
코드에 나오는 함수
| 코드 | 쉬운 뜻 |
|---|---|
steps_known, model_small, can_undo | 순서를 아는가, 모델이 작은가, 되돌릴 수 있는가를 True·False 로 받는다 |
steps_known + model_small + (not can_undo) | True 는 1, False 는 0 으로 더해진다. 워크플로 쪽으로 기우는 까닭의 수를 센다 |
not can_undo | 되돌릴 수 없으면 True 가 된다. 되돌리기 어려운 일일수록 점수가 오른다 |
"워크플로" if score >= 2 else "에이전트" | 점수가 2 이상이면 "워크플로", 아니면 "에이전트"를 고른다 |
이 코드가 뜻하는 것
여행 계획을 패키지 여행으로 할지 자유 여행으로 할지 체크리스트로 정하는 일입니다. "일정이 정해져 있나", "현지 사정에 어두운가", "취소가 어려운가"에 "예"가 둘 이상이면 패키지 여행을 고릅니다. 여기서 패키지 여행이 워크플로, 자유 여행이 에이전트, "예"의 개수가 score 입니다.
| 줄 | 하는 일 | 쉽게 말하면 |
|---|---|---|
score = steps_known + model_small + (not can_undo) | "예"의 개수를 센다 | 체크 표시를 센다 |
return "워크플로" if score >= 2 else "에이전트" | 둘 이상이면 워크플로 | 둘 이상이면 패키지 여행 |
choose(True, True, False) | 회의실 예약: 셋 다 "예"라 점수 3 | 일정 정해짐, 사정 어두움, 취소 어려움 |
choose(False, False, True) | 열린 조사: 셋 다 "아니요"라 점수 0 | 일정 없음, 사정 밝음, 취소 쉬움 |
회의실 예약은 점수 3 으로 워크플로, 열린 조사는 점수 0 으로 에이전트가 나옵니다. 비유와 다른 점은, 실제로는 셋을 똑같이 무겁게 보지 않고 같은 일 묶음으로 둘을 재 보고 고른다는 것입니다.
주의할 점
- "에이전트"라는 이름에 끌려 모든 것을 LLM 에 맡기지 않습니다. 코드로 할 수 있는 일(날짜 계산, 빈 방 찾기, 값 검증)은 코드로 하면 빠르고 틀리지 않습니다.
- 워크플로는 정해 둔 길 밖의 요청에 약합니다. 길 밖의 요청이 오면 사람에게 넘기는 길을 둡니다(8장의 넘기기).