{"id":482,"date":"2025-09-05T21:41:39","date_gmt":"2025-09-05T12:41:39","guid":{"rendered":"http:\/\/qmac.kr\/wordpress\/?p=482"},"modified":"2025-09-05T22:07:43","modified_gmt":"2025-09-05T13:07:43","slug":"agent-development-kit","status":"publish","type":"post","link":"http:\/\/qmac.kr\/wordpress\/agent-development-kit\/","title":{"rendered":"Agent Development Kit"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" src=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46-1024x619.png\" alt=\"\" class=\"wp-image-483\" srcset=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46-1024x619.png 1024w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46-300x181.png 300w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46-768x464.png 768w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46-1536x928.png 1536w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-05-21.38.46.png 1815w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud558\ub294 \uad6c\uae00 \uc5d0\uc774\uc804\ud2b8 \uac1c\ubc1c \ub3c4\uad6c<\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">cursor \uae30\ubc18 \uad6c\uae00 \uc5d0\uc774\uc804\ud2b8 \uac1c\ubc1c\ub3c4\uad6c \uc18c\uac1c<\/h1>\n\n\n\n<p>I&#8217;ll scan both project directories to locate READMEs and high-level docs, and do a quick semantic sweep to spot entry points. Then I&#8217;ll open any discovered README files.<\/p>\n\n\n\n<p>[5 tools called]<\/p>\n\n\n\n<p>I&#8217;ll quickly list a couple of sample directories and search for the CLI commands to run the dev UI and server so I can give you accurate quickstart steps.<\/p>\n\n\n\n<p>[4 tools called]<\/p>\n\n\n\n<p>I scanned both paths. <code>2509qmac<\/code> has no files. <code>adk-python-main<\/code> is a full Python toolkit for building and running AI agents.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud55c \uc904 \uc694\uc57d<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Agent Development Kit (ADK)<\/strong>: Python \uae30\ubc18 \uc624\ud508\uc18c\uc2a4 \uc5d0\uc774\uc804\ud2b8 \ud504\ub808\uc784\uc6cc\ud06c. Gemini \ucd5c\uc801\ud654\uc9c0\ub9cc \ubaa8\ub378\/\ubc30\ud3ec \ubb34\uad00. \uc5d0\uc774\uc804\ud2b8 \uc815\uc758, \ub3c4\uad6c \ud638\ucd9c, \uba40\ud2f0\uc5d0\uc774\uc804\ud2b8 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158, \ud3c9\uac00\/\ub514\ubc84\uae45 UI\uc640 CLI \uc81c\uacf5.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud575\uc2ec \uae30\ub2a5<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud48d\ubd80\ud55c \ub3c4\uad6c \uc0dd\ud0dc\uacc4<\/strong>: \ub0b4\uc7a5\/\ucee4\uc2a4\ud140 \ud568\uc218, OpenAPI, Google \uc0dd\ud0dc\uacc4 \uc5f0\ub3d9 \ub3c4\uad6c.<\/li>\n\n\n\n<li><strong>\ucf54\ub4dc-\uc6b0\uc120 \uc124\uacc4<\/strong>: \uc5d0\uc774\uc804\ud2b8\/\ud234\/\uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158\uc744 Python \ucf54\ub4dc\ub85c \uc120\uc5b8.<\/li>\n\n\n\n<li><strong>\uba40\ud2f0 \uc5d0\uc774\uc804\ud2b8<\/strong>: \uacc4\uce35\ud615\/\ud611\uc5c5 \uad6c\uc870 \uad6c\uc131.<\/li>\n\n\n\n<li><strong>\ubc30\ud3ec \ubb34\uad00<\/strong>: \ub85c\uceec, Cloud Run, Vertex AI Agent Engine \ub4f1.<\/li>\n\n\n\n<li><strong>Dev UI\/CLI<\/strong>: <code>adk web<\/code>(\uc6f9 UI), <code>adk api_server<\/code>(\ub85c\uceec API), <code>adk eval<\/code>(\ud3c9\uac00).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\uc544\ud0a4\ud14d\ucc98 \uac1c\ub150<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Agent<\/strong>: \uc815\uccb4\uc131\/\uc9c0\uc2dc\ubb38\/\ub3c4\uad6c\ub97c \ub2f4\ub294 \uc120\uc5b8\uc801 \uac1d\uccb4.<\/li>\n\n\n\n<li><strong>Tool<\/strong>: \uc5d0\uc774\uc804\ud2b8\uac00 \ud638\ucd9c\ud558\ub294 \ub2a5\ub825(\ud568\uc218).<\/li>\n\n\n\n<li><strong>Runner<\/strong>: Reason-Act \ub8e8\ud504\/LLM \ud638\ucd9c\/\ud234 \uc2e4\ud589 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\uc158.<\/li>\n\n\n\n<li><strong>Session\/Memory\/Artifact Service<\/strong>: \ub300\ud654 \uc0c1\ud0dc\/\uc7a5\uae30\uae30\uc5b5\/\ud30c\uc77c \ub4f1 \uc544\ud2f0\ud329\ud2b8 \uad00\ub9ac.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac \uad6c\uc870(\uc8fc\uc694)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>src\/google\/adk\/...<\/code>: ADK \ud575\uc2ec \ub77c\uc774\ube0c\ub7ec\ub9ac<\/li>\n\n\n\n<li><code>contributing\/samples\/...<\/code>: \ub2e4\uc591\ud55c \uc0d8\ud50c \uc5d0\uc774\uc804\ud2b8\uc640 \uc124\uc815<\/li>\n\n\n\n<li><code>tests\/...<\/code>: \ub2e8\uc704\/\ud1b5\ud569 \ud14c\uc2a4\ud2b8<\/li>\n\n\n\n<li>\ub8e8\ud2b8\uc758 <code>README.md<\/code>, <code>AGENTS.md<\/code>, <code>CHANGELOG.md<\/code>, <code>pyproject.toml<\/code> \ub4f1 \ubb38\uc11c\/\uc124\uc815<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ucf54\ub4dc\ub85c \uc5d0\uc774\uc804\ud2b8 \uc815\uc758(\uc608\uc2dc)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents import Agent\nfrom google.adk.tools import google_search\n\nroot_agent = Agent(\n    name=\"search_assistant\",\n    model=\"gemini-2.0-flash\", # Or your preferred Gemini model\n    instruction=\"You are a helpful assistant. Answer user questions using Google Search when needed.\",\n    description=\"An assistant that can search the web.\",\n    tools=&#91;google_search]\n)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ube60\ub978 \uc2dc\uc791<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc124\uce58:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install google-adk<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dev UI \uc2e4\ud589(\ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc5d0\uc11c):<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adk web<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub85c\uceec API \uc11c\ubc84:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adk api_server<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud3c9\uac00 \uc2e4\ud589:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adk eval &lt;AGENT_MODULE_PATH&gt; &lt;EVAL_SET_FILE&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc0d8\ud50c \uc704\uce58<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac04\ub2e8 \uc608: <code>contributing\/samples\/hello_world\/<\/code> (\uc5ec\ub7ec \uc0d8\ud50c \ud3f4\ub354\uc5d0\uc11c <code>agent.py<\/code> \ud655\uc778)<\/li>\n\n\n\n<li>\uc694\uc57d: <code>adk-python-main<\/code>\uc740 \uc5d0\uc774\uc804\ud2b8\ub97c \ucf54\ub4dc\ub85c \uc815\uc758\ud558\uace0, \uc6f9 UI\/CLI\ub85c \uc2e4\ud5d8\u00b7\ud3c9\uac00\u00b7\ubc30\ud3ec\uae4c\uc9c0 \uc774\uc5b4\uc9c0\ub294 \ud480\uc2a4\ud0dd \uc5d0\uc774\uc804\ud2b8 \uac1c\ubc1c \ud0a4\ud2b8\uc785\ub2c8\ub2e4. <code>2509qmac<\/code>\ub294 \ud604\uc7ac \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud55c\ub208\uc5d0 \uc774\ud574\ud558\uae30<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ubb34\uc5c7\uc778\uac00\uc694?<\/strong><br><code>adk-python-main<\/code>\uc740 \u201c\ub514\uc9c0\ud138 \ube44\uc11c(\uc5d0\uc774\uc804\ud2b8)\ub97c \ub9cc\ub4dc\ub294 \uacf5\ubc29\u201d\uc774\uc5d0\uc694. \uc9c8\ubb38\uc5d0 \ub2f5\ud558\uace0, \uc6f9\uc744 \uac80\uc0c9\ud558\uace0, \uc77c\uc815\uc744 \uc7a1\ub294 \ub4f1 \uc77c\uc744 \ub300\uc2e0\ud574\uc8fc\ub294 \ube44\uc11c\ub97c \ucf54\ub4dc\ub85c \uc190\uc27d\uac8c \ub9cc\ub4e4\uace0 \uc2dc\ud5d8\ud574\ubcfc \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.<br><code>2509qmac<\/code> \ud3f4\ub354\ub294 \uc9c0\uae08 \ube44\uc5b4 \uc788\uc5b4\uc694.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ubb34\uc5c7\uc744 \ud560 \uc218 \uc788\ub098\uc694?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc9c8\ubb38\uc5d0 \ub2f5\ud558\ub294 \ube44\uc11c<\/strong>: \u201c\uc624\ub298 \ub0a0\uc528 \uc5b4\ub54c?\u201d \uac19\uc740 \uc9c8\ubb38 \ub300\uc751<\/li>\n\n\n\n<li><strong>\ub3c4\uad6c \uc4f0\ub294 \ube44\uc11c<\/strong>: \uc6f9\uac80\uc0c9, \uad6c\uae00 API, \uc2a4\ud504\ub808\ub4dc\uc2dc\ud2b8 \ub4f1 \uc678\ubd80 \ub3c4\uad6c \uc0ac\uc6a9<\/li>\n\n\n\n<li><strong>\uc5ec\ub7ec \ube44\uc11c\uac00 \ud300\uc73c\ub85c \ud611\uc5c5<\/strong>: \ud658\uc601 \ub2f4\ub2f9, \uc791\uc5c5 \ub2f4\ub2f9 \ub4f1 \uc5ed\ud560 \ub098\ub220 \ud568\uaed8 \uc77c\ud568<\/li>\n\n\n\n<li><strong>\uc2dc\ud5d8\ud558\uace0 \uad00\ucc30\ud558\uae30<\/strong>: \uc6f9 \ud654\uba74\uc5d0\uc11c \ub300\ud654\ud574 \ubcf4\uba70 \ub3d9\uc791\uc744 \ubc14\ub85c \ud655\uc778<\/li>\n\n\n\n<li><strong>\ud3c9\uac00\ud558\uace0 \uac1c\uc120\ud558\uae30<\/strong>: \ubc84\ud2bc \ud55c \ubc88(\ub610\ub294 \uba85\ub839\uc5b4)\ub85c \uc131\ub2a5\uc744 \uc810\uac80<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\uc5b4\ub5bb\uac8c \uc4f0\ub098\uc694? (\uac00\uc7a5 \uc26c\uc6b4 \ud750\ub984)<\/h3>\n\n\n\n<p>1) \ud504\ub85c\uadf8\ub7a8 \uc124\uce58<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install google-adk<\/code><\/pre>\n\n\n\n<p>2) \uc0d8\ud50c \ube44\uc11c \uc2e4\ud589 \ud654\uba74 \uc5f4\uae30(\ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354\uc5d0\uc11c)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adk web<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ube0c\ub77c\uc6b0\uc800\uc5d0 \uac1c\ubc1c\uc6a9 \ud654\uba74\uc774 \uc5f4\ub9ac\uace0, \uc0d8\ud50c \ube44\uc11c\ub97c \uace8\ub77c \ubc14\ub85c \ub300\ud654\ud574\ubcfc \uc218 \uc788\uc5b4\uc694.<\/li>\n<\/ul>\n\n\n\n<p>3) \ub354 \uc9c4\uc9dc\uac19\uc774 \uc368\ubcf4\uae30(\uc120\ud0dd)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ub85c\uceec API \uc11c\ubc84 \uc5f4\uae30:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adk api_server<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ubbf8\ub9ac \uc900\ube44\ud55c \ubb38\uc81c\uc9d1\uc73c\ub85c \ud3c9\uac00\ud558\uae30:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>adk eval &lt;\uc5d0\uc774\uc804\ud2b8_\uacbd\ub85c&gt; &lt;\ud3c9\uac00\uc14b_\ud30c\uc77c&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ud3f4\ub354 \uc548\uc5d0 \ubb50\uac00 \uc788\ub098\uc694?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>contributing\/samples\/<\/code> \uc0d8\ud50c \ube44\uc11c \ubaa8\uc74c(\ubc14\ub85c \uc2e4\ud589\ud574\ubcf4\uae30 \uc88b\uc74c)<\/li>\n\n\n\n<li><code>src\/google\/adk\/<\/code> \ube44\uc11c\uac00 \ub3cc\uc544\uac00\ub294 \ud575\uc2ec \uc5d4\uc9c4<\/li>\n\n\n\n<li><code>README.md<\/code> \uc26c\uc6b4 \uc18c\uac1c\uc11c<\/li>\n<\/ul>\n\n\n\n<p>\uc6d0\ud558\uc2dc\uba74 \u201c\uac80\uc0c9 \ub3c4\uad6c \uc4f0\ub294 \uac04\ub2e8 \ube44\uc11c\u201d \uac19\uc740 \uad6c\uccb4 \uc608\uc2dc\ubd80\ud130 \ubc14\ub85c \uac19\uc774 \ub3cc\ub824\ub4dc\ub9b4\uac8c\uc694.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc608\uc81c\ub85c \ubcf4\ub294 \u201c\ubb34\uc5c7\uc744 \ud560 \uc218 \uc788\ub098\uc694?\u201d<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc77c\ubc18 \uc9c8\ubb38 \ub2f5\ubcc0\/\uc694\uc57d<\/strong>: \uc6f9\uc744 \ucc3e\uc544 \ucd5c\uc2e0 \uc815\ubcf4 \uc694\uc57d, \ub9c1\ud06c\uc640 \ud568\uaed8 \uc815\ub9ac.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/google_search_agent\/<\/code>, <code>hello_world\/<\/code><\/li>\n\n\n\n<li><strong>\uc77c\uc815\u00b7\uc5c5\ubb34 \uc790\ub3d9\ud654<\/strong>: Google Calendar\uc5d0 \uc77c\uc815 \ub9cc\ub4e4\uae30\/\uc218\uc815, \ub9ac\ub9c8\uc778\ub4dc \uc124\uc815.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/oauth_calendar_agent\/<\/code><\/li>\n\n\n\n<li><strong>\uc0ac\ub0b4 \ubb38\uc11c Q&amp;A (RAG)<\/strong>: \ubb38\uc11c\/\uc704\ud0a4\ub97c \ub123\uc5b4 \u201c\uc0ac\ub0b4 \uaddc\uc815 \uc54c\ub824\uc918\u201d \uac19\uc740 \uc9c8\uc758\uc5d0 \uc815\ud655\ud788 \ub2f5\ubcc0.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/adk_answering_agent\/<\/code>, Vertex AI Search \uc5f0\ub3d9 \uc2a4\ud06c\ub9bd\ud2b8 \ud3ec\ud568<\/li>\n\n\n\n<li><strong>\ub3d9\uc601\uc0c1\/\ucf58\ud150\uce20 \ud0d0\uc0c9<\/strong>: \uc720\ud29c\ube0c\uc5d0\uc11c \ucc3e\uace0 \ud575\uc2ec\ub9cc \uc694\uc57d.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/langchain_youtube_search_agent\/<\/code><\/li>\n\n\n\n<li><strong>\ub370\uc774\ud130 \uc870\ud68c\/\ub9ac\ud3ec\ud2b8<\/strong>: BigQuery\/Bigtable\/Spanner\uc5d0\uc11c \ucffc\ub9ac\ud574 \uc694\uc57d \ub9ac\ud3ec\ud2b8 \ub9cc\ub4e4\uae30.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/bigquery\/<\/code>, <code>bigtable\/<\/code>, <code>spanner\/<\/code>, <code>spanner_rag_agent\/<\/code><\/li>\n\n\n\n<li><strong>\ucf54\ub4dc \ubcf4\uc870<\/strong>: PR \uc694\uc57d\/\ub9ac\ubdf0 \ud3ec\uc778\ud2b8 \ucd94\ucd9c, \uc774\uc288 \ud15c\ud50c\ub9bf \uc790\ub3d9\ud654.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/adk_pr_agent\/<\/code>, <code>adk_pr_triaging_agent\/<\/code>, <code>adk_issue_formatting_agent\/<\/code><\/li>\n\n\n\n<li><strong>\ud30c\uc77c \uc791\uc5c5 \ub3c4\uc6b0\ubbf8<\/strong>: \ub85c\uceec \ud30c\uc77c \ucc3e\uae30\/\uc77d\uae30\/\uc815\ub9ac, \uacb0\uacfc \uc800\uc7a5.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/toolbox_agent\/<\/code><\/li>\n\n\n\n<li><strong>\uc5ec\ub7ec \uc5d0\uc774\uc804\ud2b8 \ud611\uc5c5(\uc6cc\ud06c\ud50c\ub85c)<\/strong>: \uc811\uc218\u2192\ubd84\ub958\u2192\ucc98\ub9ac \uac19\uc740 \ub2e8\uacc4\ud615 \uc790\ub3d9\ud654.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/workflow_triage\/<\/code>, <code>workflow_agent_seq\/<\/code>, <code>multi_agent_*<\/code><\/li>\n\n\n\n<li><strong>\uc0ac\ub78c \ud655\uc778\uc774 \ud544\uc694\ud55c \uc5c5\ubb34<\/strong>: \uc911\uc694\ud55c \ud589\ub3d9 \uc804 \u201c\ud655\uc778\ud574 \uc8fc\uc138\uc694\u201d\ub85c \uba48\ucd94\uace0 \uc2b9\uc778 \uc2dc \uc9c4\ud589.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/human_in_loop\/<\/code>, <code>tool_human_in_the_loop_config\/<\/code><\/li>\n\n\n\n<li><strong>\uc2e4\uc2dc\uac04 \uc74c\uc131\/\uc601\uc0c1 \ub300\ud654<\/strong>: \ub9c8\uc774\ud06c\/\uce74\uba54\ub77c\ub85c \ub300\ud654\ud558\uba70 \uc989\uc2dc \uc751\ub2f5(\ud68c\uc758 \uba54\ubaa8, \uc694\uc57d \ub4f1).<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/live_bidi_streaming_*<\/code><\/li>\n\n\n\n<li><strong>\uc678\ubd80 \uc11c\ube44\uc2a4 \ub3c4\uad6c \ubd99\uc774\uae30(MCP \ub4f1)<\/strong>: \ub178\uc158\/\ud30c\uc77c\uc2dc\uc2a4\ud15c \uac19\uc740 \uc678\ubd80 \uae30\ub2a5\uc744 \ub3c4\uad6c\ub85c \ucd94\uac00.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/mcp_*<\/code><\/li>\n\n\n\n<li><strong>\uc138\uc158\/\uae30\uc5b5<\/strong>: \ub300\ud654 \ub9e5\ub77d\uacfc \uc0ac\uc6a9\uc790 \uc120\ud638\ub97c \uae30\uc5b5\ud574 \ub2e4\uc74c \ub300\ud654\uc5d0 \ubc18\uc601.<\/li>\n\n\n\n<li>\uc0d8\ud50c: <code>contributing\/samples\/session_state_agent\/<\/code>, <code>memory\/<\/code><\/li>\n\n\n\n<li><strong>\ud3c9\uac00\u00b7\uc810\uac80 \uc790\ub3d9\ud654<\/strong>: \uc2dc\ub098\ub9ac\uc624(\ubb38\uc81c\uc9d1)\ub85c \uc131\ub2a5\uc744 \uc7ac\ud604\u00b7\ube44\uad50, \uac1c\uc120 \ucd94\uc801.<\/li>\n\n\n\n<li>\uc0ac\uc6a9: <code>adk web<\/code>(\ub300\ud654\ud615), <code>adk eval<\/code>(\uba85\ub839\ud589)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ubc14\ub85c \uc2dc\uc791\ud558\uc2dc\ub824\uba74<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201c\uc6d0\ud558\ub294 \uc2dc\ub098\ub9ac\uc624\u201d\ub97c \uc54c\ub824\uc8fc\uc138\uc694. \uc608: \u201c\uce98\ub9b0\ub354\uc5d0 \ud68c\uc758 \uc7a1\uc544\uc8fc\uace0 \uc694\uc57d \uba54\uc77c \ubcf4\ub0b4\uae30\u201d.<br>\ud574\ub2f9 \uc0d8\ud50c \uacbd\ub85c\uc640 \uc2e4\ud589 \ubc29\ubc95\uc744 \ub531 \ud544\uc694\ud55c \ub9cc\ud07c \uc548\ub0b4\ub4dc\ub9ac\uace0, \ud544\uc694\ud558\uba74 \uac04\ub2e8\ud788 \ucee4\uc2a4\ud130\ub9c8\uc774\uc988\ud574 \ub4dc\ub9b4\uac8c\uc694.<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<p>from . import agent<\/p>\n\n\n\n<p>from google.adk.agents import Agent<br>from google.adk.tools import google_search<\/p>\n\n\n\n<p>root_agent = Agent(<br>model=&#8221;gemini-2.0-flash&#8221;,<br>name=&#8221;news_assistant&#8221;,<br>description=&#8221;\uc8fc\uc81c\ubcc4 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ucc3e\uc544 \ucd9c\ucc98\uc640 \ud568\uaed8 \uac04\ub2e8\ud788 \uc694\uc57d\ud574 \uc8fc\ub294 \ube44\uc11c.&#8221;,<br>instruction=&#8221;&#8221;&#8221;<br>\ub2f9\uc2e0\uc740 \ub274\uc2a4 \ud050\ub808\uc774\ud130\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc0ac\uc6a9\uc790\uac00 \uc8fc\uc81c\ub97c \ub9d0\ud558\uba74, \uae30\ubcf8\uc801\uc73c\ub85c &#8216;\ucd5c\uadfc 24\uc2dc\uac04&#8217; \ub610\ub294 &#8216;\uc624\ub298&#8217; \uae30\uc900\uc758 \ucd5c\uc2e0 \uc18c\uc2dd\uc744 Google \uac80\uc0c9\uc73c\ub85c \ucc3e\uc544 \uc694\uc57d\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\ud55c\uad6d\uc5b4\ub85c 3~5\uac1c \ud575\uc2ec \ud3ec\uc778\ud2b8\ub97c \ubd88\ub9bf\uc73c\ub85c \uc815\ub9ac\ud558\uace0, \uac01 \ud56d\ubaa9\uc5d0<br>(\uc81c\ubaa9) \u2014 (\ud55c \uc904 \uc694\uc57d) \u2014 (\ucd9c\ucc98\uba85) \u2014 (\ub9c1\ud06c) \u2014 (\uac00\ub2a5\ud558\uba74 \uac8c\uc2dc \uc2dc\uac01)\uc744 \ud3ec\ud568\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\uc911\ubcf5\/\ub09a\uc2dc\uc131 \uae30\uc0ac, \uc624\ub798\ub41c \uc815\ubcf4\ub294 \uc81c\uc678\ud558\uace0 \uc2e0\ub8b0\ub3c4 \ub192\uc740 \ucd9c\ucc98\ub97c \uc6b0\uc120\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\uc9c0\uc5ed\/\uae30\uac04\/\ub9e4\uccb4 \uc120\ud638\uac00 \uc788\uc73c\uba74 \ubc18\uc601\ud558\uc138\uc694. \uc5c6\uc73c\uba74 \uac04\ub2e8\ud788 \ubb3c\uc5b4\ubd10\ub3c4 \ub3fc\uc694.<\/li>\n\n\n\n<li>\ub2f5\ubcc0 \ub05d\uc5d0 &#8220;\ub354 \uc881\ud600\ub4dc\ub9b4\uae4c\uc694? (\uc608: IT\/\uacbd\uc81c\/\uc2a4\ud3ec\uce20, \ud55c\uad6d\/\ud574\uc678, \uc624\ub298\/\uc774\ubc88 \uc8fc)&#8221; \uac19\uc740 \uc9e4\ub9c9\ud55c \ud6c4\uc18d \uc9c8\ubb38\uc744 \uc81c\uc548\ud558\uc138\uc694.<br>&#8220;&#8221;&#8221;,<br>tools=[google_search],<br>)<\/li>\n<\/ul>\n\n\n\n<p>I&#8217;ll check if there&#8217;s a built-in <code>google_search<\/code> tool and locate a sample we can copy from, then I&#8217;ll propose a minimal <code>news_assistant<\/code> agent with files you can drop into the repo and run via <code>adk web<\/code>.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>I&#8217;ll open a couple of sample files to mirror their structure for a new <code>news_assistant<\/code> under <code>contributing\/samples\/<\/code>, then I&#8217;ll draft the three files (<code>__init__.py<\/code>, <code>agent.py<\/code>, <code>main.py<\/code>) and give you exact run steps.<\/p>\n\n\n\n<p>[3 tools called]<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc6b0\ub9ac\uac00 \ub9cc\ub4e4 \uac83<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201c\ucd5c\uc2e0 \ub274\uc2a4\ub97c \ucc3e\uc544 \uc694\uc57d\ud574 \uc8fc\ub294 \ube44\uc11c\u201d\ub97c \uc0d8\ud50c\ub85c \ucd94\uac00\ud574\uc11c \uc6f9 \ud654\uba74\uc5d0\uc11c \ubc14\ub85c \ub300\ud654\ud574\ubcfc \uac70\uc608\uc694.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud30c\uc77c \ub9cc\ub4e4\uae30<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud3f4\ub354: <code>contributing\/samples\/news_assistant\/<\/code><\/li>\n\n\n\n<li>\ud30c\uc77c 1: <code>contributing\/samples\/news_assistant\/__init__.py<\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>from . import agent<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud30c\uc77c 2: <code>contributing\/samples\/news_assistant\/agent.py<\/code><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents import Agent\nfrom google.adk.tools import google_search\n\nroot_agent = Agent(\n  model=\"gemini-2.0-flash\",\n  name=\"news_assistant\",\n  description=\"\uc8fc\uc81c\ubcc4 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ucc3e\uc544 \ucd9c\ucc98\uc640 \ud568\uaed8 \uac04\ub2e8\ud788 \uc694\uc57d\ud574 \uc8fc\ub294 \ube44\uc11c.\",\n  instruction=\"\"\"\n\ub2f9\uc2e0\uc740 \ub274\uc2a4 \ud050\ub808\uc774\ud130\uc785\ub2c8\ub2e4.\n- \uc0ac\uc6a9\uc790\uac00 \uc8fc\uc81c\ub97c \ub9d0\ud558\uba74, \uae30\ubcf8\uc801\uc73c\ub85c '\ucd5c\uadfc 24\uc2dc\uac04' \ub610\ub294 '\uc624\ub298' \uae30\uc900\uc758 \ucd5c\uc2e0 \uc18c\uc2dd\uc744 Google \uac80\uc0c9\uc73c\ub85c \ucc3e\uc544 \uc694\uc57d\ud558\uc138\uc694.\n- \ud55c\uad6d\uc5b4\ub85c 3~5\uac1c \ud575\uc2ec \ud3ec\uc778\ud2b8\ub97c \ubd88\ub9bf\uc73c\ub85c \uc815\ub9ac\ud558\uace0, \uac01 \ud56d\ubaa9\uc5d0\n  (\uc81c\ubaa9) \u2014 (\ud55c \uc904 \uc694\uc57d) \u2014 (\ucd9c\ucc98\uba85) \u2014 (\ub9c1\ud06c) \u2014 (\uac00\ub2a5\ud558\uba74 \uac8c\uc2dc \uc2dc\uac01)\uc744 \ud3ec\ud568\ud558\uc138\uc694.\n- \uc911\ubcf5\/\ub09a\uc2dc\uc131 \uae30\uc0ac, \uc624\ub798\ub41c \uc815\ubcf4\ub294 \uc81c\uc678\ud558\uace0 \uc2e0\ub8b0\ub3c4 \ub192\uc740 \ucd9c\ucc98\ub97c \uc6b0\uc120\ud558\uc138\uc694.\n- \uc9c0\uc5ed\/\uae30\uac04\/\ub9e4\uccb4 \uc120\ud638\uac00 \uc788\uc73c\uba74 \ubc18\uc601\ud558\uc138\uc694. \uc5c6\uc73c\uba74 \uac04\ub2e8\ud788 \ubb3c\uc5b4\ubd10\ub3c4 \ub3fc\uc694.\n- \ub2f5\ubcc0 \ub05d\uc5d0 \"\ub354 \uc881\ud600\ub4dc\ub9b4\uae4c\uc694? (\uc608: IT\/\uacbd\uc81c\/\uc2a4\ud3ec\uce20, \ud55c\uad6d\/\ud574\uc678, \uc624\ub298\/\uc774\ubc88 \uc8fc)\" \uac19\uc740 \uc9e4\ub9c9\ud55c \ud6c4\uc18d \uc9c8\ubb38\uc744 \uc81c\uc548\ud558\uc138\uc694.\n\"\"\",\n  tools=&#91;google_search],\n)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2e4\ud589 \ubc29\ubc95<\/h3>\n\n\n\n<p>1) (\ud544\uc694\uc2dc) Gemini API \ud0a4 \uc124\uc815 \ud6c4 \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\ub85c \uc774\ub3d9<br>2) \ub8e8\ud2b8\uc5d0\uc11c \uc2e4\ud589:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adk web<\/code><\/pre>\n\n\n\n<p>3) \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc5d0\uc774\uc804\ud2b8 \ub4dc\ub86d\ub2e4\uc6b4\uc5d0\uc11c <code>news_assistant<\/code> \uc120\ud0dd \ud6c4 \ub300\ud654<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubc14\ub85c \uc368\ubcfc \uc9c8\ubb38<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201c\uc624\ub298\uc758 \ud14c\ud06c \uc8fc\uc694 \ub274\uc2a4 5\uac1c\ub9cc, \ud55c\uad6d \ub9e4\uccb4 \uc704\uc8fc\ub85c \uc54c\ub824\uc918\u201d<\/li>\n\n\n\n<li>\u201c\uce74\uce74\uc624 \uad00\ub828 \ucd5c\uc2e0 \uae30\uc0ac 3\uac1c \uc694\uc57d\ud574\uc918. \uac01 \uae30\uc0ac \ub9c1\ud06c\uc640 \uc2dc\uac01 \ud3ec\ud568\ud574\uc918\u201d<\/li>\n\n\n\n<li>\u201c\ud574\uc678 \uc99d\uc2dc \ub274\uc2a4 \uc911 \uc911\uc694\ud55c \ud5e4\ub4dc\ub77c\uc778\ub9cc \ubf51\uc544\uc918. \uc624\ub298\uc790 \uae30\uc900\uc73c\ub85c\u201d<\/li>\n\n\n\n<li>\ud575\uc2ec: <code>google_search<\/code> \ub3c4\uad6c\ub85c \ucd5c\uc2e0 \uac80\uc0c9 \uacb0\uacfc\ub97c \uadfc\uac70\ub85c \uc694\uc57d\ud558\uace0, \ucd9c\ucc98\/\ub9c1\ud06c\ub97c \ud568\uaed8 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p>\uc54c\uaca0\uc2b5\ub2c8\ub2e4! \uc81c\uac00 \ucc98\uc74c\ubd80\ud130 \ub05d\uae4c\uc9c0 \ub2e4 \uc900\ube44\ud558\uace0 \uc2e4\ud589\uae4c\uc9c0 \ud574\ub4dc\ub9b4\uac8c\uc694. \uac71\uc815\ud558\uc9c0 \ub9c8\uc138\uc694!<\/p>\n\n\n\n<p><strong>\ub2e8\uacc4\ubcc4 \uc9c4\ud589:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc0c8 \ud3f4\ub354 \ub9cc\ub4e4\uae30<\/strong>: <code>contributing\/samples\/news_assistant<\/code><\/li>\n\n\n\n<li><strong>\ud544\uc694\ud55c \ud30c\uc77c \ub9cc\ub4e4\uae30<\/strong>: <code>__init__.py<\/code>\uc640 <code>agent.py<\/code> \ub450 \ud30c\uc77c\uc744 \ud574\ub2f9 \ud3f4\ub354 \uc548\uc5d0 \ub9cc\ub4e4 \uac70\uc608\uc694. \uc774 \ud30c\uc77c\ub4e4\uc774 \ub274\uc2a4 \ube44\uc11c\uc758 \uc791\ub3d9 \ubc29\uc2dd\uacfc \uc5ed\ud560\uc744 \uc815\uc758\ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uac1c\ubc1c UI \uc2e4\ud589<\/strong>: \ub9cc\ub4e0 \ub274\uc2a4 \ube44\uc11c\ub97c \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ubc14\ub85c \uc0ac\uc6a9\ud574\ubcfc \uc218 \uc788\ub3c4\ub85d \uac1c\ubc1c\uc6a9 \uc6f9 \ud654\uba74\uc744 \ub744\uc6b8 \uac81\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p>\uc2dc\uc791\ud560\uac8c\uc694!<\/p>\n\n\n\n<p>[3 tools called]<\/p>\n\n\n\n<p>\ub274\uc2a4 \ube44\uc11c (<code>news_assistant<\/code>)\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ub418\uc5c8\uace0, \uac1c\ubc1c\uc6a9 \uc6f9 UI\uac00 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n\n\n\n<p><strong>\uc774\uc81c \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc9c1\uc811 \ud655\uc778\ud558\uace0 \ub300\ud654\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc6f9 \ube0c\ub77c\uc6b0\uc800 \uc5f4\uae30<\/strong>: \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub97c \uc5f4\uc5b4\uc8fc\uc138\uc694. (\uc77c\ubc18\uc801\uc73c\ub85c <code>http:\/\/localhost:8080<\/code> \uc73c\ub85c \uc811\uc18d\ud558\uba74 \ub429\ub2c8\ub2e4. \ub9cc\uc57d \ub2e4\ub978 \ud3ec\ud2b8\uac00 \uc0ac\uc6a9 \uc911\uc774\ub77c\uba74 \uc790\ub3d9\uc73c\ub85c \ub2e4\ub978 \ud3ec\ud2b8\ub85c \uc5f4\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc758 \ucd9c\ub825 \uba54\uc2dc\uc9c0\ub97c \ud655\uc778\ud574\uc8fc\uc138\uc694.)<\/li>\n\n\n\n<li><strong>\uc5d0\uc774\uc804\ud2b8 \uc120\ud0dd<\/strong>: \uac1c\ubc1c UI \ud654\uba74\uc5d0\uc11c &#8220;Select Agent&#8221; \ub4dc\ub86d\ub2e4\uc6b4 \uba54\ub274\ub97c \ucc3e\uc544 \ud074\ub9ad\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong><code>news_assistant<\/code> \uc120\ud0dd<\/strong>: \ubaa9\ub85d\uc5d0\uc11c <code>news_assistant<\/code>\ub97c \ucc3e\uc544\uc11c \uc120\ud0dd\ud574\uc8fc\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ub300\ud654 \uc2dc\uc791<\/strong>: \uc544\ub798\uc640 \uac19\uc740 \uc9c8\ubb38\uc744 \uc785\ub825\ucc3d\uc5d0 \ub123\uace0 \uc5d4\ud130\ud0a4\ub97c \ub20c\ub7ec \ub300\ud654\ub97c \uc2dc\uc791\ud574\ubcf4\uc138\uc694.\n<ul class=\"wp-block-list\">\n<li>&#8220;\uc624\ub298\uc758 IT \ub274\uc2a4 3\uac1c \uc54c\ub824\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\ucd5c\uadfc \uacbd\uc81c \ub274\uc2a4 \uc694\uc57d\ud574\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\uc5b4\uc81c \ud55c\uad6d \uc2a4\ud3ec\uce20 \uc18c\uc2dd\uc740?&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\uc774\uc81c \ub274\uc2a4 \ube44\uc11c\uc640 \ub300\ud654\ud558\uba70 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n\n\n\n<p>\uc2e4\ud589\ud55c <code>adk web<\/code> \uba85\ub839\uc5b4\uc758 \ucd9c\ub825 \ub0b4\uc6a9\uc744 \ubcf4\ub2c8, \uc5d0\uc774\uc804\ud2b8\ub97c \ucc3e\ub294 \uacfc\uc815\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><code>ValueError: No root_agent found for 'contributing'. Searched in 'contributing.agent.root_agent', 'contributing.root_agent' and 'contributing\/root_agent.yaml'.<\/code><\/p>\n\n\n\n<p>\uc774 \uc624\ub958\ub294 <code>adk web<\/code> \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud560 \ub54c, \ud604\uc7ac \ub514\ub809\ud1a0\ub9ac(<code>\/Users\/qmini\/Downloads\/adk-python-main<\/code>) \ub0b4\uc758 <code>contributing<\/code> \ud3f4\ub354 \uc790\uccb4\ub97c \ud558\ub098\uc758 \uc571\uc73c\ub85c \uc778\uc2dd\ud558\ub824\ub2e4\uac00, \uadf8 \uc548\uc5d0 <code>root_agent<\/code>\uac00 \uc9c1\uc811 \uc815\uc758\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc544\uc11c \ubc1c\uc0dd\ud558\ub294 \ubb38\uc81c\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc6b0\ub9ac\uac00 \ub9cc\ub4e0 <code>news_assistant<\/code>\ub294 <code>contributing\/samples\/news_assistant<\/code> \uc548\uc5d0 \uc788\uc73c\ubbc0\ub85c, <code>adk web<\/code> \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud560 \ub54c \uc815\ud655\ud788 <code>contributing\/samples<\/code>\ub97c \uac00\ub9ac\ucf1c\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc2dc <code>adk web<\/code> \uba85\ub839\uc5b4\ub97c \uc62c\ubc14\ub978 \uacbd\ub85c\ub85c \uc2e4\ud589\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ubc31\uadf8\ub77c\uc6b4\ub4dc \ud504\ub85c\uc138\uc2a4\ub294 \uc790\ub3d9\uc73c\ub85c \uc885\ub8cc\ub418\uac70\ub098 \uc0c8 \ud504\ub85c\uc138\uc2a4\uac00 \uc2dc\uc791\ub418\uba74\uc11c \ub300\uccb4\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>\ub274\uc2a4 \ube44\uc11c(<code>news_assistant<\/code>)\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc0dd\uc131\ub418\uc5c8\uace0, \uac1c\ubc1c\uc6a9 \uc6f9 UI\uac00 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n\n\n\n<p><strong>\uc774\uc81c \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc9c1\uc811 \ud655\uc778\ud558\uace0 \ub300\ud654\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc6f9 \ube0c\ub77c\uc6b0\uc800 \uc5f4\uae30<\/strong>: \uc6f9 \ube0c\ub77c\uc6b0\uc800\ub97c \uc5f4\uc5b4\uc8fc\uc138\uc694. (\uc77c\ubc18\uc801\uc73c\ub85c <code>http:\/\/127.0.0.1:8000<\/code> \uc73c\ub85c \uc811\uc18d\ud558\uba74 \ub429\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc758 \ucd9c\ub825 \uba54\uc2dc\uc9c0\uc5d0 \uc815\ud655\ud55c \uc8fc\uc18c\uac00 \ub098\uc635\ub2c8\ub2e4.)<\/li>\n\n\n\n<li><strong>\uc5d0\uc774\uc804\ud2b8 \uc120\ud0dd<\/strong>: \uac1c\ubc1c UI \ud654\uba74\uc5d0\uc11c &#8220;Select Agent&#8221; \ub4dc\ub86d\ub2e4\uc6b4 \uba54\ub274\ub97c \ucc3e\uc544 \ud074\ub9ad\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong><code>news_assistant<\/code> \uc120\ud0dd<\/strong>: \ubaa9\ub85d\uc5d0\uc11c <code>news_assistant<\/code>\ub97c \ucc3e\uc544\uc11c \uc120\ud0dd\ud574\uc8fc\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ub300\ud654 \uc2dc\uc791<\/strong>: \uc544\ub798\uc640 \uac19\uc740 \uc9c8\ubb38\uc744 \uc785\ub825\ucc3d\uc5d0 \ub123\uace0 \uc5d4\ud130\ud0a4\ub97c \ub20c\ub7ec \ub300\ud654\ub97c \uc2dc\uc791\ud574\ubcf4\uc138\uc694.\n<ul class=\"wp-block-list\">\n<li>&#8220;\uc624\ub298\uc758 IT \ub274\uc2a4 3\uac1c \uc54c\ub824\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\ucd5c\uadfc \uacbd\uc81c \ub274\uc2a4 \uc694\uc57d\ud574\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\uc5b4\uc81c \ud55c\uad6d \uc2a4\ud3ec\uce20 \uc18c\uc2dd\uc740?&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\uc774\uc81c \ub274\uc2a4 \ube44\uc11c\uc640 \ub300\ud654\ud558\uba70 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n\n\n\n<p>\uc774\uc804 <code>adk web<\/code> \uc2e4\ud589\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc624\ub958\ub294 <code>adk web<\/code> \uba85\ub839\uc5b4\uac00 \uae30\ubcf8\uc801\uc73c\ub85c \ud604\uc7ac \ub514\ub809\ud1a0\ub9ac\ub97c \ud0d0\uc0c9\ud558\uc5ec \uc5d0\uc774\uc804\ud2b8\ub97c \ucc3e\uae30 \ub54c\ubb38\uc5d0 \uc0dd\uacbc\uc2b5\ub2c8\ub2e4. <code>assets<\/code> \ud3f4\ub354\ub294 \uc5d0\uc774\uc804\ud2b8\uac00 \uc544\ub2cc \uc774\ubbf8\uc9c0 \ud30c\uc77c \ub4f1\uc744 \uc800\uc7a5\ud558\ub294 \uacf3\uc774\ub77c <code>root_agent<\/code>\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc544 \uc624\ub958\uac00 \ubc1c\uc0dd\ud55c \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub450 \ubc88\uc9f8 \uc2e4\ud589\uc5d0\uc11c\ub294 <code>adk web contributing\/samples<\/code>\ub85c \uc62c\ubc14\ub978 \uacbd\ub85c\ub97c \uc9c0\uc815\ud588\uc9c0\ub9cc, \ud130\ubbf8\ub110 \ucd9c\ub825\uc5d0\uc11c &#8220;<code>Address already in use<\/code>&#8221; \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uc774\uc804 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4\uac00 \uc544\uc9c1 \uc885\ub8cc\ub418\uc9c0 \uc54a\uc544\uc11c \uac19\uc740 \ud3ec\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub824\uace0 \uc2dc\ub3c4\ud588\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\ud574\uacb0\ucc45:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc2e4\ud589 \uc911\uc778 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4 \uc885\ub8cc<\/strong>: \uba3c\uc800 \uc774\uc804\uc5d0 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\ub358 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4\ub97c \uba85\ud655\ud558\uac8c \uc885\ub8cc\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li><strong>\uc62c\ubc14\ub978 \uacbd\ub85c\ub85c <code>adk web<\/code> \ub2e4\uc2dc \uc2e4\ud589<\/strong>: <code>contributing\/samples<\/code> \ub514\ub809\ud1a0\ub9ac\ub97c \uba85\uc2dc\ud558\uc5ec <code>news_assistant<\/code> \uc5d0\uc774\uc804\ud2b8\ub97c \uc815\ud655\ud788 \ub85c\ub4dc\ud558\ub3c4\ub85d \ud560 \uac83\uc785\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<p>\uba3c\uc800, \uc2e4\ud589 \uc911\uc778 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4\ub97c \ucc3e\uc544 \uc885\ub8cc\ud558\ub294 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud560\uac8c\uc694.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>\ud3ec\ud2b8 8000\uc744 \uc0ac\uc6a9\ud558\ub358 \ud504\ub85c\uc138\uc2a4\ub97c \uc885\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub2e4\uc2dc <code>adk web<\/code> \uba85\ub839\uc5b4\ub97c \uc62c\ubc14\ub978 \uacbd\ub85c\ub85c \uc2e4\ud589\ud558\uc5ec \ub274\uc2a4 \ube44\uc11c\ub97c \uc2dc\uc791\ud574\ubd05\uc2dc\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>\uc88b\uc2b5\ub2c8\ub2e4! \uc774\uc81c <code>adk web<\/code> \uc11c\ubc84\uac00 \uc62c\ubc14\ub978 \uacbd\ub85c\ub85c \uc2dc\uc791\ub418\uc5c8\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\ub2e4\uc2dc \ud55c\ubc88 \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ud655\uc778\ud574\uc8fc\uc138\uc694.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc6f9 \ube0c\ub77c\uc6b0\uc800 \uc5f4\uae30<\/strong>: <code>http:\/\/127.0.0.1:8000<\/code> \ub85c \uc811\uc18d\ud574\uc8fc\uc138\uc694. (\ud639\uc2dc \ud130\ubbf8\ub110\uc5d0 \ub2e4\ub978 \ud3ec\ud2b8\uac00 \ud45c\uc2dc\ub418\uba74 \uadf8 \uc8fc\uc18c\ub85c \uc811\uc18d\ud574\uc8fc\uc138\uc694.)<\/li>\n\n\n\n<li><strong>\uc5d0\uc774\uc804\ud2b8 \uc120\ud0dd<\/strong>: \uac1c\ubc1c UI \ud654\uba74\uc5d0\uc11c &#8220;Select Agent&#8221; \ub4dc\ub86d\ub2e4\uc6b4 \uba54\ub274\ub97c \ucc3e\uc544 \ud074\ub9ad\ud558\uc138\uc694.<\/li>\n\n\n\n<li><strong><code>news_assistant<\/code> \uc120\ud0dd<\/strong>: \ubaa9\ub85d\uc5d0\uc11c <code>news_assistant<\/code>\ub97c \ucc3e\uc544\uc11c \uc120\ud0dd\ud574\uc8fc\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ub300\ud654 \uc2dc\uc791<\/strong>: \uc774\uc81c \uc9c8\ubb38\uc744 \uc785\ub825\ucc3d\uc5d0 \ub123\uace0 \ub274\uc2a4 \ube44\uc11c\uc640 \ub300\ud654\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<ul class=\"wp-block-list\">\n<li>&#8220;\uc624\ub298\uc758 IT \ub274\uc2a4 3\uac1c \uc54c\ub824\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\ucd5c\uadfc \uacbd\uc81c \ub274\uc2a4 \uc694\uc57d\ud574\uc918&#8221;<\/li>\n\n\n\n<li>&#8220;\uc5b4\uc81c \ud55c\uad6d \uc2a4\ud3ec\uce20 \uc18c\uc2dd\uc740?&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\uc774\uc81c \ub274\uc2a4 \ube44\uc11c\uc640 \uc6d0\ud65c\ud558\uac8c \ub300\ud654\ud558\uba70 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc744 \uac70\uc608\uc694!<\/p>\n\n\n\n<p>from google.adk.agents import Agent<br>from google.adk.tools import google_search<br>import os<\/p>\n\n\n\n<p>root_agent = Agent(<br>model=&#8221;gemini-2.0-flash&#8221;,<br>name=&#8221;news_assistant&#8221;,<br>description=&#8221;\uc8fc\uc81c\ubcc4 \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ucc3e\uc544 \ucd9c\ucc98\uc640 \ud568\uaed8 \uac04\ub2e8\ud788 \uc694\uc57d\ud574 \uc8fc\ub294 \ube44\uc11c.&#8221;,<br>instruction=&#8221;&#8221;&#8221;<br>\ub2f9\uc2e0\uc740 \ub274\uc2a4 \ud050\ub808\uc774\ud130\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc0ac\uc6a9\uc790\uac00 \uc8fc\uc81c\ub97c \ub9d0\ud558\uba74, \uae30\ubcf8\uc801\uc73c\ub85c &#8216;\ucd5c\uadfc 24\uc2dc\uac04&#8217; \ub610\ub294 &#8216;\uc624\ub298&#8217; \uae30\uc900\uc758 \ucd5c\uc2e0 \uc18c\uc2dd\uc744 Google \uac80\uc0c9\uc73c\ub85c \ucc3e\uc544 \uc694\uc57d\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\ud55c\uad6d\uc5b4\ub85c 3~5\uac1c \ud575\uc2ec \ud3ec\uc778\ud2b8\ub97c \ubd88\ub9bf\uc73c\ub85c \uc815\ub9ac\ud558\uace0, \uac01 \ud56d\ubaa9\uc5d0<br>(\uc81c\ubaa9) \u2014 (\ud55c \uc904 \uc694\uc57d) \u2014 (\ucd9c\ucc98\uba85) \u2014 (\ub9c1\ud06c) \u2014 (\uac00\ub2a5\ud558\uba74 \uac8c\uc2dc \uc2dc\uac01)\uc744 \ud3ec\ud568\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\uc911\ubcf5\/\ub09a\uc2dc\uc131 \uae30\uc0ac, \uc624\ub798\ub41c \uc815\ubcf4\ub294 \uc81c\uc678\ud558\uace0 \uc2e0\ub8b0\ub3c4 \ub192\uc740 \ucd9c\ucc98\ub97c \uc6b0\uc120\ud558\uc138\uc694.<\/li>\n\n\n\n<li>\uc9c0\uc5ed\/\uae30\uac04\/\ub9e4\uccb4 \uc120\ud638\uac00 \uc788\uc73c\uba74 \ubc18\uc601\ud558\uc138\uc694. \uc5c6\uc73c\uba74 \uac04\ub2e8\ud788 \ubb3c\uc5b4\ubd10\ub3c4 \ub3fc\uc694.<\/li>\n\n\n\n<li>\ub2f5\ubcc0 \ub05d\uc5d0 &#8220;\ub354 \uc881\ud600\ub4dc\ub9b4\uae4c\uc694? (\uc608: IT\/\uacbd\uc81c\/\uc2a4\ud3ec\uce20, \ud55c\uad6d\/\ud574\uc678, \uc624\ub298\/\uc774\ubc88 \uc8fc)&#8221; \uac19\uc740 \uc9e4\ub9c9\ud55c \ud6c4\uc18d \uc9c8\ubb38\uc744 \uc81c\uc548\ud558\uc138\uc694.<br>&#8220;&#8221;&#8221;,<br>tools=[google_search],<br>api_key=os.environ.get(&#8220;GOOGLE_API_KEY&#8221;), # API \ud0a4 \ucd94\uac00<br>)<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>export GOOGLE_API_KEY='&lt;YOUR_GEMINI_API_KEY&gt;'\n\ncd \/Users\/qmini\/Downloads\/adk-python-main &amp;&amp; adk web contributing\/samples\n\n\uc774\uc804\uc5d0 \uc2e4\ud589 \uc911\uc774\ub358 `adk web` \uc11c\ubc84 \ub54c\ubb38\uc5d0 \ud3ec\ud2b8 \ucda9\ub3cc\uc774 \ubc1c\uc0dd\ud558\uace0, \ubaa8\ub378(Gemini)\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c API \ud0a4\uac00 \uc5c6\uc5b4\uc11c \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \"Cannot find specified session. Creating a new one.\" \uba54\uc2dc\uc9c0\ub294 \uc5d0\ub7ec\ub77c\uae30\ubcf4\ub2e4\ub294 \uc815\ubcf4 \uba54\uc2dc\uc9c0\uc774\ubbc0\ub85c \uad1c\ucc2e\uc2b5\ub2c8\ub2e4.\n\n\ub450 \ubc88\uc9f8 \uc624\ub958\uc778 \"Missing key inputs argument!\"\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560\uac8c\uc694.\n\n1.  **\uc2e4\ud589 \uc911\uc778 \uc11c\ubc84 \uc885\ub8cc**: \ud604\uc7ac \ud3ec\ud2b8 8000\uc744 \uc0ac\uc6a9 \uc911\uc778 `adk web` \ud504\ub85c\uc138\uc2a4\ub97c \uba3c\uc800 \uc885\ub8cc\ud560 \uac70\uc608\uc694.\n2.  **API \ud0a4 \uc124\uc815 \ucf54\ub4dc \ucd94\uac00**: `news_assistant` \uc5d0\uc774\uc804\ud2b8 \ucf54\ub4dc\uc5d0 Gemini API \ud0a4\ub97c \ud658\uacbd \ubcc0\uc218\uc5d0\uc11c \uac00\uc838\uc640 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc218\uc815\ud560 \uac70\uc608\uc694.\n3.  **API \ud0a4 \uc124\uc815 \ubc0f \uc7ac\uc2e4\ud589 \uc548\ub0b4**: \uc0ac\uc6a9\uc790\uc758 Gemini API \ud0a4\ub97c \uc124\uc815\ud558\ub294 \ubc29\ubc95\uacfc \ud568\uaed8 \ub274\uc2a4 \ube44\uc11c\ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\ub294 \uba85\ub839\uc5b4\ub97c \uc54c\ub824\ub4dc\ub9b4\uac8c\uc694.\n\n\uba3c\uc800, \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\ub97c \uc885\ub8cc\ud558\uaca0\uc2b5\ub2c8\ub2e4.\n\n&#91;1 tool called]\n\n\uc2e4\ud589 \uc911\uc774\ub358 \uc11c\ubc84\ub97c \uc885\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c `news_assistant\/agent.py` \ud30c\uc77c\uc5d0 API \ud0a4\ub97c \ud658\uacbd \ubcc0\uc218\uc5d0\uc11c \ub85c\ub4dc\ud558\ub294 \ucf54\ub4dc\ub97c \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ucf54\ub4dc\ub294 `GOOGLE_API_KEY` \ud658\uacbd \ubcc0\uc218\uc5d0\uc11c API \ud0a4\ub97c \uac00\uc838\uc624\ub3c4\ub85d \uc124\uc815\ud560 \uac83\uc785\ub2c8\ub2e4.\n\n&#91;1 tool called]\n\nAPI \ud0a4 \uc124\uc815 \ucf54\ub4dc\ub97c `agent.py` \ud30c\uc77c\uc5d0 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.\n\n**\uc774\uc81c \uac00\uc7a5 \uc911\uc694\ud55c \ub2e8\uacc4\uc785\ub2c8\ub2e4! Gemini API \ud0a4\ub97c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.**\n\n1.  **Gemini API \ud0a4 \ubc1c\uae09**: \ub9cc\uc57d Gemini API \ud0a4\uac00 \uc5c6\ub2e4\uba74, &#91;Google AI Studio](https:\/\/makersuite.google.com\/app\/apikey) \ub610\ub294 &#91;Google Cloud Console](https:\/\/console.cloud.google.com\/apis\/credentials)\uc5d0\uc11c \ubc1c\uae09\ubc1b\uc73c\uc138\uc694.\n2.  **\ud658\uacbd \ubcc0\uc218 \uc124\uc815**: \ud130\ubbf8\ub110\uc5d0 \ub2e4\uc74c \uba85\ub839\uc5b4\ub97c \uc785\ub825\ud558\uc5ec API \ud0a4\ub97c \ud658\uacbd \ubcc0\uc218\uc5d0 \ub4f1\ub85d\ud569\ub2c8\ub2e4. `&lt;YOUR_GEMINI_API_KEY&gt;` \ubd80\ubd84\uc740 \ubc1c\uae09\ubc1b\uc740 \uc2e4\uc81c \ud0a4\ub85c \ubc14\uafd4\uc8fc\uc138\uc694.\n    ```bash\n    export GOOGLE_API_KEY='&lt;YOUR_GEMINI_API_KEY&gt;'\n    ```\n    (\uc774 \ud658\uacbd \ubcc0\uc218\ub294 \ud604\uc7ac \ud130\ubbf8\ub110 \uc138\uc158\uc5d0\ub9cc \uc720\ud6a8\ud569\ub2c8\ub2e4. \ud130\ubbf8\ub110\uc744 \ub2eb\uc558\ub2e4\uba74 \ub2e4\uc2dc \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.)\n\n3.  **\ub274\uc2a4 \ube44\uc11c \ub2e4\uc2dc \uc2e4\ud589**: \uc774\uc81c API \ud0a4\uac00 \uc124\uc815\ub418\uc5c8\uc73c\ubbc0\ub85c, \ub274\uc2a4 \ube44\uc11c\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud569\ub2c8\ub2e4.\n\n```bash\ncd \/Users\/qmini\/Downloads\/adk-python-main &amp;&amp; adk web contributing\/samples\n```\n\n\uc774 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uba74 \uc6f9 UI\uac00 \ub2e4\uc2dc \uc5f4\ub9ac\uace0, \uc774\uc81c `news_assistant` \uc5d0\uc774\uc804\ud2b8\uc640 \ub300\ud654\ud558\uba74\uc11c \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc744 \uac70\uc608\uc694!\n\n\uc54c\uaca0\uc2b5\ub2c8\ub2e4, \uc5d0\ub7ec \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub2c8 `Agent` \ud074\ub798\uc2a4\uc5d0 `api_key`\ub97c \uc9c1\uc811 \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc774 \ub9de\uc9c0 \uc54a\ub294\ub2e4\uace0 \ud569\ub2c8\ub2e4. `adk` \ud504\ub808\uc784\uc6cc\ud06c\uac00 API \ud0a4\ub97c \ucc98\ub9ac\ud558\ub294 \ubc29\uc2dd\uc774 \ub530\ub85c \uc788\ub294 \uac83 \uac19\uc2b5\ub2c8\ub2e4.\n\n\uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560\uac8c\uc694.\n\n1.  **\uc2e4\ud589 \uc911\uc778 \uc11c\ubc84 \uc885\ub8cc**: \ud604\uc7ac \ud3ec\ud2b8 8000\uc744 \uc0ac\uc6a9 \uc911\uc778 `adk web` \ud504\ub85c\uc138\uc2a4\ub97c \uc885\ub8cc\ud560\uac8c\uc694.\n2.  **`agent.py` \uc218\uc815**: `news_assistant` \uc5d0\uc774\uc804\ud2b8 \ucf54\ub4dc\uc5d0\uc11c `api_key` \ubd80\ubd84\uc744 \uc81c\uac70\ud558\uace0 `os` import\ub3c4 \ub354 \uc774\uc0c1 \ud544\uc694 \uc5c6\uc73c\ub2c8 \uac19\uc774 \uc9c0\uc6b8\uac8c\uc694. `adk`\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ud658\uacbd \ubcc0\uc218\ub97c \ud1b5\ud574 API \ud0a4\ub97c \uc790\ub3d9\uc73c\ub85c \uac00\uc838\uc635\ub2c8\ub2e4.\n3.  **\ub274\uc2a4 \ube44\uc11c \uc7ac\uc2e4\ud589**: \uc218\uc815\ub41c \uc5d0\uc774\uc804\ud2b8 \ucf54\ub4dc\ub85c \uac1c\ubc1c UI\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud560\uac8c\uc694.\n\n\uba3c\uc800, \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\ub97c \uc885\ub8cc\ud558\uaca0\uc2b5\ub2c8\ub2e4.\n\n&#91;1 tool called]\n\n\uc2e4\ud589 \uc911\uc774\ub358 \uc11c\ubc84\ub97c \uc885\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c `news_assistant\/agent.py` \ud30c\uc77c\uc5d0\uc11c `api_key` \uad00\ub828 \ucf54\ub4dc\ub97c \uc81c\uac70\ud558\uaca0\uc2b5\ub2c8\ub2e4. `os` \ubaa8\ub4c8\ub3c4 \ub354 \uc774\uc0c1 \ud544\uc694 \uc5c6\uc73c\ub2c8 \ud568\uaed8 \uc0ad\uc81c\ud560\uac8c\uc694.\n\n&#91;1 tool called]\n\n`agent.py` \ud30c\uc77c\uc5d0\uc11c `api_key` \uc124\uc815\uacfc `os` \ubaa8\ub4c8 \uc784\ud3ec\ud2b8\ub97c \uc81c\uac70\ud588\uc2b5\ub2c8\ub2e4.\n\n**\uc774\uc81c `GOOGLE_API_KEY` \ud658\uacbd \ubcc0\uc218\uac00 \uc62c\ubc14\ub974\uac8c \uc124\uc815\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uace0, \ub274\uc2a4 \ube44\uc11c\ub97c \ub2e4\uc2dc \uc2e4\ud589\ud558\uaca0\uc2b5\ub2c8\ub2e4.**\n\n1.  **\ud658\uacbd \ubcc0\uc218 \ud655\uc778 (\ud544\uc218)**: \ud130\ubbf8\ub110\uc5d0 `echo $GOOGLE_API_KEY`\ub97c \uc785\ub825\ud558\uc5ec \uc774\uc804\uc5d0 \uc124\uc815\ud55c API \ud0a4\uac00 \uc5ec\uc804\ud788 \ubcf4\uc774\ub294\uc9c0 \ud655\uc778\ud574\uc8fc\uc138\uc694. \ub9cc\uc57d \uc544\ubb34\uac83\ub3c4 \ubcf4\uc774\uc9c0 \uc54a\uac70\ub098 \uc798\ubabb\ub41c \ud0a4\ub77c\uba74, **\ubc18\ub4dc\uc2dc \ub2e4\uc2dc \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.**\n    ```bash\n    export GOOGLE_API_KEY='&lt;YOUR_GEMINI_API_KEY&gt;'\n    ```\n    (\ubc1c\uae09\ubc1b\uc740 \uc2e4\uc81c \ud0a4\ub85c `&lt;YOUR_GEMINI_API_KEY&gt;`\ub97c \ubc14\uafd4\uc8fc\uc138\uc694.)\n\n2.  **\ub274\uc2a4 \ube44\uc11c \ub2e4\uc2dc \uc2e4\ud589**:\n    ```bash\n    adk web contributing\/samples\n    ```\n    \uc774 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uba74 \uc6f9 UI\uac00 \ub2e4\uc2dc \uc5f4\ub9ac\uace0, \uc774\uc81c `news_assistant` \uc5d0\uc774\uc804\ud2b8\uc640 \ub300\ud654\ud558\uba74\uc11c \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc744 \uac70\uc608\uc694!\n\n\uc774\ubc88\uc5d0\ub294 \ubaa8\ub378\uacfc \uc81c\ub300\ub85c \ud1b5\uc2e0\ud558\uc5ec \ub2f5\ubcc0\uc744 \ubc1b\uc744 \uc218 \uc788\uc744 \uac83\uc73c\ub85c \uc608\uc0c1\ub429\ub2c8\ub2e4. \uc6f9 UI\uc5d0\uc11c `news_assistant`\ub97c \uc120\ud0dd\ud558\uace0 \uc9c8\ubb38\uc744 \ub358\uc838\ubcf4\uc138\uc694!<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\ud074\ub85c\ub4dc\uc5d0\uc11c \uc18c\uac1c\ud558\uae38&#8230;<\/h1>\n\n\n\n<p>Google Agent Development Kit (ADK)\uc5d0 \ub300\ud574 \uc18c\uac1c\ud574\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uac1c\uc694<\/h2>\n\n\n\n<p>Google Agent Development Kit (ADK)\ub294 2025\ub144 Google Cloud NEXT\uc5d0\uc11c \uc18c\uac1c\ub41c \uc624\ud508\uc18c\uc2a4 \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \uc5d0\uc774\uc804\ud2b8\uc640 \uba40\ud2f0 \uc5d0\uc774\uc804\ud2b8 \uc2dc\uc2a4\ud15c\uc758 \uc5d4\ub4dc\ud22c\uc5d4\ub4dc \uac1c\ubc1c\uc744 \ub2e8\uc21c\ud654\ud558\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc8fc\uc694 \ud2b9\uc9d5<\/h2>\n\n\n\n<p>ADK\ub294 AI \uc5d0\uc774\uc804\ud2b8 \uac1c\ubc1c \ubc0f \ubc30\ud3ec\ub97c \uc704\ud55c \uc720\uc5f0\ud558\uace0 \ubaa8\ub4c8\ud654\ub41c \ud504\ub808\uc784\uc6cc\ud06c\uc785\ub2c8\ub2e4. Gemini\uc640 Google \uc0dd\ud0dc\uacc4\uc5d0 \ucd5c\uc801\ud654\ub418\uc5b4 \uc788\uc9c0\ub9cc, \ubaa8\ub378\uc5d0 \uad6c\uc560\ubc1b\uc9c0 \uc54a\uace0 \ubc30\ud3ec\uc5d0\ub3c4 \uc81c\uc57d\uc774 \uc5c6\uc73c\uba70, \ub2e4\ub978 \ud504\ub808\uc784\uc6cc\ud06c\uc640\uc758 \ud638\ud658\uc131\uc744 \uace0\ub824\ud558\uc5ec \uad6c\ucd95\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubaa9\uc801\uacfc \ud65c\uc6a9<\/h2>\n\n\n\n<p>ADK\ub294 \uc9c0\ub2a5\uc801\uc774\uace0 \uba40\ud2f0 \uc5d0\uc774\uc804\ud2b8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc744 \ub2e8\uc21c\ud654\ud558\ub294 \uac83\uc744 \ubaa9\ud45c\ub85c \ud558\uba70, \ub85c\uc9c1 \uc124\uacc4\ubd80\ud130 \uc5d0\uc774\uc804\ud2b8 \uc2dc\uc2a4\ud15c\uc758 \uc804\uccb4 \ub77c\uc774\ud504\uc0ac\uc774\ud074\uc744 \uc9c0\uc6d0\ud558\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc811\uadfc\uc131\uacfc \ud559\uc2b5 \uc790\ub8cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc624\ud508\uc18c\uc2a4<\/strong>: GitHub\uc5d0\uc11c Python \ud234\ud0b7\uc73c\ub85c \uc81c\uacf5\ub429\ub2c8\ub2e4<\/li>\n\n\n\n<li><strong>\ubb38\uc11c\ud654<\/strong>: Google\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uacf5\uc2dd \ubb38\uc11c\uc640 \uac00\uc774\ub4dc\uac00 \uc788\uc2b5\ub2c8\ub2e4<\/li>\n\n\n\n<li><strong>\uc2e4\uc2b5 \uc790\ub8cc<\/strong>: \uc5ec\ud589 \uc5d0\uc774\uc804\ud2b8 \uad6c\ucd95\uacfc \uac19\uc740 \uc2e4\uc6a9\uc801\uc778 \ucf54\ub4dc\ub7a9\uc744 \ud1b5\ud574 \ud559\uc2b5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uad00\ub828 \uae30\uc220<\/h2>\n\n\n\n<p>ADK\uc640 \ud568\uaed8 Agent2Agent Protocol (A2A)\ub3c4 \ubc1c\ud45c\ub418\uc5c8\ub294\ub370, \uc774\ub294 AI \uc5d0\uc774\uc804\ud2b8\ub4e4\uc774 \uc11c\ub85c \ud1b5\uc2e0\ud558\uace0 \uc815\ubcf4\ub97c \uc548\uc804\ud558\uac8c \uad50\ud658\ud558\uba70 \ub2e4\uc591\ud55c \uc5d4\ud130\ud504\ub77c\uc774\uc988 \ud50c\ub7ab\ud3fc\uc5d0\uc11c \ud589\ub3d9\uc744 \uc870\uc815\ud560 \uc218 \uc788\uac8c \ud574\uc8fc\ub294 \ud504\ub85c\ud1a0\ucf5c\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>ADK\ub294 \ud2b9\ud788 \ubcf5\uc7a1\ud55c \uba40\ud2f0 \uc5d0\uc774\uc804\ud2b8 \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\ub824\ub294 \uac1c\ubc1c\uc790\ub4e4\uc5d0\uac8c \uc720\uc6a9\ud55c \ub3c4\uad6c\ub85c \ubcf4\uc774\uba70, Google Cloud\uc640\uc758 \ud1b5\ud569\uc744 \ud1b5\ud574 \uc2e4\uc81c \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc5d0\uc11c\ub3c4 \ud65c\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc124\uacc4\ub41c \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>cursor \uae30\ubc18 \uad6c\uae00 \uc5d0\uc774\uc804\ud2b8 \uac1c\ubc1c\ub3c4\uad6c \uc18c\uac1c I&#8217;ll scan both project directories to locate READMEs and high-level docs, and do a quick semantic sweep to spot entry points. Then I&#8217;ll open any discovered README files. [5 tools called] I&#8217;ll quickly list a couple of sample directories and search for the CLI commands to run the dev [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34,67,66],"tags":[],"class_list":["post-482","post","type-post","status-publish","format-standard","hentry","category-ai","category-67","category-66"],"_links":{"self":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=482"}],"version-history":[{"count":3,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/482\/revisions"}],"predecessor-version":[{"id":487,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/482\/revisions\/487"}],"wp:attachment":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=482"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}