import { themes as prismThemes } from 'prism-react-renderer'; import type { Config } from '@docusaurus/types'; import type * as Preset from '@docusaurus/preset-classic'; import { postProcessSidebar, apiReferencePrefix } from './docusaurusConfigUtils'; import tailwindPlugin from './src/plugins/tailwind-config.cjs'; // ensure baseUrl always ends in `/` const baseUrl = (process.env.DOCS_BASE_URL ?? '/docs/latest/').replace(/\/?$/, '/'); const config: Config = { title: 'MLflow AI Platform', tagline: 'MLflow Documentation', favicon: 'images/favicon.ico', // Docusaurus sets the canonical URL to the preferred one, so the pages are consolidated and double search results are prevented. trailingSlash: true, // Versioned builds (e.g. /docs/2.x.x/) are noindexed so only /docs/latest/ appears in search results. noIndex: process.env.DOCS_NO_INDEX === 'true', // Set the production url of your site here url: 'https://mlflow.org', // when building for production, check this environment // variable to determine the correct base URL baseUrl: baseUrl, // GitHub pages deployment config. // If you aren't using GitHub pages, you don't need these. organizationName: 'mlflow', // Usually your GitHub org/user name. projectName: 'mlflow', // Usually your repo name. staticDirectories: ['static'], // change to throw when migration is done onBrokenLinks: 'throw', onBrokenAnchors: 'throw', onDuplicateRoutes: 'throw', // Fail build on duplicate redirects future: { v4: true, // opt-in for Docusaurus v4 planned changes faster: true, // turns Docusaurus Faster on globally }, // Even if you don't use internationalization, you can use this field to set // useful metadata like html lang. For example, if your site is Chinese, you // may want to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', locales: ['en'], }, // NB: docusaurus does not automatically prepend the // baseURL to relative paths in script srcs. please // make sure to append this yourself. scripts: [ { // runllm src: baseUrl + 'js/runllm.js', defer: true, }, ], themes: ['@docusaurus/theme-mermaid', '@signalwire/docusaurus-theme-llms-txt'], markdown: { mermaid: true, hooks: { onBrokenMarkdownLinks: 'throw', }, }, presets: [ [ 'classic', { docs: false, theme: { customCss: './src/css/custom.css', }, googleTagManager: { containerId: process.env.GTM_ID || 'GTM-TEST', }, gtag: { trackingID: [process.env.GTM_ID || 'GTM-TEST', 'AW-16857946923'], anonymizeIP: true, }, } satisfies Preset.Options, ], ], clientModules: [require.resolve('./src/docusaurus.theme.js')], headTags: [ // Open Graph { tagName: 'meta', attributes: { property: 'og:type', content: 'website' }, }, { tagName: 'meta', attributes: { property: 'og:site_name', content: 'MLflow' }, }, { tagName: 'meta', attributes: { property: 'og:title', content: 'MLflow — Open Source AI Platform for Agents, LLMs & Models', }, }, { tagName: 'meta', attributes: { property: 'og:description', content: 'Official MLflow documentation for LLM tracing, agent evaluation, prompt management, experiment tracking, model registry, and beyond.', }, }, { tagName: 'meta', attributes: { property: 'og:image', content: 'https://mlflow.org/img/mlflow-card.png', }, }, // Twitter Card { tagName: 'meta', attributes: { name: 'twitter:card', content: 'summary_large_image' }, }, { tagName: 'meta', attributes: { name: 'twitter:title', content: 'MLflow — Open Source AI Platform for Agents, LLMs & Models', }, }, { tagName: 'meta', attributes: { name: 'twitter:description', content: 'Official MLflow documentation for LLM tracing, agent evaluation, prompt management, experiment tracking, model registry, and beyond.', }, }, { tagName: 'meta', attributes: { name: 'twitter:image', content: 'https://mlflow.org/img/mlflow-card.png', }, }, { tagName: 'meta', attributes: { name: 'twitter:site', content: '@mlflow' }, }, ], themeConfig: { docs: { sidebar: { autoCollapseCategories: true, }, }, mermaid: { theme: { light: 'neutral', dark: 'dark' }, options: { fontFamily: 'inherit', fontSize: 16, }, }, navbar: { logo: { alt: 'MLflow Logo', src: 'images/logo-light.svg', srcDark: 'images/logo-dark.svg', }, items: [ { type: 'custom-docsDropdown', label: 'Documentation', items: [ // GenAI docs { type: 'docSidebar', sidebarId: 'genAISidebar', label: 'LLMs & Agents', docsPluginId: 'genai', className: 'genai-docs-link', }, // Classic ML docs { type: 'docSidebar', sidebarId: 'classicMLSidebar', label: 'Machine Learning', docsPluginId: 'classic-ml', className: 'ml-docs-link', }, ], }, { to: `${apiReferencePrefix()}api_reference/index.html`, position: 'left', label: 'API Reference', }, { type: 'docSidebar', position: 'left', sidebarId: 'selfHostingSidebar', label: 'Self-Hosting', docsPluginId: 'self-hosting', }, { type: 'docSidebar', position: 'left', sidebarId: 'communitySidebar', label: 'Community', docsPluginId: 'community', }, { type: 'custom-versionSelector', position: 'right', }, { href: 'https://github.com/mlflow/mlflow', label: 'GitHub', position: 'right', className: 'github-link', }, ], }, colorMode: { defaultMode: 'dark', disableSwitch: false, respectPrefersColorScheme: true, }, footer: { links: [ { title: 'Community', items: [ { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/mlflow', }, { label: 'LinkedIn', href: 'https://www.linkedin.com/company/mlflow-org', }, { label: 'X', href: 'https://x.com/mlflow', }, ], }, { title: 'Resources', items: [ { label: 'Docs', to: '/', }, { label: 'Releases', to: 'https://mlflow.org/releases', }, { label: 'Blog', to: 'https://mlflow.org/blog', }, ], }, ], copyright: `Copyright © ${new Date().getFullYear()} MLflow Project, a Series of LF Projects, LLC.`, }, prism: { // There is an array of languages enabled by default. // @see https://github.com/FormidableLabs/prism-react-renderer/blob/master/packages/generate-prism-languages/index.ts#L9-L26 additionalLanguages: ['bash', 'diff', 'ini', 'java', 'nginx', 'r', 'scala', 'sql', 'toml'], theme: prismThemes.github, darkTheme: prismThemes.dracula, }, algolia: { // The application ID provided by Algolia appId: 'XKVLO8P882', // Public API key: it is safe to commit it apiKey: 'e78ac2f60eba60a4c4a353c0702cc7bb', indexName: 'd1voxqa8i8phxc-cloudfront', // Optional: see doc section below contextualSearch: true, // Optional: Specify domains where the navigation should occur through window.location instead on history.push. // Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. externalUrlRegex: '/api_reference', }, } satisfies Preset.ThemeConfig, plugins: [ tailwindPlugin, [ '@signalwire/docusaurus-plugin-llms-txt', { ui: { copyPageContent: { buttonLabel: 'Copy Page', display: { docs: true, }, }, }, }, ], // Classic ML docs plugin [ '@docusaurus/plugin-content-docs', { id: 'classic-ml', path: 'docs/classic-ml', routeBasePath: 'ml', sidebarPath: './sidebarsClassicML.ts', async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { const sidebarItems = await defaultSidebarItemsGenerator(args); return postProcessSidebar(sidebarItems); }, }, ], // GenAI docs plugin [ '@docusaurus/plugin-content-docs', { id: 'genai', path: 'docs/genai', routeBasePath: 'genai', sidebarPath: './sidebarsGenAI.ts', async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { const sidebarItems = await defaultSidebarItemsGenerator(args); return postProcessSidebar(sidebarItems); }, }, ], // Community docs plugin [ '@docusaurus/plugin-content-docs', { id: 'community', path: 'docs/community', routeBasePath: 'community', sidebarPath: './communitySidebar.ts', }, ], // Self Hosting docs plugin [ '@docusaurus/plugin-content-docs', { id: 'self-hosting', path: 'docs/self-hosting', routeBasePath: 'self-hosting', sidebarPath: './sidebarsSelfHosting.ts', }, ], [ '@docusaurus/plugin-client-redirects', { redirects: [ { to: '/', from: ['/new-features'], }, // Redirect webhooks from classic-ml to self-hosting { to: '/self-hosting/webhooks', from: ['/ml/webhooks'], }, // Redirect to the new self-hosting guide { to: '/self-hosting/architecture/tracking-server', from: ['/ml/tracking/server', '/tracking/server'], }, { to: '/self-hosting/architecture/artifact-store', from: ['/ml/tracking/artifact-stores', '/tracking/artifact-stores'], }, { to: '/self-hosting/architecture/backend-store', from: ['/ml/tracking/backend-stores', '/tracking/backend-stores'], }, { to: '/self-hosting/security/basic-http-auth', from: ['/ml/auth'], }, { to: '/self-hosting#kubernetes', from: [ '/ml/deployment/deploy-model-to-kubernetes', '/ml/deployment/deploy-model-to-kubernetes/tutorial', '/deployment/deploy-model-to-kubernetes', '/deployment/deploy-model-to-kubernetes/tutorial', ], }, // Redirect mlflow 3 pages to migration guide { to: '/ml/mlflow-3', from: [ '/mlflow-3', '/genai/mlflow-3', '/genai/mlflow-3/deep-learning', '/mlflow-3/deep-learning', '/genai/mlflow-3/genai-agent', '/mlflow-3/genai-agent', '/genai/mlflow-3/breaking-changes', '/mlflow-3/breaking-changes', '/genai/mlflow-3/faqs', '/mlflow-3/faqs', ], }, { to: '/genai/getting-started/databricks-trial', from: [ '/getting-started/databricks-trial', '/getting-started/community-edition', '/ml/getting-started/databricks-trial', ], }, { to: '/genai/tracing/quickstart', from: ['/genai/getting-started'], }, // Redirect deleted data-model pages to GenAI main page { to: '/genai', from: [ '/genai/data-model', '/genai/data-model/index', '/genai/data-model/app-versions', '/genai/data-model/experiments', '/genai/data-model/logged-model', '/genai/data-model/model-registry', '/genai/data-model/prompts', '/genai/data-model/runs', '/genai/data-model/traces', ], }, // Redirect moved concepts pages from tracing to top-level { to: '/genai/concepts/feedback', from: ['/genai/tracing/concepts/feedback'], }, { to: '/genai/concepts/expectations', from: ['/genai/tracing/concepts/expectations'], }, { to: '/genai/concepts/span', from: ['/genai/tracing/concepts/span'], }, { to: '/genai/concepts/trace', from: ['/genai/tracing/concepts/trace'], }, // GenAI/LLM Related Redirects { to: '/genai/tracing', from: ['/llms/llm-tracking', '/tracing', '/llms/tracing', '/tracing/api/how-to'], }, { to: '/genai/tracing/quickstart', from: [ '/genai/tracing/quickstart/typescript-openai', '/genai/tracing/quickstart/python-openai', '/genai/tracing/app-instrumentation/typescript-sdk', '/genai/tracing/app-instrumentation', '/tracing/api', ], }, { to: '/genai/tracing/faq', from: ['/tracing/faq'], }, { to: '/genai/concepts/trace', from: ['/tracing/tracing-schema', '/llms/tracing/tracing-schema'], }, { to: '/genai/tracing/prod-tracing', from: ['/tracing/production'], }, { to: '/genai/tracing/search-traces', from: ['/tracing/api/search', '/llms/tracing/search-traces'], }, { to: '/genai/tracing/app-instrumentation/manual-tracing', from: ['/tracing/api/client'], }, { to: '/genai/tracing/app-instrumentation/manual-tracing', from: ['/tracing/api/manual-instrumentation'], }, { to: '/genai/tracing/search-traces', from: ['/tracing/ui'], }, { to: '/genai/tracing/search-traces', from: [ '/genai/tracing/observe-with-traces', '/genai/tracing/observe-with-traces/index', '/genai/tracing/observe-with-traces/query-via-sdk', ], }, { to: '/genai/tracing/integrations', from: ['/tracing/integrations'], }, { to: '/genai/tracing/integrations/contribute', from: ['/tracing/integrations/contribute', '/llms/tracing/contribute'], }, { to: '/genai/tracing/integrations/listing/anthropic', from: ['/tracing/integrations/anthropic'], }, { to: '/genai/tracing/integrations/listing/autogen', from: ['/tracing/integrations/autogen'], }, { to: '/genai/tracing/integrations/listing/bedrock', from: ['/tracing/integrations/bedrock', '/llms/bedrock/autologging'], }, { to: '/genai/tracing/integrations/listing/crewai', from: ['/tracing/integrations/crewai'], }, { to: '/genai/tracing/integrations/listing/deepseek', from: ['/tracing/integrations/deepseek'], }, { to: '/genai/tracing/integrations/listing/dspy', from: ['/tracing/integrations/dspy'], }, { to: '/genai/tracing/integrations/listing/gemini', from: ['/tracing/integrations/gemini'], }, { to: '/genai/tracing/integrations/listing/groq', from: ['/tracing/integrations/groq'], }, { to: '/genai/tracing/integrations/listing/instructor', from: ['/tracing/integrations/instructor'], }, { to: '/genai/tracing/integrations/listing/langchain', from: ['/tracing/integrations/langchain'], }, { to: '/genai/tracing/integrations/listing/langgraph', from: ['/tracing/integrations/langgraph'], }, { to: '/genai/tracing/integrations/listing/litellm', from: ['/tracing/integrations/litellm'], }, { to: '/genai/tracing/integrations/listing/llama_index', from: ['/tracing/integrations/llama_index'], }, { to: '/genai/tracing/integrations/listing/mistral', from: ['/tracing/integrations/mistral'], }, { to: '/genai/tracing/integrations/listing/ollama', from: ['/tracing/integrations/ollama'], }, { to: '/genai/tracing/integrations/listing/openai', from: ['/tracing/integrations/openai'], }, { to: '/genai/tracing/integrations/listing/openai-agent', from: ['/tracing/integrations/openai-agent'], }, { to: '/genai/tracing/integrations/listing/txtai', from: ['/tracing/integrations/txtai'], }, { to: '/genai', from: ['/tracing/tutorials/jupyter-trace-demo', '/llms/tracing/notebooks/jupyter-trace-demo'], }, { to: '/genai', from: ['/tracing/tutorials'], }, { to: '/genai/eval-monitor/scorers/llm-judge/custom-judges/', from: [ '/genai/eval-monitor/scorers/llm-judge/make-judge/', '/genai/eval-monitor/scorers/llm-judge/agentic-overview/', ], }, // Tracing Redirects { to: '/genai/concepts/trace', from: ['/genai/tracing/data-model', '/genai/tracing/trace-instrumentation'], }, // LLM Flavors Redirects { to: '/genai', from: [ '/llms/rag', '/llms/rag/notebooks', '/llms/rag/notebooks/mlflow-e2e-evaluation', '/llms/rag/notebooks/question-generation-retrieval-evaluation', '/llms/rag/notebooks/retriever-evaluation-tutorial', ], }, { to: '/genai', from: ['/llms', '/llms/index'], }, { to: '/genai/flavors/chat-model-guide', from: ['/llms/chat-model-guide'], }, { to: '/genai/flavors/chat-model-guide/chat-model-tool-calling', from: ['/llms/notebooks/chat-model-tool-calling'], }, { to: '/genai/flavors/chat-model-intro', from: ['/llms/chat-model-intro'], }, { to: '/genai/flavors/custom-pyfunc-for-llms', from: ['/llms/custom-pyfunc-for-llms', '/llms/custom-pyfunc-for-llms/notebooks'], }, { to: '/genai/flavors/custom-pyfunc-for-llms/notebooks/custom-pyfunc-advanced-llm', from: ['/llms/custom-pyfunc-for-llms/notebooks/custom-pyfunc-advanced-llm'], }, { to: '/genai/flavors/dspy', from: ['/llms/dspy'], }, { to: '/genai/flavors/dspy/notebooks/dspy_quickstart', from: ['/llms/dspy/notebooks/dspy_quickstart'], }, { to: '/genai/flavors/dspy/optimizer', from: ['/llms/dspy/optimizer'], }, { to: '/genai/flavors/langchain', from: ['/llms/langchain'], }, { to: '/genai/flavors/langchain/autologging', from: ['/llms/langchain/autologging'], }, { to: '/genai/flavors/langchain/guide', from: ['/llms/langchain/guide'], }, { to: '/genai/flavors/langchain/notebooks/langchain-quickstart', from: ['/llms/langchain/notebooks/langchain-quickstart'], }, { to: '/genai/flavors/langchain/notebooks/langchain-retriever', from: ['/llms/langchain/notebooks/langchain-retriever'], }, { to: '/genai/flavors/llama-index', from: ['/llms/llama-index'], }, { to: '/genai/flavors/llama-index/notebooks/llama_index_quickstart', from: ['/llms/llama-index/notebooks/llama_index_quickstart'], }, { to: '/genai/flavors/llama-index/notebooks/llama_index_workflow_tutorial', from: ['/llms/llama-index/notebooks/llama_index_workflow_tutorial'], }, // Redirect deprecated OpenAI model logging pages to prompt registry { to: '/genai/prompt-registry', from: [ '/llms/openai', '/llms/openai/guide', '/llms/openai/guide/index', '/llms/openai/autologging', '/llms/openai/autologging/index', '/llms/openai/notebooks', '/llms/openai/notebooks/index', '/llms/openai/notebooks/openai-quickstart-ipynb', '/llms/openai/notebooks/openai-chat-completions-ipynb', '/genai/flavors/openai', '/genai/flavors/openai/index', '/genai/flavors/openai/guide', '/genai/flavors/openai/guide/index', '/genai/flavors/openai/autologging', '/genai/flavors/openai/autologging/index', '/genai/flavors/openai/notebooks', '/genai/flavors/openai/notebooks/index', '/genai/flavors/openai/notebooks/openai-quickstart-ipynb', '/genai/flavors/openai/notebooks/openai-chat-completions-ipynb', '/genai/flavors/openai/notebooks/openai-code-helper-ipynb', '/genai/flavors/openai/notebooks/openai-embeddings-generation-ipynb', ], }, // Evaluation and Monitoring Redirects { to: '/genai/eval-monitor', from: ['/llms/llm-evaluate', '/genai/llm-evaluate'], }, { to: '/genai/eval-monitor/scorers', from: ['/genai/llm-evaluate/llm-as-judge', '/llms/llm-evaluate/llm-as-judge'], }, { to: '/genai/eval-monitor', from: [ '/llms/llm-evaluate/notebooks', '/llms/llm-evaluate/notebooks/huggingface-evaluation', '/llms/llm-evaluate/notebooks/question-answering-evaluation', '/llms/llm-evaluate/notebooks/rag-evaluation', '/llms/llm-evaluate/notebooks/rag-evaluation-llama2', ], }, { to: '/genai/eval-monitor/scorers/llm-judge/custom-judges', from: [ '/genai/eval-monitor/scorers/llm-judge/trace-analysis', '/genai/eval-monitor/scorers/llm-judge/agent-behavior-patterns', ], }, { to: '/genai/datasets', from: ['/genai/eval-monitor/scorers/llm-judge/dataset'], }, // Classic ML Evaluation Redirects - consolidated to single page { to: '/ml/evaluation', from: [ '/ml/evaluation/model-eval', '/ml/evaluation/dataset-eval', '/ml/evaluation/function-eval', '/ml/evaluation/metrics-visualizations', '/ml/evaluation/shap', '/ml/evaluation/plugin-evaluators', ], }, // Prompt Management Redirects { to: '/genai/prompt-registry/prompt-engineering', from: ['/llms/prompt-engineering', '/genai/prompt-version-mgmt/prompt-engineering'], }, { to: '/genai/prompt-registry', from: ['/prompts', '/genai/prompt-version-mgmt/prompt-registry'], }, { to: '/genai/prompt-registry/manage-prompt-lifecycles-with-aliases', from: ['/prompts/cm', '/genai/prompt-version-mgmt/prompt-registry/manage-prompt-lifecycles-with-aliases'], }, { to: '/genai/prompt-registry/evaluate-prompts', from: ['/prompts/evaluate', '/genai/prompt-version-mgmt/prompt-registry/evaluate-prompts'], }, { to: '/genai/prompt-registry/log-with-model', from: ['/prompts/run-and-model', '/genai/prompt-version-mgmt/prompt-registry/log-with-model'], }, { to: '/genai/prompt-registry/optimize-prompts', from: [ '/genai/prompt-version-mgmt/optimize-prompts', '/genai/prompt-version-mgmt/prompt-registry/optimize-prompts', ], }, { to: '/genai/prompt-registry/create-and-edit-prompts', from: ['/genai/prompt-version-mgmt/prompt-registry/create-and-edit-prompts'], }, { to: '/genai/prompt-registry/use-prompts-in-apps', from: ['/genai/prompt-version-mgmt/prompt-registry/use-prompts-in-apps'], }, { to: '/genai/prompt-registry/structured-output', from: ['/genai/prompt-version-mgmt/prompt-registry/structured-output'], }, { to: '/genai/version-tracking', from: ['/genai/prompt-version-mgmt/version-tracking'], }, { to: '/genai/version-tracking/quickstart', from: ['/genai/prompt-version-mgmt/version-tracking/quickstart'], }, { to: '/genai/version-tracking/track-application-versions-with-mlflow', from: ['/genai/prompt-version-mgmt/version-tracking/track-application-versions-with-mlflow'], }, { to: '/genai/version-tracking/compare-app-versions', from: ['/genai/prompt-version-mgmt/version-tracking/compare-app-versions'], }, // ResponsesAgent Redirects { to: '/genai/flavors/responses-agent-intro', from: ['/llms/responses-agent-intro'], }, // Governance and Deployments Redirects { to: '/genai/governance/ai-gateway', from: [ '/llms/deployments/', '/llms/gateway/index', '/llms/gateway', '/llms/deployments/guides', '/llms/gateway/guides/index', '/llms/gateway/guide', '/genai/governance/ai-gateway/guides', ], }, { to: '/genai/governance/ai-gateway', from: [ '/llms/deployments/guides/step1-create-deployments', '/llms/gateway/guides/step1-create-gateway', '/genai/governance/ai-gateway/guides/step1-create-deployments', ], }, { to: '/genai/governance/ai-gateway/quickstart', from: ['/genai/governance/ai-gateway/setup'], }, { to: '/genai/governance/ai-gateway', from: [ '/llms/deployments/guides/step2-query-deployments', '/llms/gateway/guides/step2-query-gateway', '/genai/governance/ai-gateway/guides/step2-query-deployments', '/genai/governance/ai-gateway/usage', ], }, { to: '/genai/governance/ai-gateway', from: [ '/genai/governance/ai-gateway/legacy', '/genai/governance/ai-gateway/legacy/index', '/genai/governance/ai-gateway/legacy/setup', '/genai/governance/ai-gateway/legacy/configuration', '/genai/governance/ai-gateway/legacy/usage', ], }, { to: '/genai/governance/ai-gateway', from: [ '/llms/deployments/uc_integration', '/genai/governance/unity-catalog', '/genai/governance/ai-gateway/integration', ], }, // Traditional ML and Core MLflow Redirects { to: '/ml', from: ['/introduction'], }, { to: '/self-hosting/security/basic-http-auth', from: ['/auth'], }, { to: '/ml/community-model-flavors', from: ['/community-model-flavors'], }, { to: '/ml/dataset', from: ['/dataset', '/tracking/data-api/index', '/tracking/data-api'], }, { to: '/ml/deep-learning', from: ['/deep-learning'], }, { to: '/ml/deep-learning/keras', from: ['/deep-learning/keras'], }, { to: '/ml/deep-learning/keras', from: ['/deep-learning/keras/quickstart/quickstart_keras'], }, { to: '/ml/deep-learning/keras', from: ['/deep-learning/keras/guide', '/ml/deep-learning/keras/guide'], }, { to: '/ml/deep-learning/pytorch', from: ['/deep-learning/pytorch'], }, // Redirect consolidated pytorch guide and quickstart to index { to: '/ml/deep-learning/pytorch', from: [ '/deep-learning/pytorch/guide', '/ml/deep-learning/pytorch/guide', '/deep-learning/pytorch/quickstart/pytorch_quickstart', '/ml/deep-learning/pytorch/quickstart/quickstart-pytorch', ], }, // Redirect consolidated spaCy guide to index { to: '/ml/deep-learning/spacy', from: [ '/deep-learning/spacy/guide', '/classic-ml/deep-learning/spacy/guide', '/ml/deep-learning/spacy/guide', ], }, { to: '/ml/deep-learning/sentence-transformers', from: ['/llms/sentence-transformers'], }, { to: '/ml/deep-learning/sentence-transformers', from: ['/llms/sentence-transformers/tutorials', '/ml/deep-learning/sentence-transformers/tutorials'], }, { to: '/ml/deep-learning/sentence-transformers/tutorials/paraphrase-mining/paraphrase-mining-sentence-transformers', from: ['/llms/sentence-transformers/tutorials/paraphrase-mining/paraphrase-mining-sentence-transformers'], }, { to: '/ml/deep-learning/sentence-transformers/tutorials/quickstart/sentence-transformers-quickstart', from: ['/llms/sentence-transformers/tutorials/quickstart/sentence-transformers-quickstart'], }, { to: '/ml/deep-learning/sentence-transformers/tutorials/semantic-search/semantic-search-sentence-transformers', from: ['/llms/sentence-transformers/tutorials/semantic-search/semantic-search-sentence-transformers'], }, { to: '/ml/deep-learning/sentence-transformers/tutorials/semantic-similarity/semantic-similarity-sentence-transformers', from: [ '/llms/sentence-transformers/tutorials/semantic-similarity/semantic-similarity-sentence-transformers', ], }, { to: '/ml/deep-learning/sentence-transformers', from: ['/llms/sentence-transformers/guide', '/ml/deep-learning/sentence-transformers/guide'], }, { to: '/ml/deep-learning/tensorflow', from: ['/deep-learning/tensorflow'], }, // Redirect consolidated tensorflow guide and quickstart to index { to: '/ml/deep-learning/tensorflow', from: [ '/deep-learning/tensorflow/guide', '/ml/deep-learning/tensorflow/guide', '/deep-learning/tensorflow/quickstart/quickstart_tensorflow', '/ml/deep-learning/tensorflow/quickstart/quickstart-tensorflow', ], }, { to: '/ml/deep-learning/transformers', from: ['/llms/transformers'], }, { to: '/ml/deep-learning/transformers/guide', from: ['/llms/transformers/guide'], }, { to: '/ml/deep-learning/transformers/large-models', from: ['/llms/transformers/large-models'], }, { to: '/ml/deep-learning/transformers/task', from: ['/llms/transformers/task'], }, { to: '/ml/deep-learning/transformers/tutorials', from: ['/llms/transformers/tutorials'], }, { to: '/ml/deep-learning/transformers/tutorials/audio-transcription/whisper', from: ['/llms/transformers/tutorials/audio-transcription/whisper'], }, { to: '/ml/deep-learning/transformers/tutorials/conversational/conversational-model', from: ['/llms/transformers/tutorials/conversational/conversational-model'], }, { to: '/ml/deep-learning/transformers/tutorials/conversational/pyfunc-chat-model', from: ['/llms/transformers/tutorials/conversational/pyfunc-chat-model'], }, { to: '/ml/deep-learning/transformers/tutorials/fine-tuning/transformers-fine-tuning', from: ['/llms/transformers/tutorials/fine-tuning/transformers-fine-tuning'], }, { to: '/ml/deep-learning/transformers/tutorials/fine-tuning/transformers-peft', from: ['/llms/transformers/tutorials/fine-tuning/transformers-peft'], }, { to: '/ml/deep-learning/transformers/tutorials/prompt-templating/prompt-templating', from: ['/llms/transformers/tutorials/prompt-templating/prompt-templating'], }, { to: '/ml/deep-learning/transformers/tutorials/text-generation/text-generation', from: ['/llms/transformers/tutorials/text-generation/text-generation'], }, { to: '/ml/deep-learning/transformers/tutorials/translation/component-translation', from: ['/llms/transformers/tutorials/translation/component-translation'], }, { to: '/ml/deployment', from: ['/deployment'], }, { to: '/ml/deployment/deploy-model-locally', from: ['/deployment/deploy-model-locally'], }, { to: '/ml/deployment/deploy-model-to-sagemaker', from: ['/deployment/deploy-model-to-sagemaker'], }, { to: '/ml/docker', from: ['/docker'], }, { to: '/ml/evaluation', from: ['/model-evaluation'], }, { to: '/ml/getting-started', from: ['/getting-started'], }, { to: '/ml/getting-started/hyperparameter-tuning', from: ['/getting-started/quickstart-2'], }, { to: '/ml/getting-started', from: [ '/getting-started/logging-first-model', '/getting-started/logging-first-model/notebooks', '/getting-started/logging-first-model/notebooks/logging-first-model', '/getting-started/logging-first-model/step1-tracking-server', '/getting-started/logging-first-model/step2-mlflow-client', '/getting-started/logging-first-model/step3-create-experiment', '/getting-started/logging-first-model/step4-experiment-search', '/getting-started/logging-first-model/step5-synthetic-data', '/getting-started/logging-first-model/step6-logging-a-run', '/getting-started/registering-first-model', '/getting-started/registering-first-model/step1-register-model', '/getting-started/registering-first-model/step2-explore-registered-model', '/getting-started/registering-first-model/step3-load-model', '/getting-started/running-notebooks', '/getting-started/tracking-server-overview', '/getting-started/tracking-server-overview/notebooks', '/getting-started/tracking-server-overview/notebooks/tracking-server-overview', '/getting-started/tracking-server-overview/step1-tracking-server', // /ml redirects '/ml/getting-started/logging-first-model', '/ml/getting-started/logging-first-model/notebooks', '/ml/getting-started/logging-first-model/notebooks/logging-first-model', '/ml/getting-started/logging-first-model/step1-tracking-server', '/ml/getting-started/logging-first-model/step2-mlflow-client', '/ml/getting-started/logging-first-model/step3-create-experiment', '/ml/getting-started/logging-first-model/step4-experiment-search', '/ml/getting-started/logging-first-model/step5-synthetic-data', '/ml/getting-started/logging-first-model/step6-logging-a-run', '/ml/getting-started/registering-first-model', '/ml/getting-started/registering-first-model/step1-register-model', '/ml/getting-started/registering-first-model/step2-explore-registered-model', '/ml/getting-started/registering-first-model/step3-load-model', '/ml/getting-started/tracking-server-overview', ], }, { to: '/ml/model-registry', from: ['/model-registry', '/registry'], }, { to: '/ml/model', from: ['/model', '/models'], }, { to: '/ml/model/dependencies', from: ['/model/dependencies'], }, { to: '/ml/model/models-from-code', from: ['/model/models-from-code'], }, { to: '/ml/model/notebooks/signature_examples', from: ['/model/notebooks/signature_examples'], }, { to: '/ml/model/python_model', from: ['/model/python_model'], }, { to: '/ml/model/signatures', from: ['/model/signatures'], }, { to: '/ml/plugins', from: ['/plugins'], }, { to: '/ml/projects', from: ['/projects'], }, { to: '/ml/search/search-experiments', from: ['/search-experiments'], }, { to: '/ml/search/search-runs', from: ['/search-runs'], }, { to: '/ml/tracking', from: ['/tracking'], }, { to: '/ml/tracking/autolog', from: ['/tracking/autolog'], }, { to: '/ml/tracking/quickstart', from: [ '/getting-started/intro-quickstart', '/getting-started/intro-quickstart/notebooks', '/quickstart_drilldown', '/getting-started/intro-quickstart/notebooks/tracking_quickstart', '/ml/tracking/quickstart/notebooks/tracking_quickstart', ], }, { to: '/ml/tracking/system-metrics', from: ['/system-metrics'], }, { to: '/ml/tracking/tracking-api', from: ['/tracking/tracking-api'], }, { to: '/ml/tracking/tutorials/local-database', from: ['/tracking/tutorials/local-database'], }, { to: '/ml/tracking/tutorials/remote-server', from: ['/tracking/tutorials/remote-server'], }, { to: '/ml/traditional-ml', from: ['/traditional-ml'], }, // Redirect consolidated prophet guide to index { to: '/ml/traditional-ml/prophet', from: ['/ml/traditional-ml/prophet/guide'], }, // Redirect consolidated sparkml guide to index { to: '/ml/traditional-ml/sparkml', from: ['/ml/traditional-ml/sparkml/guide'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc', from: ['/traditional-ml/creating-custom-pyfunc'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks', from: ['/traditional-ml/creating-custom-pyfunc/notebooks'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/basic-pyfunc', from: ['/traditional-ml/creating-custom-pyfunc/notebooks/basic-pyfunc'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/introduction', from: ['/traditional-ml/creating-custom-pyfunc/notebooks/introduction'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/override-predict', from: ['/traditional-ml/creating-custom-pyfunc/notebooks/override-predict'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/part1-named-flavors', from: ['/traditional-ml/creating-custom-pyfunc/part1-named-flavors'], }, { to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/part2-pyfunc-components', from: ['/traditional-ml/creating-custom-pyfunc/part2-pyfunc-components'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/hyperparameter-tuning-with-child-runs', from: [ '/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/hyperparameter-tuning-with-child-runs', ], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/logging-plots-in-mlflow', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/logging-plots-in-mlflow'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/parent-child-runs', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/parent-child-runs'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/part1-child-runs', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/part1-child-runs'], }, { to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/part2-logging-plots', from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/part2-logging-plots'], }, { to: '/ml/traditional-ml/tutorials/serving-multiple-models-with-pyfunc', from: ['/traditional-ml/serving-multiple-models-with-pyfunc'], }, { to: '/ml/traditional-ml/tutorials/serving-multiple-models-with-pyfunc/notebooks/MME_Tutorial', from: ['/traditional-ml/serving-multiple-models-with-pyfunc/notebooks/MME_Tutorial'], }, { to: '/ml/tutorials-and-examples', from: ['/tutorials-and-examples'], }, // Redirect removed sklearn subdirectories to consolidated page { to: '/ml/traditional-ml/sklearn/', from: ['/ml/traditional-ml/sklearn/guide', '/ml/traditional-ml/sklearn/quickstart/quickstart-sklearn'], }, // Redirect removed XGBoost subdirectories to consolidated page { to: '/ml/traditional-ml/xgboost/', from: ['/ml/traditional-ml/xgboost/guide', '/ml/traditional-ml/xgboost/quickstart/quickstart-xgboost'], }, ], }, ], ], }; export default config;