Skip to content

Commit 517ee88

Browse files
authored
Feat/adk0 (#11)
* adk 추가 * delete not use file * chore: add English translations for PR #11 * fix workflow * chore: add English translations for PR #11
1 parent 6becf15 commit 517ee88

File tree

14 files changed

+396
-10
lines changed

14 files changed

+396
-10
lines changed

.github/workflows/translate-to-english.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,6 @@ jobs:
6969
uses: stefanzweifel/git-auto-commit-action@v5
7070
with:
7171
commit_message: "chore: add English translations for PR #${{ github.event.pull_request.number }}"
72-
file_pattern: _posts_en/*.md
72+
file_pattern: _posts_en/**/*.md
7373

7474

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
_site
66
Gemfile.lock
77
vendor/
8+
.playwright-mcp/*
-15.2 KB
Binary file not shown.

_includes/head.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
{% endif %}
4040

4141
<!-- Google Analytics -->
42-
{% if site.theme_settings.google_analytics %}
42+
{% if site.theme_settings.google_analytics and jekyll.environment == 'production' %}
4343
<!-- Google tag (gtag.js) -->
4444
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.theme_settings.google_analytics }}"></script>
4545
<script>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: "1. ADK 소개"
3+
subtitle: ""
4+
order: 1
5+
date: 2025-10-20
6+
---
7+
8+
최근 다양한 Agent 개발 도구들이 등장하고 있다. 그중에서도 나는 Google의 **ADK (Agent Development Kit)**를 가장 주목하고 있다. 구글에서 발표했다는 점에서 관심을 가지게 되었지만, 그 외에도 눈에 띄는 부분이 많다.
9+
10+
ADK는 이름 그대로 "Agent 개발 킷"으로, 단순한 SDK 수준을 넘어 **A2A (Agent to Agent)** 프로토콜을 기반으로 한 **표준화된 Agent 개발 프레임워크**를 제공한다. 이 부분이 내가 가장 주목하고 있는 이유다. 이를 통해 개발자는 복잡한 Agent 간 통신 로직을 직접 구현하지 않고도, 표준화된 방식으로 Agent를 설계하고 배포할 수 있다.
11+
12+
현재 AI Agent 생태계는 다양한 프레임워크들로 가득하다. LangChain, AutoGen, Agno, Swarm(OpenAI Agent SDK), CrewAI와 같은 수많은 에이전트 툴들과, 심지어 n8n 같은 노코드 툴까지 존재한다. 사실 개인적인 생각은 Agno같은 특수 목적을 가진 툴들을 제외하고는 비슷하다고 느껴진다. 이런 상황에서 나는, 커뮤니티 및 스폰서가 강한 오픈소스를 선택하게 된다.
13+
14+
ADK와 다른 프레임워크의 차이점을 하나 뽑으라고 하면, 나는 **ADK는 Agent 간의 통신과 상호작용을 표준화하는 것(A2A)에 집중**한다는 부분을 뽑고 싶다. 멀티 Agent 시스템을 통해 복잡한 태스크를 효율적으로 처리하겠다는 Google의 비전이 명확히 드러나는 부분이다.
15+
16+
즉, **ADK는 단순히 하나의 Agent 개발 도구가 아니라, 여러 Agent들이 협업할 수 있게 하는 인프라 수준의 표준을 제공한다는 점에서 차별화**된다.
17+
18+
19+
20+
ADK의 핵심 철학은 명확하다. — **"AI Agent 간의 협업을 표준화하자."**
21+
22+
다른 Agent 시스템들은 각자의 프레임워크 내에서만 작동하는 폐쇄적인 구조를 가지고 있다. 각자의 시스템 안에서 멀티 에이전트를 지원하는 방식이 많다. 하지만 ADK는 이를 **인터넷의 HTTP 프로토콜처럼 모든 Agent가 공통 언어로 소통할 수 있는 환경**으로 확장한다.
23+
24+
> 참고: ADK와 A2A 프로토콜은 엄밀히 말하면 다른 개념이다. 이 부분은 이후 챕터에서 다루도록 하겠다.
25+
26+
ADK와 A2A 덕분에 서로 다른 팀이나 조직에서 만든 Agent들도 동일한 프로토콜을 통해 손쉽게 통합될 수 있다. 이것이 바로 수많은 툴들 사이에서 ADK가 특별히 주목받는 이유이다. 각자의 팀에서 각자의 에이전트를 잘 만드는 에이전트 거버넌스를 만들 수 있지 않을까 싶다.
27+
28+
물론 향후 Agent 시장이 어떻게 변화할지는 아직 미지수이다. 하지만 ADK와 A2A의 핵심 개념을 이해하면, 다른 Agent 프레임워크들도 훨씬 쉽게 접근할 수 있다고 생각한다.
29+
30+
서론이 너무 길었다. 이제 ADK를 본격적으로 하나씩 테스트해보고, ADK의 장점과 한계점을 찾아보고자 한다.
31+
32+
다음 글에서는 ADK의 개발 환경을 설정하고, 첫 번째 Agent를 만들어보는 과정을 다룰 예정이다.
33+
34+
35+
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
---
2+
title: "ADK 기본 셋업"
3+
subtitle: ""
4+
order: 2
5+
date: 2025-10-28
6+
---
7+
8+
이제 본격적으로 ADK를 테스트해보자.
9+
10+
모든 내용은 Python SDK를 이용해 테스트한다.
11+
12+
## 테스트 환경
13+
14+
내가 사용하는 환경은 다음과 같다.
15+
16+
- Python 3.12
17+
- uv
18+
- gpt-5-nano
19+
20+
ADK의 경우, Gemini 및 Vertex AI를 사용해야 강점을 더 느낄 수 있다. 하지만 다른 툴들과의 장점 및 차별점을 경험해보기 위해, 타사의 LLM을 사용하도록 한다.
21+
22+
## 환경 설정
23+
24+
가장 먼저 uv 셋업은 다음과 같이 한다. pyenv 및 uv가 셋업되지 않은 사람은, 미리 설치하거나 해당 과정을 제외하고 본인의 환경을 사용해도 좋다.
25+
26+
```bash
27+
mkdir adk-test && cd adk-test
28+
pyenv local 3.12.7
29+
uv init
30+
uv venv
31+
uv add google-adk
32+
```
33+
34+
위의 커맨드들을 통해, 환경 셋업은 완료된다.
35+
36+
## ADK Agent 생성
37+
38+
```bash
39+
uv run adk create my_agent
40+
```
41+
42+
위의 커맨드를 입력하면, 아래와 같이 선택지를 주는데, 나는 2를 입력했다.
43+
44+
```bash
45+
Choose a model for the root agent:
46+
1. gemini-2.5-flash
47+
2. Other models (fill later)
48+
Choose model (1, 2): 2
49+
```
50+
51+
## LLM 모델 설정
52+
53+
이제 LLM모델을 준비한다. 나는 이 과정에서 pydantic을 이용한 셋업을 진행한다.
54+
55+
```bash
56+
uv add pydantic-settings
57+
```
58+
59+
60+
61+
```python
62+
"""pydantic Settings"""
63+
64+
from pydantic_settings import BaseSettings, SettingsConfigDict
65+
66+
67+
class Settings(BaseSettings):
68+
"""Settings for the application"""
69+
70+
model_config = SettingsConfigDict(env_file=".env")
71+
OPENAI_API_KEY: str = ""
72+
OPENAI_MODEL: str = "gpt-5-nano"
73+
74+
settings = Settings()
75+
```
76+
77+
위와 같이 셋업하고, `.env` 파일 혹은, `export OPENAI_API_KEY="sk-~~"` OPENAI_API_KEY를 주입해주면 완료된다.
78+
79+
80+
81+
이제 litellm을 셋업하는 단계가 필요하다. ADK의 경우 Gemini 혹은 Vertex AI 외에 다른 모델을 사용하려면 litellm 라이브러리를 통해 사용해야 한다. 이는 추가 의존성을 가져오고, 중간 레이어를 거치게 되어 직접 통합보다 복잡도가 증가한다는 점에서 ADK의 단점 중 하나일 것 같다.
82+
83+
```bash
84+
uv add litellm
85+
```
86+
87+
이렇게 셋업하고, 다시 `my_agent/agent.py` 에 아래와 같이 셋업하면 된다.
88+
89+
90+
91+
```python
92+
"""My Agent"""
93+
94+
from google.adk.agents.llm_agent import Agent
95+
from google.adk.models.lite_llm import LiteLlm
96+
97+
from settings import settings
98+
99+
root_agent = Agent(
100+
model=LiteLlm(model=settings.OPENAI_MODEL),
101+
name="root_agent",
102+
description="A helpful assistant for user questions.",
103+
instruction="Answer user questions to the best of your knowledge",
104+
)
105+
```
106+
107+
## Agent 실행
108+
109+
이제 매우 간단한 Agent가 셋업이 완료되었다. 이를 실행시켜보자.
110+
111+
```bash
112+
uv run adk run my_agent
113+
```
114+
115+
위의 명령어로 실행시키면, 다음과 같이 [user]: 입력이 생기고, 입력할 경우 답변이 온다.
116+
117+
```bash
118+
[user]: hello
119+
23:24:51 - LiteLLM:INFO: utils.py:3416 -
120+
LiteLLM completion() model= gpt-5-nano; provider = openai
121+
[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.
122+
```
123+
124+
## 웹 인터페이스 사용
125+
126+
ADK의 특별한 경험을 하고 싶으면 web으로 테스트할 수 있는 방법도 있다.
127+
128+
```bash
129+
uv run adk web
130+
```
131+
132+
`http://127.0.0.1:8000/`로 접속하면 다음과 같은 화면을 볼 수 있다.
133+
134+
![ADK 웹 인터페이스 초기 화면](/assets/img/2025-10-28-02-adk-setup/image-20251028232944459.png)
135+
*ADK 웹 인터페이스 초기 화면*
136+
137+
138+
139+
해당 방법은 ADK의 내장 웹 인터페이스로, Agent의 실행 과정을 시각적으로 모니터링할 수 있다. 답변을 입력하면 아래와 같이 모니터링을 할 수 있다.
140+
141+
![Agent 실행 과정 모니터링 화면](/assets/img/2025-10-28-02-adk-setup/image-20251028233029460.png)
142+
*Agent 실행 과정 모니터링 화면*
143+
144+
시간이 있다면 [Introducing Agent Development Kit](https://www.youtube.com/watch?v=zgrOwow_uTQ) 영상을 보는 것을 추천한다.
145+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
date: 2025-10-20
3+
order: 1
4+
subtitle: ''
5+
title: 1. Introduction to ADK
6+
---
7+
8+
9+
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.
10+
11+
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.
12+
13+
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.
14+
15+
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.
16+
17+
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.**
18+
19+
ADK’s core philosophy is clear — **“Standardize collaboration between AI agents.”**
20+
21+
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**.
22+
23+
> Note: Strictly speaking, ADK and the A2A protocol are different concepts. I’ll cover this in a later chapter.
24+
25+
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.
26+
27+
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.
28+
29+
Enough preamble. Now I’m going to test ADK step by step and explore its strengths and limitations.
30+
31+
In the next post, we’ll set up the ADK development environment and build the first agent.
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
---
2+
date: 2025-10-28
3+
order: 2
4+
subtitle: ''
5+
title: ADK Basic Setup
6+
---
7+
8+
9+
Now let’s properly test ADK.
10+
11+
Everything here is tested using the Python SDK.
12+
13+
## Test environment
14+
15+
Here’s what I’m using:
16+
17+
- Python 3.12
18+
- uv
19+
- gpt-5-nano
20+
21+
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.
22+
23+
## Environment setup
24+
25+
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.
26+
27+
```bash
28+
mkdir adk-test && cd adk-test
29+
pyenv local 3.12.7
30+
uv init
31+
uv venv
32+
uv add google-adk
33+
```
34+
35+
With the commands above, the environment setup is complete.
36+
37+
## Create an ADK Agent
38+
39+
```bash
40+
uv run adk create my_agent
41+
```
42+
43+
When you run this command, you’ll see options like below. I chose 2.
44+
45+
```bash
46+
Choose a model for the root agent:
47+
1. gemini-2.5-flash
48+
2. Other models (fill later)
49+
Choose model (1, 2): 2
50+
```
51+
52+
## Configure the LLM model
53+
54+
Now prepare the LLM model. I’ll set this up using pydantic.
55+
56+
```bash
57+
uv add pydantic-settings
58+
```
59+
60+
61+
62+
```python
63+
"""pydantic Settings"""
64+
65+
from pydantic_settings import BaseSettings, SettingsConfigDict
66+
67+
68+
class Settings(BaseSettings):
69+
"""Settings for the application"""
70+
71+
model_config = SettingsConfigDict(env_file=".env")
72+
OPENAI_API_KEY: str = ""
73+
OPENAI_MODEL: str = "gpt-5-nano"
74+
75+
settings = Settings()
76+
```
77+
78+
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-~~".
79+
80+
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.
81+
82+
```bash
83+
uv add litellm
84+
```
85+
86+
After that, configure my_agent/agent.py like this:
87+
88+
89+
90+
```python
91+
"""My Agent"""
92+
93+
from google.adk.agents.llm_agent import Agent
94+
from google.adk.models.lite_llm import LiteLlm
95+
96+
from settings import settings
97+
98+
root_agent = Agent(
99+
model=LiteLlm(model=settings.OPENAI_MODEL),
100+
name="root_agent",
101+
description="A helpful assistant for user questions.",
102+
instruction="Answer user questions to the best of your knowledge",
103+
)
104+
```
105+
106+
## Run the Agent
107+
108+
We’ve now set up a very simple Agent. Let’s run it.
109+
110+
```bash
111+
uv run adk run my_agent
112+
```
113+
114+
When you run the command above, you’ll see a [user]: prompt, and it will respond to your input.
115+
116+
```bash
117+
[user]: hello
118+
23:24:51 - LiteLLM:INFO: utils.py:3416 -
119+
LiteLLM completion() model= gpt-5-nano; provider = openai
120+
[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.
121+
```
122+
123+
## Use the web interface
124+
125+
If you want a more distinctive ADK experience, there’s also a way to test via the web.
126+
127+
```bash
128+
uv run adk web
129+
```
130+
131+
Visit http://127.0.0.1:8000/ and you’ll see a screen like this.
132+
133+
![ADK web interface initial screen](/assets/img/2025-10-28-02-adk-setup/image-20251028232944459.png)
134+
*ADK web interface initial screen*
135+
136+
137+
138+
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.
139+
140+
![Agent run monitoring screen](/assets/img/2025-10-28-02-adk-setup/image-20251028233029460.png)
141+
*Agent run monitoring screen*
142+
143+
If you have time, I recommend watching the video Introducing Agent Development Kit: https://www.youtube.com/watch?v=zgrOwow_uTQ

_sass/base/_global.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ h4 {
5353
}
5454
blockquote {
5555
border-left: 2px solid;
56-
padding: 1em 1em;
56+
padding: 0.5em 1em;
5757
}
5858
blockquote p:last-child,
5959
footer p:last-child {

0 commit comments

Comments
 (0)