CINXE.COM

Building the Backend - Docs

<!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/apple-touch-icon.png?v=3"/><link rel="icon" type="image/png" sizes="32x32" href="https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon-32x32.png?v=3"/><link rel="icon" type="image/png" sizes="16x16" href="https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon-16x16.png?v=3"/><link rel="shortcut icon" type="image/x-icon" href="https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon.ico?v=3"/><meta name="msapplication-config" content="https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/browserconfig.xml?v=3"/><meta name="apple-mobile-web-app-title" content="Docs"/><meta name="application-name" content="Docs"/><meta name="msapplication-TileColor" content="#111827"/><meta name="theme-color" content="#ffffff"/><link rel="sitemap" type="application/xml" href="/sitemap.xml"/><meta name="charset" content="utf-8"/><meta name="og:type" content="website"/><meta name="og:site_name" content="Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="og:title" content="Building the Backend - Docs"/><meta name="twitter:title" content="Building the Backend - Docs"/><meta name="image" property="og:image" content="https://mintlify.com/docs/api/og?division=Documentation&amp;title=Building+the+Backend&amp;logoLight=https%3A%2F%2Fmintlify.s3.us-west-1.amazonaws.com%2Fqueue-4c50ebb3%2Fassets%2Fimages%2Fmorph_logo_svg.svg&amp;logoDark=https%3A%2F%2Fmintlify.s3.us-west-1.amazonaws.com%2Fqueue-4c50ebb3%2Fassets%2Fimages%2Fmorph_logo_svg_w.svg&amp;primaryColor=%23111827&amp;lightColor=%23d1d5db&amp;darkColor=%23111827"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta name="twitter:image" property="twitter:image" content="https://mintlify.com/docs/api/og?division=Documentation&amp;title=Building+the+Backend&amp;logoLight=https%3A%2F%2Fmintlify.s3.us-west-1.amazonaws.com%2Fqueue-4c50ebb3%2Fassets%2Fimages%2Fmorph_logo_svg.svg&amp;logoDark=https%3A%2F%2Fmintlify.s3.us-west-1.amazonaws.com%2Fqueue-4c50ebb3%2Fassets%2Fimages%2Fmorph_logo_svg_w.svg&amp;primaryColor=%23111827&amp;lightColor=%23d1d5db&amp;darkColor=%23111827"/><meta property="twitter:image:width" content="1200"/><meta property="twitter:image:height" content="630"/><title>Building the Backend - Docs</title><meta name="og:url" content="/docs/en/develop/guides/building-backend"/><link rel="canonical" href="/docs/en/develop/guides/building-backend"/><meta name="next-head-count" content="27"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" integrity="sha384-Xi8rHCmBmhbuyyhbI88391ZKP2dmfnOl4rT9ZfRI7mLTdk1wblIUnrIq35nqwEvC" crossorigin="anonymous"/><link rel="preload" href="/_next/static/media/a34f9d1faa5f3315-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" type="font/woff2" crossorigin="anonymous" data-next-font="size-adjust"/><script id="mode-toggle" data-nscript="beforeInteractive"> try { if (localStorage.isDarkMode === 'true') { document.documentElement.classList.add('dark'); } else if (localStorage.isDarkMode === 'false') { document.documentElement.classList.remove('dark'); } else if ((true && !('isDarkMode' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) || false) { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } } catch (_) {}</script><link rel="preload" href="/_next/static/css/e6234ff73caf2f21.css" as="style"/><link rel="stylesheet" href="/_next/static/css/e6234ff73caf2f21.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-dedccb098e30a6ab.js" defer=""></script><script src="/_next/static/chunks/framework-9ae01a5f4ade81f5.js" defer=""></script><script src="/_next/static/chunks/main-cf327937a0d9f14c.js" defer=""></script><script src="/_next/static/chunks/pages/_app-2f6b2a9a88e03fc1.js" defer=""></script><script src="/_next/static/chunks/2edb282b-a83f7ffd007bccf0.js" defer=""></script><script src="/_next/static/chunks/e893f787-f6a1094a35763a0d.js" defer=""></script><script src="/_next/static/chunks/086d643d-6f7196a364073d16.js" defer=""></script><script src="/_next/static/chunks/9097-53b32b020063004a.js" defer=""></script><script src="/_next/static/chunks/7669-b7b6e74eb838f0fc.js" defer=""></script><script src="/_next/static/chunks/363-ac352be4e97288b4.js" defer=""></script><script src="/_next/static/chunks/8070-f37ee530f4b062d0.js" defer=""></script><script src="/_next/static/chunks/pages/_sites/%5Bsubdomain%5D/%5B%5B...slug%5D%5D-8503ee328b638a86.js" defer=""></script><script src="/_next/static/d0mbdyCKtjyIf96y8FGGS/_buildManifest.js" defer=""></script><script src="/_next/static/d0mbdyCKtjyIf96y8FGGS/_ssgManifest.js" defer=""></script><style id="__jsx-4145347147">:root{--font-inter:'__Inter_e5ab12', '__Inter_Fallback_e5ab12';--font-jetbrains-mono:'__JetBrains_Mono_3c557b', '__JetBrains_Mono_Fallback_3c557b'}</style></head><div id="__next"><main class="jsx-4145347147"><style>:root { --primary: 17 24 39; --primary-light: 209 213 219; --primary-dark: 17 24 39; --background-light: 255 255 255; --background-dark: 13 13 15; --gray-50: 243 243 244; --gray-100: 238 238 239; --gray-200: 223 223 223; --gray-300: 206 206 207; --gray-400: 159 159 159; --gray-500: 112 112 113; --gray-600: 80 80 81; --gray-700: 63 63 63; --gray-800: 37 38 38; --gray-900: 23 23 23; --gray-950: 10 10 11; }</style><span class="fixed inset-0 bg-background-light dark:bg-background-dark -z-10"></span><div class="relative antialiased text-gray-500 dark:text-gray-400"><div id="navbar" class="z-30 fixed lg:sticky top-0 w-full"><div id="navbar-transition" class="absolute w-full h-full backdrop-blur flex-none transition-colors duration-500 border-b border-gray-500/5 dark:border-gray-300/[0.06] supports-backdrop-blur:bg-background-light/60 dark:bg-transparent"></div><div class="max-w-8xl mx-auto relative"><div class=""><div class="relative"><div class="flex items-center lg:px-12 h-16 min-w-0 mx-4 lg:mx-0"><div class="h-full relative flex-1 flex items-center gap-x-4 min-w-0 border-b border-gray-500/5 dark:border-gray-300/[0.06]"><div class="flex-1 flex items-center gap-x-4"><a href="/"><span class="sr-only">Docs<!-- --> home page</span><img class="w-auto h-7 relative object-contain block dark:hidden" src="https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg.svg" alt="light logo"/><img class="w-auto h-7 relative object-contain hidden dark:block" src="https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg_w.svg" alt="dark logo"/></a><div class="flex items-center gap-x-2"><button type="button" id="radix-:Rcascql6:" aria-haspopup="menu" aria-expanded="false" data-state="closed" class="group bg-background-light dark:bg-background-dark disabled:pointer-events-none [&amp;&gt;span]:line-clamp-1 overflow-hidden group outline-none group-hover:text-gray-950/70 dark:group-hover:text-white/70 text-xs gap-1.5 text-gray-500 dark:text-gray-400 leading-5 font-semibold border border-gray-200 dark:border-gray-800 hover:border-gray-300 dark:hover:border-gray-700 rounded-full py-1 px-3 flex items-center space-x-2 whitespace-nowrap">English<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down"><path d="m6 9 6 6 6-6"></path></svg></button></div></div><button type="button" class="hidden lg:flex relative flex-1 pointer-events-auto rounded-xl w-full items-center text-sm leading-6 py-1.5 pl-3.5 pr-3 text-gray-400 dark:text-white/50 bg-background-light dark:bg-background-dark dark:brightness-[1.1] dark:ring-1 dark:hover:brightness-[1.25] ring-1 ring-gray-400/20 hover:ring-gray-600/25 dark:ring-gray-600/30 dark:hover:ring-gray-500/30 focus:outline-primary justify-between truncate gap-2 min-w-[43px] mx-px" id="search-bar-entry"><div class="flex items-center gap-3 min-w-[42px]"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search min-w-4 flex-none text-gray-700 hover:text-gray-800 dark:text-gray-300 hover:dark:text-gray-200"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.3-4.3"></path></svg><div class="truncate min-w-0">Search...</div></div></button><div class="flex-1 relative hidden lg:flex items-center ml-auto justify-end space-x-4"><nav class="text-sm"><ul class="flex space-x-6 items-center"><li><a href="https://www.morphdb.io/blogs" class="whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" target="_blank">Blog</a></li><li class="block lg:hidden"><a class="whitespace-nowrap font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" href="https://www.morphdb.io">Website</a></li><li class="whitespace-nowrap hidden lg:flex" id="topbar-cta-button"><a target="_blank" class="group px-4 py-1.5 relative inline-flex items-center text-sm font-medium" href="https://www.morphdb.io"><span class="absolute inset-0 bg-primary-dark rounded-full group-hover:opacity-[0.9]"></span><div class="mr-0.5 space-x-2.5 flex items-center"><span class="z-10 text-white">Website</span><svg width="3" height="24" viewBox="0 -9 3 24" class="h-5 rotate-0 overflow-visible text-white/90"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div></a></li></ul></nav><div class="flex items-center"><button class="group p-2 flex items-center justify-center" aria-label="Toggle dark mode"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 block text-gray-400 dark:hidden group-hover:text-gray-600"><g clip-path="url(#clip0_2880_7340)"><path d="M8 1.11133V2.00022" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M12.8711 3.12891L12.2427 3.75735" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M14.8889 8H14" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M12.8711 12.8711L12.2427 12.2427" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8 14.8889V14" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M3.12891 12.8711L3.75735 12.2427" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M1.11133 8H2.00022" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M3.12891 3.12891L3.75735 3.75735" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8.00043 11.7782C10.0868 11.7782 11.7782 10.0868 11.7782 8.00043C11.7782 5.91402 10.0868 4.22266 8.00043 4.22266C5.91402 4.22266 4.22266 5.91402 4.22266 8.00043C4.22266 10.0868 5.91402 11.7782 8.00043 11.7782Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></g><defs><clipPath id="clip0_2880_7340"><rect width="16" height="16" fill="white"></rect></clipPath></defs></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon h-4 w-4 hidden dark:block text-gray-500 dark:group-hover:text-gray-300"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></div><div class="flex lg:hidden items-center gap-2"><button type="button" class="text-gray-500 w-8 h-8 flex items-center justify-center hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300" id="search-bar-entry-mobile"><span class="sr-only">Search...</span><svg class="h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/magnifying-glass.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/magnifying-glass.svg);mask-repeat:no-repeat;mask-position:center"></svg></button><button aria-label="More actions" class="h-7 w-5 flex items-center justify-end"><svg class="h-4 w-4 bg-gray-500 dark:bg-gray-400 hover:bg-gray-600 dark:hover:bg-gray-300" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/ellipsis-vertical.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/solid/ellipsis-vertical.svg);mask-repeat:no-repeat;mask-position:center"></svg></button></div></div></div><div class="flex items-center h-14 py-4 px-5 lg:hidden"><button type="button" class="text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300"><span class="sr-only">Navigation</span><svg class="h-4" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"></path></svg></button><div class="ml-4 flex text-sm leading-6 whitespace-nowrap min-w-0 space-x-3"><div class="flex items-center space-x-3"><span>Framework</span><svg width="3" height="24" viewBox="0 -9 3 24" class="h-5 rotate-0 overflow-visible fill-gray-400"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div><div class="font-semibold text-gray-900 truncate dark:text-gray-200">Building the Backend</div></div></div></div><div class="hidden lg:flex px-12 h-12"><div class="h-full flex text-sm space-x-6"><a class="group relative h-full flex items-center text-gray-800 dark:text-gray-200 font-semibold" href="/docs/en/getting-started/why-morph">Guides<div class="absolute bottom-0 h-[1.5px] w-full bg-primary dark:bg-primary-light"></div></a><a class="group relative h-full flex items-center font-medium text-gray-600 dark:text-gray-400 group-hover:text-gray-800 dark:group-hover:text-gray-300" href="/reference/en/framework/morph-project">Reference<div class="absolute bottom-0 h-[1.5px] w-full group-hover:bg-gray-200 dark:group-hover:bg-gray-700"></div></a><a class="group relative h-full flex items-center font-medium text-gray-600 dark:text-gray-400 group-hover:text-gray-800 dark:group-hover:text-gray-300" href="/data-application/en/ai-component-chat">Components<div class="absolute bottom-0 h-[1.5px] w-full group-hover:bg-gray-200 dark:group-hover:bg-gray-700"></div></a><a class="group relative h-full flex items-center font-medium text-gray-600 dark:text-gray-400 group-hover:text-gray-800 dark:group-hover:text-gray-300" href="/troubleshooting/en/cli/deployment-issues">Troubleshooting<div class="absolute bottom-0 h-[1.5px] w-full group-hover:bg-gray-200 dark:group-hover:bg-gray-700"></div></a></div></div></div></div></div><div class="max-w-8xl px-4 mx-auto lg:px-8"><div class="z-20 hidden lg:block fixed bottom-0 right-auto w-[18rem]" id="sidebar" style="top:7rem"><div class="absolute inset-0 z-10 stable-scrollbar-gutter overflow-auto pr-8 pb-10" id="sidebar-content"><div class="relative lg:text-sm lg:leading-6"><div class="sticky top-0 h-8 bg-gradient-to-b from-background-light dark:from-background-dark"></div><div id="navigation-items"><li class="list-none"><a href="https://www.morph-data.io/changelog" target="_blank" rel="noreferrer" class="pl-4 group flex items-center lg:text-sm lg:leading-6 mb-5 sm:mb-4 font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300"><div class="mr-4 rounded-md p-1 zinc-box group-hover:brightness-100 group-hover:ring-0 ring-1 ring-gray-950/5 dark:ring-gray-700/40"><svg class="h-4 w-4 secondary-opacity group-hover:fill-primary-dark group-hover:bg-white bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/rss.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/rss.svg);mask-repeat:no-repeat;mask-position:center"></svg></div>Changelog</a></li><li class="list-none"><a href="https://www.morph-data.io/tools/connectors/database" target="_blank" rel="noreferrer" class="pl-4 group flex items-center lg:text-sm lg:leading-6 mb-5 sm:mb-4 font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300"><div class="mr-4 rounded-md p-1 zinc-box group-hover:brightness-100 group-hover:ring-0 ring-1 ring-gray-950/5 dark:ring-gray-700/40"><svg class="h-4 w-4 secondary-opacity group-hover:fill-primary-dark group-hover:bg-white bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/plug.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/plug.svg);mask-repeat:no-repeat;mask-position:center"></svg></div>Connectors</a></li><li class="list-none"><a href="https://www.morph-data.io/tools/snippets/undefined" target="_blank" rel="noreferrer" class="pl-4 group flex items-center lg:text-sm lg:leading-6 mb-5 sm:mb-4 font-medium text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300"><div class="mr-4 rounded-md p-1 zinc-box group-hover:brightness-100 group-hover:ring-0 ring-1 ring-gray-950/5 dark:ring-gray-700/40"><svg class="h-4 w-4 secondary-opacity group-hover:fill-primary-dark group-hover:bg-white bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/brackets-curly.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/duotone/brackets-curly.svg);mask-repeat:no-repeat;mask-position:center"></svg></div>Code Snippets</a></li><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Getting Started</h5><ul><li id="/docs/en/getting-started/why-morph" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/getting-started/why-morph"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/lightbulb.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/lightbulb.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Introduction</div></div></a></li><li id="/docs/en/getting-started/installation" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/getting-started/installation"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/wrench.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/wrench.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Installation</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Quick Start</h5><ul><li id="/docs/en/quickstart/building-app" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/quickstart/building-app"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/rocket.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/rocket.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Building AI App</div></div></a></li><li><div class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/link.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/link.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="">How to Deploy</div><svg width="8" height="24" viewBox="0 -9 3 24" class="transition-transform text-gray-400 overflow-visible group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 -mr-0.5"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Framework</h5><ul><li id="/docs/en/develop/guides/framework" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/framework"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/eye.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/eye.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Framework Overview</div></div></a></li><li id="/docs/en/develop/guides/alias" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/alias"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/shuffle.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/shuffle.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Alias</div></div></a></li><li id="/docs/en/develop/guides/building-backend" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl bg-primary/10 text-primary font-semibold dark:text-primary-light dark:bg-primary-light/10" style="padding-left:1rem" href="/docs/en/develop/guides/building-backend"><svg class="h-4 w-4 bg-primary dark:bg-primary-light" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/brackets-curly.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/brackets-curly.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Building the Backend</div></div></a></li><li id="/docs/en/develop/guides/building-frontend" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/building-frontend"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/markdown.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/markdown.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Building the Frontend</div></div></a></li><li id="/docs/en/develop/guides/environment-variables" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/environment-variables"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/square-terminal.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/square-terminal.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Environment Variables</div></div></a></li><li id="/docs/en/develop/guides/integration" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/integration"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/database.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/database.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Data Connector</div></div></a></li><li id="/docs/en/develop/guides/variables" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/variables"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/code.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/code.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Variables</div></div></a></li><li id="/docs/en/develop/guides/user-role" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/user-role"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/user.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/user.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Role-based Access Control</div></div></a></li><li id="/docs/en/develop/guides/updating-project" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/guides/updating-project"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/rotate.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/rotate.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Updating the Project</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Deployment</h5><ul><li id="/docs/en/deploy/customize-dockerfile" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/deploy/customize-dockerfile"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/server.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/server.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Customizing the Runtime Environment</div></div></a></li><li id="/docs/en/deploy/environment-variables" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/deploy/environment-variables"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/square-terminal.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/square-terminal.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Environment Variables</div></div></a></li><li id="/docs/en/deploy/public" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/deploy/public"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/link.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/link.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Enable Public Access</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Tutorials: Data Analysis</h5><ul><li id="/docs/en/develop/tutorials/pygwalker" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/tutorials/pygwalker"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/chart-user.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/chart-user.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Build a BI app using Pygwalker</div></div></a></li><li id="/docs/en/develop/tutorials/plotly" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/tutorials/plotly"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/chart-bar.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/chart-bar.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Build a sophisticated dashboard using Plotly</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Tutorials: LLM Apps</h5><ul><li id="/docs/en/develop/tutorials/chatbot" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/tutorials/chatbot"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/message-dots.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/message-dots.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Create a chat app</div></div></a></li><li id="/docs/en/develop/tutorials/chat_sidebyside" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/develop/tutorials/chat_sidebyside"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/code.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/code.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>AI Chat generates and executes code</div></div></a></li></ul></div><div class="mt-12 lg:mt-8"><h5 class="pl-4 mb-3.5 lg:mb-2.5 font-semibold text-gray-900 dark:text-gray-200">Advanced</h5><ul><li id="/docs/en/advanced/api_key" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/advanced/api_key"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/key.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/key.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>API Key</div></div></a></li><li id="/docs/en/advanced/builtin-postgres" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/advanced/builtin-postgres"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/database.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/database.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Built-in PostgreSQL</div></div></a></li><li id="/docs/en/advanced/migration-guide" class="scroll-m-4 first:scroll-m-20"><a class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem" href="/docs/en/advanced/migration-guide"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/arrows-turn-to-dots.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/arrows-turn-to-dots.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="flex-1 flex items-center space-x-2.5"><div>Version Migration Guide</div></div></a></li><li><div class="group mt-2 lg:mt-0 flex items-center pr-3 py-1.5 cursor-pointer focus:outline-primary dark:focus:outline-primary-light gap-x-3 rounded-xl hover:bg-gray-600/5 dark:hover:bg-gray-200/5 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300" style="padding-left:1rem"><svg class="h-4 w-4 bg-gray-400 dark:bg-gray-500" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/plug.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/regular/plug.svg);mask-repeat:no-repeat;mask-position:center"></svg><div class="">Connectors</div><svg width="8" height="24" viewBox="0 -9 3 24" class="transition-transform text-gray-400 overflow-visible group-hover:text-gray-600 dark:text-gray-600 dark:group-hover:text-gray-400 -mr-0.5"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></div></li></ul></div></div></div></div></div><div class="" id="content-container"><div class="flex flex-row gap-12 box-border w-full pt-40 lg:pt-10"><div class="relative grow box-border flex-col w-full mx-auto px-1 lg:pl-[23.7rem] lg:-ml-12 xl:w-[calc(100%-28rem)]" id="content-area"><header id="header" class="relative"><div class="mt-0.5 space-y-2.5"><div class="eyebrow h-5 text-primary dark:text-primary-light text-sm font-semibold">Framework</div><div class="flex items-center"><h1 class="inline-block text-2xl sm:text-3xl font-bold text-gray-900 tracking-tight dark:text-gray-200">Building the Backend</h1></div></div></header><div class="flex flex-col gap-8"></div><div class="relative mt-8 prose prose-gray dark:prose-invert"><p>In Morph, you build the backend using Python. You can freely add Python packages to build data processing and AI workflows.</p> <h2 class="flex whitespace-pre-wrap group font-semibold" id="development-flow"><div class="absolute"><a href="#development-flow" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header">​<div class="w-6 h-6 text-gray-400 rounded-md flex items-center justify-center zinc-box bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Development Flow</span></h2> <p>The steps for backend development in Morph are as follows.</p> <div role="list" class="ml-3.5 mt-10 mb-6"><div role="listitem" class="relative flex items-start pb-2"><div class="absolute w-px h-[calc(100%-2.75rem)] top-[2.75rem] bg-gray-200/70 dark:bg-white/10"></div><div class="absolute ml-[-14px] py-2"><div class="w-7 h-7 shrink-0 rounded-lg bg-gray-100 dark:text-white dark:bg-[#26292E] text-sm text-gray-800 font-semibold flex items-center justify-center">1</div></div><div class="w-full overflow-hidden pl-12 pr-px"><p class="mt-2 font-semibold prose dark:prose-invert text-gray-900 dark:text-gray-200">Add Python Packages</p><div><p>Since Morph follows the common Python project format, you can freely add Python packages. Add the necessary packages to <code>requirements.txt</code> or <code>poetry.toml</code>.</p></div></div></div><div role="listitem" class="relative flex items-start pb-2"><div class="absolute w-px h-[calc(100%-2.75rem)] top-[2.75rem] bg-gray-200/70 dark:bg-white/10"></div><div class="absolute ml-[-14px] py-2"><div class="w-7 h-7 shrink-0 rounded-lg bg-gray-100 dark:text-white dark:bg-[#26292E] text-sm text-gray-800 font-semibold flex items-center justify-center">2</div></div><div class="w-full overflow-hidden pl-12 pr-px"><p class="mt-2 font-semibold prose dark:prose-invert text-gray-900 dark:text-gray-200">Define Python Functions and Add Morph Decorators</p><div><p>By adding Morph decorators to regular Python function definitions, you can set aliases. This allows you to reference the results of these functions from other Python, SQL, or Markdown files.</p><div class="mt-5 mb-8 not-prose rounded-2xl relative text-gray-50 bg-[#0F1117] dark:bg-codeblock border border-transparent dark:border-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-python"><code class="language-python"><span class=""><span class="token keyword">import</span> pandas <span class="token keyword">as</span> pd</span> <span class=""><span class="token keyword">import</span> morph</span> <span class=""><span class="token keyword">from</span> morph <span class="token keyword">import</span> MorphGlobalContext</span> <!-- --> <span class=""><span class="token comment"># Add Morph decorators</span></span> <span class=""><span class="token decorator annotation punctuation">@morph<span class="token punctuation">.</span>func</span><span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token string">&quot;example_dataframe&quot;</span><span class="token punctuation">)</span></span> <span class=""><span class="token decorator annotation punctuation">@morph<span class="token punctuation">.</span>load_data</span><span class="token punctuation">(</span><span class="token string">&quot;example_data&quot;</span><span class="token punctuation">)</span></span> <span class=""><span class="token keyword">def</span> <span class="token function">example_dataframe</span><span class="token punctuation">(</span>context<span class="token punctuation">:</span> MorphGlobalContext<span class="token punctuation">)</span><span class="token punctuation">:</span></span> <span class=""> df <span class="token operator">=</span> context<span class="token punctuation">.</span>data<span class="token punctuation">[</span><span class="token string">&quot;example_data&quot;</span><span class="token punctuation">]</span></span> <span class=""> <span class="token keyword">return</span> df</span> </code></pre></div></div></div></div></div></div><div role="listitem" class="relative flex items-start pb-2"><div class="absolute w-px h-[calc(100%-2.75rem)] top-[2.75rem] bg-gray-200/70 dark:bg-white/10"></div><div class="absolute ml-[-14px] py-2"><div class="w-7 h-7 shrink-0 rounded-lg bg-gray-100 dark:text-white dark:bg-[#26292E] text-sm text-gray-800 font-semibold flex items-center justify-center">3</div></div><div class="w-full overflow-hidden pl-12 pr-px"><p class="mt-2 font-semibold prose dark:prose-invert text-gray-900 dark:text-gray-200">Test Python Functions</p><div><p>Use the <code>morph run</code> command to execute functions for unit testing.</p><div class="mt-5 mb-8 not-prose rounded-2xl relative text-gray-50 bg-[#0F1117] dark:bg-codeblock border border-transparent dark:border-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">morph run example_dataframe</span> </code></pre></div></div></div></div></div></div><div role="listitem" class="relative flex items-start pb-2"><div class="absolute w-px h-[calc(100%-2.75rem)] top-[2.75rem] bg-transparent bg-gradient-to-b from-gray-200 dark:from-white/10 via-80% to-transparent"></div><div class="absolute ml-[-14px] py-2"><div class="w-7 h-7 shrink-0 rounded-lg bg-gray-100 dark:text-white dark:bg-[#26292E] text-sm text-gray-800 font-semibold flex items-center justify-center">4</div></div><div class="w-full overflow-hidden pl-12 pr-px"><p class="mt-2 font-semibold prose dark:prose-invert text-gray-900 dark:text-gray-200">Start the Development Server</p><div><p>By starting the development server, you can check the web application locally.</p><div class="mt-5 mb-8 not-prose rounded-2xl relative text-gray-50 bg-[#0F1117] dark:bg-codeblock border border-transparent dark:border-gray-800/50 codeblock-dark"><div class="min-w-full relative text-sm leading-6 children:!my-0 children:!shadow-none children:!bg-transparent transition-[height] duration-300 ease-in-out" style="font-variant-ligatures:none;height:auto"><div class="overflow-x-auto h-full p-5 overflow-y-hidden scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-white/20 dark:scrollbar-thumb-white/20 hover:scrollbar-thumb-white/25 dark:hover:scrollbar-thumb-white/25 active:scrollbar-thumb-white/25 dark:active:scrollbar-thumb-white/25"><pre class="language-bash"><code class="language-bash"><span class="">morph serve</span> </code></pre></div></div></div></div></div></div></div> <h2 class="flex whitespace-pre-wrap group font-semibold" id="return-values-of-python-functions"><div class="absolute"><a href="#return-values-of-python-functions" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header">​<div class="w-6 h-6 text-gray-400 rounded-md flex items-center justify-center zinc-box bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Return Values of Python Functions</span></h2> <p>Python functions defined in a Morph project should have the following return values.</p> <h3 class="flex whitespace-pre-wrap group font-semibold" id="dataframe"><div class="absolute"><a href="#dataframe" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header">​<div class="w-6 h-6 text-gray-400 rounded-md flex items-center justify-center zinc-box bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">DataFrame</span></h3> <p>A DataFrame object representing the result of data processing. SQL execution results are also handled as DataFrames. Use this when you want to use the result of data processing in other Python files or display it in Markdown files.</p> <p>The corresponding Markdown component is <a href="/data-application/ja/data-component-table"><code>&lt;DataFrame&gt;</code></a>.</p> <!-- --> <h3 class="flex whitespace-pre-wrap group font-semibold" id="html-string"><div class="absolute"><a href="#html-string" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header">​<div class="w-6 h-6 text-gray-400 rounded-md flex items-center justify-center zinc-box bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">HTML String</span></h3> <p>An HTML string for rendering the results of data visualization. Use this when you want to display graphs drawn using visualization libraries like Plotly or Bokeh.</p> <p>The corresponding Markdown component is <a href="/data-application/ja/data-component-embed"><code>&lt;Embed&gt;</code></a>.</p> <!-- --> <h3 class="flex whitespace-pre-wrap group font-semibold" id="streaming"><div class="absolute"><a href="#streaming" class="-ml-10 flex items-center opacity-0 border-0 group-hover:opacity-100" aria-label="Navigate to header">​<div class="w-6 h-6 text-gray-400 rounded-md flex items-center justify-center zinc-box bg-white ring-1 ring-gray-400/30 dark:ring-gray-700/25 hover:ring-gray-400/60 dark:hover:ring-white/20"><svg xmlns="http://www.w3.org/2000/svg" fill="gray" height="12px" viewBox="0 0 576 512"><path d="M0 256C0 167.6 71.6 96 160 96h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C98.1 144 48 194.1 48 256s50.1 112 112 112h72c13.3 0 24 10.7 24 24s-10.7 24-24 24H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c61.9 0 112-50.1 112-112s-50.1-112-112-112H344c-13.3 0-24-10.7-24-24s10.7-24 24-24h72c88.4 0 160 71.6 160 160zM184 232H392c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z"></path></svg></div></a></div><span class="cursor-pointer">Streaming</span></h3> <p>Use this when using streaming APIs such as LLM API. Execute value streaming using the <code>stream_chat</code> function.</p> <p>The corresponding Markdown component is <a href="/data-application/ja/ai-component-chat"><code>&lt;Chat&gt;</code></a>.</p> </div><div class="leading-6 mt-14"><div class="mb-12 px-0.5 flex items-center text-sm font-semibold text-gray-700 dark:text-gray-200"><a class="flex items-center space-x-3 group" href="/docs/en/develop/guides/alias"><svg viewBox="0 0 3 6" class="h-1.5 stroke-gray-400 overflow-visible group-hover:stroke-gray-600 dark:group-hover:stroke-gray-300"><path d="M3 0L0 3L3 6" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="group-hover:text-gray-900 dark:group-hover:text-white">Alias</span></a><a class="flex items-center ml-auto space-x-3 group" href="/docs/en/develop/guides/building-frontend"><span class="group-hover:text-gray-900 dark:group-hover:text-white">Building the Frontend</span><svg viewBox="0 0 3 6" class="rotate-180 h-1.5 stroke-gray-400 overflow-visible group-hover:stroke-gray-600 dark:group-hover:stroke-gray-300"><path d="M3 0L0 3L3 6" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></a></div><footer id="footer" class="flex gap-12 justify-between pt-10 border-t border-gray-100 sm:flex dark:border-gray-800/50 pb-28"><div class="flex gap-6 flex-wrap"><a href="https://x.com/morphdbHQ" target="_blank"><span class="sr-only">x</span><svg class="w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/x-twitter.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://github.com/useMorph" target="_blank"><span class="sr-only">github</span><svg class="w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/github.svg);mask-repeat:no-repeat;mask-position:center"></svg></a><a href="https://www.linkedin.com/company/morphdbhq" target="_blank"><span class="sr-only">linkedin</span><svg class="w-5 h-5 bg-gray-400 dark:bg-gray-500 hover:bg-gray-500 dark:hover:bg-gray-400" style="-webkit-mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-image:url(https://mintlify.b-cdn.net/v6.6.0/brands/linkedin.svg);mask-repeat:no-repeat;mask-position:center"></svg></a></div><div class="flex items-center justify-between"><div class="sm:flex"><a href="https://mintlify.com/preview-request?utm_campaign=poweredBy&amp;utm_medium=docs&amp;utm_source=docs.morph-data.io" target="_blank" rel="noreferrer" class="text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 text-nowrap">Powered by Mintlify</a></div></div></footer></div></div><div class="hidden xl:flex self-start sticky h-[calc(100vh-11rem)] top-[9.5rem]" id="content-side-layout"><div class="z-10 hidden xl:flex pl-10 box-border w-[19rem]" id="table-of-contents"><div id="table-of-contents-content" class="text-gray-600 text-sm leading-6 w-[16.5rem] overflow-y-auto space-y-2"><div class="text-gray-700 dark:text-gray-300 font-medium flex items-center space-x-2"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" xmlns="http://www.w3.org/2000/svg" class="h-3 w-3"><path d="M2.44434 12.6665H13.5554" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2.44434 3.3335H13.5554" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2.44434 8H7.33323" stroke-linecap="round" stroke-linejoin="round"></path></svg><span>On this page</span></div><ul><li><a href="#development-flow" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Development Flow</a></li><li><a href="#return-values-of-python-functions" class="py-1 block font-medium hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Return Values of Python Functions</a></li><li class=""><a style="margin-left:1rem" href="#dataframe" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">DataFrame</a></li><li class=""><a style="margin-left:1rem" href="#html-string" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">HTML String</a></li><li class=""><a style="margin-left:1rem" href="#streaming" class="group flex items-start py-1 whitespace-pre-wrap text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300">Streaming</a></li></ul></div></div></div></div></div></div></div></main></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"mdxSource":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock, CodeGroup, Heading, Step, Steps} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true);\n if (!Heading) _missingMdxReference(\"Heading\", true);\n if (!Step) _missingMdxReference(\"Step\", true);\n if (!Steps) _missingMdxReference(\"Steps\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"In Morph, you build the backend using Python. You can freely add Python packages to build data processing and AI workflows.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"development-flow\",\n children: \"Development Flow\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The steps for backend development in Morph are as follows.\"\n }), \"\\n\", _jsxs(Steps, {\n children: [_jsx(Step, {\n title: \"Add Python Packages\",\n children: _jsxs(_components.p, {\n children: [\"Since Morph follows the common Python project format, you can freely add Python packages. Add the necessary packages to \", _jsx(_components.code, {\n children: \"requirements.txt\"\n }), \" or \", _jsx(_components.code, {\n children: \"poetry.toml\"\n }), \".\"]\n })\n }), _jsxs(Step, {\n title: \"Define Python Functions and Add Morph Decorators\",\n children: [_jsx(_components.p, {\n children: \"By adding Morph decorators to regular Python function definitions, you can set aliases. This allows you to reference the results of these functions from other Python, SQL, or Markdown files.\"\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" pandas \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"as\"\n }), \" pd\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token comment\",\n children: \"# Add Morph decorators\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" df\"]\n }), \"\\n\"]\n })\n })\n })]\n }), _jsxs(Step, {\n title: \"Test Python Functions\",\n children: [_jsxs(_components.p, {\n children: [\"Use the \", _jsx(_components.code, {\n children: \"morph run\"\n }), \" command to execute functions for unit testing.\"]\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"morph run example_dataframe\"\n }), \"\\n\"]\n })\n })\n })]\n }), _jsxs(Step, {\n title: \"Start the Development Server\",\n children: [_jsx(_components.p, {\n children: \"By starting the development server, you can check the web application locally.\"\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"morph serve\"\n }), \"\\n\"]\n })\n })\n })]\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"return-values-of-python-functions\",\n children: \"Return Values of Python Functions\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Python functions defined in a Morph project should have the following return values.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"dataframe\",\n children: \"DataFrame\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"A DataFrame object representing the result of data processing. SQL execution results are also handled as DataFrames. Use this when you want to use the result of data processing in other Python files or display it in Markdown files.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/data-component-table\",\n children: _jsx(_components.code, {\n children: \"\u003cDataFrame\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"df.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" df\"]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"data_table.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" Display DataFrame as DataTable\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"DataFrame\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"loadData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"example_dataframe\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{500}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"html-string\",\n children: \"HTML String\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"An HTML string for rendering the results of data visualization. Use this when you want to display graphs drawn using visualization libraries like Plotly or Bokeh.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/data-component-embed\",\n children: _jsx(_components.code, {\n children: \"\u003cEmbed\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"plotly.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" plotly\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"express \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"as\"\n }), \" px\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph_lib\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"types \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" HtmlResponse\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" fig \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" px\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"bar\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"df\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n }), \" x\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"'date'\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n }), \" y\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"'amount'\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" HtmlResponse\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"fig\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"to_html\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"embed.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" Display Plotly Chart\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"Embed\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"loadData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"example_plotly\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{500}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"streaming\",\n children: \"Streaming\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use this when using streaming APIs such as LLM API. Execute value streaming using the \", _jsx(_components.code, {\n children: \"stream_chat\"\n }), \" function.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/ai-component-chat\",\n children: _jsx(_components.code, {\n children: \"\u003cChat\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"chat.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph_lib\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"stream \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" stream_chat\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" langchain_openai \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" ChatOpenAI\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" langchain_core\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"messages \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" HumanMessage\"]\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"langchain_chat\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" llm \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" ChatOpenAI\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"model\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"gpt-4o\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" messages are \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), \"HumanMessage\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), _jsx(_components.span, {\n className: \"token builtin\",\n children: \"vars\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"prompt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"for\"\n }), \" token \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"in\"\n }), \" llm\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"stream\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"messages\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"yield\"\n }), \" stream_chat\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"token\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"content\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"chat.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" 🦜🔗 Langchain Chat\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"Chat\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"postData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"langchain_chat\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{300}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n })]\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{"config":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Docs","colors":{"primary":"#111827","light":"#d1d5db","dark":"#111827"},"favicon":"/favicon.svg","navigation":{"versions":[{"version":"English","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/en/getting-started/why-morph","docs/en/getting-started/installation"]},{"group":"Quick Start","pages":["docs/en/quickstart/building-app",{"group":"How to Deploy","icon":"link","pages":["docs/en/quickstart/dashboard-setup","docs/en/quickstart/deploy"]}]},{"group":"Framework","pages":["docs/en/develop/guides/framework","docs/en/develop/guides/alias","docs/en/develop/guides/building-backend","docs/en/develop/guides/building-frontend","docs/en/develop/guides/environment-variables","docs/en/develop/guides/integration","docs/en/develop/guides/variables","docs/en/develop/guides/user-role","docs/en/develop/guides/updating-project"]},{"group":"Deployment","pages":["docs/en/deploy/customize-dockerfile","docs/en/deploy/environment-variables","docs/en/deploy/public"]},{"group":"Tutorials: Data Analysis","pages":["docs/en/develop/tutorials/pygwalker","docs/en/develop/tutorials/plotly"]},{"group":"Tutorials: LLM Apps","pages":["docs/en/develop/tutorials/chatbot","docs/en/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/en/advanced/api_key","docs/en/advanced/builtin-postgres","docs/en/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/en/advanced/connectors/mysql","docs/en/advanced/connectors/postgresql","docs/en/advanced/connectors/bigquery","docs/en/advanced/connectors/snowflake","docs/en/advanced/connectors/redshift","docs/en/advanced/connectors/mssql","docs/en/advanced/connectors/athena","docs/en/advanced/connectors/salesforce","docs/en/advanced/connectors/hubspot","docs/en/advanced/connectors/stripe","docs/en/advanced/connectors/linear","docs/en/advanced/connectors/airtable","docs/en/advanced/connectors/attio","docs/en/advanced/connectors/intercom","docs/en/advanced/connectors/notion","docs/en/advanced/connectors/mailchimp","docs/en/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"Framework","pages":["reference/en/framework/morph-project"]},{"group":"SQL","pages":["reference/en/sql/config","reference/en/sql/load_data"]},{"group":"Python","pages":["reference/en/python/morph-global-context","reference/en/python/morph-func","reference/en/python/morph-load_data","reference/en/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/en/morph_lib/ai/text_to_sql","reference/en/morph_lib/ai/text_to_plotly","reference/en/morph_lib/ai/text_to_matplotlib","reference/en/morph_lib/ai/text_to_markdown","reference/en/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/en/morph_lib/database/execute_sql","reference/en/morph_lib/database/insert_records","reference/en/morph_lib/database/update_records","reference/en/morph_lib/database/insert_or_update_records","reference/en/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/en/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/en/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/en/cli-commands/version","reference/en/cli-commands/run","reference/en/cli-commands/compile","reference/en/cli-commands/clean","reference/en/cli-commands/init","reference/en/cli-commands/new","reference/en/cli-commands/config","reference/en/cli-commands/deploy","reference/en/cli-commands/serve","reference/en/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AI Components","pages":["data-application/en/ai-component-chat","data-application/en/ai-component-llm"]},{"group":"Data Components","pages":["data-application/en/data-component-table","data-application/en/data-component-embed","data-application/en/data-component-metrics"]},{"group":"Input Components","pages":["data-application/en/input-component-input","data-application/en/input-component-date-picker","data-application/en/input-component-date-range-picker","data-application/en/input-component-select"]},{"group":"Layout Components","pages":["data-application/en/layout-component-accordion","data-application/en/layout-component-callout","data-application/en/layout-component-card","data-application/en/layout-component-grid","data-application/en/layout-component-panel"]},{"group":"State \u0026 Data","pages":["data-application/en/morph-data-state","data-application/en/advanced-morph-data-basic"]},{"group":"MDX Deep Dive","pages":["data-application/en/mdx/mdx-1-basic","data-application/en/mdx/mdx-2-styling","data-application/en/mdx/mdx-3-js"]},{"group":"Deprecated","pages":["data-application/en/morph-data-getjson","data-application/en/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/en/cli/deployment-issues"]},{"group":"Support","pages":["troubleshooting/en/support/contact-support"]}]}]},{"version":"日本語","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/ja/getting-started/why-morph","docs/ja/getting-started/installation"]},{"group":"クイックスタート","pages":["docs/ja/quickstart/building-app",{"group":"デプロイ手順","icon":"link","pages":["docs/ja/quickstart/dashboard-setup","docs/ja/quickstart/deploy"]}]},{"group":"フレームワーク","pages":["docs/ja/develop/guides/framework","docs/ja/develop/guides/alias","docs/ja/develop/guides/building-backend","docs/ja/develop/guides/building-frontend","docs/ja/develop/guides/environment-variables","docs/ja/develop/guides/integration","docs/ja/develop/guides/variables","docs/ja/develop/guides/user-role","docs/ja/develop/guides/updating-project"]},{"group":"デプロイ","pages":["docs/ja/deploy/customize-dockerfile","docs/ja/deploy/environment-variables","docs/ja/deploy/public"]},{"group":"チュートリアル: データ分析","pages":["docs/ja/develop/tutorials/pygwalker","docs/ja/develop/tutorials/plotly"]},{"group":"チュートリアル: AIアプリ","pages":["docs/ja/develop/tutorials/chatbot","docs/ja/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/ja/advanced/api_key","docs/ja/advanced/builtin-postgres","docs/ja/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/ja/advanced/connectors/mysql","docs/ja/advanced/connectors/postgresql","docs/ja/advanced/connectors/bigquery","docs/ja/advanced/connectors/snowflake","docs/ja/advanced/connectors/redshift","docs/ja/advanced/connectors/mssql","docs/ja/advanced/connectors/athena","docs/ja/advanced/connectors/salesforce","docs/ja/advanced/connectors/hubspot","docs/ja/advanced/connectors/stripe","docs/ja/advanced/connectors/linear","docs/ja/advanced/connectors/airtable","docs/ja/advanced/connectors/attio","docs/ja/advanced/connectors/intercom","docs/ja/advanced/connectors/notion","docs/ja/advanced/connectors/mailchimp","docs/ja/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"フレームワーク","pages":["reference/ja/framework/morph-project"]},{"group":"SQL","pages":["reference/ja/sql/config","reference/ja/sql/load_data"]},{"group":"Python","pages":["reference/ja/python/morph-global-context","reference/ja/python/morph-func","reference/ja/python/morph-load_data","reference/ja/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/ja/morph_lib/ai/text_to_sql","reference/ja/morph_lib/ai/text_to_plotly","reference/ja/morph_lib/ai/text_to_matplotlib","reference/ja/morph_lib/ai/text_to_markdown","reference/ja/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/ja/morph_lib/database/execute_sql","reference/ja/morph_lib/database/insert_records","reference/ja/morph_lib/database/update_records","reference/ja/morph_lib/database/insert_or_update_records","reference/ja/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/ja/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/ja/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/ja/cli-commands/version","reference/ja/cli-commands/run","reference/ja/cli-commands/compile","reference/ja/cli-commands/clean","reference/ja/cli-commands/init","reference/ja/cli-commands/new","reference/ja/cli-commands/config","reference/ja/cli-commands/deploy","reference/ja/cli-commands/serve","reference/ja/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AIコンポーネント","pages":["data-application/ja/ai-component-chat","data-application/ja/ai-component-llm"]},{"group":"データコンポーネント","pages":["data-application/ja/data-component-table","data-application/ja/data-component-embed","data-application/ja/data-component-metrics"]},{"group":"入力コンポーネント","pages":["data-application/ja/input-component-input","data-application/ja/input-component-date-picker","data-application/ja/input-component-date-range-picker","data-application/ja/input-component-select"]},{"group":"レイアウトコンポーネント","pages":["data-application/ja/layout-component-accordion","data-application/ja/layout-component-callout","data-application/ja/layout-component-card","data-application/ja/layout-component-grid","data-application/ja/layout-component-panel"]},{"group":"状態管理とデータ","pages":["data-application/ja/morph-data-state","data-application/ja/advanced-morph-data-basic","data-application/ja/morph-data-load-data","data-application/ja/morph-data-post-data"]},{"group":"MDX 詳解","pages":["data-application/ja/mdx/mdx-1-basic","data-application/ja/mdx/mdx-2-styling","data-application/ja/mdx/mdx-3-js"]},{"group":"廃止された仕様","pages":["data-application/ja/morph-data-getjson","data-application/ja/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/ja/cli/deployment-issues"]},{"group":"サポート","pages":["troubleshooting/ja/support/contact-support"]}]}]}],"global":{"anchors":[{"anchor":"Changelog","href":"https://www.morph-data.io/changelog","icon":"rss"},{"anchor":"Connectors","href":"https://www.morph-data.io/tools/connectors/database","icon":"plug"},{"anchor":"Code Snippets","href":"https://www.morph-data.io/tools/snippets/undefined","icon":"brackets-curly"}]}},"styling":{"codeblocks":"dark"},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg_w.svg"},"navbar":{"links":[{"label":"Blog","href":"https://www.morphdb.io/blogs"}],"primary":{"type":"button","label":"Website","href":"https://www.morphdb.io"}},"footer":{"socials":{"x":"https://x.com/morphdbHQ","github":"https://github.com/useMorph","linkedin":"https://www.linkedin.com/company/morphdbhq"}}},"pageMetadata":{"title":"Building the Backend","description":null,"icon":"brackets-curly","href":"/docs/en/develop/guides/building-backend"}}},"mdxExtracts":{"tableOfContents":[{"title":"Development Flow","slug":"development-flow","depth":2,"children":[]},{"title":"Return Values of Python Functions","slug":"return-values-of-python-functions","depth":2,"children":[{"title":"DataFrame","slug":"dataframe","depth":3,"children":[]},{"title":"HTML String","slug":"html-string","depth":3,"children":[]},{"title":"Streaming","slug":"streaming","depth":3,"children":[]}]}],"codeExamples":{}},"description":null,"pageData":{"navWithMetadata":[{"group":"Getting Started","version":"English","pages":[{"title":"Introduction","description":"Convert AI workflows and agents developed in Python into web applications","icon":"lightbulb","href":"/docs/en/getting-started/why-morph"},{"title":"Installation","description":"Python 3.9 or higher and Node.js 18 or higher are required to use Morph.","icon":"wrench","href":"/docs/en/getting-started/installation"}]},{"group":"Quick Start","version":"English","pages":[{"title":"Building AI App","description":"Complete your first AI app in 3 minutes.","icon":"rocket","href":"/docs/en/quickstart/building-app"},{"group":"How to Deploy","icon":"link","pages":[{"title":"Dashboard Setup","description":null,"icon":"","href":"/docs/en/quickstart/dashboard-setup"},{"title":"Deploy to the Cloud","description":null,"icon":"","href":"/docs/en/quickstart/deploy"}]}]},{"group":"Framework","version":"English","pages":[{"title":"Framework Overview","description":null,"icon":"eye","href":"/docs/en/develop/guides/framework"},{"title":"Alias","description":null,"icon":"shuffle","href":"/docs/en/develop/guides/alias"},{"title":"Building the Backend","description":null,"icon":"brackets-curly","href":"/docs/en/develop/guides/building-backend"},{"title":"Building the Frontend","description":null,"icon":"markdown","href":"/docs/en/develop/guides/building-frontend"},{"title":"Environment Variables","description":null,"icon":"square-terminal","href":"/docs/en/develop/guides/environment-variables"},{"title":"Data Connector","description":null,"icon":"database","href":"/docs/en/develop/guides/integration"},{"title":"Variables","description":null,"icon":"code","href":"/docs/en/develop/guides/variables"},{"title":"Role-based Access Control","description":null,"icon":"user","href":"/docs/en/develop/guides/user-role"},{"title":"Updating the Project","description":null,"icon":"rotate","href":"/docs/en/develop/guides/updating-project"}]},{"group":"Deployment","version":"English","pages":[{"title":"Customizing the Runtime Environment","description":null,"icon":"server","href":"/docs/en/deploy/customize-dockerfile"},{"title":"Environment Variables","description":null,"icon":"square-terminal","href":"/docs/en/deploy/environment-variables"},{"title":"Enable Public Access","description":null,"icon":"link","href":"/docs/en/deploy/public"}]},{"group":"Tutorials: Data Analysis","version":"English","pages":[{"title":"Build a BI app using Pygwalker","description":null,"icon":"chart-user","href":"/docs/en/develop/tutorials/pygwalker"},{"title":"Build a sophisticated dashboard using Plotly","description":null,"icon":"chart-bar","href":"/docs/en/develop/tutorials/plotly"}]},{"group":"Tutorials: LLM Apps","version":"English","pages":[{"title":"Create a chat app","description":null,"icon":"message-dots","href":"/docs/en/develop/tutorials/chatbot"},{"title":"AI Chat generates and executes code","description":null,"icon":"code","href":"/docs/en/develop/tutorials/chat_sidebyside"}]},{"group":"Advanced","version":"English","pages":[{"title":"API Key","description":null,"icon":"key","href":"/docs/en/advanced/api_key"},{"title":"Built-in PostgreSQL","description":null,"icon":"database","href":"/docs/en/advanced/builtin-postgres"},{"title":"Version Migration Guide","description":null,"icon":"arrows-turn-to-dots","href":"/docs/en/advanced/migration-guide"},{"group":"Connectors","icon":"plug","pages":[{"title":"MySQL","description":null,"href":"/docs/en/advanced/connectors/mysql"},{"title":"PostgreSQL","description":null,"href":"/docs/en/advanced/connectors/postgresql"},{"title":"BigQuery","description":null,"href":"/docs/en/advanced/connectors/bigquery"},{"title":"Snowflake","description":null,"href":"/docs/en/advanced/connectors/snowflake"},{"title":"Redshift","description":null,"href":"/docs/en/advanced/connectors/redshift"},{"title":"SQLServer","description":null,"href":"/docs/en/advanced/connectors/mssql"},{"title":"Athena","description":null,"href":"/docs/en/advanced/connectors/athena"},{"title":"Salesforce","description":null,"href":"/docs/en/advanced/connectors/salesforce"},{"title":"HubSpot","description":null,"href":"/docs/en/advanced/connectors/hubspot"},{"title":"Stripe","description":null,"href":"/docs/en/advanced/connectors/stripe"},{"title":"Linear","description":null,"href":"/docs/en/advanced/connectors/linear"},{"title":"Airtable","description":null,"href":"/docs/en/advanced/connectors/airtable"},{"title":"Attio","description":null,"href":"/docs/en/advanced/connectors/attio"},{"title":"Intercom","description":null,"href":"/docs/en/advanced/connectors/intercom"},{"title":"Notion","description":null,"href":"/docs/en/advanced/connectors/notion"},{"title":"Mailchimp","description":null,"href":"/docs/en/advanced/connectors/mailchimp"},{"title":"Freee","description":null,"href":"/docs/en/advanced/connectors/freee"}]}]},{"group":"Framework","version":"English","pages":[{"title":"morph_project.yml","description":null,"href":"/reference/en/framework/morph-project"}]},{"group":"SQL","version":"English","pages":[{"title":"config","description":null,"href":"/reference/en/sql/config"},{"title":"load_data","description":null,"href":"/reference/en/sql/load_data"}]},{"group":"Python","version":"English","pages":[{"title":"MorphGlobalContext","description":null,"href":"/reference/en/python/morph-global-context"},{"title":"@morph.func","description":null,"href":"/reference/en/python/morph-func"},{"title":"@morph.load_data","description":null,"href":"/reference/en/python/morph-load_data"},{"title":"@morph.variables","description":null,"href":"/reference/en/python/morph-variables"}]},{"group":"morph_lib","version":"English","pages":[{"group":"AI","pages":[{"title":"text_to_sql","description":null,"href":"/reference/en/morph_lib/ai/text_to_sql"},{"title":"text_to_plotly","description":null,"href":"/reference/en/morph_lib/ai/text_to_plotly"},{"title":"text_to_matplotlib","description":null,"href":"/reference/en/morph_lib/ai/text_to_matplotlib"},{"title":"text_to_markdown","description":null,"href":"/reference/en/morph_lib/ai/text_to_markdown"},{"title":"text_to_html","description":null,"href":"/reference/en/morph_lib/ai/text_to_html"}]},{"group":"Database","pages":[{"title":"execute_sql","description":null,"href":"/reference/en/morph_lib/database/execute_sql"},{"title":"insert_records","description":null,"href":"/reference/en/morph_lib/database/insert_records"},{"title":"update_records","description":null,"href":"/reference/en/morph_lib/database/update_records"},{"title":"insert_or_update_records","description":null,"href":"/reference/en/morph_lib/database/insert_or_update_records"},{"title":"delete_records","description":null,"href":"/reference/en/morph_lib/database/delete_records"}]},{"group":"API","pages":[{"title":"get_auth_token","description":null,"href":"/reference/en/morph_lib/api/get_auth_token"}]},{"group":"Stream","pages":[{"title":"create_chunk","description":null,"href":"/reference/en/morph_lib/stream/create_chunk"}]}]},{"group":"CLI","version":"English","pages":[{"title":"--version","description":null,"href":"/reference/en/cli-commands/version"},{"title":"run","description":null,"href":"/reference/en/cli-commands/run"},{"title":"compile","description":null,"href":"/reference/en/cli-commands/compile"},{"title":"clean","description":null,"href":"/reference/en/cli-commands/clean"},{"title":"init","description":null,"href":"/reference/en/cli-commands/init"},{"title":"new","description":null,"href":"/reference/en/cli-commands/new"},{"title":"config","description":null,"href":"/reference/en/cli-commands/config"},{"title":"deploy","description":null,"href":"/reference/en/cli-commands/deploy"},{"title":"serve","description":null,"href":"/reference/en/cli-commands/serve"},{"title":"context","description":null,"href":"/reference/en/cli-commands/context"}]},{"group":"AI Components","version":"English","pages":[{"title":"\u003cChat /\u003e","description":null,"icon":"messages","href":"/data-application/en/ai-component-chat"},{"title":"\u003cLLM /\u003e","description":null,"icon":"message-dots","href":"/data-application/en/ai-component-llm"}]},{"group":"Data Components","version":"English","pages":[{"title":"\u003cDataTable /\u003e","description":null,"icon":"table-cells","href":"/data-application/en/data-component-table"},{"title":"\u003cEmbed /\u003e","description":null,"icon":"code","href":"/data-application/en/data-component-embed"},{"title":"\u003cMetrics /\u003e","description":null,"icon":"00","href":"/data-application/en/data-component-metrics"}]},{"group":"Input Components","version":"English","pages":[{"title":"\u003cInput /\u003e","description":null,"icon":"input-pipe","href":"/data-application/en/input-component-input"},{"title":"\u003cDatePicker /\u003e","description":null,"icon":"calendar-day","href":"/data-application/en/input-component-date-picker"},{"title":"\u003cDateRangePicker /\u003e","description":null,"icon":"calendar-week","href":"/data-application/en/input-component-date-range-picker"},{"title":"\u003cSelect /\u003e","description":null,"icon":"caret-down","href":"/data-application/en/input-component-select"}]},{"group":"Layout Components","version":"English","pages":[{"title":"\u003cAccordion /\u003e","description":null,"href":"/data-application/en/layout-component-accordion"},{"title":"\u003cCallout /\u003e","description":null,"href":"/data-application/en/layout-component-callout"},{"title":"\u003cCard /\u003e","description":null,"href":"/data-application/en/layout-component-card"},{"title":"\u003cGrid /\u003e","description":null,"href":"/data-application/en/layout-component-grid"},{"title":"\u003cPanel /\u003e","description":null,"href":"/data-application/en/layout-component-panel"}]},{"group":"State \u0026 Data","version":"English","pages":[{"title":"State Management - defineState()","description":null,"href":"/data-application/en/morph-data-state"},{"title":"Communicating with the Backend","description":null,"href":"/data-application/en/advanced-morph-data-basic"}]},{"group":"MDX Deep Dive","version":"English","pages":[{"title":"Basic Usage","description":null,"href":"/data-application/en/mdx/mdx-1-basic"},{"title":"Styling","description":null,"href":"/data-application/en/mdx/mdx-2-styling"},{"title":"Using React and JavaScript","description":null,"href":"/data-application/en/mdx/mdx-3-js"}]},{"group":"Deprecated","version":"English","pages":[{"title":"getJson()","description":null,"href":"/data-application/en/morph-data-getjson"},{"title":"Using Variables","description":null,"href":"/data-application/en/morph-data-variables"}]},{"group":"Morph CLI","version":"English","pages":[{"title":"Deploy","description":null,"href":"/troubleshooting/en/cli/deployment-issues"}]},{"group":"Support","version":"English","pages":[{"title":"Contact Support","description":null,"href":"/troubleshooting/en/support/contact-support"}]},{"group":"Getting Started","version":"日本語","pages":[{"title":"導入","description":"Pythonで開発したAIワークフローやエージェントを、Webアプリケーションに変換","icon":"lightbulb","href":"/docs/ja/getting-started/why-morph"},{"title":"インストール","description":"Morphを使用するためには、Python 3.9以上、Node.js 18以上が必要です。","icon":"wrench","href":"/docs/ja/getting-started/installation"}]},{"group":"クイックスタート","version":"日本語","pages":[{"title":"AIアプリの構築","description":"3分ではじめてのAIアプリを完成させましょう。","icon":"rocket","href":"/docs/ja/quickstart/building-app"},{"group":"デプロイ手順","icon":"link","pages":[{"title":"事前準備","description":null,"icon":"","href":"/docs/ja/quickstart/dashboard-setup"},{"title":"デプロイ","description":null,"icon":"","href":"/docs/ja/quickstart/deploy"}]}]},{"group":"フレームワーク","version":"日本語","pages":[{"title":"フレームワークの概要","description":null,"icon":"eye","href":"/docs/ja/develop/guides/framework"},{"title":"エイリアス","description":null,"icon":"shuffle","href":"/docs/ja/develop/guides/alias"},{"title":"バックエンドを構築する","description":null,"icon":"brackets-curly","href":"/docs/ja/develop/guides/building-backend"},{"title":"フロントエンドを構築する","description":null,"icon":"markdown","href":"/docs/ja/develop/guides/building-frontend"},{"title":"環境変数","description":null,"icon":"square-terminal","href":"/docs/ja/develop/guides/environment-variables"},{"title":"データコネクター","description":null,"icon":"database","href":"/docs/ja/develop/guides/integration"},{"title":"変数を使う","description":null,"icon":"code","href":"/docs/ja/develop/guides/variables"},{"title":"ロールベースのアクセス制御","description":null,"icon":"user","href":"/docs/ja/develop/guides/user-role"},{"title":"プロジェクトをアップデートする","description":null,"icon":"rotate","href":"/docs/ja/develop/guides/updating-project"}]},{"group":"デプロイ","version":"日本語","pages":[{"title":"実行環境のカスタマイズ","description":null,"icon":"server","href":"/docs/ja/deploy/customize-dockerfile"},{"title":"環境変数","description":null,"icon":"square-terminal","href":"/docs/ja/deploy/environment-variables"},{"title":"公開する","description":null,"icon":"link","href":"/docs/ja/deploy/public"}]},{"group":"チュートリアル: データ分析","version":"日本語","pages":[{"title":"PYGWALKERを埋め込んだBIアプリ構築","description":null,"icon":"chart-user","href":"/docs/ja/develop/tutorials/pygwalker"},{"title":"Plotlyを用いた高度なダッシュボードアプリ構築","description":null,"icon":"chart-bar","href":"/docs/ja/develop/tutorials/plotly"}]},{"group":"チュートリアル: AIアプリ","version":"日本語","pages":[{"title":"チャットアプリを作成する","description":null,"icon":"message-dots","href":"/docs/ja/develop/tutorials/chatbot"},{"title":"コード生成・実行を行うAIアプリを作成する","description":null,"icon":"code","href":"/docs/ja/develop/tutorials/chat_sidebyside"}]},{"group":"Advanced","version":"日本語","pages":[{"title":"API Key","description":null,"icon":"key","href":"/docs/ja/advanced/api_key"},{"title":"ビルトインPostgreSQL","description":null,"icon":"database","href":"/docs/ja/advanced/builtin-postgres"},{"title":"バージョンマイグレーションガイド","description":null,"icon":"arrows-turn-to-dots","href":"/docs/ja/advanced/migration-guide"},{"group":"Connectors","icon":"plug","pages":[{"title":"MySQL","description":null,"href":"/docs/ja/advanced/connectors/mysql"},{"title":"PostgreSQL","description":null,"href":"/docs/ja/advanced/connectors/postgresql"},{"title":"BigQuery","description":null,"href":"/docs/ja/advanced/connectors/bigquery"},{"title":"Snowflake","description":null,"href":"/docs/ja/advanced/connectors/snowflake"},{"title":"Redshift","description":null,"href":"/docs/ja/advanced/connectors/redshift"},{"title":"SQLServer","description":null,"href":"/docs/ja/advanced/connectors/mssql"},{"title":"Athena","description":null,"href":"/docs/ja/advanced/connectors/athena"},{"title":"Salesforce","description":null,"href":"/docs/ja/advanced/connectors/salesforce"},{"title":"HubSpot","description":null,"href":"/docs/ja/advanced/connectors/hubspot"},{"title":"Stripe","description":null,"href":"/docs/ja/advanced/connectors/stripe"},{"title":"Linear","description":null,"href":"/docs/ja/advanced/connectors/linear"},{"title":"Airtable","description":null,"href":"/docs/ja/advanced/connectors/airtable"},{"title":"Attio","description":null,"href":"/docs/ja/advanced/connectors/attio"},{"title":"Intercom","description":null,"href":"/docs/ja/advanced/connectors/intercom"},{"title":"Notion","description":null,"href":"/docs/ja/advanced/connectors/notion"},{"title":"Mailchimp","description":null,"href":"/docs/ja/advanced/connectors/mailchimp"},{"title":"Freee","description":null,"href":"/docs/ja/advanced/connectors/freee"}]}]},{"group":"フレームワーク","version":"日本語","pages":[{"title":"morph_project.yml","description":null,"href":"/reference/ja/framework/morph-project"}]},{"group":"SQL","version":"日本語","pages":[{"title":"config","description":null,"href":"/reference/ja/sql/config"},{"title":"load_data","description":null,"href":"/reference/ja/sql/load_data"}]},{"group":"Python","version":"日本語","pages":[{"title":"MorphGlobalContext","description":null,"href":"/reference/ja/python/morph-global-context"},{"title":"@morph.func","description":null,"href":"/reference/ja/python/morph-func"},{"title":"@morph.load_data","description":null,"href":"/reference/ja/python/morph-load_data"},{"title":"@morph.variables","description":null,"href":"/reference/ja/python/morph-variables"}]},{"group":"morph_lib","version":"日本語","pages":[{"group":"AI","pages":[{"title":"text_to_sql","description":null,"href":"/reference/ja/morph_lib/ai/text_to_sql"},{"title":"text_to_plotly","description":null,"href":"/reference/ja/morph_lib/ai/text_to_plotly"},{"title":"text_to_matplotlib","description":null,"href":"/reference/ja/morph_lib/ai/text_to_matplotlib"},{"title":"text_to_markdown","description":null,"href":"/reference/ja/morph_lib/ai/text_to_markdown"},{"title":"text_to_html","description":null,"href":"/reference/ja/morph_lib/ai/text_to_html"}]},{"group":"Database","pages":[{"title":"execute_sql","description":null,"href":"/reference/ja/morph_lib/database/execute_sql"},{"title":"insert_records","description":null,"href":"/reference/ja/morph_lib/database/insert_records"},{"title":"update_records","description":null,"href":"/reference/ja/morph_lib/database/update_records"},{"title":"insert_or_update_records","description":null,"href":"/reference/ja/morph_lib/database/insert_or_update_records"},{"title":"delete_records","description":null,"href":"/reference/ja/morph_lib/database/delete_records"}]},{"group":"API","pages":[{"title":"get_auth_token","description":null,"href":"/reference/ja/morph_lib/api/get_auth_token"}]},{"group":"Stream","pages":[{"title":"create_chunk","description":null,"href":"/reference/ja/morph_lib/stream/create_chunk"}]}]},{"group":"CLI","version":"日本語","pages":[{"title":"--version","description":null,"href":"/reference/ja/cli-commands/version"},{"title":"run","description":null,"href":"/reference/ja/cli-commands/run"},{"title":"compile","description":null,"href":"/reference/ja/cli-commands/compile"},{"title":"clean","description":null,"href":"/reference/ja/cli-commands/clean"},{"title":"init","description":null,"href":"/reference/ja/cli-commands/init"},{"title":"new","description":null,"href":"/reference/ja/cli-commands/new"},{"title":"config","description":null,"href":"/reference/ja/cli-commands/config"},{"title":"deploy","description":null,"href":"/reference/ja/cli-commands/deploy"},{"title":"serve","description":null,"href":"/reference/ja/cli-commands/serve"},{"title":"context","description":null,"href":"/reference/ja/cli-commands/context"}]},{"group":"AIコンポーネント","version":"日本語","pages":[{"title":"\u003cChat /\u003e","description":null,"icon":"messages","href":"/data-application/ja/ai-component-chat"},{"title":"\u003cLLM /\u003e","description":null,"icon":"message-dots","href":"/data-application/ja/ai-component-llm"}]},{"group":"データコンポーネント","version":"日本語","pages":[{"title":"\u003cDataTable /\u003e","description":null,"icon":"table-cells","href":"/data-application/ja/data-component-table"},{"title":"\u003cEmbed /\u003e","description":null,"icon":"code","href":"/data-application/ja/data-component-embed"},{"title":"\u003cMetrics /\u003e","description":null,"icon":"00","href":"/data-application/ja/data-component-metrics"}]},{"group":"入力コンポーネント","version":"日本語","pages":[{"title":"\u003cInput /\u003e","description":null,"icon":"input-pipe","href":"/data-application/ja/input-component-input"},{"title":"\u003cDatePicker /\u003e","description":null,"icon":"calendar-day","href":"/data-application/ja/input-component-date-picker"},{"title":"\u003cDateRangePicker /\u003e","description":null,"icon":"calendar-week","href":"/data-application/ja/input-component-date-range-picker"},{"title":"\u003cSelect /\u003e","description":null,"icon":"caret-down","href":"/data-application/ja/input-component-select"}]},{"group":"レイアウトコンポーネント","version":"日本語","pages":[{"title":"\u003cAccordion /\u003e","description":null,"href":"/data-application/ja/layout-component-accordion"},{"title":"\u003cCallout /\u003e","description":null,"href":"/data-application/ja/layout-component-callout"},{"title":"\u003cCard /\u003e","description":null,"href":"/data-application/ja/layout-component-card"},{"title":"\u003cGrid /\u003e","description":null,"href":"/data-application/ja/layout-component-grid"},{"title":"\u003cPanel /\u003e","description":null,"href":"/data-application/ja/layout-component-panel"}]},{"group":"状態管理とデータ","version":"日本語","pages":[{"title":"状態管理 - defineState()","description":null,"href":"/data-application/ja/morph-data-state"},{"title":"バックエンドとの通信","description":null,"href":"/data-application/ja/advanced-morph-data-basic"},{"title":"データの取得 - loadData()","description":null,"href":"/data-application/ja/morph-data-load-data"},{"title":"関数の実行 - postData()","description":null,"href":"/data-application/ja/morph-data-post-data"}]},{"group":"MDX 詳解","version":"日本語","pages":[{"title":"基本的な書き方","description":null,"href":"/data-application/ja/mdx/mdx-1-basic"},{"title":"スタイリング","description":null,"href":"/data-application/ja/mdx/mdx-2-styling"},{"title":"React, JavaScriptの使用","description":null,"href":"/data-application/ja/mdx/mdx-3-js"}]},{"group":"廃止された仕様","version":"日本語","pages":[{"title":"getJson()","description":null,"href":"/data-application/ja/morph-data-getjson"},{"title":"変数を使う (variable関数)","description":null,"href":"/data-application/ja/morph-data-variables"}]},{"group":"Morph CLI","version":"日本語","pages":[{"title":"Deploy","description":null,"href":"/troubleshooting/ja/cli/deployment-issues"}]},{"group":"サポート","version":"日本語","pages":[{"title":"サポートに連絡する","description":null,"href":"/troubleshooting/ja/support/contact-support"}]}],"docsNavWithMetadata":{"global":{"anchors":[{"anchor":"Changelog","href":"https://www.morph-data.io/changelog","icon":"rss"},{"anchor":"Connectors","href":"https://www.morph-data.io/tools/connectors/database","icon":"plug"},{"anchor":"Code Snippets","href":"https://www.morph-data.io/tools/snippets/undefined","icon":"brackets-curly"}]},"versions":[{"version":"English","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","description":"Convert AI workflows and agents developed in Python into web applications","icon":"lightbulb","href":"/docs/en/getting-started/why-morph"},{"title":"Installation","description":"Python 3.9 or higher and Node.js 18 or higher are required to use Morph.","icon":"wrench","href":"/docs/en/getting-started/installation"}]},{"group":"Quick Start","pages":[{"title":"Building AI App","description":"Complete your first AI app in 3 minutes.","icon":"rocket","href":"/docs/en/quickstart/building-app"},{"group":"How to Deploy","icon":"link","pages":[{"title":"Dashboard Setup","description":null,"icon":"","href":"/docs/en/quickstart/dashboard-setup"},{"title":"Deploy to the Cloud","description":null,"icon":"","href":"/docs/en/quickstart/deploy"}]}]},{"group":"Framework","pages":[{"title":"Framework Overview","description":null,"icon":"eye","href":"/docs/en/develop/guides/framework"},{"title":"Alias","description":null,"icon":"shuffle","href":"/docs/en/develop/guides/alias"},{"title":"Building the Backend","description":null,"icon":"brackets-curly","href":"/docs/en/develop/guides/building-backend"},{"title":"Building the Frontend","description":null,"icon":"markdown","href":"/docs/en/develop/guides/building-frontend"},{"title":"Environment Variables","description":null,"icon":"square-terminal","href":"/docs/en/develop/guides/environment-variables"},{"title":"Data Connector","description":null,"icon":"database","href":"/docs/en/develop/guides/integration"},{"title":"Variables","description":null,"icon":"code","href":"/docs/en/develop/guides/variables"},{"title":"Role-based Access Control","description":null,"icon":"user","href":"/docs/en/develop/guides/user-role"},{"title":"Updating the Project","description":null,"icon":"rotate","href":"/docs/en/develop/guides/updating-project"}]},{"group":"Deployment","pages":[{"title":"Customizing the Runtime Environment","description":null,"icon":"server","href":"/docs/en/deploy/customize-dockerfile"},{"title":"Environment Variables","description":null,"icon":"square-terminal","href":"/docs/en/deploy/environment-variables"},{"title":"Enable Public Access","description":null,"icon":"link","href":"/docs/en/deploy/public"}]},{"group":"Tutorials: Data Analysis","pages":[{"title":"Build a BI app using Pygwalker","description":null,"icon":"chart-user","href":"/docs/en/develop/tutorials/pygwalker"},{"title":"Build a sophisticated dashboard using Plotly","description":null,"icon":"chart-bar","href":"/docs/en/develop/tutorials/plotly"}]},{"group":"Tutorials: LLM Apps","pages":[{"title":"Create a chat app","description":null,"icon":"message-dots","href":"/docs/en/develop/tutorials/chatbot"},{"title":"AI Chat generates and executes code","description":null,"icon":"code","href":"/docs/en/develop/tutorials/chat_sidebyside"}]},{"group":"Advanced","pages":[{"title":"API Key","description":null,"icon":"key","href":"/docs/en/advanced/api_key"},{"title":"Built-in PostgreSQL","description":null,"icon":"database","href":"/docs/en/advanced/builtin-postgres"},{"title":"Version Migration Guide","description":null,"icon":"arrows-turn-to-dots","href":"/docs/en/advanced/migration-guide"},{"group":"Connectors","icon":"plug","pages":[{"title":"MySQL","description":null,"href":"/docs/en/advanced/connectors/mysql"},{"title":"PostgreSQL","description":null,"href":"/docs/en/advanced/connectors/postgresql"},{"title":"BigQuery","description":null,"href":"/docs/en/advanced/connectors/bigquery"},{"title":"Snowflake","description":null,"href":"/docs/en/advanced/connectors/snowflake"},{"title":"Redshift","description":null,"href":"/docs/en/advanced/connectors/redshift"},{"title":"SQLServer","description":null,"href":"/docs/en/advanced/connectors/mssql"},{"title":"Athena","description":null,"href":"/docs/en/advanced/connectors/athena"},{"title":"Salesforce","description":null,"href":"/docs/en/advanced/connectors/salesforce"},{"title":"HubSpot","description":null,"href":"/docs/en/advanced/connectors/hubspot"},{"title":"Stripe","description":null,"href":"/docs/en/advanced/connectors/stripe"},{"title":"Linear","description":null,"href":"/docs/en/advanced/connectors/linear"},{"title":"Airtable","description":null,"href":"/docs/en/advanced/connectors/airtable"},{"title":"Attio","description":null,"href":"/docs/en/advanced/connectors/attio"},{"title":"Intercom","description":null,"href":"/docs/en/advanced/connectors/intercom"},{"title":"Notion","description":null,"href":"/docs/en/advanced/connectors/notion"},{"title":"Mailchimp","description":null,"href":"/docs/en/advanced/connectors/mailchimp"},{"title":"Freee","description":null,"href":"/docs/en/advanced/connectors/freee"}]}]}]},{"tab":"Reference","groups":[{"group":"Framework","pages":[{"title":"morph_project.yml","description":null,"href":"/reference/en/framework/morph-project"}]},{"group":"SQL","pages":[{"title":"config","description":null,"href":"/reference/en/sql/config"},{"title":"load_data","description":null,"href":"/reference/en/sql/load_data"}]},{"group":"Python","pages":[{"title":"MorphGlobalContext","description":null,"href":"/reference/en/python/morph-global-context"},{"title":"@morph.func","description":null,"href":"/reference/en/python/morph-func"},{"title":"@morph.load_data","description":null,"href":"/reference/en/python/morph-load_data"},{"title":"@morph.variables","description":null,"href":"/reference/en/python/morph-variables"}]},{"group":"morph_lib","pages":[{"group":"AI","pages":[{"title":"text_to_sql","description":null,"href":"/reference/en/morph_lib/ai/text_to_sql"},{"title":"text_to_plotly","description":null,"href":"/reference/en/morph_lib/ai/text_to_plotly"},{"title":"text_to_matplotlib","description":null,"href":"/reference/en/morph_lib/ai/text_to_matplotlib"},{"title":"text_to_markdown","description":null,"href":"/reference/en/morph_lib/ai/text_to_markdown"},{"title":"text_to_html","description":null,"href":"/reference/en/morph_lib/ai/text_to_html"}]},{"group":"Database","pages":[{"title":"execute_sql","description":null,"href":"/reference/en/morph_lib/database/execute_sql"},{"title":"insert_records","description":null,"href":"/reference/en/morph_lib/database/insert_records"},{"title":"update_records","description":null,"href":"/reference/en/morph_lib/database/update_records"},{"title":"insert_or_update_records","description":null,"href":"/reference/en/morph_lib/database/insert_or_update_records"},{"title":"delete_records","description":null,"href":"/reference/en/morph_lib/database/delete_records"}]},{"group":"API","pages":[{"title":"get_auth_token","description":null,"href":"/reference/en/morph_lib/api/get_auth_token"}]},{"group":"Stream","pages":[{"title":"create_chunk","description":null,"href":"/reference/en/morph_lib/stream/create_chunk"}]}]},{"group":"CLI","pages":[{"title":"--version","description":null,"href":"/reference/en/cli-commands/version"},{"title":"run","description":null,"href":"/reference/en/cli-commands/run"},{"title":"compile","description":null,"href":"/reference/en/cli-commands/compile"},{"title":"clean","description":null,"href":"/reference/en/cli-commands/clean"},{"title":"init","description":null,"href":"/reference/en/cli-commands/init"},{"title":"new","description":null,"href":"/reference/en/cli-commands/new"},{"title":"config","description":null,"href":"/reference/en/cli-commands/config"},{"title":"deploy","description":null,"href":"/reference/en/cli-commands/deploy"},{"title":"serve","description":null,"href":"/reference/en/cli-commands/serve"},{"title":"context","description":null,"href":"/reference/en/cli-commands/context"}]}]},{"tab":"Components","groups":[{"group":"AI Components","pages":[{"title":"\u003cChat /\u003e","description":null,"icon":"messages","href":"/data-application/en/ai-component-chat"},{"title":"\u003cLLM /\u003e","description":null,"icon":"message-dots","href":"/data-application/en/ai-component-llm"}]},{"group":"Data Components","pages":[{"title":"\u003cDataTable /\u003e","description":null,"icon":"table-cells","href":"/data-application/en/data-component-table"},{"title":"\u003cEmbed /\u003e","description":null,"icon":"code","href":"/data-application/en/data-component-embed"},{"title":"\u003cMetrics /\u003e","description":null,"icon":"00","href":"/data-application/en/data-component-metrics"}]},{"group":"Input Components","pages":[{"title":"\u003cInput /\u003e","description":null,"icon":"input-pipe","href":"/data-application/en/input-component-input"},{"title":"\u003cDatePicker /\u003e","description":null,"icon":"calendar-day","href":"/data-application/en/input-component-date-picker"},{"title":"\u003cDateRangePicker /\u003e","description":null,"icon":"calendar-week","href":"/data-application/en/input-component-date-range-picker"},{"title":"\u003cSelect /\u003e","description":null,"icon":"caret-down","href":"/data-application/en/input-component-select"}]},{"group":"Layout Components","pages":[{"title":"\u003cAccordion /\u003e","description":null,"href":"/data-application/en/layout-component-accordion"},{"title":"\u003cCallout /\u003e","description":null,"href":"/data-application/en/layout-component-callout"},{"title":"\u003cCard /\u003e","description":null,"href":"/data-application/en/layout-component-card"},{"title":"\u003cGrid /\u003e","description":null,"href":"/data-application/en/layout-component-grid"},{"title":"\u003cPanel /\u003e","description":null,"href":"/data-application/en/layout-component-panel"}]},{"group":"State \u0026 Data","pages":[{"title":"State Management - defineState()","description":null,"href":"/data-application/en/morph-data-state"},{"title":"Communicating with the Backend","description":null,"href":"/data-application/en/advanced-morph-data-basic"}]},{"group":"MDX Deep Dive","pages":[{"title":"Basic Usage","description":null,"href":"/data-application/en/mdx/mdx-1-basic"},{"title":"Styling","description":null,"href":"/data-application/en/mdx/mdx-2-styling"},{"title":"Using React and JavaScript","description":null,"href":"/data-application/en/mdx/mdx-3-js"}]},{"group":"Deprecated","pages":[{"title":"getJson()","description":null,"href":"/data-application/en/morph-data-getjson"},{"title":"Using Variables","description":null,"href":"/data-application/en/morph-data-variables"}]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":[{"title":"Deploy","description":null,"href":"/troubleshooting/en/cli/deployment-issues"}]},{"group":"Support","pages":[{"title":"Contact Support","description":null,"href":"/troubleshooting/en/support/contact-support"}]}]}]},{"version":"日本語","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":[{"title":"導入","description":"Pythonで開発したAIワークフローやエージェントを、Webアプリケーションに変換","icon":"lightbulb","href":"/docs/ja/getting-started/why-morph"},{"title":"インストール","description":"Morphを使用するためには、Python 3.9以上、Node.js 18以上が必要です。","icon":"wrench","href":"/docs/ja/getting-started/installation"}]},{"group":"クイックスタート","pages":[{"title":"AIアプリの構築","description":"3分ではじめてのAIアプリを完成させましょう。","icon":"rocket","href":"/docs/ja/quickstart/building-app"},{"group":"デプロイ手順","icon":"link","pages":[{"title":"事前準備","description":null,"icon":"","href":"/docs/ja/quickstart/dashboard-setup"},{"title":"デプロイ","description":null,"icon":"","href":"/docs/ja/quickstart/deploy"}]}]},{"group":"フレームワーク","pages":[{"title":"フレームワークの概要","description":null,"icon":"eye","href":"/docs/ja/develop/guides/framework"},{"title":"エイリアス","description":null,"icon":"shuffle","href":"/docs/ja/develop/guides/alias"},{"title":"バックエンドを構築する","description":null,"icon":"brackets-curly","href":"/docs/ja/develop/guides/building-backend"},{"title":"フロントエンドを構築する","description":null,"icon":"markdown","href":"/docs/ja/develop/guides/building-frontend"},{"title":"環境変数","description":null,"icon":"square-terminal","href":"/docs/ja/develop/guides/environment-variables"},{"title":"データコネクター","description":null,"icon":"database","href":"/docs/ja/develop/guides/integration"},{"title":"変数を使う","description":null,"icon":"code","href":"/docs/ja/develop/guides/variables"},{"title":"ロールベースのアクセス制御","description":null,"icon":"user","href":"/docs/ja/develop/guides/user-role"},{"title":"プロジェクトをアップデートする","description":null,"icon":"rotate","href":"/docs/ja/develop/guides/updating-project"}]},{"group":"デプロイ","pages":[{"title":"実行環境のカスタマイズ","description":null,"icon":"server","href":"/docs/ja/deploy/customize-dockerfile"},{"title":"環境変数","description":null,"icon":"square-terminal","href":"/docs/ja/deploy/environment-variables"},{"title":"公開する","description":null,"icon":"link","href":"/docs/ja/deploy/public"}]},{"group":"チュートリアル: データ分析","pages":[{"title":"PYGWALKERを埋め込んだBIアプリ構築","description":null,"icon":"chart-user","href":"/docs/ja/develop/tutorials/pygwalker"},{"title":"Plotlyを用いた高度なダッシュボードアプリ構築","description":null,"icon":"chart-bar","href":"/docs/ja/develop/tutorials/plotly"}]},{"group":"チュートリアル: AIアプリ","pages":[{"title":"チャットアプリを作成する","description":null,"icon":"message-dots","href":"/docs/ja/develop/tutorials/chatbot"},{"title":"コード生成・実行を行うAIアプリを作成する","description":null,"icon":"code","href":"/docs/ja/develop/tutorials/chat_sidebyside"}]},{"group":"Advanced","pages":[{"title":"API Key","description":null,"icon":"key","href":"/docs/ja/advanced/api_key"},{"title":"ビルトインPostgreSQL","description":null,"icon":"database","href":"/docs/ja/advanced/builtin-postgres"},{"title":"バージョンマイグレーションガイド","description":null,"icon":"arrows-turn-to-dots","href":"/docs/ja/advanced/migration-guide"},{"group":"Connectors","icon":"plug","pages":[{"title":"MySQL","description":null,"href":"/docs/ja/advanced/connectors/mysql"},{"title":"PostgreSQL","description":null,"href":"/docs/ja/advanced/connectors/postgresql"},{"title":"BigQuery","description":null,"href":"/docs/ja/advanced/connectors/bigquery"},{"title":"Snowflake","description":null,"href":"/docs/ja/advanced/connectors/snowflake"},{"title":"Redshift","description":null,"href":"/docs/ja/advanced/connectors/redshift"},{"title":"SQLServer","description":null,"href":"/docs/ja/advanced/connectors/mssql"},{"title":"Athena","description":null,"href":"/docs/ja/advanced/connectors/athena"},{"title":"Salesforce","description":null,"href":"/docs/ja/advanced/connectors/salesforce"},{"title":"HubSpot","description":null,"href":"/docs/ja/advanced/connectors/hubspot"},{"title":"Stripe","description":null,"href":"/docs/ja/advanced/connectors/stripe"},{"title":"Linear","description":null,"href":"/docs/ja/advanced/connectors/linear"},{"title":"Airtable","description":null,"href":"/docs/ja/advanced/connectors/airtable"},{"title":"Attio","description":null,"href":"/docs/ja/advanced/connectors/attio"},{"title":"Intercom","description":null,"href":"/docs/ja/advanced/connectors/intercom"},{"title":"Notion","description":null,"href":"/docs/ja/advanced/connectors/notion"},{"title":"Mailchimp","description":null,"href":"/docs/ja/advanced/connectors/mailchimp"},{"title":"Freee","description":null,"href":"/docs/ja/advanced/connectors/freee"}]}]}]},{"tab":"Reference","groups":[{"group":"フレームワーク","pages":[{"title":"morph_project.yml","description":null,"href":"/reference/ja/framework/morph-project"}]},{"group":"SQL","pages":[{"title":"config","description":null,"href":"/reference/ja/sql/config"},{"title":"load_data","description":null,"href":"/reference/ja/sql/load_data"}]},{"group":"Python","pages":[{"title":"MorphGlobalContext","description":null,"href":"/reference/ja/python/morph-global-context"},{"title":"@morph.func","description":null,"href":"/reference/ja/python/morph-func"},{"title":"@morph.load_data","description":null,"href":"/reference/ja/python/morph-load_data"},{"title":"@morph.variables","description":null,"href":"/reference/ja/python/morph-variables"}]},{"group":"morph_lib","pages":[{"group":"AI","pages":[{"title":"text_to_sql","description":null,"href":"/reference/ja/morph_lib/ai/text_to_sql"},{"title":"text_to_plotly","description":null,"href":"/reference/ja/morph_lib/ai/text_to_plotly"},{"title":"text_to_matplotlib","description":null,"href":"/reference/ja/morph_lib/ai/text_to_matplotlib"},{"title":"text_to_markdown","description":null,"href":"/reference/ja/morph_lib/ai/text_to_markdown"},{"title":"text_to_html","description":null,"href":"/reference/ja/morph_lib/ai/text_to_html"}]},{"group":"Database","pages":[{"title":"execute_sql","description":null,"href":"/reference/ja/morph_lib/database/execute_sql"},{"title":"insert_records","description":null,"href":"/reference/ja/morph_lib/database/insert_records"},{"title":"update_records","description":null,"href":"/reference/ja/morph_lib/database/update_records"},{"title":"insert_or_update_records","description":null,"href":"/reference/ja/morph_lib/database/insert_or_update_records"},{"title":"delete_records","description":null,"href":"/reference/ja/morph_lib/database/delete_records"}]},{"group":"API","pages":[{"title":"get_auth_token","description":null,"href":"/reference/ja/morph_lib/api/get_auth_token"}]},{"group":"Stream","pages":[{"title":"create_chunk","description":null,"href":"/reference/ja/morph_lib/stream/create_chunk"}]}]},{"group":"CLI","pages":[{"title":"--version","description":null,"href":"/reference/ja/cli-commands/version"},{"title":"run","description":null,"href":"/reference/ja/cli-commands/run"},{"title":"compile","description":null,"href":"/reference/ja/cli-commands/compile"},{"title":"clean","description":null,"href":"/reference/ja/cli-commands/clean"},{"title":"init","description":null,"href":"/reference/ja/cli-commands/init"},{"title":"new","description":null,"href":"/reference/ja/cli-commands/new"},{"title":"config","description":null,"href":"/reference/ja/cli-commands/config"},{"title":"deploy","description":null,"href":"/reference/ja/cli-commands/deploy"},{"title":"serve","description":null,"href":"/reference/ja/cli-commands/serve"},{"title":"context","description":null,"href":"/reference/ja/cli-commands/context"}]}]},{"tab":"Components","groups":[{"group":"AIコンポーネント","pages":[{"title":"\u003cChat /\u003e","description":null,"icon":"messages","href":"/data-application/ja/ai-component-chat"},{"title":"\u003cLLM /\u003e","description":null,"icon":"message-dots","href":"/data-application/ja/ai-component-llm"}]},{"group":"データコンポーネント","pages":[{"title":"\u003cDataTable /\u003e","description":null,"icon":"table-cells","href":"/data-application/ja/data-component-table"},{"title":"\u003cEmbed /\u003e","description":null,"icon":"code","href":"/data-application/ja/data-component-embed"},{"title":"\u003cMetrics /\u003e","description":null,"icon":"00","href":"/data-application/ja/data-component-metrics"}]},{"group":"入力コンポーネント","pages":[{"title":"\u003cInput /\u003e","description":null,"icon":"input-pipe","href":"/data-application/ja/input-component-input"},{"title":"\u003cDatePicker /\u003e","description":null,"icon":"calendar-day","href":"/data-application/ja/input-component-date-picker"},{"title":"\u003cDateRangePicker /\u003e","description":null,"icon":"calendar-week","href":"/data-application/ja/input-component-date-range-picker"},{"title":"\u003cSelect /\u003e","description":null,"icon":"caret-down","href":"/data-application/ja/input-component-select"}]},{"group":"レイアウトコンポーネント","pages":[{"title":"\u003cAccordion /\u003e","description":null,"href":"/data-application/ja/layout-component-accordion"},{"title":"\u003cCallout /\u003e","description":null,"href":"/data-application/ja/layout-component-callout"},{"title":"\u003cCard /\u003e","description":null,"href":"/data-application/ja/layout-component-card"},{"title":"\u003cGrid /\u003e","description":null,"href":"/data-application/ja/layout-component-grid"},{"title":"\u003cPanel /\u003e","description":null,"href":"/data-application/ja/layout-component-panel"}]},{"group":"状態管理とデータ","pages":[{"title":"状態管理 - defineState()","description":null,"href":"/data-application/ja/morph-data-state"},{"title":"バックエンドとの通信","description":null,"href":"/data-application/ja/advanced-morph-data-basic"},{"title":"データの取得 - loadData()","description":null,"href":"/data-application/ja/morph-data-load-data"},{"title":"関数の実行 - postData()","description":null,"href":"/data-application/ja/morph-data-post-data"}]},{"group":"MDX 詳解","pages":[{"title":"基本的な書き方","description":null,"href":"/data-application/ja/mdx/mdx-1-basic"},{"title":"スタイリング","description":null,"href":"/data-application/ja/mdx/mdx-2-styling"},{"title":"React, JavaScriptの使用","description":null,"href":"/data-application/ja/mdx/mdx-3-js"}]},{"group":"廃止された仕様","pages":[{"title":"getJson()","description":null,"href":"/data-application/ja/morph-data-getjson"},{"title":"変数を使う (variable関数)","description":null,"href":"/data-application/ja/morph-data-variables"}]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":[{"title":"Deploy","description":null,"href":"/troubleshooting/ja/cli/deployment-issues"}]},{"group":"サポート","pages":[{"title":"サポートに連絡する","description":null,"href":"/troubleshooting/ja/support/contact-support"}]}]}]}]},"pageMetadata":{"title":"Building the Backend","description":null,"icon":"brackets-curly","href":"/docs/en/develop/guides/building-backend"},"mintConfig":{"layout":"topnav","sidebar":{"items":"container"},"topbar":{"style":"default"},"search":{"location":"top"},"rounded":"default","codeBlock":{"mode":"dark"},"topbarCtaButton":{"name":"Website","url":"https://www.morphdb.io","style":"pill","arrow":true},"$schema":"https://mintlify.com/schema.json","name":"Docs","logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg_w.svg"},"favicon":"/favicon.svg","versions":["English","日本語"],"colors":{"primary":"#111827","light":"#d1d5db","dark":"#111827","anchors":{"from":"#0D9373","to":"#07C983"}},"topbarLinks":[{"url":"https://www.morphdb.io/blogs","name":"Blog","_id":"67b85860aea782d7ee592f42"}],"navigation":[{"group":"Getting Started","version":"English","pages":["docs/en/getting-started/why-morph","docs/en/getting-started/installation"]},{"group":"Quick Start","version":"English","pages":["docs/en/quickstart/building-app",{"group":"How to Deploy","icon":"link","pages":["docs/en/quickstart/dashboard-setup","docs/en/quickstart/deploy"]}]},{"group":"Framework","version":"English","pages":["docs/en/develop/guides/framework","docs/en/develop/guides/alias","docs/en/develop/guides/building-backend","docs/en/develop/guides/building-frontend","docs/en/develop/guides/environment-variables","docs/en/develop/guides/integration","docs/en/develop/guides/variables","docs/en/develop/guides/user-role","docs/en/develop/guides/updating-project"]},{"group":"Deployment","version":"English","pages":["docs/en/deploy/customize-dockerfile","docs/en/deploy/environment-variables","docs/en/deploy/public"]},{"group":"Tutorials: Data Analysis","version":"English","pages":["docs/en/develop/tutorials/pygwalker","docs/en/develop/tutorials/plotly"]},{"group":"Tutorials: LLM Apps","version":"English","pages":["docs/en/develop/tutorials/chatbot","docs/en/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","version":"English","pages":["docs/en/advanced/api_key","docs/en/advanced/builtin-postgres","docs/en/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/en/advanced/connectors/mysql","docs/en/advanced/connectors/postgresql","docs/en/advanced/connectors/bigquery","docs/en/advanced/connectors/snowflake","docs/en/advanced/connectors/redshift","docs/en/advanced/connectors/mssql","docs/en/advanced/connectors/athena","docs/en/advanced/connectors/salesforce","docs/en/advanced/connectors/hubspot","docs/en/advanced/connectors/stripe","docs/en/advanced/connectors/linear","docs/en/advanced/connectors/airtable","docs/en/advanced/connectors/attio","docs/en/advanced/connectors/intercom","docs/en/advanced/connectors/notion","docs/en/advanced/connectors/mailchimp","docs/en/advanced/connectors/freee"]}]},{"group":"Framework","version":"English","pages":["reference/en/framework/morph-project"]},{"group":"SQL","version":"English","pages":["reference/en/sql/config","reference/en/sql/load_data"]},{"group":"Python","version":"English","pages":["reference/en/python/morph-global-context","reference/en/python/morph-func","reference/en/python/morph-load_data","reference/en/python/morph-variables"]},{"group":"morph_lib","version":"English","pages":[{"group":"AI","pages":["reference/en/morph_lib/ai/text_to_sql","reference/en/morph_lib/ai/text_to_plotly","reference/en/morph_lib/ai/text_to_matplotlib","reference/en/morph_lib/ai/text_to_markdown","reference/en/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/en/morph_lib/database/execute_sql","reference/en/morph_lib/database/insert_records","reference/en/morph_lib/database/update_records","reference/en/morph_lib/database/insert_or_update_records","reference/en/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/en/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/en/morph_lib/stream/create_chunk"]}]},{"group":"CLI","version":"English","pages":["reference/en/cli-commands/version","reference/en/cli-commands/run","reference/en/cli-commands/compile","reference/en/cli-commands/clean","reference/en/cli-commands/init","reference/en/cli-commands/new","reference/en/cli-commands/config","reference/en/cli-commands/deploy","reference/en/cli-commands/serve","reference/en/cli-commands/context"]},{"group":"AI Components","version":"English","pages":["data-application/en/ai-component-chat","data-application/en/ai-component-llm"]},{"group":"Data Components","version":"English","pages":["data-application/en/data-component-table","data-application/en/data-component-embed","data-application/en/data-component-metrics"]},{"group":"Input Components","version":"English","pages":["data-application/en/input-component-input","data-application/en/input-component-date-picker","data-application/en/input-component-date-range-picker","data-application/en/input-component-select"]},{"group":"Layout Components","version":"English","pages":["data-application/en/layout-component-accordion","data-application/en/layout-component-callout","data-application/en/layout-component-card","data-application/en/layout-component-grid","data-application/en/layout-component-panel"]},{"group":"State \u0026 Data","version":"English","pages":["data-application/en/morph-data-state","data-application/en/advanced-morph-data-basic"]},{"group":"MDX Deep Dive","version":"English","pages":["data-application/en/mdx/mdx-1-basic","data-application/en/mdx/mdx-2-styling","data-application/en/mdx/mdx-3-js"]},{"group":"Deprecated","version":"English","pages":["data-application/en/morph-data-getjson","data-application/en/morph-data-variables"]},{"group":"Morph CLI","version":"English","pages":["troubleshooting/en/cli/deployment-issues"]},{"group":"Support","version":"English","pages":["troubleshooting/en/support/contact-support"]},{"group":"Getting Started","version":"日本語","pages":["docs/ja/getting-started/why-morph","docs/ja/getting-started/installation"]},{"group":"クイックスタート","version":"日本語","pages":["docs/ja/quickstart/building-app",{"group":"デプロイ手順","icon":"link","pages":["docs/ja/quickstart/dashboard-setup","docs/ja/quickstart/deploy"]}]},{"group":"フレームワーク","version":"日本語","pages":["docs/ja/develop/guides/framework","docs/ja/develop/guides/alias","docs/ja/develop/guides/building-backend","docs/ja/develop/guides/building-frontend","docs/ja/develop/guides/environment-variables","docs/ja/develop/guides/integration","docs/ja/develop/guides/variables","docs/ja/develop/guides/user-role","docs/ja/develop/guides/updating-project"]},{"group":"デプロイ","version":"日本語","pages":["docs/ja/deploy/customize-dockerfile","docs/ja/deploy/environment-variables","docs/ja/deploy/public"]},{"group":"チュートリアル: データ分析","version":"日本語","pages":["docs/ja/develop/tutorials/pygwalker","docs/ja/develop/tutorials/plotly"]},{"group":"チュートリアル: AIアプリ","version":"日本語","pages":["docs/ja/develop/tutorials/chatbot","docs/ja/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","version":"日本語","pages":["docs/ja/advanced/api_key","docs/ja/advanced/builtin-postgres","docs/ja/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/ja/advanced/connectors/mysql","docs/ja/advanced/connectors/postgresql","docs/ja/advanced/connectors/bigquery","docs/ja/advanced/connectors/snowflake","docs/ja/advanced/connectors/redshift","docs/ja/advanced/connectors/mssql","docs/ja/advanced/connectors/athena","docs/ja/advanced/connectors/salesforce","docs/ja/advanced/connectors/hubspot","docs/ja/advanced/connectors/stripe","docs/ja/advanced/connectors/linear","docs/ja/advanced/connectors/airtable","docs/ja/advanced/connectors/attio","docs/ja/advanced/connectors/intercom","docs/ja/advanced/connectors/notion","docs/ja/advanced/connectors/mailchimp","docs/ja/advanced/connectors/freee"]}]},{"group":"フレームワーク","version":"日本語","pages":["reference/ja/framework/morph-project"]},{"group":"SQL","version":"日本語","pages":["reference/ja/sql/config","reference/ja/sql/load_data"]},{"group":"Python","version":"日本語","pages":["reference/ja/python/morph-global-context","reference/ja/python/morph-func","reference/ja/python/morph-load_data","reference/ja/python/morph-variables"]},{"group":"morph_lib","version":"日本語","pages":[{"group":"AI","pages":["reference/ja/morph_lib/ai/text_to_sql","reference/ja/morph_lib/ai/text_to_plotly","reference/ja/morph_lib/ai/text_to_matplotlib","reference/ja/morph_lib/ai/text_to_markdown","reference/ja/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/ja/morph_lib/database/execute_sql","reference/ja/morph_lib/database/insert_records","reference/ja/morph_lib/database/update_records","reference/ja/morph_lib/database/insert_or_update_records","reference/ja/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/ja/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/ja/morph_lib/stream/create_chunk"]}]},{"group":"CLI","version":"日本語","pages":["reference/ja/cli-commands/version","reference/ja/cli-commands/run","reference/ja/cli-commands/compile","reference/ja/cli-commands/clean","reference/ja/cli-commands/init","reference/ja/cli-commands/new","reference/ja/cli-commands/config","reference/ja/cli-commands/deploy","reference/ja/cli-commands/serve","reference/ja/cli-commands/context"]},{"group":"AIコンポーネント","version":"日本語","pages":["data-application/ja/ai-component-chat","data-application/ja/ai-component-llm"]},{"group":"データコンポーネント","version":"日本語","pages":["data-application/ja/data-component-table","data-application/ja/data-component-embed","data-application/ja/data-component-metrics"]},{"group":"入力コンポーネント","version":"日本語","pages":["data-application/ja/input-component-input","data-application/ja/input-component-date-picker","data-application/ja/input-component-date-range-picker","data-application/ja/input-component-select"]},{"group":"レイアウトコンポーネント","version":"日本語","pages":["data-application/ja/layout-component-accordion","data-application/ja/layout-component-callout","data-application/ja/layout-component-card","data-application/ja/layout-component-grid","data-application/ja/layout-component-panel"]},{"group":"状態管理とデータ","version":"日本語","pages":["data-application/ja/morph-data-state","data-application/ja/advanced-morph-data-basic","data-application/ja/morph-data-load-data","data-application/ja/morph-data-post-data"]},{"group":"MDX 詳解","version":"日本語","pages":["data-application/ja/mdx/mdx-1-basic","data-application/ja/mdx/mdx-2-styling","data-application/ja/mdx/mdx-3-js"]},{"group":"廃止された仕様","version":"日本語","pages":["data-application/ja/morph-data-getjson","data-application/ja/morph-data-variables"]},{"group":"Morph CLI","version":"日本語","pages":["troubleshooting/ja/cli/deployment-issues"]},{"group":"サポート","version":"日本語","pages":["troubleshooting/ja/support/contact-support"]}],"anchors":[{"name":"Changelog","url":"https://www.morph-data.io/changelog","icon":"rss","_id":"67b85860aea782d7ee592f3f"},{"name":"Connectors","url":"https://www.morph-data.io/tools/connectors/database","icon":"plug","_id":"67b85860aea782d7ee592f40"},{"name":"Code Snippets","url":"https://www.morph-data.io/tools/snippets/undefined","icon":"brackets-curly","_id":"67b85860aea782d7ee592f41"}],"tabs":[{"name":"Guides","url":"docs","_id":"67b85860aea782d7ee592f39"},{"name":"Reference","url":"reference","_id":"67b85860aea782d7ee592f3a"},{"name":"Components","url":"data-application","_id":"67b85860aea782d7ee592f3b"},{"name":"Integrations","url":"integrations","_id":"67b85860aea782d7ee592f3c"},{"name":"Sample Data Apps","url":"sample-data-app","_id":"67b85860aea782d7ee592f3d"},{"name":"Troubleshooting","url":"troubleshooting","_id":"67b85860aea782d7ee592f3e"}],"footerSocials":{"x":"https://x.com/morphdbHQ","github":"https://github.com/useMorph","linkedin":"https://www.linkedin.com/company/morphdbhq"}},"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Docs","colors":{"primary":"#111827","light":"#d1d5db","dark":"#111827"},"favicon":"/favicon.svg","navigation":{"versions":[{"version":"English","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/en/getting-started/why-morph","docs/en/getting-started/installation"]},{"group":"Quick Start","pages":["docs/en/quickstart/building-app",{"group":"How to Deploy","icon":"link","pages":["docs/en/quickstart/dashboard-setup","docs/en/quickstart/deploy"]}]},{"group":"Framework","pages":["docs/en/develop/guides/framework","docs/en/develop/guides/alias","docs/en/develop/guides/building-backend","docs/en/develop/guides/building-frontend","docs/en/develop/guides/environment-variables","docs/en/develop/guides/integration","docs/en/develop/guides/variables","docs/en/develop/guides/user-role","docs/en/develop/guides/updating-project"]},{"group":"Deployment","pages":["docs/en/deploy/customize-dockerfile","docs/en/deploy/environment-variables","docs/en/deploy/public"]},{"group":"Tutorials: Data Analysis","pages":["docs/en/develop/tutorials/pygwalker","docs/en/develop/tutorials/plotly"]},{"group":"Tutorials: LLM Apps","pages":["docs/en/develop/tutorials/chatbot","docs/en/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/en/advanced/api_key","docs/en/advanced/builtin-postgres","docs/en/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/en/advanced/connectors/mysql","docs/en/advanced/connectors/postgresql","docs/en/advanced/connectors/bigquery","docs/en/advanced/connectors/snowflake","docs/en/advanced/connectors/redshift","docs/en/advanced/connectors/mssql","docs/en/advanced/connectors/athena","docs/en/advanced/connectors/salesforce","docs/en/advanced/connectors/hubspot","docs/en/advanced/connectors/stripe","docs/en/advanced/connectors/linear","docs/en/advanced/connectors/airtable","docs/en/advanced/connectors/attio","docs/en/advanced/connectors/intercom","docs/en/advanced/connectors/notion","docs/en/advanced/connectors/mailchimp","docs/en/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"Framework","pages":["reference/en/framework/morph-project"]},{"group":"SQL","pages":["reference/en/sql/config","reference/en/sql/load_data"]},{"group":"Python","pages":["reference/en/python/morph-global-context","reference/en/python/morph-func","reference/en/python/morph-load_data","reference/en/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/en/morph_lib/ai/text_to_sql","reference/en/morph_lib/ai/text_to_plotly","reference/en/morph_lib/ai/text_to_matplotlib","reference/en/morph_lib/ai/text_to_markdown","reference/en/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/en/morph_lib/database/execute_sql","reference/en/morph_lib/database/insert_records","reference/en/morph_lib/database/update_records","reference/en/morph_lib/database/insert_or_update_records","reference/en/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/en/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/en/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/en/cli-commands/version","reference/en/cli-commands/run","reference/en/cli-commands/compile","reference/en/cli-commands/clean","reference/en/cli-commands/init","reference/en/cli-commands/new","reference/en/cli-commands/config","reference/en/cli-commands/deploy","reference/en/cli-commands/serve","reference/en/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AI Components","pages":["data-application/en/ai-component-chat","data-application/en/ai-component-llm"]},{"group":"Data Components","pages":["data-application/en/data-component-table","data-application/en/data-component-embed","data-application/en/data-component-metrics"]},{"group":"Input Components","pages":["data-application/en/input-component-input","data-application/en/input-component-date-picker","data-application/en/input-component-date-range-picker","data-application/en/input-component-select"]},{"group":"Layout Components","pages":["data-application/en/layout-component-accordion","data-application/en/layout-component-callout","data-application/en/layout-component-card","data-application/en/layout-component-grid","data-application/en/layout-component-panel"]},{"group":"State \u0026 Data","pages":["data-application/en/morph-data-state","data-application/en/advanced-morph-data-basic"]},{"group":"MDX Deep Dive","pages":["data-application/en/mdx/mdx-1-basic","data-application/en/mdx/mdx-2-styling","data-application/en/mdx/mdx-3-js"]},{"group":"Deprecated","pages":["data-application/en/morph-data-getjson","data-application/en/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/en/cli/deployment-issues"]},{"group":"Support","pages":["troubleshooting/en/support/contact-support"]}]}]},{"version":"日本語","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/ja/getting-started/why-morph","docs/ja/getting-started/installation"]},{"group":"クイックスタート","pages":["docs/ja/quickstart/building-app",{"group":"デプロイ手順","icon":"link","pages":["docs/ja/quickstart/dashboard-setup","docs/ja/quickstart/deploy"]}]},{"group":"フレームワーク","pages":["docs/ja/develop/guides/framework","docs/ja/develop/guides/alias","docs/ja/develop/guides/building-backend","docs/ja/develop/guides/building-frontend","docs/ja/develop/guides/environment-variables","docs/ja/develop/guides/integration","docs/ja/develop/guides/variables","docs/ja/develop/guides/user-role","docs/ja/develop/guides/updating-project"]},{"group":"デプロイ","pages":["docs/ja/deploy/customize-dockerfile","docs/ja/deploy/environment-variables","docs/ja/deploy/public"]},{"group":"チュートリアル: データ分析","pages":["docs/ja/develop/tutorials/pygwalker","docs/ja/develop/tutorials/plotly"]},{"group":"チュートリアル: AIアプリ","pages":["docs/ja/develop/tutorials/chatbot","docs/ja/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/ja/advanced/api_key","docs/ja/advanced/builtin-postgres","docs/ja/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/ja/advanced/connectors/mysql","docs/ja/advanced/connectors/postgresql","docs/ja/advanced/connectors/bigquery","docs/ja/advanced/connectors/snowflake","docs/ja/advanced/connectors/redshift","docs/ja/advanced/connectors/mssql","docs/ja/advanced/connectors/athena","docs/ja/advanced/connectors/salesforce","docs/ja/advanced/connectors/hubspot","docs/ja/advanced/connectors/stripe","docs/ja/advanced/connectors/linear","docs/ja/advanced/connectors/airtable","docs/ja/advanced/connectors/attio","docs/ja/advanced/connectors/intercom","docs/ja/advanced/connectors/notion","docs/ja/advanced/connectors/mailchimp","docs/ja/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"フレームワーク","pages":["reference/ja/framework/morph-project"]},{"group":"SQL","pages":["reference/ja/sql/config","reference/ja/sql/load_data"]},{"group":"Python","pages":["reference/ja/python/morph-global-context","reference/ja/python/morph-func","reference/ja/python/morph-load_data","reference/ja/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/ja/morph_lib/ai/text_to_sql","reference/ja/morph_lib/ai/text_to_plotly","reference/ja/morph_lib/ai/text_to_matplotlib","reference/ja/morph_lib/ai/text_to_markdown","reference/ja/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/ja/morph_lib/database/execute_sql","reference/ja/morph_lib/database/insert_records","reference/ja/morph_lib/database/update_records","reference/ja/morph_lib/database/insert_or_update_records","reference/ja/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/ja/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/ja/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/ja/cli-commands/version","reference/ja/cli-commands/run","reference/ja/cli-commands/compile","reference/ja/cli-commands/clean","reference/ja/cli-commands/init","reference/ja/cli-commands/new","reference/ja/cli-commands/config","reference/ja/cli-commands/deploy","reference/ja/cli-commands/serve","reference/ja/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AIコンポーネント","pages":["data-application/ja/ai-component-chat","data-application/ja/ai-component-llm"]},{"group":"データコンポーネント","pages":["data-application/ja/data-component-table","data-application/ja/data-component-embed","data-application/ja/data-component-metrics"]},{"group":"入力コンポーネント","pages":["data-application/ja/input-component-input","data-application/ja/input-component-date-picker","data-application/ja/input-component-date-range-picker","data-application/ja/input-component-select"]},{"group":"レイアウトコンポーネント","pages":["data-application/ja/layout-component-accordion","data-application/ja/layout-component-callout","data-application/ja/layout-component-card","data-application/ja/layout-component-grid","data-application/ja/layout-component-panel"]},{"group":"状態管理とデータ","pages":["data-application/ja/morph-data-state","data-application/ja/advanced-morph-data-basic","data-application/ja/morph-data-load-data","data-application/ja/morph-data-post-data"]},{"group":"MDX 詳解","pages":["data-application/ja/mdx/mdx-1-basic","data-application/ja/mdx/mdx-2-styling","data-application/ja/mdx/mdx-3-js"]},{"group":"廃止された仕様","pages":["data-application/ja/morph-data-getjson","data-application/ja/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/ja/cli/deployment-issues"]},{"group":"サポート","pages":["troubleshooting/ja/support/contact-support"]}]}]}],"global":{"anchors":[{"anchor":"Changelog","href":"https://www.morph-data.io/changelog","icon":"rss"},{"anchor":"Connectors","href":"https://www.morph-data.io/tools/connectors/database","icon":"plug"},{"anchor":"Code Snippets","href":"https://www.morph-data.io/tools/snippets/undefined","icon":"brackets-curly"}]}},"styling":{"codeblocks":"dark"},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg_w.svg"},"navbar":{"links":[{"label":"Blog","href":"https://www.morphdb.io/blogs"}],"primary":{"type":"button","label":"Website","href":"https://www.morphdb.io"}},"footer":{"socials":{"x":"https://x.com/morphdbHQ","github":"https://github.com/useMorph","linkedin":"https://www.linkedin.com/company/morphdbhq"}}},"apiReferenceData":{}},"favicons":{"icons":[{"rel":"apple-touch-icon","sizes":"180x180","href":"https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/apple-touch-icon.png?v=3","type":"image/png"},{"rel":"icon","sizes":"32x32","href":"https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon-32x32.png?v=3","type":"image/png"},{"rel":"icon","sizes":"16x16","href":"https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon-16x16.png?v=3","type":"image/png"},{"rel":"shortcut icon","href":"https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/favicon.ico?v=3","type":"image/x-icon"}],"browserconfig":"https://mintlify.s3-us-west-1.amazonaws.com/queue-4c50ebb3/_generated/favicon/browserconfig.xml?v=3"},"subdomain":"docs.morph-data.io","actualSubdomain":"queue-4c50ebb3","internalAnalyticsWriteKey":"phc_TXdpocbGVeZVm5VJmAsHTMrCofBQu3e0kN8HGMNGTVW","trieve":{"datasetId":"677378ce-aec4-4e4e-b2d7-054bbf68d662","chatEnabled":true},"shouldIndex":true,"org":{"createdAt":"2024-09-30T05:26:19.425Z"},"cssFiles":[],"jsFiles":[],"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n pre: \"pre\",\n span: \"span\",\n ..._provideComponents(),\n ...props.components\n }, {CodeBlock, CodeGroup, Heading, Step, Steps} = _components;\n if (!CodeBlock) _missingMdxReference(\"CodeBlock\", true);\n if (!CodeGroup) _missingMdxReference(\"CodeGroup\", true);\n if (!Heading) _missingMdxReference(\"Heading\", true);\n if (!Step) _missingMdxReference(\"Step\", true);\n if (!Steps) _missingMdxReference(\"Steps\", true);\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"In Morph, you build the backend using Python. You can freely add Python packages to build data processing and AI workflows.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"development-flow\",\n children: \"Development Flow\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The steps for backend development in Morph are as follows.\"\n }), \"\\n\", _jsxs(Steps, {\n children: [_jsx(Step, {\n title: \"Add Python Packages\",\n children: _jsxs(_components.p, {\n children: [\"Since Morph follows the common Python project format, you can freely add Python packages. Add the necessary packages to \", _jsx(_components.code, {\n children: \"requirements.txt\"\n }), \" or \", _jsx(_components.code, {\n children: \"poetry.toml\"\n }), \".\"]\n })\n }), _jsxs(Step, {\n title: \"Define Python Functions and Add Morph Decorators\",\n children: [_jsx(_components.p, {\n children: \"By adding Morph decorators to regular Python function definitions, you can set aliases. This allows you to reference the results of these functions from other Python, SQL, or Markdown files.\"\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" pandas \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"as\"\n }), \" pd\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsx(_components.span, {\n className: \"token comment\",\n children: \"# Add Morph decorators\"\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" df\"]\n }), \"\\n\"]\n })\n })\n })]\n }), _jsxs(Step, {\n title: \"Test Python Functions\",\n children: [_jsxs(_components.p, {\n children: [\"Use the \", _jsx(_components.code, {\n children: \"morph run\"\n }), \" command to execute functions for unit testing.\"]\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"morph run example_dataframe\"\n }), \"\\n\"]\n })\n })\n })]\n }), _jsxs(Step, {\n title: \"Start the Development Server\",\n children: [_jsx(_components.p, {\n children: \"By starting the development server, you can check the web application locally.\"\n }), _jsx(CodeBlock, {\n filename: \"\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-bash\",\n children: _jsxs(_components.code, {\n className: \"language-bash\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: \"morph serve\"\n }), \"\\n\"]\n })\n })\n })]\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"2\",\n id: \"return-values-of-python-functions\",\n children: \"Return Values of Python Functions\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Python functions defined in a Morph project should have the following return values.\"\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"dataframe\",\n children: \"DataFrame\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"A DataFrame object representing the result of data processing. SQL execution results are also handled as DataFrames. Use this when you want to use the result of data processing in other Python files or display it in Markdown files.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/data-component-table\",\n children: _jsx(_components.code, {\n children: \"\u003cDataFrame\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"df.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" df\"]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"data_table.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" Display DataFrame as DataTable\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"DataFrame\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"loadData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"example_dataframe\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{500}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"html-string\",\n children: \"HTML String\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"An HTML string for rendering the results of data visualization. Use this when you want to display graphs drawn using visualization libraries like Plotly or Bokeh.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/data-component-embed\",\n children: _jsx(_components.code, {\n children: \"\u003cEmbed\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"plotly.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" plotly\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"express \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"as\"\n }), \" px\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph_lib\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"types \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" HtmlResponse\"]\n }), \"\\n\", \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"name\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_dataframe\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"load_data\"]\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"example_dataframe\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" df \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"data\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"example_data\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" fig \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" px\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"bar\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"df\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n }), \" x\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"'date'\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \",\"\n }), \" y\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"'amount'\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"return\"\n }), \" HtmlResponse\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"fig\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"to_html\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"embed.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" Display Plotly Chart\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"Embed\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"loadData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"example_plotly\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{500}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n }), \"\\n\", _jsx(Heading, {\n level: \"3\",\n id: \"streaming\",\n children: \"Streaming\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use this when using streaming APIs such as LLM API. Execute value streaming using the \", _jsx(_components.code, {\n children: \"stream_chat\"\n }), \" function.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The corresponding Markdown component is \", _jsx(_components.a, {\n href: \"/data-application/ja/ai-component-chat\",\n children: _jsx(_components.code, {\n children: \"\u003cChat\u003e\"\n })\n }), \".\"]\n }), \"\\n\", _jsxs(CodeGroup, {\n children: [_jsx(CodeBlock, {\n filename: \"chat.py\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-python\",\n children: _jsxs(_components.code, {\n className: \"language-python\",\n children: [_jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" morph\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" MorphGlobalContext\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" morph_lib\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"stream \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" stream_chat\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" langchain_openai \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" ChatOpenAI\"]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"from\"\n }), \" langchain_core\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"messages \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"import\"\n }), \" HumanMessage\"]\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token decorator annotation punctuation\",\n children: [\"@morph\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"func\"]\n })\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [_jsx(_components.span, {\n className: \"token keyword\",\n children: \"def\"\n }), \" \", _jsx(_components.span, {\n className: \"token function\",\n children: \"langchain_chat\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n }), \" MorphGlobalContext\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" llm \", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), \" ChatOpenAI\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"model\", _jsx(_components.span, {\n className: \"token operator\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"gpt-4o\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" messages are \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), \"HumanMessage\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"context\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), _jsx(_components.span, {\n className: \"token builtin\",\n children: \"vars\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"[\"\n }), _jsx(_components.span, {\n className: \"token string\",\n children: \"\\\"prompt\\\"\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"]\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"for\"\n }), \" token \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"in\"\n }), \" llm\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"stream\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"messages\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \":\"\n })]\n }), \"\\n\", _jsxs(_components.span, {\n className: \"\",\n children: [\" \", _jsx(_components.span, {\n className: \"token keyword\",\n children: \"yield\"\n }), \" stream_chat\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"(\"\n }), \"token\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \".\"\n }), \"content\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \")\"\n })]\n }), \"\\n\"]\n })\n })\n }), _jsx(CodeBlock, {\n filename: \"chat.mdx\",\n expandable: \"false\",\n children: _jsx(_components.pre, {\n className: \"language-md\",\n children: _jsxs(_components.code, {\n className: \"language-md\",\n children: [_jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token title important\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"#\"\n }), \" 🦜🔗 Langchain Chat\"]\n })\n }), \"\\n\", \"\\n\", _jsx(_components.span, {\n className: \"\",\n children: _jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsxs(_components.span, {\n className: \"token tag\",\n children: [_jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\u003c\"\n }), \"Chat\"]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"postData\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n }), \"langchain_chat\", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"\\\"\"\n })]\n }), \" \", _jsx(_components.span, {\n className: \"token attr-name\",\n children: \"height\"\n }), _jsxs(_components.span, {\n className: \"token attr-value\",\n children: [_jsx(_components.span, {\n className: \"token punctuation attr-equals\",\n children: \"=\"\n }), \"{300}\"]\n }), \" \", _jsx(_components.span, {\n className: \"token punctuation\",\n children: \"/\u003e\"\n })]\n })\n }), \"\\n\"]\n })\n })\n })]\n })]\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};\nfunction _missingMdxReference(id, component) {\n throw new Error(\"Expected \" + (component ? \"component\" : \"object\") + \" `\" + id + \"` to be defined: you likely forgot to import, pass, or provide it.\");\n}\n","frontmatter":{},"scope":{"config":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Docs","colors":{"primary":"#111827","light":"#d1d5db","dark":"#111827"},"favicon":"/favicon.svg","navigation":{"versions":[{"version":"English","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/en/getting-started/why-morph","docs/en/getting-started/installation"]},{"group":"Quick Start","pages":["docs/en/quickstart/building-app",{"group":"How to Deploy","icon":"link","pages":["docs/en/quickstart/dashboard-setup","docs/en/quickstart/deploy"]}]},{"group":"Framework","pages":["docs/en/develop/guides/framework","docs/en/develop/guides/alias","docs/en/develop/guides/building-backend","docs/en/develop/guides/building-frontend","docs/en/develop/guides/environment-variables","docs/en/develop/guides/integration","docs/en/develop/guides/variables","docs/en/develop/guides/user-role","docs/en/develop/guides/updating-project"]},{"group":"Deployment","pages":["docs/en/deploy/customize-dockerfile","docs/en/deploy/environment-variables","docs/en/deploy/public"]},{"group":"Tutorials: Data Analysis","pages":["docs/en/develop/tutorials/pygwalker","docs/en/develop/tutorials/plotly"]},{"group":"Tutorials: LLM Apps","pages":["docs/en/develop/tutorials/chatbot","docs/en/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/en/advanced/api_key","docs/en/advanced/builtin-postgres","docs/en/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/en/advanced/connectors/mysql","docs/en/advanced/connectors/postgresql","docs/en/advanced/connectors/bigquery","docs/en/advanced/connectors/snowflake","docs/en/advanced/connectors/redshift","docs/en/advanced/connectors/mssql","docs/en/advanced/connectors/athena","docs/en/advanced/connectors/salesforce","docs/en/advanced/connectors/hubspot","docs/en/advanced/connectors/stripe","docs/en/advanced/connectors/linear","docs/en/advanced/connectors/airtable","docs/en/advanced/connectors/attio","docs/en/advanced/connectors/intercom","docs/en/advanced/connectors/notion","docs/en/advanced/connectors/mailchimp","docs/en/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"Framework","pages":["reference/en/framework/morph-project"]},{"group":"SQL","pages":["reference/en/sql/config","reference/en/sql/load_data"]},{"group":"Python","pages":["reference/en/python/morph-global-context","reference/en/python/morph-func","reference/en/python/morph-load_data","reference/en/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/en/morph_lib/ai/text_to_sql","reference/en/morph_lib/ai/text_to_plotly","reference/en/morph_lib/ai/text_to_matplotlib","reference/en/morph_lib/ai/text_to_markdown","reference/en/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/en/morph_lib/database/execute_sql","reference/en/morph_lib/database/insert_records","reference/en/morph_lib/database/update_records","reference/en/morph_lib/database/insert_or_update_records","reference/en/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/en/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/en/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/en/cli-commands/version","reference/en/cli-commands/run","reference/en/cli-commands/compile","reference/en/cli-commands/clean","reference/en/cli-commands/init","reference/en/cli-commands/new","reference/en/cli-commands/config","reference/en/cli-commands/deploy","reference/en/cli-commands/serve","reference/en/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AI Components","pages":["data-application/en/ai-component-chat","data-application/en/ai-component-llm"]},{"group":"Data Components","pages":["data-application/en/data-component-table","data-application/en/data-component-embed","data-application/en/data-component-metrics"]},{"group":"Input Components","pages":["data-application/en/input-component-input","data-application/en/input-component-date-picker","data-application/en/input-component-date-range-picker","data-application/en/input-component-select"]},{"group":"Layout Components","pages":["data-application/en/layout-component-accordion","data-application/en/layout-component-callout","data-application/en/layout-component-card","data-application/en/layout-component-grid","data-application/en/layout-component-panel"]},{"group":"State \u0026 Data","pages":["data-application/en/morph-data-state","data-application/en/advanced-morph-data-basic"]},{"group":"MDX Deep Dive","pages":["data-application/en/mdx/mdx-1-basic","data-application/en/mdx/mdx-2-styling","data-application/en/mdx/mdx-3-js"]},{"group":"Deprecated","pages":["data-application/en/morph-data-getjson","data-application/en/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/en/cli/deployment-issues"]},{"group":"Support","pages":["troubleshooting/en/support/contact-support"]}]}]},{"version":"日本語","tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":["docs/ja/getting-started/why-morph","docs/ja/getting-started/installation"]},{"group":"クイックスタート","pages":["docs/ja/quickstart/building-app",{"group":"デプロイ手順","icon":"link","pages":["docs/ja/quickstart/dashboard-setup","docs/ja/quickstart/deploy"]}]},{"group":"フレームワーク","pages":["docs/ja/develop/guides/framework","docs/ja/develop/guides/alias","docs/ja/develop/guides/building-backend","docs/ja/develop/guides/building-frontend","docs/ja/develop/guides/environment-variables","docs/ja/develop/guides/integration","docs/ja/develop/guides/variables","docs/ja/develop/guides/user-role","docs/ja/develop/guides/updating-project"]},{"group":"デプロイ","pages":["docs/ja/deploy/customize-dockerfile","docs/ja/deploy/environment-variables","docs/ja/deploy/public"]},{"group":"チュートリアル: データ分析","pages":["docs/ja/develop/tutorials/pygwalker","docs/ja/develop/tutorials/plotly"]},{"group":"チュートリアル: AIアプリ","pages":["docs/ja/develop/tutorials/chatbot","docs/ja/develop/tutorials/chat_sidebyside"]},{"group":"Advanced","pages":["docs/ja/advanced/api_key","docs/ja/advanced/builtin-postgres","docs/ja/advanced/migration-guide",{"group":"Connectors","icon":"plug","pages":["docs/ja/advanced/connectors/mysql","docs/ja/advanced/connectors/postgresql","docs/ja/advanced/connectors/bigquery","docs/ja/advanced/connectors/snowflake","docs/ja/advanced/connectors/redshift","docs/ja/advanced/connectors/mssql","docs/ja/advanced/connectors/athena","docs/ja/advanced/connectors/salesforce","docs/ja/advanced/connectors/hubspot","docs/ja/advanced/connectors/stripe","docs/ja/advanced/connectors/linear","docs/ja/advanced/connectors/airtable","docs/ja/advanced/connectors/attio","docs/ja/advanced/connectors/intercom","docs/ja/advanced/connectors/notion","docs/ja/advanced/connectors/mailchimp","docs/ja/advanced/connectors/freee"]}]}]},{"tab":"Reference","groups":[{"group":"フレームワーク","pages":["reference/ja/framework/morph-project"]},{"group":"SQL","pages":["reference/ja/sql/config","reference/ja/sql/load_data"]},{"group":"Python","pages":["reference/ja/python/morph-global-context","reference/ja/python/morph-func","reference/ja/python/morph-load_data","reference/ja/python/morph-variables"]},{"group":"morph_lib","pages":[{"group":"AI","pages":["reference/ja/morph_lib/ai/text_to_sql","reference/ja/morph_lib/ai/text_to_plotly","reference/ja/morph_lib/ai/text_to_matplotlib","reference/ja/morph_lib/ai/text_to_markdown","reference/ja/morph_lib/ai/text_to_html"]},{"group":"Database","pages":["reference/ja/morph_lib/database/execute_sql","reference/ja/morph_lib/database/insert_records","reference/ja/morph_lib/database/update_records","reference/ja/morph_lib/database/insert_or_update_records","reference/ja/morph_lib/database/delete_records"]},{"group":"API","pages":["reference/ja/morph_lib/api/get_auth_token"]},{"group":"Stream","pages":["reference/ja/morph_lib/stream/create_chunk"]}]},{"group":"CLI","pages":["reference/ja/cli-commands/version","reference/ja/cli-commands/run","reference/ja/cli-commands/compile","reference/ja/cli-commands/clean","reference/ja/cli-commands/init","reference/ja/cli-commands/new","reference/ja/cli-commands/config","reference/ja/cli-commands/deploy","reference/ja/cli-commands/serve","reference/ja/cli-commands/context"]}]},{"tab":"Components","groups":[{"group":"AIコンポーネント","pages":["data-application/ja/ai-component-chat","data-application/ja/ai-component-llm"]},{"group":"データコンポーネント","pages":["data-application/ja/data-component-table","data-application/ja/data-component-embed","data-application/ja/data-component-metrics"]},{"group":"入力コンポーネント","pages":["data-application/ja/input-component-input","data-application/ja/input-component-date-picker","data-application/ja/input-component-date-range-picker","data-application/ja/input-component-select"]},{"group":"レイアウトコンポーネント","pages":["data-application/ja/layout-component-accordion","data-application/ja/layout-component-callout","data-application/ja/layout-component-card","data-application/ja/layout-component-grid","data-application/ja/layout-component-panel"]},{"group":"状態管理とデータ","pages":["data-application/ja/morph-data-state","data-application/ja/advanced-morph-data-basic","data-application/ja/morph-data-load-data","data-application/ja/morph-data-post-data"]},{"group":"MDX 詳解","pages":["data-application/ja/mdx/mdx-1-basic","data-application/ja/mdx/mdx-2-styling","data-application/ja/mdx/mdx-3-js"]},{"group":"廃止された仕様","pages":["data-application/ja/morph-data-getjson","data-application/ja/morph-data-variables"]}]},{"tab":"Troubleshooting","groups":[{"group":"Morph CLI","pages":["troubleshooting/ja/cli/deployment-issues"]},{"group":"サポート","pages":["troubleshooting/ja/support/contact-support"]}]}]}],"global":{"anchors":[{"anchor":"Changelog","href":"https://www.morph-data.io/changelog","icon":"rss"},{"anchor":"Connectors","href":"https://www.morph-data.io/tools/connectors/database","icon":"plug"},{"anchor":"Code Snippets","href":"https://www.morph-data.io/tools/snippets/undefined","icon":"brackets-curly"}]}},"styling":{"codeblocks":"dark"},"logo":{"light":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg.svg","dark":"https://mintlify.s3.us-west-1.amazonaws.com/queue-4c50ebb3/assets/images/morph_logo_svg_w.svg"},"navbar":{"links":[{"label":"Blog","href":"https://www.morphdb.io/blogs"}],"primary":{"type":"button","label":"Website","href":"https://www.morphdb.io"}},"footer":{"socials":{"x":"https://x.com/morphdbHQ","github":"https://github.com/useMorph","linkedin":"https://www.linkedin.com/company/morphdbhq"}}},"pageMetadata":{"title":"Building the Backend","description":null,"icon":"brackets-curly","href":"/docs/en/develop/guides/building-backend"}}},"gitSource":{"type":"github","owner":"morph-data","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true},"banner":null},"__N_SSG":true},"page":"/_sites/[subdomain]/[[...slug]]","query":{"subdomain":"docs.morph-data.io","slug":["docs","en","develop","guides","building-backend"]},"buildId":"d0mbdyCKtjyIf96y8FGGS","isFallback":false,"isExperimentalCompile":false,"gsp":true,"scriptLoader":[]}</script></html></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10