class DataAnalyst(dspy.Signature): """You are a data analyst. You'll be asked questions and you need to try to answer them using the tools you have access to. """ user_request: str = dspy.InputField() process_result: str = dspy.OutputField( desc=( "Answer to the query" ) )from utils import print_dspy_resultasync with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools = await session.list_tools() dspy_tools = [] for tool in tools.tools: dspy_tools.append(dspy.Tool.from_mcp_tool(session, tool)) react = dspy.ReAct(DataAnalyst, tools=dspy_tools) result = await react.acall(user_request="What's the most popular Amazon product category") print_dspy_result(result)
Response
================================================================================🤖 DSPy ReAct Result================================================================================📍 STEP 1----------------------------------------🧠 THINKING: I need to find information about Amazon product categories and determine which one is most popular. First, I should explore what databases are available to see if there's any Amazon-related data.🔧 TOOL: list_databases📊 RESULT: amazonblueskycountrycoviddefaultdnsenvironmentalfoodforexgeogitgithubhackernewsimdblogsmetricamgbenchmtanoaanyc_taxinypdontimeopenskyotelotel_v2pypirandomredditrubygemssta...📍 STEP 2----------------------------------------🧠 THINKING: Great! I can see there's an "amazon" database available. This is exactly what I need to find information about Amazon product categories. Let me explore the tables in the amazon database to see what data is available.🔧 TOOL: list_tables Args: {'database': 'amazon'}📊 RESULT: { "database": "amazon", "name": "amazon_reviews", "comment": "", "columns": [ { "name": "review_date", "type": "Date", "default_type": "", "default_expression": "",...📍 STEP 3----------------------------------------🧠 THINKING: Perfect! I found the amazon_reviews table which contains a product_category column. This table has over 150 million rows of Amazon review data, which should give me a good representation of product popularity. To find the most popular Amazon product category, I need to count the number of reviews per category and order them by count in descending order. The category with the most reviews would be considered the most popular.🔧 TOOL: run_select_query Args: {'query': 'SELECT product_category, COUNT(*) as review_count FROM amazon.amazon_reviews GROUP BY product_category ORDER BY review_count DESC LIMIT 10'}📊 RESULT: 1. Books: 19,530,930 reviews 2. Digital_Ebook_Purchase: 17,622,107 reviews 3. Wireless: 9,001,567 reviews 4. PC: 6,908,245 reviews 5. Home: 6,221,321 reviews ... and 5 more📍 STEP 4----------------------------------------🧠 THINKING: Perfect! I have found the answer to the user's question. Based on the Amazon reviews data, I can clearly see that "Books" is the most popular Amazon product category with 19,530,930 reviews, followed by "Digital_Ebook_Purchase" with 17,622,107 reviews. The data shows a clear ranking of product categories by popularity based on the number of reviews each category has received. I now have all the information needed to answer the user's question.🔧 TOOL: finish📊 RESULT: Completed.🎯 REASONING----------------------------------------To answer the question about the most popular Amazon product category, I accessed the Amazon database and found a table called "amazon_reviews" with over 150 million review records. This table contains a "product_category" column that allows me to analyze product popularity based on review volume. I ran a query to count the number of reviews per product category and ordered them by count in descending order. The assumption here is that categories with more reviews indicate higher popularity, as more reviews typically correlate with more purchases and customer engagement.✅ FINAL RESULT----------------------------------------Based on Amazon review data containing over 150 million records, the most popular Amazon product category is **Books** with 19,530,930 reviews. Here are the top 10 most popular Amazon product categories by review count:1. **Books** - 19,530,930 reviews2. **Digital_Ebook_Purchase** - 17,622,107 reviews 3. **Wireless** - 9,001,567 reviews4. **PC** - 6,908,245 reviews5. **Home** - 6,221,321 reviews6. **Apparel** - 5,906,085 reviews7. **Health & Personal Care** - 5,331,239 reviews8. **Beauty** - 5,115,462 reviews9. **Video DVD** - 5,069,014 reviews10. **Mobile_Apps** - 5,033,164 reviewsIt's interesting to note that Books and Digital Ebook Purchase (which are related categories) together account for over 37 million reviews, showing the strong popularity of reading materials on Amazon's platform.================================================================================
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"ClickHouse Documentation","colors":{"primary":"#1c1c1c","light":"#333431","dark":"#fdff75"},"logo":{"light":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/light.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=b8a838f982def2b530a95016300bc7ec","dark":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/dark.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=563dcf3fc5bb3694597dec207c9b4ecf"},"favicon":"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/favicon.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=9a2d9de19e9259c4b5260fa5bfa26851","appearance":{"default":"dark"},"background":{"color":{"light":"#FFFFFF","dark":"#151515"}},"navbar":{},"fonts":{"family":"Inter"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"clarity":{"projectId":"xgummrwgj9"},"gtm":{"tagId":"GTM-WTNTDT7W"}},"contextual":{"options":["copy","view","download-pdf",{"title":"Set up the ClickHouse documentation MCP server","description":"Setup instructions for the ClickHouse documentation MCP server","icon":"/images/icons/icon-mcp.svg","href":"https://clickhouse.com/docs/resources/support-center/knowledge-base/setup-installation/set-up-clickhouse-documentation-mcp-server"}],"display":"toc"},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"variables":{"airgap_server_tag":"26.4.1.2709","airgap_keeper_tag":"26.2.1.258","airgap_operator_tag":"1.22992.1","airgap_cr_helm_tag":"1.11.11","airgap_api_tag":"1.175.4","airgap_api_helm_tag":"1.175.4","airgap_preflight_chart_tag":"1.38.7","airgap_support_bundle_tag":"1.12.0"},"navigation":{"languages":[{"language":"en","href":""},{"language":"ar","href":"ar"},{"language":"es","href":"es"},{"language":"fr","href":"fr"},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"},{"language":"pt-BR","href":"pt-BR"},{"language":"ru","href":"ru"},{"language":"zh","href":"zh"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"private-7c7dfe99","hasAudioNarration":false,"actualSubdomain":"private-7c7dfe99","customDomains":["clickhouse.com"],"gitSource":{"_id":"6ad7fa91692c7c940ff17a19","type":"github","owner":"clickhouse","repo":"clickhouse","deployBranch":"master","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae948890b92a3b473f7a5c3","collectionId":"90716070-cb37-4ff2-889d-cfca662d9d0a","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae948890b92a3b473f7a5c3"},"feedback":{"thumbs":true,"edits":true,"issues":true,"contextualFeedback":{"allowEmail":false},"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED","enabled":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae948890b92a3b473f7a5c3","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"en","tag":"Database","count":1752},{"language":"ja","tag":"データベース","count":1737},{"language":"pt-BR","tag":"Banco de dados","count":1737},{"language":"zh","tag":"数据库","count":1737},{"language":"ar","tag":"قاعدة البيانات","count":1736},{"language":"es","tag":"Base de datos","count":1736},{"language":"fr","tag":"Base de données","count":1736},{"language":"ko","tag":"데이터베이스","count":1736},{"language":"ru","tag":"База данных","count":1736},{"language":"en","tag":"Reference","count":1576},{"language":"ar","tag":"المرجع","count":1565},{"language":"es","tag":"Referencia","count":1565},{"language":"fr","tag":"Référence","count":1565},{"language":"ja","tag":"リファレンス","count":1565},{"language":"ko","tag":"참고","count":1565},{"language":"pt-BR","tag":"Referência","count":1565},{"language":"ru","tag":"Справочник","count":1565},{"language":"zh","tag":"参考文档","count":1565},{"language":"en","tag":"Solutions","count":560},{"language":"ar","tag":"الحلول","count":554},{"language":"es","tag":"Soluciones","count":554},{"language":"fr","tag":"Solutions","count":554},{"language":"ja","tag":"ソリューション","count":554},{"language":"ko","tag":"솔루션","count":554},{"language":"pt-BR","tag":"Soluções","count":554},{"language":"ru","tag":"Решения","count":554},{"language":"zh","tag":"解决方案","count":554},{"language":"es","tag":"Configuración","count":531},{"language":"ja","tag":"設定","count":531},{"language":"en","tag":"Settings","count":509},{"language":"ar","tag":"الإعدادات","count":505},{"language":"fr","tag":"Paramètres","count":505},{"language":"ko","tag":"설정","count":505},{"language":"pt-BR","tag":"Configurações","count":505},{"language":"ru","tag":"Настройки","count":505},{"language":"zh","tag":"设置","count":505},{"language":"en","tag":"Functions","count":330},{"language":"ar","tag":"الدوال","count":328},{"language":"es","tag":"Funciones","count":328},{"language":"fr","tag":"Fonctions","count":328},{"language":"ja","tag":"関数","count":328},{"language":"ko","tag":"함수","count":328},{"language":"pt-BR","tag":"Funções","count":328},{"language":"ru","tag":"Функции","count":328},{"language":"zh","tag":"函数","count":328},{"language":"en","tag":"Integrations","count":300},{"language":"ko","tag":"통합","count":296},{"language":"zh","tag":"集成","count":296},{"language":"ar","tag":"التكاملات","count":293},{"language":"es","tag":"Integraciones","count":293},{"language":"fr","tag":"Intégrations","count":293},{"language":"pt-BR","tag":"Integrações","count":293},{"language":"ru","tag":"Интеграции","count":293},{"language":"pt-BR","tag":"Recursos","count":291},{"language":"ja","tag":"インテグレーション","count":268},{"language":"en","tag":"Session Settings","count":261},{"language":"ar","tag":"إعدادات session","count":260},{"language":"es","tag":"Configuración de sesión","count":260},{"language":"fr","tag":"Paramètres de session","count":260},{"language":"ja","tag":"session 設定","count":260},{"language":"ko","tag":"세션 설정","count":260},{"language":"pt-BR","tag":"Configurações de sessão","count":260},{"language":"ru","tag":"Настройки сеанса","count":260},{"language":"zh","tag":"会话设置","count":260},{"language":"en","tag":"ClickHouse Cloud","count":256},{"language":"ar","tag":"ClickHouse Cloud","count":255},{"language":"es","tag":"ClickHouse Cloud","count":255},{"language":"fr","tag":"ClickHouse Cloud","count":255},{"language":"ja","tag":"ClickHouse Cloud","count":255},{"language":"ko","tag":"ClickHouse Cloud","count":255},{"language":"pt-BR","tag":"ClickHouse Cloud","count":255},{"language":"ru","tag":"ClickHouse Cloud","count":255},{"language":"zh","tag":"ClickHouse Cloud","count":255},{"language":"ar","tag":"أدلة إرشادية","count":219},{"language":"en","tag":"Guides","count":219},{"language":"es","tag":"Guías","count":219},{"language":"fr","tag":"Guides","count":219},{"language":"ja","tag":"ガイド","count":219},{"language":"ko","tag":"가이드","count":219},{"language":"pt-BR","tag":"Guias","count":219},{"language":"ru","tag":"Руководства","count":219},{"language":"zh","tag":"指南","count":219},{"language":"ar","tag":"الموارد","count":213},{"language":"en","tag":"Resources","count":213},{"language":"es","tag":"Recursos","count":213},{"language":"fr","tag":"Ressources","count":213},{"language":"ja","tag":"リソース","count":213},{"language":"ko","tag":"자료","count":213},{"language":"ru","tag":"Ресурсы","count":213},{"language":"zh","tag":"资源","count":213},{"language":"default","tag":"Solutions","count":125},{"language":"default","tag":"ClickHouse Cloud","count":125},{"language":"default","tag":"Cloud API","count":83},{"language":"default","tag":"API reference","count":83},{"language":"default","tag":"ClickHouse Private","count":42},{"language":"default","tag":"ClickStack","count":31},{"language":"default","tag":"Service","count":24},{"language":"default","tag":"Organization","count":21},{"language":"default","tag":"Postgres","count":18},{"language":"default","tag":"How-To Guides","count":17}],"searchSettings":{"maxResults":1}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"github-push-net-diff","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"_site/styles.css","href":"/docs/_mintlify/custom/private-7c7dfe99/2a1d0d506d6c7ad1/_site/styles.css"},{"filePath":"snippets/components/Badges/badges_styles.css","content":".ClickHouseSupportedBadge,.betaBadge{background-color:#dbeafe;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#1d4ed8;display:inline-flex;margin-right:5px;font-size:.875rem}.betaBadge::before{content:\"β\";flex:0 0 auto;margin-right:8px;font-size:1rem;font-weight:600;line-height:1}.dark a.betaBadge,a.betaBadge{color:#1d4ed8!important;text-decoration:none!important}.dark .betaBadge{background-color:#1e3a6b;color:#93c5fd}.dark a.betaBadge{color:#93c5fd!important}.ClickHouseSupportedBadge{background-color:#faff69;color:#161517}.ClickHouseSupportedIcon{margin-right:8px}.ClickHouseSupportedIcon svg path{fill:#282828}.ClickHouseSupportedBadge a{color:#000}.dark .ClickHouseSupportedBadge{background-color:#faff69;color:#161517}.dark .ClickHouseSupportedBadge a{color:#161517}.dark .ClickHouseSupportedIcon svg path{fill:#161517}.cloudNotSupportedBadge{background-color:#f6e5ff;color:#609;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.cloudNotSupportedIcon{margin-right:8px}a.cloudNotSupportedBadge{color:#609!important;text-decoration:none!important}.cloudNotSupportedIcon svg path{stroke:#609}.dark .cloudNotSupportedBadge{background-color:#33004d;color:#ecf}.dark a.cloudNotSupportedBadge{color:#ecf!important;text-decoration:none!important}.dark .cloudNotSupportedIcon svg path{stroke:#ecf}.cloudBadge{background-color:#dae6fc;color:#061d48;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .cloudBadge{background-color:#061d48;color:#dae6fc}.cloudIcon{margin-right:8px}.cloudIcon svg path{stroke:#061d48}.dark .cloudIcon svg path{stroke:#dae6fc}.CommunityMaintainedBadge{background-color:#69afff;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#fff;display:inline-flex;margin-right:5px;font-size:.875rem}.CommunityMaintainedIcon{margin-right:8px}.CommunityMaintainedIcon svg path,.dark .CommunityMaintainedIcon svg path{fill:#fff;stroke:none}.CommunityMaintainedBadge a,.CommunityMaintainedBadge svg path{color:#69afff}.dark .CommunityMaintainedBadge{background-color:#69afff;color:#fff}.dark .CommunityMaintainedBadge a{color:#fff}.deprecatedBadge{background-color:#dfdfdf;color:#53575f;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.deprecatedIcon{margin-right:8px}.dark .deprecatedBadge a,.deprecatedBadge a{color:inherit}.dark .deprecatedBadge{background-color:#414141;color:#e6e7e9}.deprecatedIcon svg path{stroke:#53575f}.dark .deprecatedIcon svg path{stroke:#e6e7e9}.enterprisePlanFeatureContainer{background-color:#f6f7fa;border-radius:4px;border:1px solid #e6e7e9;padding:12px 16px;margin-bottom:8px;font-size:.875rem}.enterprisePlanFeatureContainer p,.scalePlanFeatureContainer p{margin:0;padding:0}.enterprisePlanFeatureBadge,.experimentalBadge{border-radius:16px;display:flex;align-items:center;display:inline-flex;font-size:.875rem}.enterprisePlanFeatureBadge{background-color:#008a0b;border:1px;border-color:#437eef;color:#fff;padding:2px 12px;margin-bottom:8px}.dark .enterprisePlanFeatureContainer{background-color:#1f1f1c;border:1px solid #414141}.dark .enterprisePlanFeatureBadge{background-color:#99ffa1;color:#1f1f1c}.experimentalBadge{background-color:#f3e8ff;color:#6d28d9;padding:5px 12px;margin-right:5px}.experimentalIcon{margin-right:8px}.dark a.experimentalBadge,a.experimentalBadge{color:#6d28d9!important;text-decoration:none!important}.dark .experimentalBadge{background-color:#3b1d6b;color:#d8b4fe}.dark a.experimentalBadge{color:#d8b4fe!important}.experimentalIcon svg path{stroke:#6d28d9}.dark .experimentalIcon svg path{stroke:#d8b4fe}.PartnerBadge{background-color:#990073;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#fff;display:inline-flex;margin-right:5px;font-size:.875rem}.PartnerBadgeIcon{margin-right:8px}.PartnerBadgeIcon svg path{fill:#fbc9ef;stroke:#990073}.PartnerBadge a,.PartnerBadge svg path{color:#990073}.dark .PartnerBadge{background-color:#990073;color:#fbeff8}.dark .PartnerBadge a{color:#fbeff8}.dark .PartnerBadgeIcon svg path{fill:#990073;stroke:#fbeff8}.privatePreviewBadge{background-color:#fef3c7;color:#b45309;border-radius:16px;display:flex;align-items:center;padding:5px 12px;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .privatePreviewBadge{background-color:#4b3410;color:#fcd34d}.privatePreviewIcon{margin-right:8px}.privatePreviewIcon svg path{stroke:#b45309}.dark .privatePreviewIcon svg path{stroke:#fcd34d}.publicPreviewBadge{background-color:#dbeafe;border-radius:16px;display:flex;align-items:center;padding:5px 12px;color:#1d4ed8;display:inline-flex;margin-right:5px;font-size:.875rem}.dark .publicPreviewBadge{background-color:#1e3a6b;color:#93c5fd}.scalePlanFeatureContainer{background-color:#f6f7fa;border-radius:4px;border:1px solid #e6e7e9;padding:12px 16px;margin-bottom:8px;font-size:.875rem}.scalePlanFeatureBadge{border-radius:16px;display:flex;align-items:center;display:inline-flex;padding:2px 12px;margin-bottom:8px;font-size:.875rem}.dark .scalePlanFeatureContainer{background-color:#1f1f1c;border:1px solid #414141}.dark .scalePlanFeatureBadge,.scalePlanFeatureBadge{background-color:#1d64ec;color:#fff}"},{"filePath":"snippets/components/ClickStackAnimation/ClickStackAnimation.css","content":"@keyframes fadeInOut{0%,to{opacity:.3}50%{opacity:.8}}.clickstack-animation-wrapper{width:100%;max-width:max-content;transition:opacity .3s ease}.clickstack-animation-inner{transform-origin:top left}.clickstack-grid{display:grid;width:537px;height:537px;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.clickstack-grid-item{position:relative;display:flex;align-items:center;justify-content:center}.clickstack-grid-column{display:flex;flex-direction:column;align-items:center}.clickstack-icon-box{display:flex;width:4rem;height:4rem;align-items:center;justify-content:center;border-radius:.375rem;padding:1rem;flex-shrink:0;border:1px solid rgba(113,113,122,.8);background-color:#171717}.clickstack-svg-absolute{position:absolute}.clickstack-svg-left-center{left:50%;top:50%;transform:translateY(2rem)}.clickstack-svg-right-center{right:50%;top:50%;transform:translateY(2rem)}.clickstack-svg-bottom-left{bottom:50%;left:50%;transform:translateY(-2rem)}.clickstack-svg-bottom-right{bottom:50%;right:50%;transform:translateY(-2rem)}.clickstack-logo-container{position:relative}.clickstack-logo-glow{position:absolute;inset:0;z-index:0;animation:fadeInOut 3s ease-in-out infinite;background-color:rgba(250,255,105,.6);filter:blur(40px)}.clickstack-logo-box{position:absolute;inset:0;z-index:10;display:flex;border-radius:.5rem;border:2px solid #faff69;background-color:#262626;background-image:linear-gradient(to bottom right,rgba(250,255,105,.2),rgba(250,255,105,.4))}.clickstack-logo-svg{margin:auto}:is(.light) .clickstack-logo-glow{display:none}:is(.light) .clickstack-logo-box{border-color:#faff69;background-color:#000;background-image:none}.clickstack-line-bg{stroke:#414141}.clickstack-line-animated{stroke:#faff69}:is(.light) .clickstack-line-bg{stroke:#d4d4d8}:is(.light) .clickstack-line-animated{stroke:#a1a1aa}@media (max-width:767px){.clickstack-animation-wrapper{max-width:400px}.clickstack-grid{width:400px;height:400px}}"}],"page":{"pagePath":"ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","slug":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","pageMetadata":{"slug":"/use-cases/AI/MCP/ai-agent-libraries/DSPy","sidebarTitle":"DSPy","title":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","description":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다","keywords":["ClickHouse","MCP","DSPy"],"show_related_blogs":true,"doc_type":"guide","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Step,Steps}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`이 가이드에서는 `,_jsx(_components.a,{href:`https://github.com/langchain-ai/langgraph`,children:`DSPy`}),`를 사용해 `,_jsx(_components.a,{href:`https://sql.clickhouse.com/`,children:`ClickHouse SQL Playground`}),`와 `,_jsx(_components.a,{href:`https://github.com/ClickHouse/mcp-clickhouse`,children:`ClickHouse MCP 서버`}),`와 상호작용할 수 있는 AI 에이전트를 구축하는 방법을 알아봅니다.`]}),`\n`,_jsx(`div`,{id:`prerequisites`,children:_jsx(Heading,{level:`2`,id:`사전-요구-사항`,children:`사전 요구 사항`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`시스템에 Python이 설치되어 있어야 합니다.`}),`\n`,_jsxs(_components.li,{children:[`시스템에 `,_jsx(_components.code,{children:`pip`}),`가 설치되어 있어야 합니다.`]}),`\n`,_jsx(_components.li,{children:`Anthropic API Key 또는 다른 LLM 제공업체의 API Key가 필요합니다.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`다음 단계는 Python REPL 또는 스크립트에서 실행할 수 있습니다.`}),`\n`,_jsxs(Info,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`예시 노트북`})}),_jsxs(_components.p,{children:[`이 예시는 `,_jsx(_components.a,{href:`https://github.com/ClickHouse/examples/blob/main/ai/mcp/dspy/dspy.ipynb`,children:`examples 리포지토리`}),`의 노트북에서 확인할 수 있습니다.`]})]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`라이브러리 설치`,id:`install-libraries`,children:[_jsxs(_components.p,{children:[`필요한 라이브러리를 설치하려면 `,_jsx(_components.code,{children:`pip`}),`로 다음 명령을 실행하세요:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -q`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --upgrade`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pip`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -q`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dspy`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -q`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`})]}),`\n`]})})})]}),_jsxs(Step,{title:`자격 증명 설정`,id:`setup-credentials`,children:[_jsx(_components.p,{children:`다음으로 Anthropic API Key를 입력해야 합니다:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ANTHROPIC_API_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` getpass.getpass(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Enter Anthropic API Key:\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsxs(Info,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`다른 LLM 제공업체 사용`})}),_jsxs(_components.p,{children:[`Anthropic API Key가 없고 다른 LLM 제공업체를 사용하려는 경우,\n`,_jsx(_components.a,{href:`https://dspy.ai/#__tabbed_1_1`,children:`DSPy docs`}),`에서 자격 증명 설정 방법을 확인할 수 있습니다.`]})]}),_jsx(_components.p,{children:`다음으로, ClickHouse SQL Playground에 연결하는 데 필요한 자격 증명을 정의합니다:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`env `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CLICKHOUSE_HOST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sql-clickhouse.clickhouse.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CLICKHOUSE_PORT\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"8443\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CLICKHOUSE_USER\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"demo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CLICKHOUSE_PASSWORD\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"CLICKHOUSE_SECURE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"true\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`MCP 서버 초기화`,id:`initialize-mcp`,children:[_jsx(_components.p,{children:`이제 ClickHouse MCP 서버가 ClickHouse SQL Playground를 가리키도록 설정합니다.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mcp `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ClientSession, StdioServerParameters`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mcp.client.stdio `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` stdio_client`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`server_params `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` StdioServerParameters(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` command`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` args`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'run'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '--with'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'mcp-clickhouse'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '--python'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'3.13'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'mcp-clickhouse'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` env`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`env`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})})]}),_jsxs(Step,{title:`LLM 초기화`,id:`initialize-llm`,children:[_jsx(_components.p,{children:`다음으로, 아래 줄을 사용하여 LLM을 초기화합니다:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dspy.configure(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`lm`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dspy.LM(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"anthropic/claude-sonnet-4-20250514\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})]}),`\n`]})})})]}),_jsxs(Step,{title:`에이전트 실행`,id:`run-the-agent`,children:[_jsx(_components.p,{children:`마지막으로, 에이전트를 초기화하고 실행합니다:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`24`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`24`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` DataAnalyst`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`dspy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Signature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"\"You are a data analyst. You'll be asked questions and you need to try to answer them using the tools you have access to. \"\"\"`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` user_request: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`str`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy.InputField()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` process_result: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`str`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy.OutputField(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` desc`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Answer to the query\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` utils `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` print_dspy_result`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` stdio_client(server_params) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (read, write):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` with`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ClientSession(read, write) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` session:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` session.initialize()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` tools `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` session.list_tools()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy_tools `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` tool `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` tools.tools:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy_tools.append(dspy.Tool.from_mcp_tool(session, tool))`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` react `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dspy.ReAct(DataAnalyst, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`tools`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dspy_tools)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` react.acall(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`user_request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"What's the most popular Amazon product category\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` print_dspy_result(result)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Response`,numberOfLines:`109`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`109`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`================================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🤖 DSPy ReAct Result`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`================================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📍 STEP 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🧠 THINKING: I need to find information about Amazon product categories and determine which one is most popular. First, I should explore what databases are available to see if there's any Amazon-related data.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🔧 TOOL: list_databases`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📊 RESULT:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` amazon`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`bluesky`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`country`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`covid`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`default`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`dns`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`environmental`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`food`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`forex`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`geo`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`git`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`github`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`hackernews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`imdb`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`logs`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`metrica`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`mgbench`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`mta`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`noaa`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`nyc_taxi`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`nypd`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`ontime`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`opensky`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`otel`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`otel_v2`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`pypi`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`random`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`reddit`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`rubygems`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`sta...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📍 STEP 2`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🧠 THINKING: Great! I can see there's an \"amazon\" database available. This is exactly what I need to find information about Amazon product categories. Let me explore the tables in the amazon database to see what data is available.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🔧 TOOL: list_tables`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Args: {'database': 'amazon'}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📊 RESULT:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"database\": \"amazon\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"name\": \"amazon_reviews\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"comment\": \"\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"columns\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"name\": \"review_date\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"type\": \"Date\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"default_type\": \"\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"default_expression\": \"\",...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📍 STEP 3`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🧠 THINKING: Perfect! I found the amazon_reviews table which contains a product_category column. This table has over 150 million rows of Amazon review data, which should give me a good representation of product popularity. To find the most popular Amazon product category, I need to count the number of reviews per category and order them by count in descending order. The category with the most reviews would be considered the most popular.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🔧 TOOL: run_select_query`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Args: {'query': 'SELECT product_category, COUNT(*) as review_count FROM amazon.amazon_reviews GROUP BY product_category ORDER BY review_count DESC LIMIT 10'}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📊 RESULT:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 1. Books: 19,530,930 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 2. Digital_Ebook_Purchase: 17,622,107 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 3. Wireless: 9,001,567 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 4. PC: 6,908,245 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` 5. Home: 6,221,321 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ... and 5 more`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📍 STEP 4`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🧠 THINKING: Perfect! I have found the answer to the user's question. Based on the Amazon reviews data, I can clearly see that \"Books\" is the most popular Amazon product category with 19,530,930 reviews, followed by \"Digital_Ebook_Purchase\" with 17,622,107 reviews. The data shows a clear ranking of product categories by popularity based on the number of reviews each category has received. I now have all the information needed to answer the user's question.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🔧 TOOL: finish`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`📊 RESULT:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` Completed.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`🎯 REASONING`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`To answer the question about the most popular Amazon product category, I accessed the Amazon database and found a table called \"amazon_reviews\" with over 150 million review records. This table contains a \"product_category\" column that allows me to analyze product popularity based on review volume. I ran a query to count the number of reviews per product category and ordered them by count in descending order. The assumption here is that categories with more reviews indicate higher popularity, as more reviews typically correlate with more purchases and customer engagement.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✅ FINAL RESULT`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`----------------------------------------`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Based on Amazon review data containing over 150 million records, the most popular Amazon product category is **Books** with 19,530,930 reviews. `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Here are the top 10 most popular Amazon product categories by review count:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. **Books** - 19,530,930 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. **Digital_Ebook_Purchase** - 17,622,107 reviews `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. **Wireless** - 9,001,567 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. **PC** - 6,908,245 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. **Home** - 6,221,321 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. **Apparel** - 5,906,085 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`7. **Health \u0026 Personal Care** - 5,331,239 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`8. **Beauty** - 5,115,462 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`9. **Video DVD** - 5,069,014 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`10. **Mobile_Apps** - 5,033,164 reviews`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`It's interesting to note that Books and Digital Ebook Purchase (which are related categories) together account for over 37 million reviews, showing the strong popularity of reading materials on Amazon's platform.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`================================================================================`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"slug":"/use-cases/AI/MCP/ai-agent-libraries/DSPy","sidebarTitle":"DSPy","title":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","description":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다","keywords":["ClickHouse","MCP","DSPy"],"show_related_blogs":true,"doc_type":"guide","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"사전 요구 사항","slug":"사전-요구-사항","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/private-7c7dfe99/a0ab956a7a3c7ff5/_site/customizations/ask-ai-button.js","/docs/_mintlify/custom/private-7c7dfe99/39eb0ad87fa3adc8/_site/customizations/clickhouse-sql-highlight.js","/docs/_mintlify/custom/private-7c7dfe99/f2f887f569696d41/_site/customizations/clickhouse-sql-lexer-wasm.js","/docs/_mintlify/custom/private-7c7dfe99/564839e4bb02c38e/_site/customizations/custom-footer.js","/docs/_mintlify/custom/private-7c7dfe99/240e3ba1823c3bae/_site/customizations/galaxy.js","/docs/_mintlify/custom/private-7c7dfe99/38fd3c627bad5620/_site/customizations/inkeep-init.js","/docs/_mintlify/custom/private-7c7dfe99/ad7415752a665282/_site/customizations/kapa-init.js","/docs/_mintlify/custom/private-7c7dfe99/c54d4536629b44db/_site/customizations/nav-icon-preload.js","/docs/_mintlify/custom/private-7c7dfe99/10c01e58e00a0bb5/_site/customizations/navbar-cta.js","/docs/_mintlify/custom/private-7c7dfe99/f75dab9369f45602/_site/customizations/raise-issue-link.js","/docs/_mintlify/custom/private-7c7dfe99/a97e716bfafb62fd/_site/customizations/scroll-reset.js","/docs/_mintlify/custom/private-7c7dfe99/bb66ab6ab59dfc53/_site/customizations/settings-legacy-redirect.js","/docs/_mintlify/custom/private-7c7dfe99/b734912855230cc2/_site/customizations/settings-legacy-routes/format-settings.js","/docs/_mintlify/custom/private-7c7dfe99/e07c37962b288c7e/_site/customizations/settings-legacy-routes/mergetree-settings.js","/docs/_mintlify/custom/private-7c7dfe99/2b8fcba9c043bce4/_site/customizations/settings-legacy-routes/server-settings.js","/docs/_mintlify/custom/private-7c7dfe99/20d8f577c04bd763/_site/customizations/settings-legacy-routes/session-settings.js","/docs/_mintlify/custom/private-7c7dfe99/3bd87f000900d6e2/_site/customizations/tab-nav.js","/docs/_mintlify/custom/private-7c7dfe99/5c7ce50607c95a70/_site/customizations/webterminal.js","/docs/_mintlify/custom/private-7c7dfe99/7b903fec76456ee0/_site/customizations/cloud-sidebar-ad.js","/docs/_mintlify/custom/private-7c7dfe99/346eac2572f9fb1d/_site/customizations/section-ticker.js"],"subdomain":"private-7c7dfe99","siteName":"ClickHouse Documentation","title":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법 - ClickHouse Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"ar":{"href":"/ar/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"es":{"href":"/es/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"fr":{"href":"/fr/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"ja":{"href":"/ja/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"ko":{"href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":0},"pt-BR":{"href":"/pt-BR/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"ru":{"href":"/ru/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1},"zh":{"href":"/zh/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy","matchLevel":1}}},"originalFileLocation":"ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\">\u003cmeta data-mint-head name=\"application-name\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법 - ClickHouse Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://private-7c7dfe99.mintlify.app/_mintlify/api/og/v2?division=AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC\u0026amp;title=DSPy%EC%99%80+ClickHouse+MCP+%EC%84%9C%EB%B2%84%EB%A1%9C+AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A5%BC+%EA%B5%AC%EC%B6%95%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95\u0026amp;description=DSPy%EC%99%80+ClickHouse+MCP+%EC%84%9C%EB%B2%84%EB%A1%9C+AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A5%BC+%EA%B5%AC%EC%B6%95%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%95%8C%EC%95%84%EB%B4%85%EB%8B%88%EB%8B%A4\u0026amp;theme=de5161c1b5df52f178b39943\u0026amp;signature=e83f41913f5f479791f5b0526f490f9a9e30641f07f35bafd28fd5a104b7f913\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법 - ClickHouse Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://private-7c7dfe99.mintlify.app/_mintlify/api/og/v2?division=AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC\u0026amp;title=DSPy%EC%99%80+ClickHouse+MCP+%EC%84%9C%EB%B2%84%EB%A1%9C+AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A5%BC+%EA%B5%AC%EC%B6%95%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95\u0026amp;description=DSPy%EC%99%80+ClickHouse+MCP+%EC%84%9C%EB%B2%84%EB%A1%9C+AI+%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8%EB%A5%BC+%EA%B5%AC%EC%B6%95%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%95%8C%EC%95%84%EB%B4%85%EB%8B%88%EB%8B%A4\u0026amp;theme=de5161c1b5df52f178b39943\u0026amp;signature=e83f41913f5f479791f5b0526f490f9a9e30641f07f35bafd28fd5a104b7f913\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/private-7c7dfe99/4UShO1VxIGDRhyfj/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ClickHouse Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1c1c1c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://clickhouse.com/docs/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://clickhouse.com/docs/ar/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://clickhouse.com/docs/es/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://clickhouse.com/docs/fr/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://clickhouse.com/docs/ja/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://clickhouse.com/docs/pt-BR/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://clickhouse.com/docs/ru/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://clickhouse.com/docs/zh/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://clickhouse.com/docs/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://clickhouse.com/#organization\",\"name\":\"ClickHouse Documentation\",\"url\":\"https://clickhouse.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/private-7c7dfe99/h2VHbIjccjT9ClSc/_site/logo/light.svg?fit=max\u0026auto=format\u0026n=h2VHbIjccjT9ClSc\u0026q=85\u0026s=b8a838f982def2b530a95016300bc7ec\"}},{\"@type\":\"WebSite\",\"@id\":\"https://clickhouse.com/docs#website\",\"name\":\"ClickHouse Documentation\",\"url\":\"https://clickhouse.com/docs\",\"publisher\":{\"@id\":\"https://clickhouse.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy#webpage\",\"url\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\",\"name\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법\",\"description\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\",\"isPartOf\":{\"@id\":\"https://clickhouse.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"사용 사례 가이드\",\"item\":\"https://clickhouse.com/docs/ko/guides/use-cases/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI/ML\",\"item\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MCP\",\"item\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/index\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"AI 에이전트 라이브러리\",\"item\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/index\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법\",\"item\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy#article\",\"headline\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법\",\"name\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법\",\"description\":\"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다\",\"url\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy\",\"mainEntityOfPage\":{\"@id\":\"https://clickhouse.com/docs/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy#webpage\"},\"keywords\":\"ClickHouse, MCP, DSPy\",\"publisher\":{\"@id\":\"https://clickhouse.com/#organization\"},\"isPartOf\":{\"@id\":\"https://clickhouse.com/docs#website\"}}]}\u003c/script>","siteName":"ClickHouse Documentation","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"es","pages":[{"title":"es","href":"/es/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"ko","tabs":[{"tab":"홈","pages":[{"title":"홈","href":"/ko"}]},{"tab":"데이터베이스","menu":[{"item":"Get started","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-get-started.svg","pages":[{"group":"Get started","icon":"/images/menu-icon-lightning.svg","pages":[{"title":"ClickHouse 시작하기","sidebarTitle":"개요","href":"/ko/get-started"},{"group":"빠른 시작","expanded":false,"pages":[{"sidebarTitle":"빠른 시작 둘러보기","title":"빠른 시작 둘러보기","mode":"custom","href":"/ko/get-started/quickstarts/home"},{"group":"모든 사용 사례","expanded":false,"pages":[{"sidebarTitle":"Cloud 빠른 시작","title":"ClickHouse Cloud 빠른 시작","href":"/ko/get-started/setup/cloud"},{"sidebarTitle":"Cloud 연결 정보 확인","title":"Cloud 연결 정보 확인","href":"/ko/get-started/quickstarts/obtain-your-cloud-connection-details"},{"sidebarTitle":"clickhouse-client로 ClickHouse Cloud에 데이터 삽입","title":"clickhouse-client로 ClickHouse Cloud에 데이터 삽입","href":"/ko/get-started/quickstarts/insert-data-using-clickhouse-client"},{"sidebarTitle":"ClickHouse에서 테이블 생성","title":"ClickHouse에서 테이블 생성","href":"/ko/get-started/quickstarts/creating-tables"},{"sidebarTitle":"ClickHouse 데이터 선택","title":"ClickHouse 데이터 선택","href":"/ko/get-started/quickstarts/writing-queries"},{"sidebarTitle":"첫 번째 MergeTree 테이블 만들기","title":"첫 번째 MergeTree 테이블 만들기","href":"/ko/get-started/quickstarts/create-your-first-mergetree-table"}]},{"group":"실시간 분석","expanded":false,"pages":[{"sidebarTitle":"첫 materialized view 만들기","title":"첫 materialized view 만들기","href":"/ko/get-started/quickstarts/create-your-first-materialized-view"},{"sidebarTitle":"첫 번째 프로젝션 만들기","title":"첫 번째 프로젝션 만들기","href":"/ko/get-started/quickstarts/create-your-first-projection"}]},{"group":"데이터 웨어하우징","expanded":false,"pages":[{"sidebarTitle":"ClickHouse Cloud에서 Iceberg 카탈로그를 연결하는 방법","title":"ClickHouse Cloud에서 Iceberg 카탈로그를 연결하는 방법","href":"/ko/get-started/quickstarts/connect-your-iceberg-catalog"},{"sidebarTitle":"ClickHouse 데이터 업데이트 및 삭제","title":"ClickHouse 데이터 업데이트 및 삭제","href":"/ko/get-started/quickstarts/mutations"}]},{"group":"관측성","expanded":false,"pages":[{"sidebarTitle":"ClickHouse에서 맵 타입 사용하기","title":"ClickHouse에서 맵 타입 사용하기","href":"/ko/get-started/quickstarts/working-with-the-map-type"}]}]},{"group":"Introduction","expanded":true,"pages":[{"sidebarTitle":"ClickHouse란 무엇입니까?","title":"ClickHouse란 무엇입니까?","href":"/ko/get-started/about/intro"},{"sidebarTitle":"ClickHouse는 왜 이렇게 빠를까요?","title":"ClickHouse는 왜 이렇게 빠를까요?","href":"/ko/get-started/about/why-clickhouse-is-so-fast"},{"sidebarTitle":"ClickHouse가 특별한 이유","title":"ClickHouse의 고유한 특징","href":"/ko/get-started/about/distinctive-features"}]},{"group":"Use cases","expanded":true,"pages":[{"title":"사용 사례","sidebarTitle":"개요","href":"/ko/get-started/use-cases/overview"},{"title":"실시간 분석","sidebarTitle":"실시간 분석","href":"/ko/get-started/use-cases/real-time-analytics"},{"title":"관측성","sidebarTitle":"관측성","href":"/ko/get-started/use-cases/observability"},{"title":"데이터 웨어하우징","sidebarTitle":"데이터 웨어하우징","href":"/ko/get-started/use-cases/data-warehousing"},{"title":"에이전트형 분석","sidebarTitle":"에이전트형 분석","href":"/ko/get-started/use-cases/agentic-analytics"}]},{"sidebarTitle":"배포 모드","title":"배포 모드","href":"/ko/get-started/about/deployment-modes"}]},{"group":"Setup","icon":"/images/menu-icon-gear.svg","expanded":true,"pages":[{"sidebarTitle":"설치","title":"설치 안내","href":"/ko/get-started/setup/install"},{"sidebarTitle":"Cloud 빠른 시작","title":"ClickHouse Cloud 빠른 시작","href":"/ko/get-started/setup/cloud"},{"group":"Self-managed","expanded":true,"pages":[{"title":"자가 관리형 설치","sidebarTitle":"개요","href":"/ko/get-started/setup/self-managed/overview"},{"group":"Local development","pages":[{"sidebarTitle":"빠른 설치","title":"빠른 설치","href":"/ko/get-started/setup/self-managed/quick-install"},{"sidebarTitle":"clickhousectl (CLI)","title":"ClickHouse CLI로 설치","href":"/ko/get-started/setup/self-managed/clickhousectl"},{"sidebarTitle":"Docker","title":"Docker를 사용해 ClickHouse 설치","href":"/ko/get-started/setup/self-managed/docker"},{"sidebarTitle":"소스 및 CI 빌드","title":"소스 및 CI 빌드","href":"/ko/get-started/setup/self-managed/advanced"}]},{"group":"Production server","pages":[{"sidebarTitle":"Debian/Ubuntu","title":"Debian/Ubuntu에 ClickHouse 설치","href":"/ko/get-started/setup/self-managed/debian-ubuntu"},{"sidebarTitle":"Redhat/CentOS","title":"rpm 기반 Linux 배포판에 ClickHouse 설치","href":"/ko/get-started/setup/self-managed/redhat"},{"sidebarTitle":"NixOS","title":"NixOS에서 ClickHouse 설치","href":"/ko/get-started/setup/self-managed/nixos"},{"sidebarTitle":"기타 Linux","title":"tgz 아카이브를 사용해 ClickHouse 설치","href":"/ko/get-started/setup/self-managed/other-linux"}]}]}]},{"group":"Sample datasets","icon":"/images/menu-icon-database.svg","expanded":true,"pages":[{"sidebarTitle":"개요","title":"튜토리얼 및 예제 데이터셋","href":"/ko/get-started/sample-datasets/index"},{"sidebarTitle":"ClickHouse Playground","title":"ClickHouse Playground","href":"/ko/get-started/sample-datasets/playground"},{"group":"Benchmarks","pages":[{"sidebarTitle":"AMPLab 빅 데이터 벤치마크","title":"AMPLab Big Data Benchmark","href":"/ko/get-started/sample-datasets/amplab-benchmark"},{"sidebarTitle":"Brown University 벤치마크","title":"Brown University 벤치마크","href":"/ko/get-started/sample-datasets/brown-benchmark"},{"sidebarTitle":"Criteo 1TB 클릭 로그","title":"Criteo의 1TB 클릭 로그","href":"/ko/get-started/sample-datasets/criteo"},{"title":"Join Order Benchmark (JOB)","sidebarTitle":"JOB","href":"/ko/get-started/sample-datasets/job"},{"sidebarTitle":"Star Schema Benchmark","title":"Star Schema Benchmark (SSB, 2009)","href":"/ko/get-started/sample-datasets/star-schema"},{"title":"TPC-DS (2012)","sidebarTitle":"TPC-DS","href":"/ko/get-started/sample-datasets/tpcds"},{"title":"TPC-H (1999)","sidebarTitle":"TPC-H","href":"/ko/get-started/sample-datasets/tpch"}]},{"group":"Vector search \u0026 embeddings","pages":[{"sidebarTitle":"dbpedia 데이터셋","title":"dbpedia 데이터셋","href":"/ko/get-started/sample-datasets/dbpedia"},{"sidebarTitle":"Hacker News 벡터 검색 데이터셋","title":"Hacker News 벡터 검색 데이터셋","href":"/ko/get-started/sample-datasets/hacker-news-vector-search"},{"sidebarTitle":"Laion-400M 데이터셋","title":"Laion-400M 데이터셋","href":"/ko/get-started/sample-datasets/laion"},{"sidebarTitle":"LAION 5B 데이터셋","title":"LAION 5B 데이터셋","href":"/ko/get-started/sample-datasets/laion5b"}]},{"group":"Web \u0026 social analytics","pages":[{"sidebarTitle":"Amazon 고객 리뷰","title":"Amazon 고객 리뷰","href":"/ko/get-started/sample-datasets/amazon-reviews"},{"sidebarTitle":"익명화된 웹 분석","title":"익명화된 웹 분석","href":"/ko/get-started/sample-datasets/anon-web-analytics-metrica"},{"sidebarTitle":"GitHub 리포지토리","title":"GitHub 데이터로 ClickHouse에서 쿼리 작성하기","href":"/ko/get-started/sample-datasets/github"},{"sidebarTitle":"GitHub 이벤트","title":"GitHub 이벤트 데이터셋","href":"/ko/get-started/sample-datasets/github-events"},{"sidebarTitle":"Hacker News","title":"Hacker News 데이터셋","href":"/ko/get-started/sample-datasets/hacker-news"},{"sidebarTitle":"Stack Overflow","title":"ClickHouse로 Stack Overflow 데이터 분석","href":"/ko/get-started/sample-datasets/stackoverflow"},{"sidebarTitle":"YouTube 싫어요","title":"YouTube 싫어요 데이터셋","href":"/ko/get-started/sample-datasets/youtube-dislikes"}]},{"group":"Geo \u0026 location","pages":[{"sidebarTitle":"기지국","title":"기지국 데이터셋을 활용한 지리 공간 분석","href":"/ko/get-started/sample-datasets/cell-towers"},{"sidebarTitle":"Foursquare OS Places","title":"Foursquare OS Places 데이터셋","href":"/ko/get-started/sample-datasets/foursquare-os-places"},{"sidebarTitle":"뉴욕 택시 데이터","title":"뉴욕 택시 데이터셋을 활용한 지리공간 분석","href":"/ko/get-started/sample-datasets/nyc-taxi"}]},{"group":"Time series \u0026 sensors","pages":[{"sidebarTitle":"환경 센서 데이터","title":"환경 센서 데이터","href":"/ko/get-started/sample-datasets/environmental-sensors"},{"sidebarTitle":"NOAA Global Historical Climatology Network ","title":"NOAA Global Historical Climatology Network","href":"/ko/get-started/sample-datasets/noaa"},{"sidebarTitle":"대만 과거 기상 데이터셋","title":"대만 과거 기상 데이터셋","href":"/ko/get-started/sample-datasets/tw-weather"},{"sidebarTitle":"WikiStat","title":"WikiStat","href":"/ko/get-started/sample-datasets/wikistat"}]},{"group":"Public records \u0026 open data","pages":[{"sidebarTitle":"COVID-19 오픈 데이터","title":"COVID-19 오픈 데이터","href":"/ko/get-started/sample-datasets/covid19"},{"sidebarTitle":"New York Public Library \"What's on the Menu?\" 데이터셋","title":"New York Public Library \"What's on the Menu?\" 데이터셋","href":"/ko/get-started/sample-datasets/menus"},{"sidebarTitle":"NYPD 신고 데이터","title":"NYPD 신고 데이터","href":"/ko/get-started/sample-datasets/nypd-complaint-data"},{"sidebarTitle":"OnTime 항공편 데이터","title":"OnTime","href":"/ko/get-started/sample-datasets/ontime"},{"sidebarTitle":"영국 부동산 가격","title":"영국 부동산 가격 데이터 분석 쿼리","href":"/ko/get-started/sample-datasets/uk-price-paid"}]}]},{"group":"Migrate","icon":"/images/caret-double-right.svg","expanded":true,"pages":[{"sidebarTitle":"개요","title":"ClickHouse로 데이터 마이그레이션","href":"/ko/get-started/migrate/overview"},{"group":"PostgreSQL","pages":[{"title":"PostgreSQL과 ClickHouse 비교","sidebarTitle":"개요","href":"/ko/get-started/migrate/postgres/overview"},{"group":"Migration guide","pages":[{"title":"데이터 마이그레이션","sidebarTitle":"1부","href":"/ko/get-started/migrate/postgres/migration-guide/migration-guide-part1"},{"title":"PostgreSQL 쿼리 재작성하기","sidebarTitle":"2부","href":"/ko/get-started/migrate/postgres/migration-guide/migration-guide-part2"},{"title":"데이터 모델링 기법","sidebarTitle":"제3부","href":"/ko/get-started/migrate/postgres/migration-guide/migration-guide-part3"}]},{"title":"부록","href":"/ko/get-started/migrate/postgres/appendix"}]},{"group":"BigQuery","pages":[{"title":"ClickHouse Cloud와 BigQuery 비교","sidebarTitle":"개요","href":"/ko/get-started/migrate/bigquery/overview"},{"title":"BigQuery에서 ClickHouse Cloud로 마이그레이션","sidebarTitle":"마이그레이션 가이드","href":"/ko/get-started/migrate/bigquery/migrating-to-clickhouse-cloud"},{"sidebarTitle":"데이터 로드","title":"BigQuery에서 ClickHouse로 데이터 로드","href":"/ko/get-started/migrate/bigquery/loading-data"}]},{"group":"Snowflake","pages":[{"sidebarTitle":"개요","title":"Snowflake에서 ClickHouse로의 마이그레이션","href":"/ko/get-started/migrate/snowflake/overview"},{"sidebarTitle":"마이그레이션 가이드","title":"Snowflake에서 ClickHouse로 마이그레이션","href":"/ko/get-started/migrate/snowflake/migration-guide"},{"sidebarTitle":"SQL 번역 참고","title":"Snowflake에서 ClickHouse로 마이그레이션","href":"/ko/get-started/migrate/snowflake/sql-translation-reference"}]},{"group":"Elasticsearch","pages":[{"sidebarTitle":"개요","title":"Elasticsearch에서 ClickHouse로 마이그레이션","href":"/ko/get-started/migrate/elastic/overview"}]},{"group":"Redshift","pages":[{"sidebarTitle":"개요","title":"ClickHouse Cloud와 Amazon Redshift 비교","href":"/ko/get-started/migrate/redshift/overview"},{"sidebarTitle":"마이그레이션 가이드","title":"Amazon Redshift에서 ClickHouse로 이전하기 가이드","href":"/ko/get-started/migrate/redshift/migration-guide"},{"sidebarTitle":"SQL 변환 참고","title":"Amazon Redshift SQL 변환 가이드","href":"/ko/get-started/migrate/redshift/sql-translation-reference"}]},{"group":"OSS to Cloud","pages":[{"sidebarTitle":"remoteSecure 사용하기","title":"remoteSecure를 사용하여 자가 관리형 ClickHouse와 ClickHouse Cloud 간에 마이그레이션하기","href":"/ko/get-started/migrate/oss-to-cloud/clickhouse-to-cloud"},{"sidebarTitle":"BACKUP 및 RESTORE 사용","title":"Backup 명령을 사용한 자가 관리형 ClickHouse에서 ClickHouse Cloud로의 마이그레이션","href":"/ko/get-started/migrate/oss-to-cloud/oss-to-cloud-backup-restore"}]},{"group":"Other methods","pages":[{"sidebarTitle":"clickhouse-local 사용","title":"clickhouse-local을 사용해 ClickHouse로 마이그레이션하기","href":"/ko/get-started/migrate/other-methods/clickhouse-local-etl"},{"sidebarTitle":"타사 ETL 도구 사용","title":"타사 ETL 도구 사용","href":"/ko/get-started/migrate/other-methods/etl-tool-to-clickhouse"},{"title":"클라우드 객체 스토리지에서 ClickHouse Cloud로 데이터 이동","href":"/ko/get-started/migrate/other-methods/object-storage-to-clickhouse"}]}]}]},{"item":"개념","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-concepts.svg","pages":[{"title":"개념","href":"/ko/concepts"}]},{"item":"가이드","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-guides.svg","groups":[{"group":"ClickHouse 가이드","pages":[{"sidebarTitle":"개요","title":"ClickHouse 가이드","mode":"wide","href":"/ko/guides/clickhouse"},{"title":"ClickHouse의 Kusto Query Language (KQL)","sidebarTitle":"Kusto Query Language (KQL)","href":"/ko/guides/clickhouse/kusto-query-language"},{"title":"ClickHouse의 LogsQL 방언","sidebarTitle":"LogsQL","href":"/ko/guides/clickhouse/logsql"},{"group":"데이터 포맷","pages":[{"sidebarTitle":"개요","title":"다양한 데이터 포맷에서 ClickHouse로 가져오기","href":"/ko/guides/clickhouse/data-formats/intro"},{"sidebarTitle":"CSV 및 TSV","title":"ClickHouse에서 CSV 및 TSV 데이터 다루기","href":"/ko/guides/clickhouse/data-formats/csv-tsv"},{"sidebarTitle":"Parquet","title":"ClickHouse에서 Parquet 사용하기","href":"/ko/guides/clickhouse/data-formats/parquet"},{"sidebarTitle":"Avro, Arrow 및 ORC","title":"ClickHouse에서 Avro, Arrow 및 ORC 데이터 다루기","href":"/ko/guides/clickhouse/data-formats/arrow-avro-orc"},{"sidebarTitle":"바이너리 및 네이티브","title":"ClickHouse에서 Native 형식과 바이너리 형식 사용하기","href":"/ko/guides/clickhouse/data-formats/binary"},{"sidebarTitle":"SQL 덤프","title":"ClickHouse에서 SQL 데이터 삽입 및 덤프 생성","href":"/ko/guides/clickhouse/data-formats/sql"},{"sidebarTitle":"정규식과 Template","title":"ClickHouse에서 Template 및 Regex를 사용해 사용자 지정 텍스트 데이터를 가져오고 내보내기","href":"/ko/guides/clickhouse/data-formats/templates-regex"},{"group":"JSON","pages":[{"sidebarTitle":"개요","title":"JSON 다루기","href":"/ko/guides/clickhouse/data-formats/json/intro"},{"sidebarTitle":"JSON 로드","title":"JSON 다루기","href":"/ko/guides/clickhouse/data-formats/json/loading"},{"title":"JSON 스키마 추론","href":"/ko/guides/clickhouse/data-formats/json/inference"},{"title":"스키마 설계","href":"/ko/guides/clickhouse/data-formats/json/schema"},{"title":"다른 JSON 포맷 처리","sidebarTitle":"다른 포맷 처리","href":"/ko/guides/clickhouse/data-formats/json/formats"},{"title":"JSON 내보내기","href":"/ko/guides/clickhouse/data-formats/json/exporting"},{"title":"기타 JSON 접근 방식","href":"/ko/guides/clickhouse/data-formats/json/other"}]}]},{"group":"데이터 모델링","pages":[{"title":"데이터 모델링 개요","mode":"wide","href":"/ko/guides/clickhouse/data-modelling/index"},{"title":"스키마 설계","href":"/ko/guides/clickhouse/data-modelling/schema-design"},{"sidebarTitle":"프라이머리 인덱스","title":"ClickHouse 프라이머리 인덱스 실전 입문","href":"/ko/guides/clickhouse/data-modelling/sparse-primary-indexes"},{"title":"데이터 비정규화","href":"/ko/guides/clickhouse/data-modelling/denormalization"},{"title":"데이터 백필","href":"/ko/guides/clickhouse/data-modelling/backfilling"},{"sidebarTitle":"Merge 테이블 함수","title":"Merge 테이블 함수","href":"/ko/guides/clickhouse/data-modelling/merge-table-function"},{"sidebarTitle":"저장 프로시저 및 쿼리 매개변수","title":"ClickHouse의 저장 프로시저 및 쿼리 매개변수","href":"/ko/guides/clickhouse/data-modelling/stored-procedures-and-prepared-statements"},{"sidebarTitle":"무작위 테스트 데이터 생성","title":"ClickHouse에서 무작위 테스트 데이터 생성","href":"/ko/guides/clickhouse/data-modelling/generating-test-data"},{"group":"압축","expanded":false,"pages":[{"title":"ClickHouse의 압축","href":"/ko/guides/clickhouse/data-modelling/compression/compression-in-clickhouse"},{"title":"압축 모드","href":"/ko/guides/clickhouse/data-modelling/compression/compression-modes"}]},{"title":"ClickHouse에서 배열 사용하기","sidebarTitle":"ClickHouse에서 배열 사용하기","href":"/ko/guides/clickhouse/working-with-arrays"},{"title":"ClickHouse에서 JOIN 사용하기","sidebarTitle":"ClickHouse에서 JOIN 사용하기","href":"/ko/guides/clickhouse/working-with-joins"}]},{"group":"성능 및 모니터링","pages":[{"group":"쿼리 최적화","pages":[{"sidebarTitle":"개요","title":"쿼리 최적화","href":"/ko/guides/clickhouse/performance-and-monitoring/query-optimization"},{"sidebarTitle":"느린 쿼리 진단","title":"느린 쿼리 진단","href":"/ko/guides/clickhouse/performance-and-monitoring/diagnose-slow-queries"},{"sidebarTitle":"쿼리 병목 현상 파악","title":"쿼리 병목 현상 파악","href":"/ko/guides/clickhouse/performance-and-monitoring/isolate-query-bottlenecks"},{"sidebarTitle":"최적화 방법 선택","title":"최적화 방법 선택","href":"/ko/guides/clickhouse/performance-and-monitoring/optimization-approaches"},{"sidebarTitle":"쿼리 최적화 예시","title":"쿼리 최적화 예시","href":"/ko/guides/clickhouse/performance-and-monitoring/query-optimization-example"}]},{"sidebarTitle":"분석기","title":"분석기","href":"/ko/guides/clickhouse/performance-and-monitoring/analyzer"},{"sidebarTitle":"분석기로 쿼리 실행 이해하기","title":"분석기로 쿼리 실행 이해하기","href":"/ko/guides/clickhouse/performance-and-monitoring/understanding-query-execution-with-the-analyzer"},{"sidebarTitle":"동적 컬럼 선택","title":"동적 컬럼 선택","href":"/ko/guides/clickhouse/performance-and-monitoring/dynamic-column-selection"}]},{"group":"집계 조합자 예시","expanded":false,"pages":[{"title":"anyIf","sidebarTitle":"anyIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/anyIf"},{"title":"argMaxIf","sidebarTitle":"argMaxIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/argMaxIf"},{"title":"argMinIf","sidebarTitle":"argMinIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/argMinIf"},{"title":"avgIf","sidebarTitle":"avgIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgIf"},{"title":"avgMap","sidebarTitle":"avgMap","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgMap"},{"title":"avgMerge","sidebarTitle":"avgMerge","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgMerge"},{"title":"avgMergeState","sidebarTitle":"avgMergeState","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgMergeState"},{"title":"avgResample","sidebarTitle":"avgResample","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgResample"},{"title":"avgState","sidebarTitle":"avgState","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/avgState"},{"title":"countIf","sidebarTitle":"countIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/countIf"},{"title":"countResample","sidebarTitle":"countResample","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/countResample"},{"title":"groupArrayDistinct","sidebarTitle":"groupArrayDistinct","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/groupArrayDistinct"},{"title":"groupArrayResample","sidebarTitle":"groupArrayResample","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/groupArrayResample"},{"title":"maxMap","sidebarTitle":"maxMap","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/maxMap"},{"title":"maxSimpleState","sidebarTitle":"maxSimpleState","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/maxSimpleState"},{"title":"minMap","sidebarTitle":"minMap","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/minMap"},{"title":"minSimpleState","sidebarTitle":"minSimpleState","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/minSimpleState"},{"title":"quantilesTimingArrayIf","sidebarTitle":"quantilesTimingArrayIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/quantilesTimingArrayIf"},{"title":"quantilesTimingIf","sidebarTitle":"quantilesTimingIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/quantilesTimingIf"},{"title":"sumArray","sidebarTitle":"sumArray","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/sumArray"},{"title":"sumForEach","sidebarTitle":"sumForEach","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/sumForEach"},{"title":"sumIf","sidebarTitle":"sumIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/sumIf"},{"title":"sumMap","sidebarTitle":"sumMap","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/sumMap"},{"title":"sumSimpleState","sidebarTitle":"sumSimpleState","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/sumSimpleState"},{"title":"uniqArray","sidebarTitle":"uniqArray","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/uniqArray"},{"title":"uniqArrayIf","sidebarTitle":"uniqArrayIf","href":"/ko/guides/clickhouse/examples/aggregate-function-combinators/uniqArrayIf"}]},{"title":"자가 관리형 업그레이드","href":"/ko/guides/oss/update"},{"group":"OSS 모범 사례","pages":[{"sidebarTitle":"사이징 및 하드웨어 권장 사항","title":"사이징 및 하드웨어 권장 사항","href":"/ko/guides/oss/best-practices/sizing-and-hardware-recommendations"},{"sidebarTitle":"OSS 사용 권장 사항","title":"OSS 사용 권장 사항","href":"/ko/guides/oss/best-practices/tips"}]},{"group":"배포 및 스케일링","expanded":false,"pages":[{"sidebarTitle":"소개","title":"소개","href":"/ko/guides/oss/deployment-and-scaling/terminology"},{"title":"테이블 세그먼트와 레플리카","href":"/ko/guides/oss/deployment-and-scaling/shards"},{"sidebarTitle":"세그먼트 리밸런싱","title":"데이터 리밸런싱","href":"/ko/guides/oss/deployment-and-scaling/scaling-clusters"},{"sidebarTitle":"스토리지와 컴퓨트 분리","title":"스토리지와 컴퓨트 분리","href":"/ko/guides/oss/deployment-and-scaling/separation-storage-compute"},{"sidebarTitle":"클러스터 디스커버리","title":"클러스터 디스커버리","href":"/ko/guides/oss/deployment-and-scaling/cluster-discovery"},{"group":"Keeper","expanded":false,"pages":[{"sidebarTitle":"ClickHouse Keeper 구성","title":"ClickHouse Keeper","href":"/ko/guides/oss/deployment-and-scaling/keeper/index"},{"sidebarTitle":"ZooKeeper와의 보안 통신","title":"ClickHouse와 ZooKeeper 간의 선택적 보안 통신","href":"/ko/guides/oss/deployment-and-scaling/keeper/ssl-zookeeper"}]},{"group":"모니터링","expanded":false,"pages":[{"sidebarTitle":"모니터링","title":"모니터링","href":"/ko/guides/oss/deployment-and-scaling/monitoring/monitoring"},{"sidebarTitle":"OpenTelemetry로 ClickHouse 추적하기","title":"OpenTelemetry로 ClickHouse 추적하기","href":"/ko/guides/oss/deployment-and-scaling/monitoring/opentelemetry"}]},{"group":"예시","expanded":false,"pages":[{"sidebarTitle":"복제","title":"데이터 복제","href":"/ko/guides/oss/deployment-and-scaling/examples/1-shard-2-replicas"},{"sidebarTitle":"스케일링","title":"스케일링","href":"/ko/guides/oss/deployment-and-scaling/examples/2-shards-1-replica"},{"sidebarTitle":"복제 + 스케일링","title":"복제 + 스케일링","href":"/ko/guides/oss/deployment-and-scaling/examples/2-shards-2-replicas"}]}]}]},{"group":"사용 사례 가이드","expanded":true,"pages":[{"title":"사용 사례 가이드","sidebarTitle":"개요","mode":"wide","href":"/ko/guides/use-cases/index"},{"group":"실시간 분석","pages":[{"group":"시계열","expanded":false,"pages":[{"title":"시계열","href":"/ko/guides/use-cases/real-time-analytics/time-series/index"},{"title":"날짜 및 시간 데이터 타입 - 시계열","sidebarTitle":"날짜 및 시간 데이터 타입","href":"/ko/guides/use-cases/real-time-analytics/time-series/date-time-data-types"},{"title":"기본 작업 - 시계열","sidebarTitle":"기본 작업","href":"/ko/guides/use-cases/real-time-analytics/time-series/basic-operations"},{"title":"분석 함수 - 시계열","sidebarTitle":"분석 함수","href":"/ko/guides/use-cases/real-time-analytics/time-series/analysis-functions"},{"title":"스토리지 효율성 - 시계열","sidebarTitle":"스토리지 효율성","href":"/ko/guides/use-cases/real-time-analytics/time-series/storage-efficiency"},{"title":"쿼리 성능 - 시계열","sidebarTitle":"쿼리 성능","href":"/ko/guides/use-cases/real-time-analytics/time-series/query-performance"},{"title":"고속 시계열 분석을 위한 materialized view 롤업 만들기","href":"/ko/guides/use-cases/real-time-analytics/time-series/materialized-view-rollup"},{"sidebarTitle":"시계열 - 빈 구간 채우기","title":"시계열 데이터의 빈 구간 채우기","href":"/ko/guides/use-cases/real-time-analytics/time-series/time-series-filling-gaps"}]}]},{"group":"관측성","pages":[{"title":"관측성","sidebarTitle":"개요","href":"/ko/guides/use-cases/observability/index"},{"title":"ClickHouse Cloud 모니터링","sidebarTitle":"ClickHouse Cloud 모니터링","href":"/ko/guides/use-cases/observability/cloud-monitoring"},{"title":"자가 관리형 모니터링","sidebarTitle":"자가 관리형 모니터링","href":"/ko/guides/use-cases/observability/self-managed-monitoring"},{"group":"직접 구축하기","pages":[{"title":"직접 구축하는 관측성 스택","sidebarTitle":"개요","href":"/ko/guides/use-cases/observability/build-your-own/index"},{"title":"ClickHouse를 관측성에 활용하기","href":"/ko/guides/use-cases/observability/build-your-own/introduction"},{"title":"관측성을 위한 스키마 설계","href":"/ko/guides/use-cases/observability/build-your-own/schema-design"},{"title":"데이터 수집을 위한 OpenTelemetry 통합","href":"/ko/guides/use-cases/observability/build-your-own/integrating-opentelemetry"},{"title":"데이터 관리","href":"/ko/guides/use-cases/observability/build-your-own/managing-data"},{"title":"Grafana와 ClickHouse를 사용한 관측성","href":"/ko/guides/use-cases/observability/build-your-own/grafana"},{"title":"데모 애플리케이션","href":"/ko/guides/use-cases/observability/build-your-own/demo-application"}]}]},{"group":"데이터 웨어하우징","pages":[{"title":"데이터 레이크","href":"/ko/guides/use-cases/data-warehousing/index"},{"group":"시작하기","pages":[{"title":"데이터 레이크 시작하기","sidebarTitle":"개요","href":"/ko/guides/use-cases/data-warehousing/getting-started/overview"},{"title":"오픈 테이블 포맷 직접 쿼리하기","sidebarTitle":"직접 쿼리","href":"/ko/guides/use-cases/data-warehousing/getting-started/querying-directly"},{"title":"데이터 카탈로그에 연결하기","sidebarTitle":"카탈로그에 연결하기","href":"/ko/guides/use-cases/data-warehousing/getting-started/connecting-catalogs"},{"title":"MergeTree로 분석 가속화","sidebarTitle":"쿼리 가속화","href":"/ko/guides/use-cases/data-warehousing/getting-started/accelerating-analytics"},{"title":"오픈 테이블 포맷에 데이터 쓰기","sidebarTitle":"데이터 레이크에 쓰기","href":"/ko/guides/use-cases/data-warehousing/getting-started/writing-data"},{"title":"데이터 레이크 모범 사례","sidebarTitle":"모범 사례","href":"/ko/guides/use-cases/data-warehousing/getting-started/best-practices"}]},{"group":"카탈로그","pages":[{"title":"카탈로그 가이드","href":"/ko/guides/use-cases/data-warehousing/reference/index"},{"sidebarTitle":"AWS Glue 카탈로그","title":"AWS Glue 카탈로그","href":"/ko/guides/use-cases/data-warehousing/glue-catalog"},{"sidebarTitle":"Lakekeeper 카탈로그","title":"Lakekeeper 카탈로그","href":"/ko/guides/use-cases/data-warehousing/lakekeeper-catalog"},{"sidebarTitle":"Nessie 카탈로그","title":"Nessie 카탈로그","href":"/ko/guides/use-cases/data-warehousing/nessie-catalog"},{"sidebarTitle":"Fabric OneLake","title":"Fabric OneLake","href":"/ko/guides/use-cases/data-warehousing/onelake-catalog"},{"sidebarTitle":"Polaris 카탈로그","title":"Polaris 카탈로그","href":"/ko/guides/use-cases/data-warehousing/polaris-catalog"},{"sidebarTitle":"Horizon 카탈로그","title":"Snowflake Horizon 카탈로그","href":"/ko/guides/use-cases/data-warehousing/horizon-catalog"},{"sidebarTitle":"REST 카탈로그","title":"REST 카탈로그","href":"/ko/guides/use-cases/data-warehousing/rest-catalog"},{"sidebarTitle":"SeaweedFS 카탈로그","title":"SeaweedFS 카탈로그","href":"/ko/guides/use-cases/data-warehousing/seaweedfs-catalog"},{"sidebarTitle":"Unity Catalog","title":"Unity Catalog","href":"/ko/guides/use-cases/data-warehousing/unity-catalog"},{"sidebarTitle":"BigLake 메타스토어","title":"Lakehouse 런타임 카탈로그 (BigLake 메타스토어)","href":"/ko/guides/use-cases/data-warehousing/biglake-catalog"}]},{"title":"지원 매트릭스","sidebarTitle":"지원 매트릭스","href":"/ko/guides/use-cases/data-warehousing/support-matrix"}]},{"group":"AI/ML","pages":[{"title":"Machine Learning 및 GenAI","href":"/ko/guides/use-cases/ai-ml/index"},{"sidebarTitle":"QBit을 사용한 벡터 검색","title":"벡터 검색과 QBit 소개","href":"/ko/guides/use-cases/ai-ml/vector-search"},{"sidebarTitle":"AI 기반 SQL 생성","title":"AI 기반 SQL 생성","href":"/ko/guides/use-cases/ai-ml/ai-powered-sql-generation"},{"sidebarTitle":"Langfuse Cloud 트레이스 데이터 가져오기","title":"Langfuse Cloud 트레이스 데이터 가져오기","href":"/ko/guides/use-cases/ai-ml/import-langfuse-trace-data"},{"group":"데이터 탐색","pages":[{"sidebarTitle":"Jupyter 노트북 및 chDB로 데이터 탐색하기","title":"Jupyter 노트북 및 chDB로 데이터 탐색하기","href":"/ko/guides/use-cases/ai-ml/data-exploration/jupyter-notebook"},{"sidebarTitle":"Marimo 노트북과 chDB로 데이터 탐색하기","title":"Marimo 노트북과 chDB로 데이터 탐색하기","href":"/ko/guides/use-cases/ai-ml/data-exploration/marimo-notebook"}]},{"group":"MCP","pages":[{"sidebarTitle":"개요","title":"ClickHouse MCP 통합","mode":"wide","href":"/ko/guides/use-cases/ai-ml/MCP/index"},{"sidebarTitle":"ClickHouse MCP 서버 설정","title":"ClickHouse MCP 서버 설정","href":"/ko/guides/use-cases/ai-ml/MCP/claude-desktop"},{"sidebarTitle":"LibreChat 통합","title":"LibreChat에서 ClickHouse MCP 서버 사용","href":"/ko/guides/use-cases/ai-ml/MCP/librechat"},{"sidebarTitle":"AnythingLLM 연동","title":"AnythingLLM에서 ClickHouse MCP 서버 사용하기","href":"/ko/guides/use-cases/ai-ml/MCP/anythingllm"},{"sidebarTitle":"Open WebUI 연동","title":"ClickHouse MCP 서버를 Open WebUI와 함께 사용하기","href":"/ko/guides/use-cases/ai-ml/MCP/open-webui"},{"sidebarTitle":"Ollama 통합","title":"Ollama와 ClickHouse MCP 서버 설정","href":"/ko/guides/use-cases/ai-ml/MCP/ollama"},{"sidebarTitle":"Jan.ai 연동","title":"Jan.ai와 함께 ClickHouse MCP 서버 사용하기","href":"/ko/guides/use-cases/ai-ml/MCP/janai"},{"group":"AI 에이전트 라이브러리","pages":[{"title":"AI 에이전트 라이브러리를 ClickHouse MCP 서버와 통합하기","sidebarTitle":"개요","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/index"},{"sidebarTitle":"Agno","title":"Agno와 ClickHouse MCP 서버로 AI Agent를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/agno"},{"sidebarTitle":"Chainlit","title":"Chainlit과 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/chainlit"},{"sidebarTitle":"Claude Agent SDK","title":"Claude Agent SDK와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/claude-agent-sdk"},{"sidebarTitle":"CopilotKit","title":"CopilotKit과 ClickHouse MCP 서버로 AI Agent를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/copilotkit"},{"sidebarTitle":"CrewAI","title":"CrewAI와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","description":"CrewAI와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법을 알아봅니다","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/crewai"},{"sidebarTitle":"DSPy","title":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"},{"sidebarTitle":"LangChain 및 LangGraph","title":"ClickHouse MCP 서버를 사용하여 LangChain/LangGraph AI 에이전트를 구축하는 방법","description":"ClickHouse MCP 서버를 사용해 ClickHouse SQL playground와 상호작용할 수 있는 LangChain/LangGraph AI 에이전트를 구축하는 방법을 알아봅니다.","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/langchain"},{"sidebarTitle":"LlamaIndex","title":"ClickHouse MCP 서버를 사용해 LlamaIndex AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/llamaindex"},{"sidebarTitle":"mcp-agent","title":"mcp-agent와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/mcp-agent"},{"sidebarTitle":"Microsoft Agent Framework","title":"Microsoft Agent framework와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/microsoft-agent-framework"},{"sidebarTitle":"OpenAI Agents SDK","title":"ClickHouse MCP 서버를 사용하여 OpenAI 에이전트를 빌드하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/openai-agents"},{"sidebarTitle":"PydanticAI","title":"ClickHouse MCP 서버를 사용하여 PydanticAI 에이전트를 구축하는 방법.","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/pydantic-ai"},{"sidebarTitle":"SlackBot","title":"ClickHouse MCP 서버를 사용해 SlackBot 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/slackbot"},{"sidebarTitle":"Streamlit","title":"Streamlit으로 ClickHouse 기반 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/streamlit"},{"sidebarTitle":"Upsonic","title":"Upsonic과 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법","href":"/ko/guides/use-cases/ai-ml/MCP/ai-agent-libraries/upsonic"}]}]}]}]}]},{"item":"참고","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-reference.svg","pages":[{"title":"참고","href":"/ko/reference/home"}]}]},{"tab":"솔루션","menu":[{"item":"ClickHouse Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/section-header.svg","href":"#"},{"item":"ClickHouse Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickhouse-cloud.svg","pages":[{"title":"ClickHouse Cloud","href":"/ko/products/cloud/getting-started/cloud-get-started"}]},{"item":"ClickHouse Managed Postgres","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-postgres.svg","pages":[{"title":"ClickHouse Managed Postgres","href":"/ko/products/managed-postgres/overview"}]},{"item":"Langfuse","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/logo-langfuse.svg","href":"https://langfuse.com/docs"},{"item":"오픈 소스","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/section-header.svg","href":"#"},{"item":"ClickStack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickstack.svg","pages":[{"title":"ClickStack","href":"/ko/clickstack"}]},{"item":"에이전트형 데이터 스택","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-agentic-data-stack.svg","pages":[{"title":"에이전트형 데이터 스택","href":"/ko/products/agentic-data-stack/overview"}]},{"item":"chDB","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-chdb.svg","pages":[{"title":"chDB","href":"/ko/chdb"}]},{"item":"Kubernetes Operator","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-kubernetes-operator.svg","pages":[{"title":"Kubernetes Operator","href":"/ko/products/kubernetes-operator/overview"}]}],"pages":[{"title":"솔루션","href":"/ko/products/cloud/getting-started/cloud-get-started"}]},{"tab":"통합","menu":[{"item":"생태계","pages":[{"title":"생태계","href":"/ko/integrations/home"}]},{"item":"ClickPipes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickpipes.svg","pages":[{"title":"ClickPipes","href":"/ko/integrations/clickpipes/home"}]},{"item":"언어 클라이언트","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-language-clients.svg","pages":[{"title":"언어 클라이언트","href":"/ko/integrations/language-clients"}]},{"item":"커넥터","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-connectors.svg","pages":[{"title":"커넥터","href":"/ko/integrations/connectors/data-sources"}]}],"pages":[{"title":"통합","href":"/ko/integrations/home"}]},{"tab":"자료","menu":[{"item":"지원 센터","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-support-center.svg","pages":[{"title":"지원 센터","href":"/ko/resources/support-center/home"}]},{"item":"개발 및 기여","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-contribute.svg","pages":[{"title":"개발 및 기여","href":"/ko/resources/develop-contribute/introduction/developer-instruction"}]},{"item":"변경 내역","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-changelogs.svg","dropdowns":[{"dropdown":"Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-clickhouse-cloud.svg","pages":[{"title":"Cloud","href":"/ko/resources/changelogs/cloud"}]},{"dropdown":"오픈 소스","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-server.svg","pages":[{"title":"오픈 소스","href":"/ko/resources/changelogs/oss/2026"}]}]},{"item":"소개","icon":"https://mintlify.s3.us-west-1.amazonaws.com/private-7c7dfe99/images/icons/icon-about.svg","pages":[{"title":"소개","href":"/ko/resources/about"}]}],"pages":[{"title":"자료","href":"/ko/resources/support-center/home"}]}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"ru","pages":[{"title":"ru","href":"/ru/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/guides/use-cases/ai-ml/MCP/ai-agent-libraries/dspy"}]}]},"basePath":"","title":"DSPy와 ClickHouse MCP 서버로 AI 에이전트를 구축하는 방법 - ClickHouse Documentation","buildId":"dpl_Acry4NrQAgjcikyFgVE2eJ7XQCAv","deploymentId":"dpl_Acry4NrQAgjcikyFgVE2eJ7XQCAv","dynamics":[],"chunks":[]}