Post

LLM 에이전트, 아직도 통짜 프롬프트로 짜세요? ICLR 2026 씹어먹은 'AgentFlow' 솔직 분석 ☕️

LLM 에이전트, 아직도 통짜 프롬프트로 짜세요? ICLR 2026 씹어먹은 'AgentFlow' 솔직 분석 ☕️

도입부 훅 (Hook)

최근에 사내 프로젝트로 복잡한 리서치 에이전트를 만들면서 현타가 좀 왔습니다. 프롬프트 하나에 ‘생각해봐’, ‘검색 툴 써봐’, ‘검증해봐’ 다 때려 넣으니 컨텍스트 길이만 미친 듯이 길어지고, 결국 모델이 길을 잃고 엉뚱한 소리를 하더라고요. 😅 동료 개발자분들도 비슷한 경험 있으시죠?

그러다 깃허브 트렌딩과 최신 논문들을 뒤적거리다가 ‘AgentFlow’라는 프로젝트를 발견했습니다. 처음엔 ‘또 뻔한 랭체인(LangChain) 래퍼(Wrapper) 아냐?’ 싶었는데, 논문(In-the-Flow Agentic System Optimization)을 읽어보고는 무릎을 탁 쳤습니다. 무려 ICLR 2026에 당당히 억셉트된 녀석이더라고요! 이거 진짜 물건인 것 같아서, 주말에 커피 한 잔 내려놓고 뜯어본 후기를 여러분께 공유해보려고 합니다.

TL;DR (한 마디로?) 통짜(Monolithic) LLM 하나에 모든 걸 맡기는 대신, 기획(Planner), 실행(Executor), 검증(Verifier), 작성(Generator) 4개의 모듈로 쪼개고, 그 흐름(Flow) 안에서 기획자를 RL(강화학습, Flow-GRPO)로 실시간 최적화하는 미친 프레임워크입니다. 🚀

Deep Dive: 기존과 무엇이 다른가요?

보통 우리가 아는 에이전트(예: ReAct 패턴)는 거대한 LLM 하나가 혼자 북치고 장구치고 다 합니다. 하지만 AgentFlow는 ‘분업’‘피드백 루프’에 진심입니다.

🎯 4개의 특화된 모듈 (Modular System)

AgentFlow는 작업을 4개의 페르소나로 완벽하게 나눕니다.

  • Planner (기획자): 무엇을 해야 할지 단계별로 계획을 세웁니다.
  • Executor (실행자): 파이썬 코드 실행, 구글 검색, 위키피디아 검색 등 실제 툴(Tool)을 다룹니다.
  • Verifier (검증자): 실행 결과가 맞는지 깐깐하게 검증합니다.
  • Generator (작성자): 최종적으로 유저가 읽기 좋은 형태로 결과를 정리합니다.

이게 왜 좋냐고요? 기존 방식과 살짝 비교해볼게요.

구분기존 단일 에이전트 (Monolithic)AgentFlow (Modular)
컨텍스트 관리툴 실행 결과까지 한 프롬프트에 쌓여 폭발함각 모듈이 필요한 메모리만 공유하며 가볍게 동작
확장성새로운 툴 추가 시 프롬프트를 전부 뜯어고쳐야 함Executor 모듈에 툴만 꽂아주면 끝
최적화모델 전체를 파인튜닝해야 함Planner만 집중적으로 강화학습(RL) 가능

🔥 핵심 무기: Flow-GRPO 알고리즘

사실 이 프레임워크의 진짜 꽃은 Flow-GRPO입니다. 에이전트가 여러 단계를 거치다 보면 “어느 단계에서 삽질을 했는지” 보상(Reward)을 주기가 엄청 까다롭습니다(Sparse Reward 문제). 그런데 AgentFlow는 시스템이 돌아가는 그 다이내믹한 흐름(In-the-Flow) 안에서 기획자(Planner) 정책을 다이렉트로 최적화합니다. 7B 사이즈의 작은 백본 모델로도 무거운 SOTA 모델들을 씹어먹는 벤치마크 결과를 낸 비결이 바로 이거더라고요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# AgentFlow의 아키텍처를 직관적으로 상상해본다면 이런 느낌입니다!
memory = EvolvingMemory()
query = "최신 양자 컴퓨팅 동향 보고서 작성해줘"

while not task_completed:
    # 1. Planner가 다음 계획을 세우고 (이때 Flow-GRPO로 학습된 지능 발휘!)
    plan = planner.generate_plan(query, memory)
    
    # 2. Executor가 툴을 사용해 실행
    result = executor.use_tool(plan.tool, plan.args)
    
    # 3. Verifier가 결과를 팩트체크
    if verifier.is_valid(result):
        memory.update(result)
    else:
        planner.feedback("다시 검색해봐!")

# 4. Generator가 최종 요약
final_output = generator.create_response(memory)

Hands-on: 실무에 적용한다면? (Use Case)

제가 만약 이걸 당장 현업 프로젝트에 쓴다면 ‘자동화된 QA 엔지니어’‘심층 리서치 어시스턴트’로 쓸 것 같습니다.

예를 들어, “이 파이썬 스크립트의 버그를 찾고 고쳐줘”라는 태스크를 던졌다고 쳐봅시다. 기존 에이전트는 코드를 대충 고치고 끝내버리는 경우가 많습니다. 하지만 AgentFlow는 Planner가 “테스트 코드를 먼저 짜자”라고 계획하고, Executor가 코드를 돌려보고 에러를 뱉으면, Verifier가 “야, 런타임 에러 났어”라고 빠꾸를 냅니다. 이 과정이 우리가 실제로 일하는 방식과 너무 닮아 있어서, 로그(Trace)를 디버깅할 때 “아, 얘가 여기서 막혔구나”하고 직관적으로 파악하기가 너무 좋습니다.

Honest Review: 솔직한 장단점

물론 공식 문서의 화려한 그래프 이면에 숨겨진 아쉬운 점도 분명히 있습니다. 현직 개발자 입장에서 솔직하게 털어놔 볼게요.

👍 이건 진짜 최고:

  • 미친 추론 성능: 7B 모델로 세팅해도 각 모듈이 자기 할 일만 하니까 환각(Hallucination)이 눈에 띄게 줄어듭니다.
  • 투명한 디버깅: 통짜 블랙박스가 아니라, 모듈 간의 대화 기록(Evolving memory)이 남기 때문에 트러블슈팅이 훨씬 수월해요.

👎 사실 이 부분은 좀 아쉬웠어요:

  • 진입 장벽 (RL 세팅): Flow-GRPO를 제대로 써서 나만의 태스크에 맞게 Planner를 학습시키려면 보상 함수(Reward Function) 설계 등 강화학습에 대한 이해가 좀 필요합니다. 단순히 API 키만 넣고 “돌려!” 하는 수준의 LangChain 보다는 손이 많이 갑니다.
  • 비용과 속도 (Inference Time): 한 번의 턴(Turn)에도 4개의 모듈이 통신해야 하니, API 호출 횟수나 토큰 소모량이 꽤 큽니다. 상용 서비스에 실시간으로 붙이려면 레이턴시(Latency) 최적화 고민을 꽤 해야 할 것 같습니다.

결론: 에이전트의 미래는 ‘분업’이다

AgentFlow를 뜯어보면서 느낀 건, 이제 “얼마나 똑똑한 거대 모델 하나를 쓰느냐”의 시대에서 “작은 모델들을 얼마나 유기적으로 잘 엮어서 시스템을 만드느냐”로 패러다임이 확실히 넘어갔다는 점입니다.

거대한 단일 프롬프트에 지치셨다면, 혹은 우리 팀만의 특화된 전문 에이전트(Agentic Workflow)를 고민 중이시라면 AgentFlow의 철학은 엄청난 영감을 줄 겁니다. 이번 주말, 커피 한 잔 내리시고 GitHub에서 git clone 해서 직접 한 번 돌려보시는 건 어떨까요? 분명 후회하지 않으실 겁니다! ☕️🚀

References

  • https://arxiv.org/abs/2501.XXXXX (In-the-Flow Agentic System Optimization for Effective Planning and Tool Use)
  • https://github.com/agentflow-project/agentflow (Placeholder for the AgentFlow GitHub Repo)
This post is licensed under CC BY 4.0 by the author.