Skip to content
Merged
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 .github/workflows/translate-to-english.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,6 @@ jobs:
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: add English translations for PR #${{ github.event.pull_request.number }}"
file_pattern: _posts_en/*.md
file_pattern: _posts_en/**/*.md


1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
_site
Gemfile.lock
vendor/
.playwright-mcp/*
Binary file removed .playwright-mcp/footer-with-privacy.png
Binary file not shown.
2 changes: 1 addition & 1 deletion _includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
{% endif %}

<!-- Google Analytics -->
{% if site.theme_settings.google_analytics %}
{% if site.theme_settings.google_analytics and jekyll.environment == 'production' %}
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.theme_settings.google_analytics }}"></script>
<script>
Expand Down
35 changes: 35 additions & 0 deletions _posts/adk/2025-10-20-01-introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: "1. ADK 소개"
subtitle: ""
order: 1
date: 2025-10-20
---

최근 다양한 Agent 개발 도구들이 등장하고 있다. 그중에서도 나는 Google의 **ADK (Agent Development Kit)**를 가장 주목하고 있다. 구글에서 발표했다는 점에서 관심을 가지게 되었지만, 그 외에도 눈에 띄는 부분이 많다.

ADK는 이름 그대로 "Agent 개발 킷"으로, 단순한 SDK 수준을 넘어 **A2A (Agent to Agent)** 프로토콜을 기반으로 한 **표준화된 Agent 개발 프레임워크**를 제공한다. 이 부분이 내가 가장 주목하고 있는 이유다. 이를 통해 개발자는 복잡한 Agent 간 통신 로직을 직접 구현하지 않고도, 표준화된 방식으로 Agent를 설계하고 배포할 수 있다.

현재 AI Agent 생태계는 다양한 프레임워크들로 가득하다. LangChain, AutoGen, Agno, Swarm(OpenAI Agent SDK), CrewAI와 같은 수많은 에이전트 툴들과, 심지어 n8n 같은 노코드 툴까지 존재한다. 사실 개인적인 생각은 Agno같은 특수 목적을 가진 툴들을 제외하고는 비슷하다고 느껴진다. 이런 상황에서 나는, 커뮤니티 및 스폰서가 강한 오픈소스를 선택하게 된다.

ADK와 다른 프레임워크의 차이점을 하나 뽑으라고 하면, 나는 **ADK는 Agent 간의 통신과 상호작용을 표준화하는 것(A2A)에 집중**한다는 부분을 뽑고 싶다. 멀티 Agent 시스템을 통해 복잡한 태스크를 효율적으로 처리하겠다는 Google의 비전이 명확히 드러나는 부분이다.

즉, **ADK는 단순히 하나의 Agent 개발 도구가 아니라, 여러 Agent들이 협업할 수 있게 하는 인프라 수준의 표준을 제공한다는 점에서 차별화**된다.



ADK의 핵심 철학은 명확하다. — **"AI Agent 간의 협업을 표준화하자."**

다른 Agent 시스템들은 각자의 프레임워크 내에서만 작동하는 폐쇄적인 구조를 가지고 있다. 각자의 시스템 안에서 멀티 에이전트를 지원하는 방식이 많다. 하지만 ADK는 이를 **인터넷의 HTTP 프로토콜처럼 모든 Agent가 공통 언어로 소통할 수 있는 환경**으로 확장한다.

> 참고: ADK와 A2A 프로토콜은 엄밀히 말하면 다른 개념이다. 이 부분은 이후 챕터에서 다루도록 하겠다.

ADK와 A2A 덕분에 서로 다른 팀이나 조직에서 만든 Agent들도 동일한 프로토콜을 통해 손쉽게 통합될 수 있다. 이것이 바로 수많은 툴들 사이에서 ADK가 특별히 주목받는 이유이다. 각자의 팀에서 각자의 에이전트를 잘 만드는 에이전트 거버넌스를 만들 수 있지 않을까 싶다.

물론 향후 Agent 시장이 어떻게 변화할지는 아직 미지수이다. 하지만 ADK와 A2A의 핵심 개념을 이해하면, 다른 Agent 프레임워크들도 훨씬 쉽게 접근할 수 있다고 생각한다.

서론이 너무 길었다. 이제 ADK를 본격적으로 하나씩 테스트해보고, ADK의 장점과 한계점을 찾아보고자 한다.

다음 글에서는 ADK의 개발 환경을 설정하고, 첫 번째 Agent를 만들어보는 과정을 다룰 예정이다.



145 changes: 145 additions & 0 deletions _posts/adk/2025-10-28-02-adk-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
---
title: "ADK 기본 셋업"
subtitle: ""
order: 2
date: 2025-10-28
---

이제 본격적으로 ADK를 테스트해보자.

모든 내용은 Python SDK를 이용해 테스트한다.

## 테스트 환경

내가 사용하는 환경은 다음과 같다.

- Python 3.12
- uv
- gpt-5-nano

ADK의 경우, Gemini 및 Vertex AI를 사용해야 강점을 더 느낄 수 있다. 하지만 다른 툴들과의 장점 및 차별점을 경험해보기 위해, 타사의 LLM을 사용하도록 한다.

## 환경 설정

가장 먼저 uv 셋업은 다음과 같이 한다. pyenv 및 uv가 셋업되지 않은 사람은, 미리 설치하거나 해당 과정을 제외하고 본인의 환경을 사용해도 좋다.

```bash
mkdir adk-test && cd adk-test
pyenv local 3.12.7
uv init
uv venv
uv add google-adk
```

위의 커맨드들을 통해, 환경 셋업은 완료된다.

## ADK Agent 생성

```bash
uv run adk create my_agent
```

위의 커맨드를 입력하면, 아래와 같이 선택지를 주는데, 나는 2를 입력했다.

```bash
Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)
Choose model (1, 2): 2
```

## LLM 모델 설정

이제 LLM모델을 준비한다. 나는 이 과정에서 pydantic을 이용한 셋업을 진행한다.

```bash
uv add pydantic-settings
```



```python
"""pydantic Settings"""

from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
"""Settings for the application"""

model_config = SettingsConfigDict(env_file=".env")
OPENAI_API_KEY: str = ""
OPENAI_MODEL: str = "gpt-5-nano"

settings = Settings()
```

위와 같이 셋업하고, `.env` 파일 혹은, `export OPENAI_API_KEY="sk-~~"` OPENAI_API_KEY를 주입해주면 완료된다.



이제 litellm을 셋업하는 단계가 필요하다. ADK의 경우 Gemini 혹은 Vertex AI 외에 다른 모델을 사용하려면 litellm 라이브러리를 통해 사용해야 한다. 이는 추가 의존성을 가져오고, 중간 레이어를 거치게 되어 직접 통합보다 복잡도가 증가한다는 점에서 ADK의 단점 중 하나일 것 같다.

```bash
uv add litellm
```

이렇게 셋업하고, 다시 `my_agent/agent.py` 에 아래와 같이 셋업하면 된다.



```python
"""My Agent"""

from google.adk.agents.llm_agent import Agent
from google.adk.models.lite_llm import LiteLlm

from settings import settings

root_agent = Agent(
model=LiteLlm(model=settings.OPENAI_MODEL),
name="root_agent",
description="A helpful assistant for user questions.",
instruction="Answer user questions to the best of your knowledge",
)
```

## Agent 실행

이제 매우 간단한 Agent가 셋업이 완료되었다. 이를 실행시켜보자.

```bash
uv run adk run my_agent
```

위의 명령어로 실행시키면, 다음과 같이 [user]: 입력이 생기고, 입력할 경우 답변이 온다.

```bash
[user]: hello
23:24:51 - LiteLLM:INFO: utils.py:3416 -
LiteLLM completion() model= gpt-5-nano; provider = openai
[root_agent]: Hello! How can I help today? I can answer questions, explain concepts, help with writing, brainstorm ideas, plan tasks, or provide quick summaries. If you have a topic in mind, tell me and I’ll dive in.
```

## 웹 인터페이스 사용

ADK의 특별한 경험을 하고 싶으면 web으로 테스트할 수 있는 방법도 있다.

```bash
uv run adk web
```

`http://127.0.0.1:8000/`로 접속하면 다음과 같은 화면을 볼 수 있다.

![ADK 웹 인터페이스 초기 화면](/assets/img/2025-10-28-02-adk-setup/image-20251028232944459.png)
*ADK 웹 인터페이스 초기 화면*



해당 방법은 ADK의 내장 웹 인터페이스로, Agent의 실행 과정을 시각적으로 모니터링할 수 있다. 답변을 입력하면 아래와 같이 모니터링을 할 수 있다.

![Agent 실행 과정 모니터링 화면](/assets/img/2025-10-28-02-adk-setup/image-20251028233029460.png)
*Agent 실행 과정 모니터링 화면*

시간이 있다면 [Introducing Agent Development Kit](https://www.youtube.com/watch?v=zgrOwow_uTQ) 영상을 보는 것을 추천한다.

31 changes: 31 additions & 0 deletions _posts_en/adk/2025-10-20-01-introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
date: 2025-10-20
order: 1
subtitle: ''
title: 1. Introduction to ADK
---


Recently, a variety of agent development tools have emerged. Among them, I’m paying the most attention to Google’s **ADK (Agent Development Kit)**. The fact that it was announced by Google drew my interest, but there are several other standout aspects.

As its name suggests, ADK is an “agent development kit,” but it goes beyond a simple SDK by providing a **standardized agent development framework** based on the **A2A (Agent to Agent)** protocol. That’s what I find most compelling. It lets developers design and deploy agents in a standardized way without having to implement complex inter-agent communication logic themselves.

Today’s AI agent ecosystem is crowded with frameworks. There are countless tools like LangChain, AutoGen, Agno, Swarm(OpenAI Agent SDK), and CrewAI, and even no-code tools like n8n. Personally, aside from specialized tools like Agno, many of them feel similar. In this situation, I tend to choose open source with strong community and sponsorship.

If I had to pick one difference between ADK and other frameworks, it would be that **ADK focuses on standardizing agent-to-agent communication and interaction (A2A)**. This clearly reflects Google’s vision of efficiently handling complex tasks through multi-agent systems.

In other words, **ADK isn’t just another agent development tool; it’s differentiated by providing an infrastructure-level standard that enables multiple agents to collaborate.**

ADK’s core philosophy is clear — **“Standardize collaboration between AI agents.”**

Other agent systems are closed, working only within their own frameworks. Many support multi-agent setups inside their own systems. But ADK extends this into an environment where **all agents can communicate in a common language, like HTTP on the internet**.

> Note: Strictly speaking, ADK and the A2A protocol are different concepts. I’ll cover this in a later chapter.

Thanks to ADK and A2A, agents built by different teams or organizations can be easily integrated through the same protocol. That’s why ADK stands out among so many tools. It could enable agent governance where each team builds and manages its own agents well.

Of course, how the agent market will evolve is still uncertain. But if you understand the core ideas of ADK and A2A, other agent frameworks become much easier to approach.

Enough preamble. Now I’m going to test ADK step by step and explore its strengths and limitations.

In the next post, we’ll set up the ADK development environment and build the first agent.
143 changes: 143 additions & 0 deletions _posts_en/adk/2025-10-28-02-adk-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
---
date: 2025-10-28
order: 2
subtitle: ''
title: ADK Basic Setup
---


Now let’s properly test ADK.

Everything here is tested using the Python SDK.

## Test environment

Here’s what I’m using:

- Python 3.12
- uv
- gpt-5-nano

ADK really shines with Gemini and Vertex AI. However, to compare its strengths and differences with other tools, we’ll use a third-party LLM.

## Environment setup

First, set up uv as follows. If you don’t have pyenv or uv installed, install them first or skip these steps and use your own setup.

```bash
mkdir adk-test && cd adk-test
pyenv local 3.12.7
uv init
uv venv
uv add google-adk
```

With the commands above, the environment setup is complete.

## Create an ADK Agent

```bash
uv run adk create my_agent
```

When you run this command, you’ll see options like below. I chose 2.

```bash
Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)
Choose model (1, 2): 2
```

## Configure the LLM model

Now prepare the LLM model. I’ll set this up using pydantic.

```bash
uv add pydantic-settings
```



```python
"""pydantic Settings"""

from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
"""Settings for the application"""

model_config = SettingsConfigDict(env_file=".env")
OPENAI_API_KEY: str = ""
OPENAI_MODEL: str = "gpt-5-nano"

settings = Settings()
```

Set it up like above, then provide OPENAI_API_KEY via a .env file or by exporting it, for example: export OPENAI_API_KEY="sk-~~".

Next, set up litellm. With ADK, to use models other than Gemini or Vertex AI, you need to go through the litellm library. This adds an extra dependency and a middle layer, which makes it more complex than a direct integration—likely one downside of ADK.

```bash
uv add litellm
```

After that, configure my_agent/agent.py like this:



```python
"""My Agent"""

from google.adk.agents.llm_agent import Agent
from google.adk.models.lite_llm import LiteLlm

from settings import settings

root_agent = Agent(
model=LiteLlm(model=settings.OPENAI_MODEL),
name="root_agent",
description="A helpful assistant for user questions.",
instruction="Answer user questions to the best of your knowledge",
)
```

## Run the Agent

We’ve now set up a very simple Agent. Let’s run it.

```bash
uv run adk run my_agent
```

When you run the command above, you’ll see a [user]: prompt, and it will respond to your input.

```bash
[user]: hello
23:24:51 - LiteLLM:INFO: utils.py:3416 -
LiteLLM completion() model= gpt-5-nano; provider = openai
[root_agent]: Hello! How can I help today? I can answer questions, explain concepts, help with writing, brainstorm ideas, plan tasks, or provide quick summaries. If you have a topic in mind, tell me and I’ll dive in.
```

## Use the web interface

If you want a more distinctive ADK experience, there’s also a way to test via the web.

```bash
uv run adk web
```

Visit http://127.0.0.1:8000/ and you’ll see a screen like this.

![ADK web interface initial screen](/assets/img/2025-10-28-02-adk-setup/image-20251028232944459.png)
*ADK web interface initial screen*



This is ADK’s built-in web interface, which lets you visually monitor the Agent’s execution. After entering a prompt, you can monitor the run as shown below.

![Agent run monitoring screen](/assets/img/2025-10-28-02-adk-setup/image-20251028233029460.png)
*Agent run monitoring screen*

If you have time, I recommend watching the video Introducing Agent Development Kit: https://www.youtube.com/watch?v=zgrOwow_uTQ
2 changes: 1 addition & 1 deletion _sass/base/_global.scss
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ h4 {
}
blockquote {
border-left: 2px solid;
padding: 1em 1em;
padding: 0.5em 1em;
}
blockquote p:last-child,
footer p:last-child {
Expand Down
Loading