2025년을 "Agent 원년(元年)"이라 부르자고 제안하는 책이다. 모델을 더 크게 키우는 경쟁은 끝났고, 이제는 그 모델을 어떻게 일하게 만들 것인가가 본질. 그래서 이 책은 LangChain·AutoGen 같은 기성 프레임워크 사용법만 가르치지 않는다. OpenAI 원시 API만으로 ReAct부터 다중 에이전트, RAG, 컨텍스트 엔지니어링, Agentic-RL 훈련까지 직접 구축하는 길을 보여준다.
"바퀴 쓰는 법"이 아니라 "바퀴 만드는 법"을 가르치는 책. 그래서 분량이 책 한 권이고, GitHub Issues·PR 활발히 진행 중이다.
요리 학원에 두 종류가 있다고 치자. 첫 번째는 "햇반 데우기"부터 가르치는 곳 — 즉시 한 끼는 해결되지만 셰프가 되긴 어렵다. 두 번째는 "쌀의 종류"·"불 조절"·"칼 잡는 법"부터 가르치는 곳 — 첫 한 달은 답답하지만 결국 자기 식당을 차릴 수 있게 된다.
Dify·Coze·n8n이 첫 번째라면, hello-agents는 두 번째. ReAct 패턴이 머릿속에 박혀 있어야, 나중에 LangGraph를 봐도 "아, 이게 그거였구나" 한다. 책 끝에서는 자기 프레임워크인 HelloAgents까지 만들게 한다.
2024년이 "백모대전(百模大战)"의 해 — 즉 더 큰 모델을 만드는 경쟁의 해였다면, 2025년부터는 그 모델을 도구로 묶어 일을 시키는 에이전트가 본격 화두가 됐다. 이 책은 그 흐름에 딱 맞춰 등장했고, 27.5k 별을 쓸어담는 중. 별 증가 그래프가 거의 수직이다(레포 README의 Star History 그래프 참고).
지난 1년 사이 에이전트 자료가 폭증했지만, 대부분이 "Dify로 챗봇 만들기" 같은 툴 사용법 위주였다. 원리·역사·내부 구조를 동시에 정리한 자료는 드물었다. hello-agents는 1장에서 에이전트의 정의·역사부터 시작해서, 12장에서 평가 방법론까지 다룬다 — 책 한 권의 완결성을 가진다.
이 책의 메시지는 명확하다: 에이전트는 두 종류다.
| 유형 | 대표 | 본질 |
|---|---|---|
| 워크플로우 Agent | Dify, Coze, n8n | 플로우 기반 소프트웨어 — LLM은 그저 데이터 처리 백엔드 |
| AI Native Agent | ReAct, AutoGen, LangGraph | LLM이 의사결정 주체, 도구 호출과 추론을 동적으로 결정 |
책의 90%는 두 번째 — 진짜 LLM이 핸들을 잡는 에이전트를 다룬다. 첫 번째도 5장에서 한 번 짚고 가지만, 이건 "전체 그림을 알기 위함"이지 메인이 아니다.
책의 7장에서는 OpenAI API만으로 자기 프레임워크를 만들게 한다. 이 프레임워크는 별도 레포 jjyaoao/HelloAgents로 1.5k 별을 따로 받고 있고, 지금은 v1.0.0 — ToolResponse 프로토콜, 회로 차단기(CircuitBreaker), 컨텍스트 엔지니어링, 세션 영속화, 서브에이전트 등 16개 프로덕션 기능까지 진화했다. 책으로 시작해서 실전 도구로 자란 살아있는 프로젝트.
README에 "감사합니다 4W Star! 현재 조사 설문 제공 중, 후속작 《처음부터 훈련하는 지능형 에이전트》 개발 시작" 공지가 올라와 있다. 별 모으기 게이미피케이션으로 커뮤니티를 견인했고, 현재 약 59.6k로 4W를 훌쩍 초과해 후속작 약속도 이미 이행 중이다.
책 본문이 중국어라 진입 장벽이 있지만, 영문 README도 있고 코드와 다이어그램이 풍부해 번역기 + 코드 따라치기로 충분히 학습 가능하다. 영어 자료 위주인 한국 개발자에게는 오히려 중국 AI 커뮤니티의 사고 흐름을 엿볼 수 있는 보너스. (예: Coze, Dify가 중국 제품이라 5장에서 더 깊이 다뤄진다.)
| 구성 | 비중 | 역할 |
|---|---|---|
| Python 3.10+ | 약 72.6% | 전체 코드의 주력 언어. hello_agents 패키지 + 예제 노트북 |
| Jupyter Notebook | 약 11.2% | 장별 실습 — .ipynb로 돌려보면서 학습 |
| Vue | 약 8.4% | 프런트엔드 일부 (교재 코드) |
| HTML + JS | 약 5.4% | 정적 문서 + 보조 스크립트 |
| GDScript | 약 0.5% | 15장 게임 시뮬레이션 — Godot 4.5 엔진 스크립트 |
책 7장에서 만드는 자체 프레임워크는 OpenAI 호환 인터페이스 1개를 표준으로 삼고, 모든 LLM 제공자를 그 형태로 흡수한다.
| 어댑터 | 지원 모델 | 감지 조건 |
|---|---|---|
| OpenAI 호환 (기본) | OpenAI · DeepSeek · Qwen · Kimi · GLM · vLLM · Ollama · SGLang | URL이 위 도메인 또는 localhost |
| Anthropic | Claude 시리즈 | base_url에 anthropic.com 포함 |
| Gemini | Google Gemini | base_url에 googleapis.com 또는 generativelanguage 포함 |
POST /v1/chat/completions JSON 포맷이 사실상 LLM 업계 표준이 됨. DeepSeek·vLLM·Ollama·LM Studio·llama.cpp 서버까지 전부 이 포맷을 흉내 낸다. 그래서 어댑터 한 개로 수십 개 모델을 지원할 수 있다."바퀴 만들기"가 메인이지만, 6장에서는 기존 바퀴들을 광범위하게 비교한다:
| 프레임워크 | 제작사 | 특징 |
|---|---|---|
| AutoGen | Microsoft | 다중 에이전트 대화 · GroupChat 패턴 |
| LangGraph | LangChain Inc | 그래프 기반 상태머신 · 가장 표현력 높음 |
| AgentScope | Alibaba (DAMO) | 중국 발 · 분산 에이전트 · 메시지 기반 |
| Dify / Coze / n8n | Dify사 / 字节 / n8n GmbH | 5장에서 로우코드 워크플로우 비교 |
8장에서 메모리 시스템을 다룰 때 등장하는 라이브러리들:
text-embedding-3-small/large, Qwen Embedding, BGE-M3 (중국 BAAI)11장은 책에서 가장 무거운 챕터 — LLM을 직접 훈련시킨다.
| 단계 | 기법 | 도구 |
|---|---|---|
| 1. 사전훈련 모델 선택 | 오픈 모델 fine-tune 베이스 | Qwen2.5 / Llama 3.1 / GLM 등 |
| 2. SFT (지도학습) | 대화 데이터로 명령 수행 학습 | LLaMA-Factory · Unsloth · TRL |
| 3. GRPO | DeepSeek가 R1에서 쓴 강화학습 — PPO보다 가볍다 | TRL · veRL · OpenRLHF |
| 4. 평가 | 벤치마크 + 실제 환경 시뮬레이션 | 12장에서 다룸 |
| 장 | 주제 | 핵심 기술 |
|---|---|---|
| 13장 | 스마트 여행 어시스턴트 | MCP 프로토콜 + 다중 에이전트 협업 + 외부 도구 |
| 14장 | 자동화 딥리서치 | DeepResearch 재현 — 계획-수집-검증-종합 4단계 |
| 15장 | 사이버 타운 (赛博小镇) | Stanford의 Generative Agents 재현 — Godot 4.5 (2D 픽셀 게임 엔진) + FastAPI 백엔드 |
4장에서 가장 먼저 배우는 패턴. "Reasoning + Acting"의 줄임말이다. 2022년 프린스턴-구글 논문에서 처음 제안됐고, 그 후 거의 모든 에이전트의 뼈대가 됐다.
코드로 보면 이렇게 단순한 무한 루프 + 종료 조건이다:
while not done:
thought = llm.think(history) # 1. 다음 행동 결정
action = llm.parse_action(thought) # 2. 도구 + 인자 추출
obs = tools[action.name](**action.args) # 3. 도구 실행
history.append({thought, action, obs}) # 4. 기록
if "Final Answer" in thought:
done = True
탐정 셜록 홈즈를 떠올려보자. 사건 현장에서 "생각하고(thought) → 행동하고(action) → 결과를 본다(observation)"를 반복한다. "발자국이 큰데..." → "확대경 꺼내자" → "사이즈 290mm로 측정됨" → "그럼 키는..." → ...
ReAct가 정확히 이 흐름이다. LLM이 셜록, 도구가 확대경. 책 4장은 이걸 OpenAI API 호출 100줄도 안 되는 코드로 직접 구현시킨다.
ReAct는 한 번에 한 걸음만 본다. 복잡한 문제(예: "여행 계획 짜줘")에서는 길을 잃기 쉽다. Plan-and-Solve는 "먼저 전체 계획을 세우고 → 단계별로 실행"하는 패턴이다.
전체 흐름:
1. Planner LLM: "여행 계획"을 7단계로 쪼갠다
├─ 1. 여행 날짜 확정
├─ 2. 항공권 검색
├─ 3. 호텔 예약
└─ ...
2. Executor LLM: 각 단계를 ReAct 루프로 실행
3. 모든 단계 완료 후 결과 종합
ReAct + Plan-and-Solve는 "앞으로 가는 힘"이지만, Reflection은 "뒤를 돌아보는 힘"이다. 한 사이클 끝나면 LLM이 "내가 한 일이 맞나? 더 나은 방법은 없었나?"를 스스로 검토한 뒤 다음 시도를 한다. 시행착오로 배우는 방식.
책의 7장에서 시작한 자체 프레임워크가 jjyaoao/HelloAgents v1.0.0까지 진화하면서 다음 16개를 갖췄다. 이 모든 게 OpenAI API + Python 표준 라이브러리만으로 구현돼 있다.
2024년 이후 모든 메인 LLM이 Function Calling(=Tool Use)을 지원한다. v0.x 버전의 HelloAgents는 텍스트 파싱 기반 ReAct(Action: search\nAction Input: ... 식의 정규식 파싱)였지만, v1.0부터는 LLM의 네이티브 tool_calls 응답을 1급으로 받는다. 그래서 더 빠르고 안정적이다.
hello-agents)는 설명 + 실습 코드의 모음, 프레임워크(HelloAgents)는 실전 사용용 패키지로 분리됐다. 교재가 두꺼워지지 않게 하고, 프레임워크는 독립적으로 버전 발전(v0.1.1 → v1.0.0)할 수 있게 한 영리한 분리.LangChain의 create_react_agent()를 호출하는 건 누구나 한다. 하지만 그 안에서 무슨 일이 벌어지는지 아는 사람은 적다. 이 책은 약 100줄짜리 ReAct를 처음부터 짜게 시킨다. 한 번 손으로 짜본 사람은 LangGraph 그래프를 봐도 곧바로 매핑할 수 있다.
실습 아이디어: 자기 도메인용 ReAct를 만들어보기. 예) 주가 데이터 조회 도구 + 계산 도구 + 검색 도구를 묶어 "워런 버핏 스타일 분석" 에이전트.
LLM의 컨텍스트 윈도우가 길어졌어도, 긴 = 비싸다 + 느리다 + 헷갈린다. 9장은 이걸 다룬다:
실습 아이디어: 1만 토큰을 받아야 답할 수 있는 질문을, 500 토큰 컨텍스트만으로 풀어내기. 보조 검색 + 요약을 어떻게 짜야 할까?
에이전트가 "어제 사용자가 한 말"을 기억하려면 메모리가 필요하다. 책은 3종을 다룬다:
| 메모리 종류 | 저장 방식 | 용도 |
|---|---|---|
| Short-term | 대화 이력 (in-memory) | 현재 세션 안에서만 |
| Long-term | 벡터 DB + 임베딩 | 사용자별 영구 사실 — "내 강아지 이름은 보리" |
| Episodic | 과거 대화 요약 저장 | "3개월 전에 우리가 이야기했던 그 프로젝트" |
실습 아이디어: 텔레그램 봇 + Chroma로 개인용 일기 비서 만들기. 매일 일기 던지면 임베딩 저장하고, "작년 봄에 뭐 했지?"라고 물으면 검색해서 답한다.
2024~2025년 사이 에이전트 통신 프로토콜이 폭증했다. 책은 3개를 비교한다:
| 프로토콜 | 제안자 | 핵심 |
|---|---|---|
| MCP (Model Context Protocol) | Anthropic | LLM ↔ 외부 도구의 표준 인터페이스. JSON-RPC 기반 |
| A2A (Agent-to-Agent) | 에이전트끼리 직접 대화 — "Agent Card"로 신원 확인 | |
| ANP (Agent Network Protocol) | 중국 학계 | 분산 에이전트 네트워크 — 블록체인 영감 |
실습 아이디어: 자기 MCP 서버 만들어서 Claude Desktop에 연결하기. 책 README의 Extra05-Agent Skills와 MCP 대비 해독 부록까지 읽으면 Skills와의 차이까지 잡힌다.
지금까지는 "프롬프트로 LLM을 조종"하는 길이었다면, 11장은 모델 자체를 학습시켜서 에이전트로 만든다. SFT → DPO → GRPO로 이어지는 정통 RL 파이프라인. DeepSeek-R1과 같은 결을 따른다.
실습 아이디어: Qwen2.5-0.5B 같은 작은 모델을 가져다 LLaMA-Factory로 SFT, 그 후 GRPO로 도구 사용을 강화 학습. 노트북 GPU 한 장으로도 된다.
2023년 Stanford-Google이 발표한 Smallville 논문(25명의 LLM 캐릭터가 자율적으로 마을에서 사는 시뮬레이션)을 다시 만든다. 프런트엔드는 Godot 4.5 2D 픽셀 게임 엔진, 백엔드는 FastAPI(Python). 메모리 + 계획 + 반성 + 환경 인지 — 책의 모든 기술이 한 번에 모인다. 졸업작품 같은 챕터.
tashfeenahmed/freellmapi), 또는 Ollama 로컬SFT는 7B 모델이라도 LoRA + Unsloth로 8GB GPU에서 돈다. 하지만 GRPO는 동일 입력에 대한 그룹 응답을 동시에 들고 있어야 해서 메모리를 1.5~2배 더 먹는다. 0.5B~1.5B 작은 모델로 시작하거나, 클라우드를 임대하는 게 현실적.
도구 3개만 등록: get_weather(), get_my_calendar(), search_restaurants(). ReAct 루프로 "비 오는 날 회의 사이 30분에 갈 만한 가까운 맛집"을 찾게 한다. 4장 코드를 그대로 따라가면 1시간이면 된다.
책 8장의 메모리 시스템 + Telegram Bot. 매일 한 줄 일기를 받으면 Chroma에 저장, "지난주에 내가 뭐 했지?"라고 물으면 임베딩으로 검색한 뒤 LLM이 정리해서 답한다.
10장 + Extra05를 읽고, 자기가 자주 쓰는 도구(예: GitHub API, Notion API, 사내 슬랙)를 감싸는 MCP 서버를 만든다. Claude Desktop이나 Cursor에 연결해 일상에서 쓴다. 한 번 만들고 나면 모든 LLM IDE에서 즉시 쓸 수 있다.
14장 코드를 따라가며 자기 도메인용(예: "AI 논문 트렌드 주간 보고서") 자동 리서치 에이전트를 짠다. 검색 → 본문 수집 → 요약 → 비판적 검증 → 보고서 작성의 5단계 파이프라인. 매주 GitHub Actions에서 돌리면 자동 뉴스레터 완성.
11장의 가장 무거운 실습. 작은 모델을 가져다, "이 질문에는 검색을 호출해야 하고, 이 질문에는 계산기를 호출해야 함"을 강화학습으로 가르친다. SFT 데이터 만들기 → SFT 훈련 → 보상 함수 설계 → GRPO 훈련 → 평가. 끝까지 가면 작은 모델이 GPT-4o급 도구 라우팅 정확도에 근접한다.
| 주차 | 학습 내용 | 산출물 |
|---|---|---|
| 1주 | 1~3장: 에이전트 정의 + 역사 + LLM 기초 복습 | 요약 노트 |
| 2주 | 4장: ReAct·Plan&Solve·Reflection 직접 구현 | 3개 패턴 코드 |
| 3주 | 5장: Coze·Dify·n8n 비교 + 한 개 골라서 챗봇 1개 만들기 | 로우코드 챗봇 |
| 4주 | 6장: AutoGen, LangGraph, AgentScope 실습 | 3종 프레임워크 비교 문서 |
| 5주 | 7장: 자체 프레임워크 첫 버전 만들기 | my-agent v0.1 깃허브 레포 |
| 6주 | 8장: 메모리 + RAG + Chroma | 일기 비서 봇 |
| 7주 | 9장: 컨텍스트 엔지니어링 | 토큰 절약 케이스 스터디 |
| 8주 | 10장: MCP/A2A/ANP — 자기 MCP 서버 1개 | publish 된 MCP 패키지 |
| 9~10주 | 11장: Agentic-RL — SFT + GRPO | HuggingFace에 올린 fine-tune 모델 |
| 11주 | 12장 평가 + 13장 여행 어시스턴트 | 실전 다중 에이전트 앱 |
| 12주 | 14~15장: 딥리서치 + 사이버 타운 | 졸업작품 후보 |
TaskTool이 이걸 구현 — 메인은 큰 흐름, 서브는 검색 같은 좁은 작업에 집중하게 해서 컨텍스트 오염을 줄인다.CircuitBreaker가 이걸 에이전트 도구 호출에 적용.