Agent Development Kit (ADK)¶
์์ด์ ํธ์ ๊ตฌ์ถ, ํ๊ฐ, ๋ฐฐํฌ๋ฅผ ์ํํ๊ฒ!
ADK๋ ๊ฐ๋ฐ์๊ฐ AI ๊ธฐ๋ฐ ์์ด์ ํธ๋ฅผ ๊ตฌ์ถ, ๊ด๋ฆฌ, ํ๊ฐ ๋ฐ ๋ฐฐํฌํ ์ ์๋๋ก ์ง์ํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ADK๋ ๋ณต์กํ ์์ ๊ณผ ์ํฌํ๋ก์ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ํํ ๋ฐ ๋น๋ํํ ์์ด์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๊ฒฌ๊ณ ํ๊ณ ์ ์ฐํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.

ํต์ฌ ๊ฐ๋ ¶
ADK๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ํต์ฌ ์์์ ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. ํ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์์ด์ ํธ(Agent): ํน์ ์์
์ ์ํด ์ค๊ณ๋ ๊ธฐ๋ณธ์ ์ธ ์์
๋จ์(worker unit)์
๋๋ค. ์์ด์ ํธ๋ ๋ณต์กํ ์ถ๋ก ์ ์ํด ์ธ์ด ๋ชจ๋ธ(
LlmAgent)์ ์ฌ์ฉํ๊ฑฐ๋, ์คํ์ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์ ์ดํ๋ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ์ํฌํ๋ก์ฐ ์์ด์ ํธ (SequentialAgent,ParallelAgent,LoopAgent)๊ฐ ๋ ์ ์์ต๋๋ค. - ํด(Tool): ์์ด์ ํธ์๊ฒ ๋ํ๋ฅผ ๋์ด์ ๋ฅ๋ ฅ์ ๋ถ์ฌํ์ฌ ์ธ๋ถ API์ ์ํธ์์ฉํ๊ฑฐ๋, ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ฑฐ๋, ์ฝ๋๋ฅผ ์คํํ๊ฑฐ๋, ๋ค๋ฅธ ์๋น์ค๋ฅผ ํธ์ถํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ฝ๋ฐฑ(Callbacks): ์์ด์ ํธ ํ๋ก์ธ์ค์ ํน์ ์ง์ ์์ ์คํ๋๋๋ก ์ ๊ณตํ๋ ์ฌ์ฉ์ ์ ์ ์ฝ๋ ์กฐ๊ฐ์ผ๋ก, ํ์ธ, ๋ก๊น ๋๋ ๋์ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ธ์
๊ด๋ฆฌ(
Session&State): ๋จ์ผ ๋ํ์ ์ปจํ ์คํธ(Session)๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ์ฌ๊ธฐ์๋ ๋ํ ๊ธฐ๋ก(Events)๊ณผ ํด๋น ๋ํ์ ๋ํ ์์ด์ ํธ์ ์์ ๋ฉ๋ชจ๋ฆฌ(State)๊ฐ ํฌํจ๋ฉ๋๋ค. - ๋ฉ๋ชจ๋ฆฌ(Memory): ์์ด์ ํธ๊ฐ ์ฌ๋ฌ ์ธ์
์ ๊ฑธ์ณ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ์ ์๊ฒ ํ์ฌ ์ฅ๊ธฐ์ ์ธ ์ปจํ
์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค (๋จ๊ธฐ์ ์ธ ์ธ์
State์๋ ๊ตฌ๋ณ๋จ). - ์ํฐํฉํธ ๊ด๋ฆฌ(
Artifact): ์์ด์ ํธ๊ฐ ์ธ์ ๋๋ ์ฌ์ฉ์์ ๊ด๋ จ๋ ํ์ผ์ด๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ(์ด๋ฏธ์ง, PDF ๋ฑ)๋ฅผ ์ ์ฅ, ๋ก๋ ๋ฐ ๊ด๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค. - ์ฝ๋ ์คํ(Code Execution): ์์ด์ ํธ๊ฐ (์ฃผ๋ก ํด์ ํตํด) ๋ณต์กํ ๊ณ์ฐ์ด๋ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
- ๊ณํ(Planning): ์์ด์ ํธ๊ฐ ๋ณต์กํ ๋ชฉํ๋ฅผ ๋ ์์ ๋จ๊ณ๋ก ๋๋๊ณ ReAct ํ๋๋์ฒ๋ผ ๋ชฉํ ๋ฌ์ฑ ๋ฐฉ๋ฒ์ ๊ณํํ ์ ์๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ๋๋ค.
- ๋ชจ๋ธ(Models):
LlmAgent๋ฅผ ๊ตฌ๋ํ๋ ๊ธฐ๋ฐ LLM์ผ๋ก, ์์ด์ ํธ์ ์ถ๋ก ๋ฐ ์ธ์ด ์ดํด ๋ฅ๋ ฅ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. - ์ด๋ฒคํธ(Event): ์ธ์ ์ค์ ๋ฐ์ํ๋ ์ผ(์ฌ์ฉ์ ๋ฉ์์ง, ์์ด์ ํธ ์๋ต, ํด ์ฌ์ฉ ๋ฑ)์ ๋ํ๋ด๋ ๊ธฐ๋ณธ์ ์ธ ํต์ ๋จ์๋ก, ๋ํ ๊ธฐ๋ก์ ํ์ฑํฉ๋๋ค.
- ๋ฌ๋(Runner): ์คํ ํ๋ฆ์ ๊ด๋ฆฌํ๊ณ , ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ด์ ํธ ์ํธ์์ฉ์ ์กฐ์จํ๋ฉฐ, ๋ฐฑ์๋ ์๋น์ค์ ํ๋ ฅํ๋ ์์ง์ ๋๋ค.
์ฐธ๊ณ : ๋ฉํฐ๋ชจ๋ฌ ์คํธ๋ฆฌ๋ฐ, ํ๊ฐ, ๋ฐฐํฌ, ๋๋ฒ๊น , ์ถ์ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค๋ ๋ ๋์ ADK ์ํ๊ณ์ ์ผ๋ถ์ด๋ฉฐ, ์ค์๊ฐ ์ํธ์์ฉ๊ณผ ๊ฐ๋ฐ ๋ผ์ดํ์ฌ์ดํด์ ์ง์ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ¶
ADK๋ ์์ด์ ํธ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๋ฉํฐ ์์ด์ ํธ ์์คํ
์ค๊ณ: ๊ณ์ธต์ ์ผ๋ก ๋ฐฐ์ด๋ ์ฌ๋ฌ ์ ๋ฌธํ๋ ์์ด์ ํธ๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์์ด์ ํธ๋ ๋ณต์กํ ์์
์ ์กฐ์จํ๊ณ , LLM ๊ธฐ๋ฐ์ ์ ๋ฌ ๋๋ ๋ช
์์ ์ธ
AgentToolํธ์ถ์ ํตํด ํ์ ์์ ์ ์์ํ์ฌ ๋ชจ๋์์ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ๊ตฌํํ ์ ์์ต๋๋ค. - ํ๋ถํ ํด ์ํ๊ณ: ์์ด์ ํธ์๊ฒ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ฒ ํฉ๋๋ค. ADK๋ ์ฌ์ฉ์ ์ ์ ํจ์(
FunctionTool) ํตํฉ, ๋ค๋ฅธ ์์ด์ ํธ๋ฅผ ํด๋ก ์ฌ์ฉ(AgentTool), ์ฝ๋ ์คํ๊ณผ ๊ฐ์ ๋ด์ฅ ๊ธฐ๋ฅ ํ์ฉ, ์ธ๋ถ ๋ฐ์ดํฐ ์์ค ๋ฐ API(์: ๊ฒ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค)์์ ์ํธ์์ฉ์ ์ง์ํฉ๋๋ค. ์ฅ๊ธฐ ์คํ ํด์ ์ง์ํ์ฌ ๋น๋๊ธฐ ์์ ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. - ์ ์ฐํ ์ค์ผ์คํธ๋ ์ด์
: ๋ด์ฅ๋ ์ํฌํ๋ก์ฐ ์์ด์ ํธ(
SequentialAgent,ParallelAgent,LoopAgent)์ LLM ๊ธฐ๋ฐ์ ๋์ ๋ผ์ฐํ ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ณต์กํ ์์ด์ ํธ ์ํฌํ๋ก์ฐ๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ธก ๊ฐ๋ฅํ ํ์ดํ๋ผ์ธ๊ณผ ์ ์ํ ์์ด์ ํธ ๋์์ ๋ชจ๋ ๊ตฌํํ ์ ์์ต๋๋ค. - ํตํฉ๋ ๊ฐ๋ฐ์ ๋๊ตฌ: ์ฝ๊ฒ ๋ก์ปฌ์์ ๊ฐ๋ฐํ๊ณ ๋ฐ๋ณต ์์ ์ ์ํํฉ๋๋ค. ADK๋ ์์ด์ ํธ ์คํ, ์คํ ๋จ๊ณ(์ด๋ฒคํธ, ์ํ ๋ณ๊ฒฝ) ๊ฒ์ฌ, ์ํธ์์ฉ ๋๋ฒ๊น , ์์ด์ ํธ ์ ์ ์๊ฐํ๋ฅผ ์ํ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI) ๋ฐ ๊ฐ๋ฐ์ UI์ ๊ฐ์ ๋๊ตฌ๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ค์ดํฐ๋ธ ์คํธ๋ฆฌ๋ฐ ์ง์: ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ(ํ ์คํธ ๋ฐ ์ค๋์ค)์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ๋ผ์ด๋ธ ๋ฐ ์์ฑ ์์ด์ ํธ๋ฅผ ํตํด ์ค์๊ฐ ๋ํํ ๊ฒฝํ์ ๊ตฌ์ถํฉ๋๋ค. ์ด๋ Gemini Developer API์ฉ Gemini Live API ๋ฐ Vertex AI์ฉ Live API์ ๊ฐ์ ๊ธฐ๋ฐ ๊ธฐ๋ฅ๊ณผ ์ํํ๊ฒ ํตํฉ๋๋ฉฐ, ๋๊ฐ ๊ฐ๋จํ ๊ตฌ์ฑ ๋ณ๊ฒฝ๋ง์ผ๋ก ํ์ฑํํ ์ ์์ต๋๋ค.
- ๋ด์ฅ๋ ์์ด์ ํธ ํ๊ฐ: ์์ด์ ํธ ์ฑ๋ฅ์ ์ฒด๊ณ์ ์ผ๋ก ํ๊ฐํฉ๋๋ค. ์ด ํ๋ ์์ํฌ๋ ๋ฉํฐํด(multi-turn) ํ๊ฐ ๋ฐ์ดํฐ์ ์ ์์ฑํ๊ณ , ํ์ง ์ธก์ ๋ฐ ๊ฐ์ ๋ฐฉํฅ์ ์๋ดํ๊ธฐ ์ํด ๋ก์ปฌ์์(CLI ๋๋ ๊ฐ๋ฐ UI๋ฅผ ํตํด) ํ๊ฐ๋ฅผ ์คํํ๋ ๋๊ตฌ๋ฅผ ํฌํจํฉ๋๋ค.
- ๊ด๋ฒ์ํ LLM ์ง์: Google์ Gemini ๋ชจ๋ธ์ ์ต์ ํ๋์ด ์์ง๋ง, ํ๋ ์์ํฌ๋ ์ ์ฐ์ฑ์ ์ํด ์ค๊ณ๋์ด
BaseLlm์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ค์ํ LLM(์คํ ์์ค ๋๋ ํ์ธํ๋๋ ๋ชจ๋ธ ํฌํจ)๊ณผ ํตํฉํ ์ ์์ต๋๋ค. - ์ํฐํฉํธ ๊ด๋ฆฌ: ์์ด์ ํธ๊ฐ ํ์ผ๊ณผ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค. ํ๋ ์์ํฌ๋ ์์ด์ ํธ๊ฐ ์คํ ์ค์ ์ด๋ฏธ์ง, ๋ฌธ์ ๋๋ ์์ฑ๋ ๋ณด๊ณ ์์ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ๋ ์ํฐํฉํธ๋ฅผ ์ ์ฅ, ๋ก๋ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ์ปค๋์ฆ(
ArtifactService, ์ปจํ ์คํธ ๋ฉ์๋)์ ์ ๊ณตํฉ๋๋ค. - ํ์ฅ์ฑ ๋ฐ ์ํธ ์ด์ฉ์ฑ: ADK๋ ๊ฐ๋ฐฉํ ์ํ๊ณ๋ฅผ ์งํฅํฉ๋๋ค. ํต์ฌ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉด์๋ ๊ฐ๋ฐ์๊ฐ ์๋ํํฐ ํด๊ณผ ๋ฐ์ดํฐ ์ปค๋ฅํฐ๋ฅผ ์ฝ๊ฒ ํตํฉํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ํ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ:
SessionService์ ์ํด ๊ด๋ฆฌ๋๋ ๋จ๊ธฐ์ ์ธ ๋ํ ๋ฉ๋ชจ๋ฆฌ(Session๋ด์State)๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฅ๊ธฐ์ ์ธMemory์๋น์ค๋ฅผ ์ํ ํตํฉ ์ง์ ์ ์ ๊ณตํ์ฌ ์์ด์ ํธ๊ฐ ์ฌ๋ฌ ์ธ์ ์ ๊ฑธ์ณ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ์ ์๊ฒ ํฉ๋๋ค.

์์ํ๊ธฐ¶
- ์ฒซ ๋ฒ์งธ ์์ด์ ํธ๋ฅผ ๋ง๋ค ์ค๋น๊ฐ ๋์ จ๋์? ์์ํ๊ธฐ๋ฅผ ํ์ธํด ๋ณด์ธ์!