{"id":7593,"date":"2026-01-29T18:27:45","date_gmt":"2026-01-29T09:27:45","guid":{"rendered":"https:\/\/blog.since2020.jp\/?p=7593"},"modified":"2026-01-29T18:27:45","modified_gmt":"2026-01-29T09:27:45","slug":"google-adk-multi-agent-data-science","status":"publish","type":"post","link":"https:\/\/since2020.jp\/media\/google-adk-multi-agent-data-science\/","title":{"rendered":"\u30de\u30eb\u30c1\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3067\u4f5c\u308bData Science\u30b7\u30b9\u30c6\u30e0"},"content":{"rendered":"\n<p>Google ADK\uff08Agent Development Kit\uff09\u306e\u516c\u5f0f\u30b5\u30f3\u30d7\u30eb\u300cdata-science\u300d\u3092\u984c\u6750\u306b\u3001Root Agent\u304c\u8907\u6570\u306e\u5c02\u9580\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\uff08BigQuery\/Analytics\/AlloyDB\/BQML\uff09\u3092\u675f\u306d\u3066\u201c\u30c7\u30fc\u30bf\u53d6\u5f97\u2192\u5206\u6790\u2192\u53ef\u8996\u5316\u201d\u307e\u3067\u3092\u81ea\u7136\u8a00\u8a9e\u3067\u5b9f\u884c\u3059\u308b\u4ed5\u7d44\u307f\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u9593\u306e\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u306btool_context.state\u3092\u4f7f\u3046\u758e\u7d50\u5408\u30d1\u30bf\u30fc\u30f3\u3001NL2SQL\u306eBASELINE\u3068CHASE-SQL\u306e\u4f7f\u3044\u5206\u3051\u3001\u62e1\u5f35\u3057\u3084\u3059\u3044\u8a2d\u8a08\u306e\u8003\u3048\u65b9\u307e\u3067\u3092\u62bc\u3055\u3048\u307e\u3059\u3002<\/p>\n\n\n<h2>\u6ce8\u610f<\/h2>\n<p>\u672c\u8a18\u4e8b\u306f2026\u5e741\u670822\u65e5\u6642\u70b9\u306eadk-samples\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u6700\u65b0\u7248\u3067\u306f\u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3001\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3001\u304a\u3088\u3073BigQuery\u63a5\u7d9a\u65b9\u6cd5\u306a\u3069\u304c\u66f4\u65b0\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u6700\u65b0\u60c5\u5831\u306f<a href=\"https:\/\/github.com\/google\/adk-samples\/tree\/main\/python\/agents\/data-science\" class=\"notion-link-token notion-focusable-token notion-enable-hover\" rel=\"noopener noreferrer\" data-token-index=\"1\"><span class=\"link-annotation-unknown-block-id--876391189\">\u516c\u5f0f\u30ea\u30dd\u30b8\u30c8\u30ea<\/span><\/a>\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002<!-- notionvc: bc404af0-6aee-4020-b30c-631d34b36ea9 --><\/p>\n\n<h2>\u306f\u3058\u3081\u306b<\/h2>\n<p>Google ADK\uff08Agent Development Kit\uff09\u3092\u4f7f\u3048\u3070\u3001\u5358\u4e00\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u7c21\u5358\u306b\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\r\n<p>\u3057\u304b\u3057\u3001\u73fe\u5b9f\u306e\u696d\u52d9\u3067\u306f\u300cSQL\u3067\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3001Python\u3067\u5206\u6790\u3057\u3066\u3001\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u300d\u3068\u3044\u3063\u305f<strong>\u8907\u6570\u306e\u30b9\u30ad\u30eb\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u51e6\u7406<\/strong>\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u4e00\u3064\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u3059\u3079\u3066\u3092\u4efb\u305b\u308b\u3068\u3001\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u80a5\u5927\u5316\u3057\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u304c\u56f0\u96e3\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\r\n<p>\u305d\u3053\u3067\u767b\u5834\u3059\u308b\u306e\u304c<strong>\u30de\u30eb\u30c1\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/strong>\u3067\u3059\u3002<\/p>\r\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Google ADK\u306e\u516c\u5f0f\u30b5\u30f3\u30d7\u30eb\u300cdata-science\u300d\u3092\u4f7f\u3063\u3066\u3001\u8907\u6570\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u5354\u8abf\u3057\u3066\u52d5\u4f5c\u3059\u308b\u4ed5\u7d44\u307f\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\r\n<p><!-- notionvc: 0676765f-9ebf-4b77-ac70-c108f94aaf8b --><\/p>\n\n<h2>\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u6982\u89b3<\/h2>\n<b>\u5168\u4f53\u69cb\u6210<!-- notionvc: acd750ef-ddf3-4516-a7f7-a0ec746a5079 --><\/b>\r\n<p>data-science\u30b5\u30f3\u30d7\u30eb\u306f\u3001<strong>Root Agent<\/strong>\u304c<strong>4\u3064\u306e\u5c02\u9580\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/strong>\u3092\u675f\u306d\u308b\u69cb\u9020\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\r\n<p><!-- notionvc: e34e1dd2-e321-4c5a-bca4-6ef0a3deec79 --><\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u540d\u79f0\u672a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb.drawio-4-1.png\" alt=\"\" width=\"541\" height=\"116\" class=\"aligncenter size-full wp-image-7595\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u540d\u79f0\u672a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb.drawio-4-1.png 541w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u540d\u79f0\u672a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb.drawio-4-1-300x64.png 300w\" sizes=\"(max-width: 541px) 100vw, 541px\" \/><\/p>\r\n<b>\u5404\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u5f79\u5272<!-- notionvc: b2c9b429-522d-48d1-a11f-16f649c4c913 --><\/b>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-16.29.21.png\" alt=\"\" width=\"1530\" height=\"556\" class=\"aligncenter size-full wp-image-7596\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-16.29.21.png 1530w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-16.29.21-300x109.png 300w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-16.29.21-1024x372.png 1024w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-16.29.21-768x279.png 768w\" sizes=\"(max-width: 1530px) 100vw, 1530px\" \/><\/p>\r\n<b>\u306a\u305c\u3053\u306e\u8a2d\u8a08\u306a\u306e\u304b\uff1f<!-- notionvc: fb930976-7d37-49ab-92bb-b6f4ea2a4ce9 --><\/b>\r\n<ul>\r\n\t<li><strong>\u5c02\u9580\u6027\u306e\u5206\u96e2<\/strong>: SQL\u306e\u5c02\u9580\u5bb6\u3001Python\u306e\u5c02\u9580\u5bb6\u3001ML\u306e\u5c02\u9580\u5bb6\u304c\u305d\u308c\u305e\u308c\u62c5\u5f53<\/li>\r\n\t<li><strong>\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/strong>: \u5404\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u5c0f\u3055\u304f\u4fdd\u3066\u308b<\/li>\r\n\t<li><strong>\u62e1\u5f35\u6027<\/strong>: \u65b0\u3057\u3044\u5c02\u9580\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u3084\u3059\u3044<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: 9389cf49-5c21-4a90-9536-f22eea6bd2fd --><\/p>\n\n<h2>\u52d5\u304b\u3057\u3066\u307f\u308b<\/h2>\n<b>\u74b0\u5883\u69cb\u7bc9<\/b>\r\n<p><code># \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3<\/code><\/p>\r\n<p><code>git clone &lt;https:\/\/github.com\/google\/adk-samples.git&gt;<\/code><\/p>\r\n<p><code>cd adk-samples\/python\/agents\/data-science<\/code><\/p>\r\n<p><code># \u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/code><\/p>\r\n<p><code>uv sync <\/code><\/p>\r\n<p><code><!-- --><!-- notionvc: 99f34834-089c-4f37-8575-e80af9663f18 --># .env\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u5b9a <\/code><\/p>\r\n<p><code><!-- --><!-- notionvc: d6c210e2-523a-46fb-93dd-4836f145db47 -->cp .env.example .env <!-- --><!-- notionvc: f2c04322-9794-4bc5-9d31-b2682593227f --><!-- --><!-- notionvc: c2fc2127-c916-4906-8ae8-9fbfb4e72b29 --><!-- --><!-- notionvc: 764fb19c-fef0-42a3-95f3-b504c31fab70 --><!-- --><!-- notionvc: 959a3fe1-eb33-46c6-a242-91d09b8c264c --><!-- --><!-- notionvc: f835ebd6-9ed2-4c8a-b117-76590c8d8230 --><\/code><\/p>\r\n<p>.env\u30d5\u30a1\u30a4\u30eb\u306e\u4ee5\u4e0b\u306e\u9805\u76ee\u3092\u7de8\u96c6\u3057\u307e\u3059\uff1a<\/p>\r\n<p><code># Vertex AI\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f1\u306b\u8a2d\u5b9a<\/code><\/p>\r\n<p><code>GOOGLE_GENAI_USE_VERTEXAI=1<!-- notionvc: 005585e0-a13b-4480-b824-b138860ea835 --> <\/code><\/p>\r\n<p><code><!-- --><!-- notionvc: f4cd04f5-6964-4ec7-b5f3-823c31545757 --># GCP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a2d\u5b9a<\/code><\/p>\r\n<p><code>GOOGLE_CLOUD_PROJECT=your-project-id\u00a0 \u00a0# GCP\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u78ba\u8a8d<\/code><\/p>\r\n<p><code> <!-- --><!-- notionvc: b1f653dd-03f3-4c10-8dfa-b6de7c28b733 -->GOOGLE_CLOUD_LOCATION=us-central1 \u00a0 \u00a0# \u30ea\u30fc\u30b8\u30e7\u30f3<\/code><\/p>\r\n<p><code># BigQuery\u306e\u8a2d\u5b9a<\/code><\/p>\r\n<p><code> <!-- --><!-- notionvc: 56ba5b63-9349-4eea-aedd-898f458ffac7 -->BQ_COMPUTE_PROJECT_ID=your-project-id \u00a0 \u00a0# \u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID\u3067OK <\/code><\/p>\r\n<p><code><!-- --><!-- notionvc: eea13712-30c0-47e3-bb0e-84c4b9253eff -->BQ_DATA_PROJECT_ID=your-project-id \u00a0 \u00a0# \u540c\u3058\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID\u3067<\/code><\/p>\r\n<p><code>OKBQ_DATASET_ID=your_dataset_name \u00a0 \u00a0# \u4f5c\u6210\u3059\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u540d <!-- --><!-- notionvc: c541739d-7bdd-4644-9a75-06c2b57ec0c7 --><!-- --><!-- notionvc: 9d18e17b-2d83-459b-bcf4-fd3bd7fb3676 --><!-- --><!-- notionvc: 52714a4d-cbbc-4d02-aba7-cedb38cdf6d5 --><!-- --><!-- notionvc: d16fd469-cd8f-4138-b5dd-93635b2edfac --><\/code><\/p>\r\n<p>GCP\u30d7\u30ed\u30b8\u30a7\u30af\u30c8ID\u306f\u3001<a href=\"https:\/\/console.cloud.google.com\/\">Google Cloud Console<\/a>\u306e\u5de6\u4e0a\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\r\n<p><code># \u30b5\u30f3\u30d7\u30eb\u30c7\u30fc\u30bf\u3092BigQuery\u306b\u30ed\u30fc\u30c9\uff08train\/test\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\uff09<\/code><\/p>\r\n<p><code> uv run python3 data_science\/utils\/create_bq_table.py <\/code><\/p>\r\n<p><code># \u30b5\u30fc\u30d0\u30fc\u3092\u8d77\u52d5 <\/code><\/p>\r\n<p><code>uv run adk web <!-- --><!-- notionvc: a388deb6-c0d6-425c-98b5-c5ed6d765eb6 --><\/code><\/p>\r\n<p><!-- notionvc: 2861b447-2187-438e-baf0-74be832fb859 --><\/p>\r\n<b>BigQuery Agent \u3092\u8a66\u3059<!-- notionvc: 2b5ae22c-5171-45eb-a027-d52be11eff6c --><\/b>\r\n<p>\u30bf\u30fc\u30df\u30ca\u30eb\u306b\u8868\u793a\u3055\u308c\u308bURL\u3092\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304d\u3001<code>data_science<\/code> \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u9078\u629e\u3057\u307e\u3059\u3002<\/p>\r\n<p>\u300c<strong>train\u30c6\u30fc\u30d6\u30eb\u306e\u884c\u6570\u3092\u6559\u3048\u3066<\/strong>\u300d\u3068\u5165\u529b\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u52d5\u4f5c\u3057\u307e\u3059\uff1a<\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49.png\" alt=\"\" width=\"1909\" height=\"1039\" class=\"aligncenter size-full wp-image-7598\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49.png 1909w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49-300x163.png 300w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49-1024x557.png 1024w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49-768x418.png 768w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2026-01-29-14.03.49-1536x836.png 1536w\" sizes=\"(max-width: 1909px) 100vw, 1909px\" \/><\/p>\r\n<p><!-- notionvc: ed68e0ba-e9f5-4152-acc9-cb234ddc71f0 --><\/p>\r\n<p>Root Agent\u304c\u8cea\u554f\u3092\u53d7\u3051\u53d6\u308a\u3001<code>call_bigquery_agent<\/code>\u3092\u547c\u3073\u51fa\u3057\u3066\u3044\u307e\u3059\u3002BigQuery Agent\u306f\u5185\u90e8\u3067\uff1a<\/p>\r\n<ol>\r\n\t<li><code>bigquery_nl2sql<\/code>\u30c4\u30fc\u30eb\u3067SQL\u3092\u751f\u6210<\/li>\r\n\t<li><code>execute_sql<\/code>\u30c4\u30fc\u30eb\u3067\u30af\u30a8\u30ea\u3092\u5b9f\u884c<\/li>\r\n\t<li>\u7d50\u679c\uff08229,680\u884c\uff09\u3092\u8fd4\u7b54<\/li>\r\n<\/ol>\r\n<p>\u3053\u306e\u3088\u3046\u306b\u3001<strong>\u81ea\u7136\u8a00\u8a9e\u304b\u3089SQL\u304c\u81ea\u52d5\u751f\u6210\u3055\u308c\u3001\u5b9f\u884c\u3055\u308c\u308b<\/strong>\u4ed5\u7d44\u307f\u3067\u3059\u3002<\/p>\r\n<p><!-- notionvc: 629a834b-23f0-47ce-8d5d-df47207a9a2d --><\/p>\r\n<b>Analytics Agent \u3092\u8a66\u3059<!-- notionvc: b9e9488b-1327-41a9-9c06-0bb2ec7a7cfc --><\/b>\r\n<p>\u6b21\u306b\u3001\u300c<span data-token-index=\"1\" class=\"notion-enable-hover\">train\u30c6\u30fc\u30d6\u30eb\u306ecountry\u5225\u306e\u58f2\u4e0a\u5408\u8a08\u3092\u68d2\u30b0\u30e9\u30d5\u3067\u8868\u793a\u3057\u3066<\/span>\u300d\u3068\u5165\u529b\u3057\u3066\u307f\u307e\u3059\u3002<!-- notionvc: 8a419652-9d29-47a6-98d0-6e76a2dcef81 --><\/p>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6.jpg\" alt=\"\" width=\"1920\" height=\"1067\" class=\"aligncenter size-full wp-image-7599\" srcset=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6.jpg 1920w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6-300x167.jpg 300w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6-1024x569.jpg 1024w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6-768x427.jpg 768w, https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/image-6-1536x854.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\r\n<p>\u4eca\u5ea6\u306f2\u3064\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u9023\u643a\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\r\n<ol>\r\n\t<li><strong>BigQuery Agent<\/strong>: \u30c7\u30fc\u30bf\u3092\u53d6\u5f97<\/li>\r\n\t<li><strong>Analytics Agent<\/strong>: Python\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3057\u3001\u30b0\u30e9\u30d5\u3092\u63cf\u753b<\/li>\r\n<\/ol>\r\n<p>Analytics Agent\u306fVertex AI Code Interpreter\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001matplotlib\u3067\u30b0\u30e9\u30d5\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\u3002<strong>\u30c7\u30fc\u30bf\u53d6\u5f97\u304b\u3089\u53ef\u8996\u5316\u307e\u3067\u3001\u81ea\u7136\u8a00\u8a9e\u306e\u6307\u793a\u3060\u3051\u3067\u5b8c\u7d50<\/strong>\u3057\u307e\u3059\u3002<\/p>\r\n<p><!-- notionvc: f03dde7e-17d5-42a7-b95c-8c6bd34f3af6 --><\/p>\n\n<h2>\u72b6\u614b\u5171\u6709\u306e\u4ed5\u7d44\u307f\uff1atool_context.state<\/h2>\n<p>\u30de\u30eb\u30c1\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3067\u6700\u3082\u91cd\u8981\u306a\u306e\u306f\u300c<strong>\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u9593\u3067\u3069\u3046\u30c7\u30fc\u30bf\u3092\u5171\u6709\u3059\u308b\u304b<\/strong>\u300d\u3067\u3059\u3002<\/p>\r\n<p>\u3053\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001<code>tool_context.state<\/code>\u3068\u3044\u3046\u5171\u6709\u8f9e\u66f8\u3092\u4f7f\u3063\u305f\u30b7\u30f3\u30d7\u30eb\u306a\u30d1\u30bf\u30fc\u30f3\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\r\n<b>\u30c7\u30fc\u30bf\u30d5\u30ed\u30fc<\/b>\r\n<p><img decoding=\"async\" src=\"https:\/\/since2020.jp\/media\/wp-content\/uploads\/2026\/01\/\u540d\u79f0\u672a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb.drawio-3-1.png\" alt=\"\" width=\"281\" height=\"161\" class=\"aligncenter size-full wp-image-7600\" \/><\/p>\r\n<b>\u30b3\u30fc\u30c9\u4f8b<!-- notionvc: 4c118424-2a09-46fc-81f5-c337a9049989 --><\/b>\r\n<p>BigQuery Agent\u304c\u30af\u30a8\u30ea\u7d50\u679c\u3092\u4fdd\u5b58\uff1a<!-- notionvc: 0db0a87c-fa92-4640-97c1-6b3b138e4095 --><\/p>\r\n<p><!-- notionvc: bf6d6319-bb2f-4ff9-9bbd-c9ac8bf0316e --><\/p>\r\n<p><code># BigQuery Agent \u306e\u30c4\u30fc\u30eb\u5185<\/code><code><\/code><code><\/code><\/p>\r\n<p><code>tool_context.state[\"bigquery_query_result\"] = query_results<\/code><\/p>\r\n<p>&nbsp;<\/p>\r\n<p><code>tool_context.state[\"sql_query\"] = generated_sql<\/code><\/p>\r\n<p>Analytics Agent\u304c\u30c7\u30fc\u30bf\u3092\u53c2\u7167\u3057\u3066\u5206\u6790\uff1a<!-- notionvc: c7cda23e-6853-47c6-9e87-fc0b4affc3b7 --><\/p>\r\n<p><code># Analytics Agent \u306e\u30c4\u30fc\u30eb\u5185 <\/code><\/p>\r\n<p><code>data = tool_context.state.get(\"bigquery_query_result\") <\/code><\/p>\r\n<p><code># \u2192 pandas DataFrame \u3068\u3057\u3066\u5206\u6790\u30fb\u53ef\u8996\u5316<\/code> <!-- --><!-- notionvc: ad58ce7a-70df-4ac8-b936-288d201afac9 --><\/p>\n\n<h2>NL2SQL\uff1a2\u3064\u306e\u624b\u6cd5<\/h2>\n<p>BigQuery Agent\u306b\u306f\u3001\u81ea\u7136\u8a00\u8a9e\u304b\u3089SQL\u3092\u751f\u6210\u3059\u308b<span data-token-index=\"1\" class=\"notion-enable-hover\">2\u3064\u306e\u624b\u6cd5<\/span>\u304c\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u3059\u3002<!-- notionvc: 256a61f6-27c5-47c8-a5e3-1a639b254b0c --><\/p>\r\n<b>BASELINE\uff08\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\uff09<!-- notionvc: e2d11ec3-3342-4a4b-a619-071a1d2674d7 --><\/b>\r\n<p>\u30b7\u30f3\u30d7\u30eb\u306a1\u56de\u306eLLM\u547c\u3073\u51fa\u3057\u3067SQL\u3092\u751f\u6210\u3057\u307e\u3059\u3002<!-- notionvc: 87c98e29-fbd0-43f6-be6c-2edbc75ce86c --><\/p>\r\n<p><code>\u30e6\u30fc\u30b6\u30fc\u306e\u8cea\u554f \u2192 LLM\u306b1\u56de\u30d7\u30ed\u30f3\u30d7\u30c8 \u2192 SQL\u51fa\u529b<\/code> <!-- --><!-- notionvc: fd3762af-d09b-4c30-9850-a0fa0bc409ac --><\/p>\r\n<p><strong>\u30e1\u30ea\u30c3\u30c8\uff1a<\/strong><\/p>\r\n<ul>\r\n\t<li>\u9ad8\u901f\uff081\u56de\u306eAPI\u547c\u3073\u51fa\u3057\uff09<\/li>\r\n\t<li>\u30b3\u30b9\u30c8\u304c\u4f4e\u3044<\/li>\r\n<\/ul>\r\n<p>\u30c7\u30e1\u30ea\u30c3\u30c8\uff1a<\/p>\r\n<ul>\r\n\t<li>\u8907\u96d1\u306a\u30af\u30a8\u30ea\u3067\u7cbe\u5ea6\u304c\u843d\u3061\u3084\u3059\u3044<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: c311e0d7-8008-4eec-a737-1e246aac92c6 --><\/p>\r\n<b>CHASE-SQL\uff08\u30c1\u30a7\u30a4\u30b9SQL\uff09<!-- notionvc: f14c97c5-eb26-4bba-9058-589ec7d2c1c9 --><\/b>\r\n<p>ICLR 2025\u3067\u767a\u8868\u3055\u308c\u305f\u6700\u65b0\u624b\u6cd5\u3002\u8907\u6570\u30b9\u30c6\u30c3\u30d7\u306e\u63a8\u8ad6\u3067\u7cbe\u5ea6\u3092\u4e0a\u3052\u307e\u3059\u3002<!-- notionvc: a1b382d0-06c6-45ff-a7c4-e425abb13675 --><\/p>\r\n<p><code>\u8907\u96d1\u306a\u8cea\u554f <\/code><\/p>\r\n<p><code>\u2193 Divide\uff08\u5206\u89e3\uff09 <\/code><\/p>\r\n<p><code>\u30b5\u30d6\u8cea\u554f1, \u30b5\u30d6\u8cea\u554f2, \u30b5\u30d6\u8cea\u554f3 <\/code><\/p>\r\n<p><code>\u2193 Conquer\uff08\u5404\u30b5\u30d6\u8cea\u554f\u306eSQL\u751f\u6210\uff09<\/code><\/p>\r\n<p><code> SQL\u65ad\u72471, SQL\u65ad\u72472, SQL\u65ad\u72473 <\/code><\/p>\r\n<p><code>\u2193 Combine\uff08\u7d71\u5408\u30fb\u6700\u9069\u5316\uff09 <\/code><\/p>\r\n<p><code>\u6700\u7d42SQL<\/code> <!-- --><!-- notionvc: 266799f0-9f5f-4853-897a-7777828d6c00 --><\/p>\r\n<p>\u30e1\u30ea\u30c3\u30c8\uff1a<\/p>\r\n<ul>\r\n\t<li>\u8907\u96d1\u306a\u30af\u30a8\u30ea\u3067\u3082\u9ad8\u7cbe\u5ea6<\/li>\r\n<\/ul>\r\n<p>\u30c7\u30e1\u30ea\u30c3\u30c8\uff1a<\/p>\r\n<ul>\r\n\t<li>\u51e6\u7406\u6642\u9593\u304c\u9577\u3044<\/li>\r\n\t<li>\u30b3\u30b9\u30c8\u304c\u9ad8\u3044\uff08\u8907\u6570\u56de\u306eAPI\u547c\u3073\u51fa\u3057\uff09<\/li>\r\n<\/ul>\r\n<p><!-- notionvc: a70dc870-ec25-480f-a532-f1ff118732ef --><\/p>\r\n<b>\u5207\u308a\u66ff\u3048\u65b9\u6cd5<!-- notionvc: 0bad5bb1-6842-4c65-b95d-69b198b47697 --><\/b>\r\n<div class=\"notion-inline-code-container\"><span data-token-index=\"0\" class=\"notion-enable-hover\">.env<\/span>\u30d5\u30a1\u30a4\u30eb\u3067\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3060\u3051\u3067\u5207\u308a\u66ff\u3048\u53ef\u80fd\u3067\u3059\uff1a<!-- notionvc: 66e84090-aac8-4c6e-9c45-b2bbb346174a --><\/div>\r\n<div><code># \u30b7\u30f3\u30d7\u30eb\u30fb\u9ad8\u901f<\/code><\/div>\r\n<div><code> BQ_NL2SQL_METHOD=\"BASELINE\" <\/code><\/div>\r\n<div><code># \u9ad8\u7cbe\u5ea6\u30fb\u4f4e\u901f <\/code><\/div>\r\n<div><code>BQ_NL2SQL_METHOD=\"CHASE\"<\/code> <!-- --><!-- notionvc: 3f945bef-665a-4f66-9eb3-418e21671ed2 --><\/div>\r\n<div><\/div>\n\n<h2>\u305d\u306e\u4ed6\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8<\/h2>\n<p>\u4eca\u56de\u306f\u8a66\u305b\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u3001data-science\u30b5\u30f3\u30d7\u30eb\u306b\u306f\u4ee5\u4e0b\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\r\n<b>AlloyDB Agent<\/b>\r\n<p>PostgreSQL\u4e92\u63db\u306eAlloyDB\u306b\u5bfe\u3057\u3066NL2SQL\u3092\u5b9f\u884c\u3059\u308b\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3067\u3059\u3002MCP Toolbox for Databases\u3092\u4f7f\u7528\u3057\u3066\u304a\u308a\u3001BigQuery\u3068AlloyDB\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u30af\u30ed\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30af\u30a8\u30ea\u3082\u53ef\u80fd\u3067\u3059\u3002<\/p>\r\n<b>BQML Agent<\/b>\r\n<p>BigQuery ML\u3092\u4f7f\u3063\u305f\u6a5f\u68b0\u5b66\u7fd2\u30e2\u30c7\u30eb\u306e\u8a13\u7df4\u30fb\u63a8\u8ad6\u3092\u884c\u3046\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3067\u3059\u3002RAG\uff08Retrieval-Augmented Generation\uff09\u3092\u4f7f\u3063\u3066BQML\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u306a\u304c\u3089\u3001\u9069\u5207\u306aML\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\r\n<p>&nbsp;<\/p>\n\n<h2>\u307e\u3068\u3081<\/h2>\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Google ADK\u306e\u516c\u5f0f\u30b5\u30f3\u30d7\u30eb\u300cdata-science\u300d\u3092\u901a\u3058\u3066\u3001\u4ee5\u4e0b\u3092\u5b66\u3073\u307e\u3057\u305f\u3002<\/p>\r\n<ol>\r\n\t<li><strong>\u30de\u30eb\u30c1\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/strong>: Root Agent\u304c\u5c02\u9580\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3092\u675f\u306d\u308b\u968e\u5c64\u69cb\u9020<\/li>\r\n\t<li><strong>\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u9023\u643a\u306e\u5b9f\u4f8b<\/strong>: BigQuery Agent \u2192 Analytics Agent \u306e\u30c7\u30fc\u30bf\u9023\u643a<\/li>\r\n\t<li><strong>\u72b6\u614b\u5171\u6709\u30d1\u30bf\u30fc\u30f3<\/strong>: <code>tool_context.state<\/code>\u306b\u3088\u308b\u758e\u7d50\u5408\u306a\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057<\/li>\r\n\t<li><strong>NL2SQL\u624b\u6cd5\u306e\u9078\u629e<\/strong>: BASELINE\u3068CHASE-SQL\u306e\u4f7f\u3044\u5206\u3051<\/li>\r\n<\/ol>\r\n<p>\u30de\u30eb\u30c1\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u63a1\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u5404\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u8cac\u52d9\u3092\u660e\u78ba\u306b\u5206\u96e2\u3057\u3001\u4fdd\u5b88\u6027\u3068\u62e1\u5f35\u6027\u306e\u9ad8\u3044\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\r\n<p><!-- notionvc: 8f7efef3-5706-4381-8988-8b5338b6fa35 --><\/p>","protected":false},"excerpt":{"rendered":"<p>Google ADK\uff08Agent Development Kit\uff09\u306e\u516c\u5f0f\u30b5\u30f3\u30d7\u30eb\u300cdata-science\u300d\u3092\u984c\u6750\u306b\u3001Root Agent\u304c\u8907\u6570\u306e\u5c02\u9580\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\uff08BigQuery\/Analytics\/AlloyDB\/B [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":7594,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","swell_btn_cv_data":"","footnotes":"","_wp_rev_ctl_limit":""},"categories":[1249],"tags":[96,143,207,166,39],"class_list":["post-7593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledge","tag-ai","tag-gcp","tag-google-cloud","tag-vertex-ai","tag-39"],"_links":{"self":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/7593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/comments?post=7593"}],"version-history":[{"count":0,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/posts\/7593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media\/7594"}],"wp:attachment":[{"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/media?parent=7593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/categories?post=7593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/since2020.jp\/media\/wp-json\/wp\/v2\/tags?post=7593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}