1주차 — AI 에이전트 개발 개념
에이전트는 "모델이 흐름을 스스로 제어"하는 시스템이며, 그 설계의 본질은 도구로 모델의 제어권을 넓히고, 컨텍스트가 희석되지 않게 관리하는 것입니다.
0. 사전 필수 용어 (선행지식)
본 주제 이해에 필요한 5개 용어. 처음 접하면 이 절을 먼저 읽고 §1로 넘어가세요.
-
LLM (Large Language Model) — 방대한 텍스트로 학습해 다음 토큰을 확률적으로 예측·생성하는 모델. 사실을 조회 하는 장치가 아니라 그럴듯한 다음 단어를 고르는 생성기입니다. → §2에서 단일 호출의 한계를 다룹니다. (참고: Hugging Face NLP Course Ch.1)
-
프롬프트 / 컨텍스트 (Prompt / Context) — 모델 1회 호출에 들어가는 전체 입력(시스템 지침 + 대화 이력 + 사용자 요청 + 도구 결과). 강의는 이를 "모델과 함께 써 내려가는 거대한 프롬프트"로 비유합니다. 길이 상한이 있어 예산 처럼 관리해야 합니다. → §3·§4에서 다룹니다.
-
샘플링 / 디코딩의 랜덤성 (Randomness) — 같은 프롬프트라도 모델이 매번 조금씩 다른 답을 내는 성질. 창의성의 원천이자, 결과가 일관되지 않는 원인이기도 합니다. → §7 트레이드오프에서 다룹니다.
-
토큰 (Token) — 모델이 처리하는 텍스트의 최소 단위(대략 단어 조각). 컨텍스트 길이와 비용이 모두 토큰 수로 측정됩니다. 에이전트가 자율적으로 반복하면 토큰 소비가 커집니다. → §7.
-
가드레일 (Guardrail) — 모델이 위험하거나 원치 않는 행동을 하지 못하게 막는 안전 장치. 사람의 매번 검수도 가드레일이지만, 강의는 폴더 격리를 더 강력한 가드레일로 제시합니다. → §4 Step 3, §6.
📚 참고: 선행지식이 부족하면
AI 엔지니어링 EP0 — 선수지식또는 위 외부 링크를 먼저 학습하세요.
1. 주제 정의
에이전트(Agent) 는 모델이 흐름을 제어하는 시스템입니다. 모델이 다음 행동(더 반복할지, 더 파고들지, 멈출지)을 스스로 결정하는 자율 의사권을 가집니다. 반대로 워크플로우(Workflow) 는 코드가 흐름을 제어하는 방식으로, 개발자가 짠 고정 그래프(Fixed Graph) 대로 LLM·도구 호출이 정해진 순서로 흐릅니다.
✅ 확인: 워크플로우와 에이전트를 나누는 단 하나의 기준은 "누가 흐름을 제어하는가(코드냐 모델이냐)"입니다.
⚠️ 주의: 옛 문헌·오래된 책에서는 워크플로우를 에이전트라고 부르기도 했습니다. 최신 합의된 정의(제어 주체 기준)를 따라 혼동하지 마세요.
2. 풀려는 문제 — 단일 모델 호출의 한계
단일 LLM 호출만으로는 복잡하고 동적인 문제를 풀기 어렵습니다. 강의가 지적하는 한계는 다음과 같습니다.
- 지식의 한정성: 사전 학습된 지식은 학습 시점에 고정되어 실시간 정보·특수 도메인을 모릅니다.
- 랜덤성: 샘플링·디코딩 과정의 무작위성으로 답변이 일관되지 않습니다.
- 프롬프트의 한계: 사람이 복잡한 상황과 방대한 지식을 프롬프트로 전부 기술하는 것은 사실상 불가능합니다.
- 비효율성: 모델이 진행하면서 필요한 추가 정보·행동을 사람이 매번 직접 제공해야 합니다.
- 가드레일의 무력화: 매번 사용자가 검수해야 하는 방식은 인지·인내의 한계로 결국 무력화됩니다.
💡 실무 노하우: LLM을 "프롬프트 넣으면 답 나오는 기계"로 보는 관점에서 벗어나세요. 위 한계들이 바로 모델에게 자율성과 도구를 부여해야 하는 이유입니다.
3. 핵심 개념·구조
에이전트 루프는 다음 요소로 구성됩니다.
- 세션(Session): 여러 턴을 담는 그릇. 모델과 협력해 거대한 프롬프트(컨텍스트)를 함께 써 내려가는 과정입니다.
- 턴(Turn): 요청(Request/Trigger) 으로 시작해 최종 응답을 내고 종료되는 단일 처리 단위. 요청은 사용자뿐 아니라 모델 스스로도 발생시킬 수 있습니다.
- 이터레이션(Iteration): 턴 안에서 일어나는 연속적인 모델 호출. 대표적으로 도구 호출(Tool Call)이 꼬리를 무는 과정입니다.
- 서브 에이전트(Sub-Agent): 실체는 모델이 도구로 새 세션을 생성한 것. 컨텍스트를 이어받거나 비운 채 시작해 다른 시각에서 같은 문제를 봅니다. (마케팅 용어 성격이 강함)
- 골(Goal): 턴이 끝난 뒤에도 종료하지 않고, 목표 달성 여부를 검증해 새 턴을 만들지 결정하는 메커니즘.
- 도구(Tool): 모델의 제어권 범위를 확장하는 핵심 매개체.
📚 참고: 서브에이전트·골은 추상 개념입니다. 실제 구현은 "세션 생성", "메시지 큐(Message Queue)를 통한 비동기 요청/응답" 같은 구체 기술로 이해해야 합니다.
4. 실습·구현 가이드
에이전트 설계 시 결정해야 할 순서입니다.
Step 1 — 제어 주체 정하기. 이 부분을 코드가 고정 순서로 돌릴지(워크플로우), 모델이 스스로 판단하게 할지(에이전트)를 먼저 결정합니다. 결정성이 중요하면 워크플로우 패턴을 유지하는 것이 안전합니다.
Step 2 — 컨텍스트 예산 관리(4시/7시 규칙). 세션 컨텍스트는 대화가 길어질수록 단조 증가해 성능이 떨어지고 할루시네이션이 심해집니다. 시계 비유로 마지막 요청 시점을 4시(이상적 길이) 이내로 유지하고, 넘겨도 최대 7시(성능 절반 수준) 까지만 허용합니다.
Step 3 — 코드 구조로 가드레일 세우기. 초기부터 폴더로 코드를 무지막지하게 세분화·격리합니다. 모듈을 독립·분리해 작은 변경이 전체 컨텍스트에 미치는 영향을 최소화합니다.
Step 4 — 도구 설계·실행 방식 결정. 도구의 성향(전용 vs 반응), 실행 방식(별도 프로세스 vs 인메모리), 출력 처리(스트리밍·대기 큐·시스템 프롬프트 추가)를 설계합니다. (§5·§6 참조)
⚠️ 주의: 9시를 넘는 요청이나 컴팩션(Compaction) 기능은 대체로 품질이 크게 떨어집니다(강의 표현: "쓰레기"). "컨텍스트를 신경 쓰지 마라"는 기능을 민감한 작업에서 맹신하지 마세요.
5. 사례·적용 — 도구의 두 성향
| 성향 | 대표 | 특징 |
|---|---|---|
| 전용 도구(Dedicated) | Claude Code | 용도별 상세 도구를 많이 제공 → 모델 실수 감소, 특정 작업 정확도↑ |
| 반응 도구(Reactive) | Codex | bash shell 같은 범용 도구 하나로 대부분 해결 → 모델의 터미널 번역 능력이 관건 |
- 도구 + 스킬(Skill) 조합: 도구는 터미널 같은 최소 기능만 주고, 사용 방법·예제·상세 설명은 스킬로 풍부하게 기술하는 최신 접근이 있습니다.
- 실행 방식: 별도 프로세스는 느리거나 실패해도 본체가 안전하고 병렬에 유리하지만 프로세스 간 통신 프로토콜(
emit progress,emit error)이 필요합니다. 인메모리는 빠르지만 도구 실패가 본체에 전이되고 싱글 스레드에선 블로킹 위험이 있습니다.
💡 실무 노하우: "도구를 많이 vs 적게"에 정답은 없습니다. 개발 대상 모델의 학습 경로와 도구 성향이 조화를 이루는 쪽을 고르세요.
6. 핵심 원리 — 제어권 확장
모든 설계 결정은 하나의 질문으로 수렴합니다: "모델이 턴 루프를 얼마나 제어하게 할 것인가?"
- 도구는 모델이 도구 호출 내에서 세계를 제어하게 합니다.
- 서브에이전트·골은 그 제어를 턴 생성·세션 관리 수준까지 넓힙니다.
- 폴더 격리는 그 넓어진 제어권이 폭주하지 않도록 붙잡는 가장 강력한 가드레일입니다.
✅ 확인: 기능을 코드로 직접 짤지, 모델의 제어권을 넓히는 도구로 줄지의 선택이 곧 에이전트의 고유한 디자인을 결정합니다.
7. 한계·트레이드오프
- 자율성 ↔ 예측 가능성: 자율성은 전형적이지 않은 창의적 해결을 가능케 하지만, 결과가 예측 어렵고 토큰 비용 통제가 어렵습니다.
- 컨텍스트 길이 ↔ 성능: 길수록 정보가 희석되고 비결정성이 커집니다(4시/7시 규칙의 근거).
- 할루시네이션: 모델 구조에서 비롯되므로 완전히 제거 불가. 워크플로우 보완·컨텍스트 관리로 빈도만 줄일 수 있습니다.
⚠️ 주의: 이 개념들(세션·턴·4시 규칙 등)은 현재 모델의 컨텍스트 제한 때문에 만들어진 것입니다. 모델 성능이 오르면 구조와 중요성이 바뀔 수 있습니다.
8. 다른 접근과 비교
- 워크플로우 패턴: 라우팅·정리 같은 고정 흐름은 사라지지 않았고, 결정성이 필요한 곳에서 여전히 유효합니다. 실제로 많은 "에이전트"가 내부적으로는 워크플로우 패턴(팀 구성·서브에이전트 오케스트레이션)을 씁니다.
- 프레임워크 학습: LangChain·LangGraph·CrewAI 같은 OSS 코드를 읽으며 본 개념(루프·도구·컨텍스트 관리)이 실제로 어떻게 구현됐는지 확인하세요.
📚 참고: "진짜 에이전트"라면 서브에이전트를 미리 짜두지 않고 모델이 알아서 동원·계획·대화하게 해야 한다는 것이 강의의 지향점입니다. 현실 구현은 아직 워크플로우 성격이 남아 있습니다.
9. 메타인지 자기평가
아래 질문에 스스로 답해 보세요.
- [ ] 워크플로우와 에이전트를 "제어 주체" 기준으로 구분해 설명할 수 있는가?
- [ ] 세션·턴·이터레이션이 각각 무엇이고 어떻게 대화 흐름을 구성하는지 말할 수 있는가?
- [ ] 4시/7시 규칙과 폴더 격리가 왜 컨텍스트 관리에 중요한지 설명할 수 있는가?
- [ ] 서브에이전트·골이 모델의 제어권을 어떻게 넓히는지 말할 수 있는가?
- [ ] 전용/반응 도구, 실행 방식(프로세스/인메모리), 출력 처리를 고려해 내 에이전트의 도구를 설계할 수 있는가?
✅ 확인: 다섯 항목 중 막히는 곳이 있다면 해당 절(§1·§3·§4·§3·§5)로 돌아가 다시 정리하세요.
클릭하거나 Space를 눌러 뒤집기