Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion units/en/unit2/langgraph/when_to_use_langgraph.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# What is `LangGraph`?
# What is `LangGraph`? [[what-is-langgraph]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

세미나에서 들었을 때 제가 이해한 바로는 일반적으로는 커밋 하나당 하나의 번역 단위로 관리되는 걸로 알고 있어서,
원문 수정을 포함한 경우에는 별도 커밋으로 분리해야 하는지도 함께 검토해보시면 좋겠습니다.

혹시 제가 잘못 알고 있는 부분이이라면 resolved로 체크하고 넘어가시면 될 것 같습니다 😊


`LangGraph` is a framework developed by [LangChain](https://www.langchain.com/) **to manage the control flow of applications that integrate an LLM**.

Expand Down
94 changes: 80 additions & 14 deletions units/ko/_toctree.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,106 @@
- title: Unit 0. Welcome to the course
Copy link

@Kim-Ju-won Kim-Ju-won Aug 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유닛이나 챕터 타이틀이 한국어로 번역이 되지 않은 상태로 남겨져 있는 것 같습니다 :)

혹시 번역을 해두지 않으신 이유가 제가 모르는 Agent Course 내의 특정 규칙이나 가이드가 있다면 그대로 두셔도 괜찮을 것 같고요.

없다면, 유닛이나 챕터 타이틀을 한국어로 번역해 두는 것도 좋지 않을까 조심스럽게 제안드려봅니다 :)

sections:
- local: unit0/introduction
title: Welcome to the course 🤗
title: AI 에이전트 코스에 오신걸 환영합니다 🤗
- local: unit0/onboarding
title: Onboarding
title: 온보딩(Onboarding), 첫 걸음 내딛기 ⛵
- local: unit0/discord101
title: (Optional) Discord 101
title: (선택) Discord 101
- title: Unit 1. Introduction to Agents
sections:
- local: unit1/introduction
title: Introduction
title: 에이전트 소개
- local: unit1/what-are-agents
title: What is an Agent?
title: 에이전트란?
- local: unit1/quiz1
title: Quick Quiz 1
- local: unit1/what-are-llms
title: What are LLMs?
title: LLM이란?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 개인적으로는 LLM이라는 표현이 더 자연스럽게 느껴졌는데요,
이번 문서가 LLM을 처음 접하는 분들을 위한 강의일 수도 있다는 생각이 들어서,
제목에는 영어 표현과 한글을 병기해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
title: LLM이란?
title: 대규모 언어 모델(LLM)이란?

- local: unit1/messages-and-special-tokens
title: Messages and Special Tokens
title: 메세지와 특수 토큰
- local: unit1/tools
title: What are Tools?
title: 도구란?
- local: unit1/quiz2
title: Quick Quiz 2
- local: unit1/agent-steps-and-structure
title: Understanding AI Agents through the Thought-Action-Observation Cycle
title: 사고-행동-관찰 주기를 통해 AI 에이전트 이해하기
- local: unit1/thoughts
title: Thought, Internal Reasoning and the Re-Act Approach
title: 사고, AI 에이전트의 내부 추론과 Re-Act 방식
- local: unit1/actions
title: Actions, Enabling the Agent to Engage with Its Environment
title: 액션, 에이전트가 환경과 상호작용할 수 있게 하기

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

26번째 제목에서는 Action이 “행동”으로 번역되어 있었는데,
이번 제목으로는 “액션”으로 번역이 되어있어요

혹시 의도적으로 구분하신 표현이라면 그대로 두셔도 괜찮을 것 같고,
아니라면 표현을 통일해보는 것도 좋을 것 같습니다 :)

- local: unit1/observations
title: Observe, Integrating Feedback to Reflect and Adapt
title: 관찰, 피드백을 통합하여 성찰하고 적응하기
- local: unit1/dummy-agent-library
title: Dummy Agent Library
title: 더미 에이전트 라이브러리
- local: unit1/tutorial
title: Let’s Create Our First Agent Using smolagents
title: smolagents로 첫 번째 에이전트 만들기
- local: unit1/final-quiz
title: Unit 1 Final Quiz
- local: unit1/conclusion
title: Conclusion
- title: Unit 2. Frameworks for AI Agents
Copy link

@Kim-Ju-won Kim-Ju-won Aug 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유닛이나 챕터 타이틀이 한국어로 번역이 되지 않은 상태로 남겨져 있는 것 같습니다 :)

혹시 번역을 해두지 않으신 이유가 제가 모르는 Agent Course 내의 특정 규칙이나 가이드가 있다면 그대로 두셔도 괜찮을 것 같고요.

없다면, 유닛이나 챕터 타이틀을 한국어로 번역해 두는 것도 좋지 않을까 조심스럽게 제안드려봅니다 :)

sections:
- local: unit2/introduction
title: AI Agent 프레임워크 소개
- title: Unit 2.1 The smolagents framework
sections:
- local: unit2/smolagents/introduction
title: smolagents 소개
- local: unit2/smolagents/why_use_smolagents
title: smolagents를 왜 사용할까?
- local: unit2/smolagents/quiz1
title: Quick Quiz 1
- local: unit2/smolagents/code_agents
title: 코드를 사용하는 에이전트 만들기
- local: unit2/smolagents/tool_calling_agents
title: 액션을 코드 조각(코드 스니펫)이나 JSON 블롭으로 작성하기
- local: unit2/smolagents/tools
title: Tool 도구 소개

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분을 간단하게 ‘도구 소개’ 정도로 정리해보는 건 어떨까 조심스럽게 제안드려봅니다 :)

혹시 의도하신 바가 있다면 그대로 두셔도 괜찮습니다!

Suggested change
title: Tool 도구 소개
title: 도구 소개

- local: unit2/smolagents/retrieval_agents
title: 검색 에이전트
- local: unit2/smolagents/quiz2
title: Quick Quiz 2
- local: unit2/smolagents/multi_agent_systems
title: 멀티 에이전트 시스템
- local: unit2/smolagents/vision_agents
title: 비전과 브라우저 에이전트
- local: unit2/smolagents/final_quiz
title: 최종 Quiz
- local: unit2/smolagents/conclusion
title: 결론
- title: Unit 2.2 The LlamaIndex framework

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유닛이나 챕터 타이틀이 한국어로 번역을 하지 않은 상태로 남겨져 있는 것 같습니다 :)

혹시 번역을 해두지 않으신 이유가 제가 모르는 Agent Course 내의 특정 규칙이나 가이드가 있다면 그대로 두셔도 괜찮을 것 같고요.

없다면, 유닛이나 챕터 타이틀을 한국어로 번역해 두는 것도 좋지 않을까 조심스럽게 제안드려봅니다 :)

sections:
- local: unit2/llama-index/introduction
title: LLamaIndex 소개
- local: unit2/llama-index/llama-hub
title: LlamaHub 소개
- local: unit2/llama-index/components
title: LlamaIndex의 구성 요소
- local: unit2/llama-index/tools
title: LlamaIndex에서 도구 사용하기
- local: unit2/llama-index/quiz1
title: Quick Quiz 1
- local: unit2/llama-index/agents
title: LlamaIndex에서 에이전트 사용하기
- local: unit2/llama-index/workflows
title: LlamaIndex에서 에이전트 워크플로우 만들기
- local: unit2/llama-index/quiz2
title: Quick Quiz 2
- local: unit2/llama-index/conclusion
title: 결론
- title: Unit 2.3 The LangGraph framework

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유닛이나 챕터 타이틀이 한국어로 번역을 하지 않은 상태로 남겨져 있는 것 같습니다 :)
혹시 제가 모르는 Agent Course 내의 특정 규칙이나 가이드가 있다면 그대로 두셔도 괜찮을 것 같고요.

번역을 해두지 않은 이유가 있다면 넘어가주셔도 좋고
없다면, 유닛이나 챕터 타이틀을 한국어로 번역해 두는 것도 좋지 않을까 조심스럽게 제안드려봅니다 :)

sections:
- local: unit2/langgraph/introduction
title: LangGraph 소개
- local: unit2/langgraph/when_to_use_langgraph
title: LangGraph란?
- local: unit2/langgraph/building_blocks
title: LangGraph의 구성 요소
- local: unit2/langgraph/first_graph
title: 첫 번째 LangGraph 만들기
- local: unit2/langgraph/document_analysis_agent
title: Document Analysis Graph

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

한국어로 번역이 되어 있지 않은데

제가 모르는 내부 규정이나 특별한 이유가 있는 것이라면 그냥 두셔도 좋고

아니라면 번역을 한 제목을 쓰는 것도 좋아보입니다.

- local: unit2/langgraph/quiz1
title: Quick Quiz 1
- local: unit2/langgraph/conclusion
title: Conclusion

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앞선 제목들과 동일하게 결론이라는 제목으로 해두는 것이 어떨지 조심스럽게 제안드려봅니다.

Suggested change
title: Conclusion
title: 결론

40 changes: 40 additions & 0 deletions units/ko/unit2/introduction.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 에이전틱 프레임워크 소개

<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/thumbnail.jpg" alt="Thumbnail"/>

Unit 2에 오신 것을 환영합니다! **이번 유닛에서는 다양한 에이전틱 프레임워크**를 살펴보고, 이를 활용해 강력한 에이전트 기반 애플리케이션을 만드는 방법을 배웁니다.

이번 유닛에서 다룰 내용은 다음과 같습니다:

- 2.1: [smolagents](https://huggingface.co/docs/smolagents/en/index)
- 2.2: [LlamaIndex](https://www.llamaindex.ai/)
- 2.3: [LangGraph](https://www.langchain.com/langgraph)

함께 시작해봅시다! 🕵

## 에이전틱 프레임워크는 언제 필요할까?

에이전틱 프레임워크는 **LLM 기반 애플리케이션을 만들 때 항상 필요한 것은 아닙니다.** 프레임워크는 특정 작업을 효율적으로 해결할 수 있도록 워크플로우에 유연성을 제공하지만, 항상 필수적인 것은 아닙니다.

때로는 **미리 정의된 워크플로우만으로도** 사용자 요청을 충분히 처리할 수 있으며, 굳이 에이전틱 프레임워크가 필요하지 않을 수 있습니다. 에이전트 구조가 단순하다면, 프롬프트 체이닝 등 일반 코드만으로도 충분합니다. 이 경우 개발자는 **추상화 없이 시스템을 완전히 이해하고 제어**할 수 있다는 장점이 있습니다.

하지만 워크플로우가 복잡해져 LLM이 함수를 호출하거나, 여러 에이전트를 활용해야 하는 경우에는 이러한 추상화가 도움이 되기 시작합니다.

이러한 점을 고려하면, 다음과 같은 기능이 필요함을 알 수 있습니다:

* 시스템을 구동할 *LLM 엔진*
* 에이전트가 접근할 수 있는 *도구 목록*
* LLM 출력에서 도구 호출을 추출하는 *파서*
* 파서와 동기화된 *시스템 프롬프트*
* *메모리 시스템*
* LLM의 실수를 제어할 *에러 로깅 및 재시도 메커니즘*

이러한 주제들이 각 프레임워크에서 어떻게 해결되는지, `smolagents`, `LlamaIndex`, `LangGraph`를 통해 살펴볼 예정입니다.

## 에이전틱 프레임워크별 유닛 안내

| 프레임워크 | 설명 | 유닛 저자 |
|------------|----------------|----------------|
| [smolagents](./smolagents/introduction) | Hugging Face에서 개발한 에이전트 프레임워크 | Sergio Paniego - [HF](https://huggingface.co/sergiopaniego) - [X](https://x.com/sergiopaniego) - [Linkedin](https://www.linkedin.com/in/sergio-paniego-blanco) |
| [Llama-Index](./llama-index/introduction) | 컨텍스트 증강 AI 에이전트를 프로덕션에 배포할 수 있는 엔드-투-엔드 툴링 | David Berenstein - [HF](https://huggingface.co/davidberenstein1957) - [X](https://x.com/davidberenstei) - [Linkedin](https://www.linkedin.com/in/davidberenstein) |
| [LangGraph](./langgraph/introduction) | 상태 기반 에이전트 오케스트레이션을 지원하는 프레임워크 | Joffrey THOMAS - [HF](https://huggingface.co/Jofthomas) - [X](https://x.com/Jthmas404) - [Linkedin](https://www.linkedin.com/in/joffrey-thomas) |
127 changes: 127 additions & 0 deletions units/ko/unit2/langgraph/building_blocks.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# LangGraph의 구성 요소[[building-blocks-of-langgraph]]

LangGraph로 애플리케이션을 구축하려면 핵심 구성 요소를 이해해야 합니다. LangGraph 애플리케이션을 구성하는 기본 빌딩 블록을 살펴보겠습니다.

<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/LangGraph/Building_blocks.png" alt="Building Blocks" width="70%"/>

LangGraph 애플리케이션은 **진입점(entrypoint)**에서 시작하며, 실행 흐름에 따라 한 함수에서 다른 함수로 이동하다가 END에 도달합니다.

<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/LangGraph/application.png" alt="Application"/>

## 1. 상태[[state]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원문 앵커를 보니 1-state로 작성되어 있더라고요.
아래와 같이 앵커를 수정해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
## 1. 상태[[state]]
## 1. 상태[[1-state]]


**상태(State)**는 LangGraph의 중심 개념입니다. 애플리케이션을 통해 흐르는 모든 정보를 나타냅니다.

```python
from typing_extensions import TypedDict

class State(TypedDict):
graph_state: str
```

상태는 **사용자 정의**이므로, 의사결정 과정에 필요한 모든 데이터를 포함하도록 신중하게 설계해야 합니다!

> 💡 **팁:** 애플리케이션이 단계 간에 추적해야 할 정보가 무엇인지 신중하게 고민하세요.
## 2. 노드[[nodes]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원문 앵커를 보니 2-nodes로 작성되어 있더라고요.
아래와 같이 앵커를 수정해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
## 2. 노드[[nodes]]
## 2. 노드[[2-nodes]]


**노드(Node)**는 파이썬 함수입니다. 각 노드는:
- 상태를 입력으로 받습니다
- 작업을 수행합니다
- 상태 업데이트를 반환합니다

```python
def node_1(state):
print("---Node 1---")
return {"graph_state": state['graph_state'] +" I am"}

def node_2(state):
print("---Node 2---")
return {"graph_state": state['graph_state'] +" happy!"}

def node_3(state):
print("---Node 3---")
return {"graph_state": state['graph_state'] +" sad!"}
```

예를 들어, 노드는 다음과 같은 역할을 할 수 있습니다:
- **LLM 호출**: 텍스트 생성 또는 의사결정
- **툴 호출**: 외부 시스템과 상호작용

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

도구 호출이라는 표현은 어떨지 제안드려봅니다.

Suggested change
- ** 호출**: 외부 시스템과 상호작용
- **도구 호출**: 외부 시스템과 상호작용

- **조건부 로직**: 다음 단계 결정
- **사람 개입**: 사용자 입력 받기

> 💡 **정보:** START와 END처럼 전체 워크플로우에 필수적인 일부 노드는 langGraph에서 직접 제공합니다.

## 3. 엣지[[edges]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원문 앵커를 보니 3-edges로 작성되어 있더라고요.
아래와 같이 앵커를 수정해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
## 3. 엣지[[edges]]
## 3. 엣지[[3-edges]]


**엣지(Edge)**는 노드를 연결하며, 그래프 내에서 가능한 경로를 정의합니다:

```python
import random
from typing import Literal

def decide_mood(state) -> Literal["node_2", "node_3"]:

# 종종 상태를 사용해 다음에 방문할 노드를 결정합니다
user_input = state['graph_state']

# 여기서는 노드 2, 3 사이를 50:50으로 분기합니다
if random.random() < 0.5:

# 50% 확률로 Node 2 반환
return "node_2"

# 50% 확률로 Node 3 반환
return "node_3"
```

엣지는 다음과 같이 나뉩니다:
- **직접(Direct)**: 항상 노드 A에서 노드 B로 이동
- **조건부(Conditional)**: 현재 상태에 따라 다음 노드를 선택

## 4. StateGraph[[stategraph]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원문 앵커를 보니 4-stategraph로 작성되어 있더라고요.
아래와 같이 앵커를 수정해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
## 4. StateGraph[[stategraph]]
## 4. StateGraph[[4-stategraph]]


**StateGraph**는 전체 에이전트 워크플로우를 담는 컨테이너입니다:

```python
from IPython.display import Image, display
from langgraph.graph import StateGraph, START, END

# 그래프 생성
builder = StateGraph(State)
builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
builder.add_node("node_3", node_3)

# 로직 정의
builder.add_edge(START, "node_1")
builder.add_conditional_edges("node_1", decide_mood)
builder.add_edge("node_2", END)
builder.add_edge("node_3", END)

# 그래프 컴파일
graph = builder.compile()
```

이제 시각화할 수 있습니다!
```python
# 시각화
display(Image(graph.get_graph().draw_mermaid_png()))
```
<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/LangGraph/basic_graph.jpeg" alt="Graph Visualization"/>

하지만 가장 중요한 것은 실제로 호출하는 것입니다:
```python
graph.invoke({"graph_state" : "Hi, this is Lance."})
```
출력 :
```
---Node 1---
---Node 3---
{'graph_state': 'Hi, this is Lance. I am sad!'}
```

## 다음 단계[[what's-next]]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

원문 앵커를 보니 whats next로 작성되어 있더라고요.
아래와 같이 앵커를 수정해보는 건 어떨까 조심스럽게 제안드려봅니다 🙂

Suggested change
## 다음 단계[[what's-next]]
## 다음 단계[[whats-next]]


다음 섹션에서는 이러한 개념을 실제로 적용하여 첫 번째 그래프를 만들어보겠습니다. 이 그래프는 Alfred가 이메일을 받아 분류하고, 정상 메일이라면 임시 답장을 작성할 수 있도록 합니다.
20 changes: 20 additions & 0 deletions units/ko/unit2/langgraph/conclusion.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# 결론[[conclusion]]

2단원의 LangGraph 모듈을 완료하신 것을 축하합니다! 🥳

이제 LangGraph로 구조화된 워크플로우를 구축하는 기본기를 마스터하셨으며, 이를 실제 프로덕션 환경에 적용할 수 있습니다.

이 모듈은 LangGraph 여정의 시작에 불과합니다. 심화 주제를 원하시는 분들을 위해 추천드립니다:

- [공식 LangGraph 문서](https://github.com/langchain-ai/langgraph) 탐색
- LangChain 아카데미의 종합적인 [LangGraph 소개](https://academy.langchain.com/courses/intro-to-langgraph) 강의 수강
- 직접 무언가를 만들어보세요!

다음 단원에서는 실제 사용 사례를 탐구합니다. 이제 이론을 넘어 실전으로 나아갈 시간입니다!

**여러분의 강의에 대한 생각과 제안 사항들을 매우 환영합니다**. 피드백이 있으시면 👉 [이 양식](https://docs.google.com/forms/d/e/1FAIpQLSe9VaONn0eglax0uTwi29rIn4tM7H2sYmmybmG5jJNlE5v0xA/viewform?usp=dialog)을 작성해주세요!

### 존경하는 여러분! 🎩🦇
배움을 멈추지 마세요 🤗

-알프레드-
Loading