{"id":467,"date":"2025-09-04T23:02:39","date_gmt":"2025-09-04T14:02:39","guid":{"rendered":"http:\/\/qmac.kr\/wordpress\/?p=467"},"modified":"2025-09-06T06:15:49","modified_gmt":"2025-09-05T21:15:49","slug":"google-adk-python-main","status":"publish","type":"post","link":"http:\/\/qmac.kr\/wordpress\/google-adk-python-main\/","title":{"rendered":"google adk-python-main \uc124\uce58, \uc2e4\ud589\uacfc\uc815 \uc2a4\ud06c\ub7a9"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"611\" src=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-06-06.07.45.png\" alt=\"\" class=\"wp-image-488\" srcset=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-06-06.07.45.png 845w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-06-06.07.45-300x217.png 300w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-06-06.07.45-768x555.png 768w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><figcaption class=\"wp-element-caption\">\ud560 \uc218 \uc788\ub294 \uc77c\uc744 \ubb3c\uc5b4\ubd24\uc2b5\ub2c8\ub2e4.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"775\" height=\"799\" src=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-04-17.47.19.png\" alt=\"\" class=\"wp-image-477\" srcset=\"http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-04-17.47.19.png 775w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-04-17.47.19-291x300.png 291w, http:\/\/qmac.kr\/wordpress\/wp-content\/uploads\/2025\/09\/\uc2a4\ud06c\ub9b0\uc0f7-2025-09-04-17.47.19-768x792.png 768w\" sizes=\"auto, (max-width: 775px) 100vw, 775px\" \/><figcaption class=\"wp-element-caption\">\uc138\ud305 \uc635\uc158\uc5d0\uc11c \ud655\uc778\ud560 \uc0ac\ud56d<\/figcaption><\/figure>\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<h1 class=\"wp-block-heading\">\ub354 \uc26c\uc6b4 \uc124\uba85<\/h1>\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<h1 class=\"wp-block-heading\">\uad6c\uccb4\uc801\uc73c\ub85c \ud560 \uc218 \uc788\ub294 \uc77c\uc740.<\/h1>\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<\/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<h1 class=\"wp-block-heading\">\ub098\ub294 \uc544\ubb34\uac83\ub3c4 \ud560 \uc904 \ubab0\ub77c, \ub124\uac00 \ud544\uc694\ud55c \uc77c\uc744 \ucc98\uc74c\ubd80\ud130 \ub05d \uae4c\uc9c0 \ub2e4 \ud574\uc11c \uc2e4\ud589\uae4c\uc9c0 \ud574\uc918\uc57c\ud574.<\/h1>\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<h1 class=\"wp-block-heading\">\uc5d0\ub7ec \ubc0f \uad6c\uae00 API KEY \ubc1c\uae09\ud6c4 \uc9c4\ud589<\/h1>\n\n\n\n<p>\uc774\uc804\uc5d0 \uc2e4\ud589 \uc911\uc774\ub358 <code>adk web<\/code> \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. &#8220;Cannot find specified session. Creating a new one.&#8221; \uba54\uc2dc\uc9c0\ub294 \uc5d0\ub7ec\ub77c\uae30\ubcf4\ub2e4\ub294 \uc815\ubcf4 \uba54\uc2dc\uc9c0\uc774\ubbc0\ub85c \uad1c\ucc2e\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub450 \ubc88\uc9f8 \uc624\ub958\uc778 &#8220;Missing key inputs argument!&#8221;\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560\uac8c\uc694.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc2e4\ud589 \uc911\uc778 \uc11c\ubc84 \uc885\ub8cc<\/strong>: \ud604\uc7ac \ud3ec\ud2b8 8000\uc744 \uc0ac\uc6a9 \uc911\uc778 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4\ub97c \uba3c\uc800 \uc885\ub8cc\ud560 \uac70\uc608\uc694.<\/li>\n\n\n\n<li><strong>API \ud0a4 \uc124\uc815 \ucf54\ub4dc \ucd94\uac00<\/strong>: <code>news_assistant<\/code> \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.<\/li>\n\n\n\n<li><strong>API \ud0a4 \uc124\uc815 \ubc0f \uc7ac\uc2e4\ud589 \uc548\ub0b4<\/strong>: \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.<\/li>\n<\/ol>\n\n\n\n<p>\uba3c\uc800, \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\ub97c \uc885\ub8cc\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>\uc2e4\ud589 \uc911\uc774\ub358 \uc11c\ubc84\ub97c \uc885\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c <code>news_assistant\/agent.py<\/code> \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 <code>GOOGLE_API_KEY<\/code> \ud658\uacbd \ubcc0\uc218\uc5d0\uc11c API \ud0a4\ub97c \uac00\uc838\uc624\ub3c4\ub85d \uc124\uc815\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>API \ud0a4 \uc124\uc815 \ucf54\ub4dc\ub97c <code>agent.py<\/code> \ud30c\uc77c\uc5d0 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc774\uc81c \uac00\uc7a5 \uc911\uc694\ud55c \ub2e8\uacc4\uc785\ub2c8\ub2e4! Gemini API \ud0a4\ub97c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Gemini API \ud0a4 \ubc1c\uae09<\/strong>: \ub9cc\uc57d Gemini API \ud0a4\uac00 \uc5c6\ub2e4\uba74, <a href=\"https:\/\/makersuite.google.com\/app\/apikey\">Google AI Studio<\/a> \ub610\ub294 <a href=\"https:\/\/console.cloud.google.com\/apis\/credentials\">Google Cloud Console<\/a>\uc5d0\uc11c \ubc1c\uae09\ubc1b\uc73c\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ud658\uacbd \ubcc0\uc218 \uc124\uc815<\/strong>: \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. <code>&lt;YOUR_GEMINI_API_KEY&gt;<\/code> \ubd80\ubd84\uc740 \ubc1c\uae09\ubc1b\uc740 \uc2e4\uc81c \ud0a4\ub85c \ubc14\uafd4\uc8fc\uc138\uc694. <code>export GOOGLE_API_KEY='&lt;YOUR_GEMINI_API_KEY&gt;'<\/code> (\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.)<\/li>\n\n\n\n<li><strong>\ub274\uc2a4 \ube44\uc11c \ub2e4\uc2dc \uc2e4\ud589<\/strong>: \uc774\uc81c API \ud0a4\uac00 \uc124\uc815\ub418\uc5c8\uc73c\ubbc0\ub85c, \ub274\uc2a4 \ube44\uc11c\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/Users\/qmini\/Downloads\/adk-python-main &amp;&amp; adk web contributing\/samples<\/code><\/pre>\n\n\n\n<p>\uc774 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uba74 \uc6f9 UI\uac00 \ub2e4\uc2dc \uc5f4\ub9ac\uace0, \uc774\uc81c <code>news_assistant<\/code> \uc5d0\uc774\uc804\ud2b8\uc640 \ub300\ud654\ud558\uba74\uc11c \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc744 \uac70\uc608\uc694!<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">api \ud0a4 \uc785\ub825\ud6c4\uc5d0\ub294 \uc5d0\ub7ec \uc5c6\uc774 \ub2f5\ubcc0\uc744 \uc8fc\uc9c0 \uc54a\uc74c.<\/h1>\n\n\n\n<p>\uc774\uc804\uc5d0 \uc2e4\ud589 \uc911\uc774\ub358 <code>adk web<\/code> \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. &#8220;Cannot find specified session. Creating a new one.&#8221; \uba54\uc2dc\uc9c0\ub294 \uc5d0\ub7ec\ub77c\uae30\ubcf4\ub2e4\ub294 \uc815\ubcf4 \uba54\uc2dc\uc9c0\uc774\ubbc0\ub85c \uad1c\ucc2e\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub450 \ubc88\uc9f8 \uc624\ub958\uc778 &#8220;Missing key inputs argument!&#8221;\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \ub2e8\uacc4\ub97c \uc9c4\ud589\ud560\uac8c\uc694.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\uc2e4\ud589 \uc911\uc778 \uc11c\ubc84 \uc885\ub8cc<\/strong>: \ud604\uc7ac \ud3ec\ud2b8 8000\uc744 \uc0ac\uc6a9 \uc911\uc778 <code>adk web<\/code> \ud504\ub85c\uc138\uc2a4\ub97c \uba3c\uc800 \uc885\ub8cc\ud560 \uac70\uc608\uc694.<\/li>\n\n\n\n<li><strong>API \ud0a4 \uc124\uc815 \ucf54\ub4dc \ucd94\uac00<\/strong>: <code>news_assistant<\/code> \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.<\/li>\n\n\n\n<li><strong>API \ud0a4 \uc124\uc815 \ubc0f \uc7ac\uc2e4\ud589 \uc548\ub0b4<\/strong>: \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.<\/li>\n<\/ol>\n\n\n\n<p>\uba3c\uc800, \uc2e4\ud589 \uc911\uc778 \uc11c\ubc84\ub97c \uc885\ub8cc\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>\uc2e4\ud589 \uc911\uc774\ub358 \uc11c\ubc84\ub97c \uc885\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c <code>news_assistant\/agent.py<\/code> \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 <code>GOOGLE_API_KEY<\/code> \ud658\uacbd \ubcc0\uc218\uc5d0\uc11c API \ud0a4\ub97c \uac00\uc838\uc624\ub3c4\ub85d \uc124\uc815\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>[1 tool called]<\/p>\n\n\n\n<p>API \ud0a4 \uc124\uc815 \ucf54\ub4dc\ub97c <code>agent.py<\/code> \ud30c\uc77c\uc5d0 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>\uc774\uc81c \uac00\uc7a5 \uc911\uc694\ud55c \ub2e8\uacc4\uc785\ub2c8\ub2e4! Gemini API \ud0a4\ub97c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Gemini API \ud0a4 \ubc1c\uae09<\/strong>: \ub9cc\uc57d Gemini API \ud0a4\uac00 \uc5c6\ub2e4\uba74, <a href=\"https:\/\/makersuite.google.com\/app\/apikey\">Google AI Studio<\/a> \ub610\ub294 <a href=\"https:\/\/console.cloud.google.com\/apis\/credentials\">Google Cloud Console<\/a>\uc5d0\uc11c \ubc1c\uae09\ubc1b\uc73c\uc138\uc694.<\/li>\n\n\n\n<li><strong>\ud658\uacbd \ubcc0\uc218 \uc124\uc815<\/strong>: \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. <code>&lt;YOUR_GEMINI_API_KEY&gt;<\/code> \ubd80\ubd84\uc740 \ubc1c\uae09\ubc1b\uc740 \uc2e4\uc81c \ud0a4\ub85c \ubc14\uafd4\uc8fc\uc138\uc694. <code>export GOOGLE_API_KEY='&lt;YOUR_GEMINI_API_KEY&gt;'<\/code> (\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.)<\/li>\n\n\n\n<li><strong>\ub274\uc2a4 \ube44\uc11c \ub2e4\uc2dc \uc2e4\ud589<\/strong>: \uc774\uc81c API \ud0a4\uac00 \uc124\uc815\ub418\uc5c8\uc73c\ubbc0\ub85c, \ub274\uc2a4 \ube44\uc11c\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/Users\/qmini\/Downloads\/adk-python-main &amp;&amp; adk web contributing\/samples<\/code><\/pre>\n\n\n\n<p>\uc774 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uba74 \uc6f9 UI\uac00 \ub2e4\uc2dc \uc5f4\ub9ac\uace0, \uc774\uc81c <code>news_assistant<\/code> \uc5d0\uc774\uc804\ud2b8\uc640 \ub300\ud654\ud558\uba74\uc11c \ucd5c\uc2e0 \ub274\uc2a4\ub97c \ubc1b\uc544\ubcfc \uc218 \uc788\uc744 \uac70\uc608\uc694!<\/p>\n","protected":false},"excerpt":{"rendered":"<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. [5 tools called] 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 [&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,66],"tags":[],"class_list":["post-467","post","type-post","status-publish","format-standard","hentry","category-ai","category-66"],"_links":{"self":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/467","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=467"}],"version-history":[{"count":6,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/467\/revisions"}],"predecessor-version":[{"id":492,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/posts\/467\/revisions\/492"}],"wp:attachment":[{"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=467"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/qmac.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}