docusaurus.config.ts
1 import { themes as prismThemes } from 'prism-react-renderer'; 2 import type { Config } from '@docusaurus/types'; 3 import type * as Preset from '@docusaurus/preset-classic'; 4 import { postProcessSidebar, apiReferencePrefix } from './docusaurusConfigUtils'; 5 import tailwindPlugin from './src/plugins/tailwind-config.cjs'; 6 7 // ensure baseUrl always ends in `/` 8 const baseUrl = (process.env.DOCS_BASE_URL ?? '/docs/latest/').replace(/\/?$/, '/'); 9 10 const config: Config = { 11 title: 'MLflow AI Platform', 12 tagline: 'MLflow Documentation', 13 favicon: 'images/favicon.ico', 14 15 // Docusaurus sets the canonical URL to the preferred one, so the pages are consolidated and double search results are prevented. 16 trailingSlash: true, 17 // Versioned builds (e.g. /docs/2.x.x/) are noindexed so only /docs/latest/ appears in search results. 18 noIndex: process.env.DOCS_NO_INDEX === 'true', 19 20 // Set the production url of your site here 21 url: 'https://mlflow.org', 22 23 // when building for production, check this environment 24 // variable to determine the correct base URL 25 baseUrl: baseUrl, 26 27 // GitHub pages deployment config. 28 // If you aren't using GitHub pages, you don't need these. 29 organizationName: 'mlflow', // Usually your GitHub org/user name. 30 projectName: 'mlflow', // Usually your repo name. 31 32 staticDirectories: ['static'], 33 34 // change to throw when migration is done 35 onBrokenLinks: 'throw', 36 onBrokenAnchors: 'throw', 37 onDuplicateRoutes: 'throw', // Fail build on duplicate redirects 38 39 future: { 40 v4: true, // opt-in for Docusaurus v4 planned changes 41 faster: true, // turns Docusaurus Faster on globally 42 }, 43 44 // Even if you don't use internationalization, you can use this field to set 45 // useful metadata like html lang. For example, if your site is Chinese, you 46 // may want to replace "en" with "zh-Hans". 47 i18n: { 48 defaultLocale: 'en', 49 locales: ['en'], 50 }, 51 52 // NB: docusaurus does not automatically prepend the 53 // baseURL to relative paths in script srcs. please 54 // make sure to append this yourself. 55 scripts: [ 56 { 57 // runllm 58 src: baseUrl + 'js/runllm.js', 59 defer: true, 60 }, 61 ], 62 63 themes: ['@docusaurus/theme-mermaid', '@signalwire/docusaurus-theme-llms-txt'], 64 markdown: { 65 mermaid: true, 66 hooks: { 67 onBrokenMarkdownLinks: 'throw', 68 }, 69 }, 70 71 presets: [ 72 [ 73 'classic', 74 { 75 docs: false, 76 theme: { 77 customCss: './src/css/custom.css', 78 }, 79 googleTagManager: { 80 containerId: process.env.GTM_ID || 'GTM-TEST', 81 }, 82 gtag: { 83 trackingID: [process.env.GTM_ID || 'GTM-TEST', 'AW-16857946923'], 84 anonymizeIP: true, 85 }, 86 } satisfies Preset.Options, 87 ], 88 ], 89 90 clientModules: [require.resolve('./src/docusaurus.theme.js')], 91 92 headTags: [ 93 // Open Graph 94 { 95 tagName: 'meta', 96 attributes: { property: 'og:type', content: 'website' }, 97 }, 98 { 99 tagName: 'meta', 100 attributes: { property: 'og:site_name', content: 'MLflow' }, 101 }, 102 { 103 tagName: 'meta', 104 attributes: { 105 property: 'og:title', 106 content: 'MLflow — Open Source AI Platform for Agents, LLMs & Models', 107 }, 108 }, 109 { 110 tagName: 'meta', 111 attributes: { 112 property: 'og:description', 113 content: 114 'Official MLflow documentation for LLM tracing, agent evaluation, prompt management, experiment tracking, model registry, and beyond.', 115 }, 116 }, 117 { 118 tagName: 'meta', 119 attributes: { 120 property: 'og:image', 121 content: 'https://mlflow.org/img/mlflow-card.png', 122 }, 123 }, 124 // Twitter Card 125 { 126 tagName: 'meta', 127 attributes: { name: 'twitter:card', content: 'summary_large_image' }, 128 }, 129 { 130 tagName: 'meta', 131 attributes: { 132 name: 'twitter:title', 133 content: 'MLflow — Open Source AI Platform for Agents, LLMs & Models', 134 }, 135 }, 136 { 137 tagName: 'meta', 138 attributes: { 139 name: 'twitter:description', 140 content: 141 'Official MLflow documentation for LLM tracing, agent evaluation, prompt management, experiment tracking, model registry, and beyond.', 142 }, 143 }, 144 { 145 tagName: 'meta', 146 attributes: { 147 name: 'twitter:image', 148 content: 'https://mlflow.org/img/mlflow-card.png', 149 }, 150 }, 151 { 152 tagName: 'meta', 153 attributes: { name: 'twitter:site', content: '@mlflow' }, 154 }, 155 ], 156 157 themeConfig: { 158 docs: { 159 sidebar: { 160 autoCollapseCategories: true, 161 }, 162 }, 163 mermaid: { 164 theme: { light: 'neutral', dark: 'dark' }, 165 options: { 166 fontFamily: 'inherit', 167 fontSize: 16, 168 }, 169 }, 170 navbar: { 171 logo: { 172 alt: 'MLflow Logo', 173 src: 'images/logo-light.svg', 174 srcDark: 'images/logo-dark.svg', 175 }, 176 items: [ 177 { 178 type: 'custom-docsDropdown', 179 label: 'Documentation', 180 items: [ 181 // GenAI docs 182 { 183 type: 'docSidebar', 184 sidebarId: 'genAISidebar', 185 label: 'LLMs & Agents', 186 docsPluginId: 'genai', 187 className: 'genai-docs-link', 188 }, 189 // Classic ML docs 190 { 191 type: 'docSidebar', 192 sidebarId: 'classicMLSidebar', 193 label: 'Machine Learning', 194 docsPluginId: 'classic-ml', 195 className: 'ml-docs-link', 196 }, 197 ], 198 }, 199 { 200 to: `${apiReferencePrefix()}api_reference/index.html`, 201 position: 'left', 202 label: 'API Reference', 203 }, 204 { 205 type: 'docSidebar', 206 position: 'left', 207 sidebarId: 'selfHostingSidebar', 208 label: 'Self-Hosting', 209 docsPluginId: 'self-hosting', 210 }, 211 { 212 type: 'docSidebar', 213 position: 'left', 214 sidebarId: 'communitySidebar', 215 label: 'Community', 216 docsPluginId: 'community', 217 }, 218 { 219 type: 'custom-versionSelector', 220 position: 'right', 221 }, 222 { 223 href: 'https://github.com/mlflow/mlflow', 224 label: 'GitHub', 225 position: 'right', 226 className: 'github-link', 227 }, 228 ], 229 }, 230 colorMode: { 231 defaultMode: 'dark', 232 disableSwitch: false, 233 respectPrefersColorScheme: true, 234 }, 235 footer: { 236 links: [ 237 { 238 title: 'Community', 239 items: [ 240 { 241 label: 'Stack Overflow', 242 href: 'https://stackoverflow.com/questions/tagged/mlflow', 243 }, 244 { 245 label: 'LinkedIn', 246 href: 'https://www.linkedin.com/company/mlflow-org', 247 }, 248 { 249 label: 'X', 250 href: 'https://x.com/mlflow', 251 }, 252 ], 253 }, 254 { 255 title: 'Resources', 256 items: [ 257 { 258 label: 'Docs', 259 to: '/', 260 }, 261 { 262 label: 'Releases', 263 to: 'https://mlflow.org/releases', 264 }, 265 { 266 label: 'Blog', 267 to: 'https://mlflow.org/blog', 268 }, 269 ], 270 }, 271 ], 272 copyright: `Copyright © ${new Date().getFullYear()} MLflow Project, a Series of LF Projects, LLC.`, 273 }, 274 prism: { 275 // There is an array of languages enabled by default. 276 // @see https://github.com/FormidableLabs/prism-react-renderer/blob/master/packages/generate-prism-languages/index.ts#L9-L26 277 additionalLanguages: ['bash', 'diff', 'ini', 'java', 'nginx', 'r', 'scala', 'sql', 'toml'], 278 theme: prismThemes.github, 279 darkTheme: prismThemes.dracula, 280 }, 281 algolia: { 282 // The application ID provided by Algolia 283 appId: 'XKVLO8P882', 284 285 // Public API key: it is safe to commit it 286 apiKey: 'e78ac2f60eba60a4c4a353c0702cc7bb', 287 288 indexName: 'd1voxqa8i8phxc-cloudfront', 289 290 // Optional: see doc section below 291 contextualSearch: true, 292 293 // Optional: Specify domains where the navigation should occur through window.location instead on history.push. 294 // Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. 295 externalUrlRegex: '/api_reference', 296 }, 297 } satisfies Preset.ThemeConfig, 298 299 plugins: [ 300 tailwindPlugin, 301 [ 302 '@signalwire/docusaurus-plugin-llms-txt', 303 { 304 ui: { 305 copyPageContent: { 306 buttonLabel: 'Copy Page', 307 display: { 308 docs: true, 309 }, 310 }, 311 }, 312 }, 313 ], 314 // Classic ML docs plugin 315 [ 316 '@docusaurus/plugin-content-docs', 317 { 318 id: 'classic-ml', 319 path: 'docs/classic-ml', 320 routeBasePath: 'ml', 321 sidebarPath: './sidebarsClassicML.ts', 322 async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { 323 const sidebarItems = await defaultSidebarItemsGenerator(args); 324 return postProcessSidebar(sidebarItems); 325 }, 326 }, 327 ], 328 // GenAI docs plugin 329 [ 330 '@docusaurus/plugin-content-docs', 331 { 332 id: 'genai', 333 path: 'docs/genai', 334 routeBasePath: 'genai', 335 sidebarPath: './sidebarsGenAI.ts', 336 async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { 337 const sidebarItems = await defaultSidebarItemsGenerator(args); 338 return postProcessSidebar(sidebarItems); 339 }, 340 }, 341 ], 342 // Community docs plugin 343 [ 344 '@docusaurus/plugin-content-docs', 345 { 346 id: 'community', 347 path: 'docs/community', 348 routeBasePath: 'community', 349 sidebarPath: './communitySidebar.ts', 350 }, 351 ], 352 // Self Hosting docs plugin 353 [ 354 '@docusaurus/plugin-content-docs', 355 { 356 id: 'self-hosting', 357 path: 'docs/self-hosting', 358 routeBasePath: 'self-hosting', 359 sidebarPath: './sidebarsSelfHosting.ts', 360 }, 361 ], 362 [ 363 '@docusaurus/plugin-client-redirects', 364 { 365 redirects: [ 366 { 367 to: '/', 368 from: ['/new-features'], 369 }, 370 // Redirect webhooks from classic-ml to self-hosting 371 { 372 to: '/self-hosting/webhooks', 373 from: ['/ml/webhooks'], 374 }, 375 // Redirect to the new self-hosting guide 376 { 377 to: '/self-hosting/architecture/tracking-server', 378 from: ['/ml/tracking/server', '/tracking/server'], 379 }, 380 { 381 to: '/self-hosting/architecture/artifact-store', 382 from: ['/ml/tracking/artifact-stores', '/tracking/artifact-stores'], 383 }, 384 { 385 to: '/self-hosting/architecture/backend-store', 386 from: ['/ml/tracking/backend-stores', '/tracking/backend-stores'], 387 }, 388 { 389 to: '/self-hosting/security/basic-http-auth', 390 from: ['/ml/auth'], 391 }, 392 // Redirect mlflow 3 pages to migration guide 393 { 394 to: '/ml/mlflow-3', 395 from: [ 396 '/mlflow-3', 397 '/genai/mlflow-3', 398 '/genai/mlflow-3/deep-learning', 399 '/mlflow-3/deep-learning', 400 '/genai/mlflow-3/genai-agent', 401 '/mlflow-3/genai-agent', 402 '/genai/mlflow-3/breaking-changes', 403 '/mlflow-3/breaking-changes', 404 '/genai/mlflow-3/faqs', 405 '/mlflow-3/faqs', 406 ], 407 }, 408 { 409 to: '/genai/getting-started/databricks-trial', 410 from: [ 411 '/getting-started/databricks-trial', 412 '/getting-started/community-edition', 413 '/ml/getting-started/databricks-trial', 414 ], 415 }, 416 { 417 to: '/genai/tracing/quickstart', 418 from: ['/genai/getting-started'], 419 }, 420 // Redirect deleted data-model pages to GenAI main page 421 { 422 to: '/genai', 423 from: [ 424 '/genai/data-model', 425 '/genai/data-model/index', 426 '/genai/data-model/app-versions', 427 '/genai/data-model/experiments', 428 '/genai/data-model/logged-model', 429 '/genai/data-model/model-registry', 430 '/genai/data-model/prompts', 431 '/genai/data-model/runs', 432 '/genai/data-model/traces', 433 ], 434 }, 435 // Redirect moved concepts pages from tracing to top-level 436 { 437 to: '/genai/concepts/feedback', 438 from: ['/genai/tracing/concepts/feedback'], 439 }, 440 { 441 to: '/genai/concepts/expectations', 442 from: ['/genai/tracing/concepts/expectations'], 443 }, 444 { 445 to: '/genai/concepts/span', 446 from: ['/genai/tracing/concepts/span'], 447 }, 448 { 449 to: '/genai/concepts/trace', 450 from: ['/genai/tracing/concepts/trace'], 451 }, 452 // GenAI/LLM Related Redirects 453 { 454 to: '/genai/tracing', 455 from: ['/llms/llm-tracking', '/tracing', '/llms/tracing', '/tracing/api/how-to'], 456 }, 457 { 458 to: '/genai/tracing/quickstart', 459 from: [ 460 '/genai/tracing/quickstart/typescript-openai', 461 '/genai/tracing/quickstart/python-openai', 462 '/genai/tracing/app-instrumentation/typescript-sdk', 463 '/genai/tracing/app-instrumentation', 464 '/tracing/api', 465 ], 466 }, 467 { 468 to: '/genai/tracing/faq', 469 from: ['/tracing/faq'], 470 }, 471 { 472 to: '/genai/concepts/trace', 473 from: ['/tracing/tracing-schema', '/llms/tracing/tracing-schema'], 474 }, 475 { 476 to: '/genai/tracing/prod-tracing', 477 from: ['/tracing/production'], 478 }, 479 { 480 to: '/genai/tracing/search-traces', 481 from: ['/tracing/api/search', '/llms/tracing/search-traces'], 482 }, 483 { 484 to: '/genai/tracing/app-instrumentation/manual-tracing', 485 from: ['/tracing/api/client'], 486 }, 487 { 488 to: '/genai/tracing/app-instrumentation/manual-tracing', 489 from: ['/tracing/api/manual-instrumentation'], 490 }, 491 { 492 to: '/genai/tracing/search-traces', 493 from: ['/tracing/ui'], 494 }, 495 { 496 to: '/genai/tracing/search-traces', 497 from: [ 498 '/genai/tracing/observe-with-traces', 499 '/genai/tracing/observe-with-traces/index', 500 '/genai/tracing/observe-with-traces/query-via-sdk', 501 ], 502 }, 503 { 504 to: '/genai/tracing/integrations', 505 from: ['/tracing/integrations'], 506 }, 507 { 508 to: '/genai/tracing/integrations/contribute', 509 from: ['/tracing/integrations/contribute', '/llms/tracing/contribute'], 510 }, 511 { 512 to: '/genai/tracing/integrations/listing/anthropic', 513 from: ['/tracing/integrations/anthropic'], 514 }, 515 { 516 to: '/genai/tracing/integrations/listing/autogen', 517 from: ['/tracing/integrations/autogen'], 518 }, 519 { 520 to: '/genai/tracing/integrations/listing/bedrock', 521 from: ['/tracing/integrations/bedrock', '/llms/bedrock/autologging'], 522 }, 523 { 524 to: '/genai/tracing/integrations/listing/crewai', 525 from: ['/tracing/integrations/crewai'], 526 }, 527 { 528 to: '/genai/tracing/integrations/listing/deepseek', 529 from: ['/tracing/integrations/deepseek'], 530 }, 531 { 532 to: '/genai/tracing/integrations/listing/dspy', 533 from: ['/tracing/integrations/dspy'], 534 }, 535 { 536 to: '/genai/tracing/integrations/listing/gemini', 537 from: ['/tracing/integrations/gemini'], 538 }, 539 { 540 to: '/genai/tracing/integrations/listing/groq', 541 from: ['/tracing/integrations/groq'], 542 }, 543 { 544 to: '/genai/tracing/integrations/listing/instructor', 545 from: ['/tracing/integrations/instructor'], 546 }, 547 { 548 to: '/genai/tracing/integrations/listing/langchain', 549 from: ['/tracing/integrations/langchain'], 550 }, 551 { 552 to: '/genai/tracing/integrations/listing/langgraph', 553 from: ['/tracing/integrations/langgraph'], 554 }, 555 { 556 to: '/genai/tracing/integrations/listing/litellm', 557 from: ['/tracing/integrations/litellm'], 558 }, 559 { 560 to: '/genai/tracing/integrations/listing/llama_index', 561 from: ['/tracing/integrations/llama_index'], 562 }, 563 { 564 to: '/genai/tracing/integrations/listing/mistral', 565 from: ['/tracing/integrations/mistral'], 566 }, 567 { 568 to: '/genai/tracing/integrations/listing/ollama', 569 from: ['/tracing/integrations/ollama'], 570 }, 571 { 572 to: '/genai/tracing/integrations/listing/openai', 573 from: ['/tracing/integrations/openai'], 574 }, 575 { 576 to: '/genai/tracing/integrations/listing/openai-agent', 577 from: ['/tracing/integrations/openai-agent'], 578 }, 579 { 580 to: '/genai/tracing/integrations/listing/txtai', 581 from: ['/tracing/integrations/txtai'], 582 }, 583 { 584 to: '/genai', 585 from: ['/tracing/tutorials/jupyter-trace-demo', '/llms/tracing/notebooks/jupyter-trace-demo'], 586 }, 587 { 588 to: '/genai', 589 from: ['/tracing/tutorials'], 590 }, 591 { 592 to: '/genai/eval-monitor/scorers/llm-judge/custom-judges/', 593 from: [ 594 '/genai/eval-monitor/scorers/llm-judge/make-judge/', 595 '/genai/eval-monitor/scorers/llm-judge/agentic-overview/', 596 ], 597 }, 598 599 // Tracing Redirects 600 { 601 to: '/genai/concepts/trace', 602 from: ['/genai/tracing/data-model', '/genai/tracing/trace-instrumentation'], 603 }, 604 // LLM Flavors Redirects 605 { 606 to: '/genai', 607 from: [ 608 '/llms/rag', 609 '/llms/rag/notebooks', 610 '/llms/rag/notebooks/mlflow-e2e-evaluation', 611 '/llms/rag/notebooks/question-generation-retrieval-evaluation', 612 '/llms/rag/notebooks/retriever-evaluation-tutorial', 613 ], 614 }, 615 { 616 to: '/genai', 617 from: ['/llms', '/llms/index'], 618 }, 619 { 620 to: '/genai/flavors/chat-model-guide', 621 from: ['/llms/chat-model-guide'], 622 }, 623 { 624 to: '/genai/flavors/chat-model-guide/chat-model-tool-calling', 625 from: ['/llms/notebooks/chat-model-tool-calling'], 626 }, 627 { 628 to: '/genai/flavors/chat-model-intro', 629 from: ['/llms/chat-model-intro'], 630 }, 631 { 632 to: '/genai/flavors/custom-pyfunc-for-llms', 633 from: ['/llms/custom-pyfunc-for-llms', '/llms/custom-pyfunc-for-llms/notebooks'], 634 }, 635 { 636 to: '/genai/flavors/custom-pyfunc-for-llms/notebooks/custom-pyfunc-advanced-llm', 637 from: ['/llms/custom-pyfunc-for-llms/notebooks/custom-pyfunc-advanced-llm'], 638 }, 639 { 640 to: '/genai/flavors/dspy', 641 from: ['/llms/dspy'], 642 }, 643 { 644 to: '/genai/flavors/dspy/notebooks/dspy_quickstart', 645 from: ['/llms/dspy/notebooks/dspy_quickstart'], 646 }, 647 { 648 to: '/genai/flavors/dspy/optimizer', 649 from: ['/llms/dspy/optimizer'], 650 }, 651 { 652 to: '/genai/flavors/langchain', 653 from: ['/llms/langchain'], 654 }, 655 { 656 to: '/genai/flavors/langchain/autologging', 657 from: ['/llms/langchain/autologging'], 658 }, 659 { 660 to: '/genai/flavors/langchain/guide', 661 from: ['/llms/langchain/guide'], 662 }, 663 { 664 to: '/genai/flavors/langchain/notebooks/langchain-quickstart', 665 from: ['/llms/langchain/notebooks/langchain-quickstart'], 666 }, 667 { 668 to: '/genai/flavors/langchain/notebooks/langchain-retriever', 669 from: ['/llms/langchain/notebooks/langchain-retriever'], 670 }, 671 { 672 to: '/genai/flavors/llama-index', 673 from: ['/llms/llama-index'], 674 }, 675 { 676 to: '/genai/flavors/llama-index/notebooks/llama_index_quickstart', 677 from: ['/llms/llama-index/notebooks/llama_index_quickstart'], 678 }, 679 { 680 to: '/genai/flavors/llama-index/notebooks/llama_index_workflow_tutorial', 681 from: ['/llms/llama-index/notebooks/llama_index_workflow_tutorial'], 682 }, 683 // Redirect deprecated OpenAI model logging pages to prompt registry 684 { 685 to: '/genai/prompt-registry', 686 from: [ 687 '/llms/openai', 688 '/llms/openai/guide', 689 '/llms/openai/guide/index', 690 '/llms/openai/autologging', 691 '/llms/openai/autologging/index', 692 '/llms/openai/notebooks', 693 '/llms/openai/notebooks/index', 694 '/llms/openai/notebooks/openai-quickstart-ipynb', 695 '/llms/openai/notebooks/openai-chat-completions-ipynb', 696 '/genai/flavors/openai', 697 '/genai/flavors/openai/index', 698 '/genai/flavors/openai/guide', 699 '/genai/flavors/openai/guide/index', 700 '/genai/flavors/openai/autologging', 701 '/genai/flavors/openai/autologging/index', 702 '/genai/flavors/openai/notebooks', 703 '/genai/flavors/openai/notebooks/index', 704 '/genai/flavors/openai/notebooks/openai-quickstart-ipynb', 705 '/genai/flavors/openai/notebooks/openai-chat-completions-ipynb', 706 '/genai/flavors/openai/notebooks/openai-code-helper-ipynb', 707 '/genai/flavors/openai/notebooks/openai-embeddings-generation-ipynb', 708 ], 709 }, 710 711 // Evaluation and Monitoring Redirects 712 { 713 to: '/genai/eval-monitor', 714 from: ['/llms/llm-evaluate'], 715 }, 716 { 717 to: '/genai/eval-monitor', 718 from: [ 719 '/llms/llm-evaluate/notebooks', 720 '/llms/llm-evaluate/notebooks/huggingface-evaluation', 721 '/llms/llm-evaluate/notebooks/question-answering-evaluation', 722 '/llms/llm-evaluate/notebooks/rag-evaluation', 723 '/llms/llm-evaluate/notebooks/rag-evaluation-llama2', 724 ], 725 }, 726 { 727 to: '/genai/eval-monitor/scorers/llm-judge/custom-judges', 728 from: [ 729 '/genai/eval-monitor/scorers/llm-judge/trace-analysis', 730 '/genai/eval-monitor/scorers/llm-judge/agent-behavior-patterns', 731 ], 732 }, 733 { 734 to: '/genai/datasets', 735 from: ['/genai/eval-monitor/scorers/llm-judge/dataset'], 736 }, 737 // Classic ML Evaluation Redirects - consolidated to single page 738 { 739 to: '/ml/evaluation', 740 from: [ 741 '/ml/evaluation/model-eval', 742 '/ml/evaluation/dataset-eval', 743 '/ml/evaluation/function-eval', 744 '/ml/evaluation/metrics-visualizations', 745 '/ml/evaluation/shap', 746 '/ml/evaluation/plugin-evaluators', 747 ], 748 }, 749 // Prompt Management Redirects 750 { 751 to: '/genai/prompt-registry/prompt-engineering', 752 from: ['/llms/prompt-engineering', '/genai/prompt-version-mgmt/prompt-engineering'], 753 }, 754 { 755 to: '/genai/prompt-registry', 756 from: ['/prompts', '/genai/prompt-version-mgmt/prompt-registry'], 757 }, 758 { 759 to: '/genai/prompt-registry/manage-prompt-lifecycles-with-aliases', 760 from: ['/prompts/cm', '/genai/prompt-version-mgmt/prompt-registry/manage-prompt-lifecycles-with-aliases'], 761 }, 762 { 763 to: '/genai/prompt-registry/evaluate-prompts', 764 from: ['/prompts/evaluate', '/genai/prompt-version-mgmt/prompt-registry/evaluate-prompts'], 765 }, 766 { 767 to: '/genai/prompt-registry/log-with-model', 768 from: ['/prompts/run-and-model', '/genai/prompt-version-mgmt/prompt-registry/log-with-model'], 769 }, 770 { 771 to: '/genai/prompt-registry/optimize-prompts', 772 from: [ 773 '/genai/prompt-version-mgmt/optimize-prompts', 774 '/genai/prompt-version-mgmt/prompt-registry/optimize-prompts', 775 ], 776 }, 777 { 778 to: '/genai/prompt-registry/create-and-edit-prompts', 779 from: ['/genai/prompt-version-mgmt/prompt-registry/create-and-edit-prompts'], 780 }, 781 { 782 to: '/genai/prompt-registry/use-prompts-in-apps', 783 from: ['/genai/prompt-version-mgmt/prompt-registry/use-prompts-in-apps'], 784 }, 785 { 786 to: '/genai/prompt-registry/structured-output', 787 from: ['/genai/prompt-version-mgmt/prompt-registry/structured-output'], 788 }, 789 { 790 to: '/genai/version-tracking', 791 from: ['/genai/prompt-version-mgmt/version-tracking'], 792 }, 793 { 794 to: '/genai/version-tracking/quickstart', 795 from: ['/genai/prompt-version-mgmt/version-tracking/quickstart'], 796 }, 797 { 798 to: '/genai/version-tracking/track-application-versions-with-mlflow', 799 from: ['/genai/prompt-version-mgmt/version-tracking/track-application-versions-with-mlflow'], 800 }, 801 { 802 to: '/genai/version-tracking/compare-app-versions', 803 from: ['/genai/prompt-version-mgmt/version-tracking/compare-app-versions'], 804 }, 805 806 // ResponsesAgent Redirects 807 { 808 to: '/genai/flavors/responses-agent-intro', 809 from: ['/llms/responses-agent-intro'], 810 }, 811 812 // Governance and Deployments Redirects 813 { 814 to: '/genai/governance/ai-gateway', 815 from: [ 816 '/llms/deployments/', 817 '/llms/gateway/index', 818 '/llms/gateway', 819 '/llms/deployments/guides', 820 '/llms/gateway/guides/index', 821 '/llms/gateway/guide', 822 '/genai/governance/ai-gateway/guides', 823 ], 824 }, 825 { 826 to: '/genai/governance/ai-gateway', 827 from: [ 828 '/llms/deployments/guides/step1-create-deployments', 829 '/llms/gateway/guides/step1-create-gateway', 830 '/genai/governance/ai-gateway/guides/step1-create-deployments', 831 ], 832 }, 833 { 834 to: '/genai/governance/ai-gateway/quickstart', 835 from: ['/genai/governance/ai-gateway/setup'], 836 }, 837 { 838 to: '/genai/governance/ai-gateway', 839 from: [ 840 '/llms/deployments/guides/step2-query-deployments', 841 '/llms/gateway/guides/step2-query-gateway', 842 '/genai/governance/ai-gateway/guides/step2-query-deployments', 843 '/genai/governance/ai-gateway/usage', 844 ], 845 }, 846 { 847 to: '/genai/governance/ai-gateway', 848 from: [ 849 '/genai/governance/ai-gateway/legacy', 850 '/genai/governance/ai-gateway/legacy/index', 851 '/genai/governance/ai-gateway/legacy/setup', 852 '/genai/governance/ai-gateway/legacy/configuration', 853 '/genai/governance/ai-gateway/legacy/usage', 854 ], 855 }, 856 { 857 to: '/genai/governance/ai-gateway', 858 from: [ 859 '/llms/deployments/uc_integration', 860 '/genai/governance/unity-catalog', 861 '/genai/governance/ai-gateway/integration', 862 ], 863 }, 864 865 // Traditional ML and Core MLflow Redirects 866 { 867 to: '/ml', 868 from: ['/introduction'], 869 }, 870 { 871 to: '/self-hosting/security/basic-http-auth', 872 from: ['/auth'], 873 }, 874 { 875 to: '/ml/community-model-flavors', 876 from: ['/community-model-flavors'], 877 }, 878 { 879 to: '/ml/dataset', 880 from: ['/dataset', '/tracking/data-api/index', '/tracking/data-api'], 881 }, 882 { 883 to: '/ml/deep-learning', 884 from: ['/deep-learning'], 885 }, 886 { 887 to: '/ml/deep-learning/keras', 888 from: ['/deep-learning/keras'], 889 }, 890 { 891 to: '/ml/deep-learning/keras', 892 from: ['/deep-learning/keras/quickstart/quickstart_keras'], 893 }, 894 { 895 to: '/ml/deep-learning/keras', 896 from: ['/deep-learning/keras/guide', '/ml/deep-learning/keras/guide'], 897 }, 898 { 899 to: '/ml/deep-learning/pytorch', 900 from: ['/deep-learning/pytorch'], 901 }, 902 // Redirect consolidated pytorch guide and quickstart to index 903 { 904 to: '/ml/deep-learning/pytorch', 905 from: [ 906 '/deep-learning/pytorch/guide', 907 '/ml/deep-learning/pytorch/guide', 908 '/deep-learning/pytorch/quickstart/pytorch_quickstart', 909 '/ml/deep-learning/pytorch/quickstart/quickstart-pytorch', 910 ], 911 }, 912 // Redirect consolidated spaCy guide to index 913 { 914 to: '/ml/deep-learning/spacy', 915 from: [ 916 '/deep-learning/spacy/guide', 917 '/classic-ml/deep-learning/spacy/guide', 918 '/ml/deep-learning/spacy/guide', 919 ], 920 }, 921 { 922 to: '/ml/deep-learning/sentence-transformers', 923 from: ['/llms/sentence-transformers'], 924 }, 925 { 926 to: '/ml/deep-learning/sentence-transformers', 927 from: ['/llms/sentence-transformers/tutorials', '/ml/deep-learning/sentence-transformers/tutorials'], 928 }, 929 { 930 to: '/ml/deep-learning/sentence-transformers/tutorials/paraphrase-mining/paraphrase-mining-sentence-transformers', 931 from: ['/llms/sentence-transformers/tutorials/paraphrase-mining/paraphrase-mining-sentence-transformers'], 932 }, 933 { 934 to: '/ml/deep-learning/sentence-transformers/tutorials/quickstart/sentence-transformers-quickstart', 935 from: ['/llms/sentence-transformers/tutorials/quickstart/sentence-transformers-quickstart'], 936 }, 937 { 938 to: '/ml/deep-learning/sentence-transformers/tutorials/semantic-search/semantic-search-sentence-transformers', 939 from: ['/llms/sentence-transformers/tutorials/semantic-search/semantic-search-sentence-transformers'], 940 }, 941 { 942 to: '/ml/deep-learning/sentence-transformers/tutorials/semantic-similarity/semantic-similarity-sentence-transformers', 943 from: [ 944 '/llms/sentence-transformers/tutorials/semantic-similarity/semantic-similarity-sentence-transformers', 945 ], 946 }, 947 { 948 to: '/ml/deep-learning/sentence-transformers', 949 from: ['/llms/sentence-transformers/guide', '/ml/deep-learning/sentence-transformers/guide'], 950 }, 951 { 952 to: '/ml/deep-learning/tensorflow', 953 from: ['/deep-learning/tensorflow'], 954 }, 955 // Redirect consolidated tensorflow guide and quickstart to index 956 { 957 to: '/ml/deep-learning/tensorflow', 958 from: [ 959 '/deep-learning/tensorflow/guide', 960 '/ml/deep-learning/tensorflow/guide', 961 '/deep-learning/tensorflow/quickstart/quickstart_tensorflow', 962 '/ml/deep-learning/tensorflow/quickstart/quickstart-tensorflow', 963 ], 964 }, 965 { 966 to: '/ml/deep-learning/transformers', 967 from: ['/llms/transformers'], 968 }, 969 { 970 to: '/ml/deep-learning/transformers/guide', 971 from: ['/llms/transformers/guide'], 972 }, 973 { 974 to: '/ml/deep-learning/transformers/large-models', 975 from: ['/llms/transformers/large-models'], 976 }, 977 { 978 to: '/ml/deep-learning/transformers/task', 979 from: ['/llms/transformers/task'], 980 }, 981 { 982 to: '/ml/deep-learning/transformers/tutorials', 983 from: ['/llms/transformers/tutorials'], 984 }, 985 { 986 to: '/ml/deep-learning/transformers/tutorials/audio-transcription/whisper', 987 from: ['/llms/transformers/tutorials/audio-transcription/whisper'], 988 }, 989 { 990 to: '/ml/deep-learning/transformers/tutorials/conversational/conversational-model', 991 from: ['/llms/transformers/tutorials/conversational/conversational-model'], 992 }, 993 { 994 to: '/ml/deep-learning/transformers/tutorials/conversational/pyfunc-chat-model', 995 from: ['/llms/transformers/tutorials/conversational/pyfunc-chat-model'], 996 }, 997 { 998 to: '/ml/deep-learning/transformers/tutorials/fine-tuning/transformers-fine-tuning', 999 from: ['/llms/transformers/tutorials/fine-tuning/transformers-fine-tuning'], 1000 }, 1001 { 1002 to: '/ml/deep-learning/transformers/tutorials/fine-tuning/transformers-peft', 1003 from: ['/llms/transformers/tutorials/fine-tuning/transformers-peft'], 1004 }, 1005 { 1006 to: '/ml/deep-learning/transformers/tutorials/prompt-templating/prompt-templating', 1007 from: ['/llms/transformers/tutorials/prompt-templating/prompt-templating'], 1008 }, 1009 { 1010 to: '/ml/deep-learning/transformers/tutorials/text-generation/text-generation', 1011 from: ['/llms/transformers/tutorials/text-generation/text-generation'], 1012 }, 1013 { 1014 to: '/ml/deep-learning/transformers/tutorials/translation/component-translation', 1015 from: ['/llms/transformers/tutorials/translation/component-translation'], 1016 }, 1017 { 1018 to: '/ml/deployment', 1019 from: ['/deployment'], 1020 }, 1021 { 1022 to: '/ml/deployment/deploy-model-locally', 1023 from: ['/deployment/deploy-model-locally'], 1024 }, 1025 { 1026 to: '/ml/deployment/deploy-model-to-kubernetes', 1027 from: ['/deployment/deploy-model-to-kubernetes'], 1028 }, 1029 { 1030 to: '/ml/deployment/deploy-model-to-kubernetes/tutorial', 1031 from: ['/deployment/deploy-model-to-kubernetes/tutorial'], 1032 }, 1033 { 1034 to: '/ml/deployment/deploy-model-to-sagemaker', 1035 from: ['/deployment/deploy-model-to-sagemaker'], 1036 }, 1037 { 1038 to: '/ml/docker', 1039 from: ['/docker'], 1040 }, 1041 { 1042 to: '/ml/evaluation', 1043 from: ['/model-evaluation'], 1044 }, 1045 { 1046 to: '/ml/getting-started', 1047 from: ['/getting-started'], 1048 }, 1049 { 1050 to: '/ml/getting-started/hyperparameter-tuning', 1051 from: ['/getting-started/quickstart-2'], 1052 }, 1053 { 1054 to: '/ml/getting-started', 1055 from: [ 1056 '/getting-started/logging-first-model', 1057 '/getting-started/logging-first-model/notebooks', 1058 '/getting-started/logging-first-model/notebooks/logging-first-model', 1059 '/getting-started/logging-first-model/step1-tracking-server', 1060 '/getting-started/logging-first-model/step2-mlflow-client', 1061 '/getting-started/logging-first-model/step3-create-experiment', 1062 '/getting-started/logging-first-model/step4-experiment-search', 1063 '/getting-started/logging-first-model/step5-synthetic-data', 1064 '/getting-started/logging-first-model/step6-logging-a-run', 1065 '/getting-started/registering-first-model', 1066 '/getting-started/registering-first-model/step1-register-model', 1067 '/getting-started/registering-first-model/step2-explore-registered-model', 1068 '/getting-started/registering-first-model/step3-load-model', 1069 '/getting-started/running-notebooks', 1070 '/getting-started/tracking-server-overview', 1071 '/getting-started/tracking-server-overview/notebooks', 1072 '/getting-started/tracking-server-overview/notebooks/tracking-server-overview', 1073 '/getting-started/tracking-server-overview/step1-tracking-server', 1074 // /ml redirects 1075 '/ml/getting-started/logging-first-model', 1076 '/ml/getting-started/logging-first-model/notebooks', 1077 '/ml/getting-started/logging-first-model/notebooks/logging-first-model', 1078 '/ml/getting-started/logging-first-model/step1-tracking-server', 1079 '/ml/getting-started/logging-first-model/step2-mlflow-client', 1080 '/ml/getting-started/logging-first-model/step3-create-experiment', 1081 '/ml/getting-started/logging-first-model/step4-experiment-search', 1082 '/ml/getting-started/logging-first-model/step5-synthetic-data', 1083 '/ml/getting-started/logging-first-model/step6-logging-a-run', 1084 '/ml/getting-started/registering-first-model', 1085 '/ml/getting-started/registering-first-model/step1-register-model', 1086 '/ml/getting-started/registering-first-model/step2-explore-registered-model', 1087 '/ml/getting-started/registering-first-model/step3-load-model', 1088 '/ml/getting-started/tracking-server-overview', 1089 ], 1090 }, 1091 { 1092 to: '/ml/model-registry', 1093 from: ['/model-registry', '/registry'], 1094 }, 1095 { 1096 to: '/ml/model', 1097 from: ['/model', '/models'], 1098 }, 1099 { 1100 to: '/ml/model/dependencies', 1101 from: ['/model/dependencies'], 1102 }, 1103 { 1104 to: '/ml/model/models-from-code', 1105 from: ['/model/models-from-code'], 1106 }, 1107 { 1108 to: '/ml/model/notebooks/signature_examples', 1109 from: ['/model/notebooks/signature_examples'], 1110 }, 1111 { 1112 to: '/ml/model/python_model', 1113 from: ['/model/python_model'], 1114 }, 1115 { 1116 to: '/ml/model/signatures', 1117 from: ['/model/signatures'], 1118 }, 1119 { 1120 to: '/ml/plugins', 1121 from: ['/plugins'], 1122 }, 1123 { 1124 to: '/ml/projects', 1125 from: ['/projects'], 1126 }, 1127 { 1128 to: '/ml/search/search-experiments', 1129 from: ['/search-experiments'], 1130 }, 1131 { 1132 to: '/ml/search/search-runs', 1133 from: ['/search-runs'], 1134 }, 1135 { 1136 to: '/ml/tracking', 1137 from: ['/tracking'], 1138 }, 1139 { 1140 to: '/ml/tracking/autolog', 1141 from: ['/tracking/autolog'], 1142 }, 1143 { 1144 to: '/ml/tracking/quickstart', 1145 from: [ 1146 '/getting-started/intro-quickstart', 1147 '/getting-started/intro-quickstart/notebooks', 1148 '/quickstart_drilldown', 1149 '/getting-started/intro-quickstart/notebooks/tracking_quickstart', 1150 '/ml/tracking/quickstart/notebooks/tracking_quickstart', 1151 ], 1152 }, 1153 { 1154 to: '/ml/tracking/system-metrics', 1155 from: ['/system-metrics'], 1156 }, 1157 { 1158 to: '/ml/tracking/tracking-api', 1159 from: ['/tracking/tracking-api'], 1160 }, 1161 { 1162 to: '/ml/tracking/tutorials/local-database', 1163 from: ['/tracking/tutorials/local-database'], 1164 }, 1165 { 1166 to: '/ml/tracking/tutorials/remote-server', 1167 from: ['/tracking/tutorials/remote-server'], 1168 }, 1169 { 1170 to: '/ml/traditional-ml', 1171 from: ['/traditional-ml'], 1172 }, 1173 // Redirect consolidated prophet guide to index 1174 { 1175 to: '/ml/traditional-ml/prophet', 1176 from: ['/ml/traditional-ml/prophet/guide'], 1177 }, 1178 // Redirect consolidated sparkml guide to index 1179 { 1180 to: '/ml/traditional-ml/sparkml', 1181 from: ['/ml/traditional-ml/sparkml/guide'], 1182 }, 1183 { 1184 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc', 1185 from: ['/traditional-ml/creating-custom-pyfunc'], 1186 }, 1187 { 1188 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks', 1189 from: ['/traditional-ml/creating-custom-pyfunc/notebooks'], 1190 }, 1191 { 1192 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/basic-pyfunc', 1193 from: ['/traditional-ml/creating-custom-pyfunc/notebooks/basic-pyfunc'], 1194 }, 1195 { 1196 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/introduction', 1197 from: ['/traditional-ml/creating-custom-pyfunc/notebooks/introduction'], 1198 }, 1199 { 1200 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/notebooks/override-predict', 1201 from: ['/traditional-ml/creating-custom-pyfunc/notebooks/override-predict'], 1202 }, 1203 { 1204 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/part1-named-flavors', 1205 from: ['/traditional-ml/creating-custom-pyfunc/part1-named-flavors'], 1206 }, 1207 { 1208 to: '/ml/traditional-ml/tutorials/creating-custom-pyfunc/part2-pyfunc-components', 1209 from: ['/traditional-ml/creating-custom-pyfunc/part2-pyfunc-components'], 1210 }, 1211 { 1212 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning', 1213 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs'], 1214 }, 1215 { 1216 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks', 1217 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks'], 1218 }, 1219 { 1220 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/hyperparameter-tuning-with-child-runs', 1221 from: [ 1222 '/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/hyperparameter-tuning-with-child-runs', 1223 ], 1224 }, 1225 { 1226 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/logging-plots-in-mlflow', 1227 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/logging-plots-in-mlflow'], 1228 }, 1229 { 1230 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/notebooks/parent-child-runs', 1231 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/notebooks/parent-child-runs'], 1232 }, 1233 { 1234 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/part1-child-runs', 1235 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/part1-child-runs'], 1236 }, 1237 { 1238 to: '/ml/traditional-ml/tutorials/hyperparameter-tuning/part2-logging-plots', 1239 from: ['/traditional-ml/hyperparameter-tuning-with-child-runs/part2-logging-plots'], 1240 }, 1241 { 1242 to: '/ml/traditional-ml/tutorials/serving-multiple-models-with-pyfunc', 1243 from: ['/traditional-ml/serving-multiple-models-with-pyfunc'], 1244 }, 1245 { 1246 to: '/ml/traditional-ml/tutorials/serving-multiple-models-with-pyfunc/notebooks/MME_Tutorial', 1247 from: ['/traditional-ml/serving-multiple-models-with-pyfunc/notebooks/MME_Tutorial'], 1248 }, 1249 { 1250 to: '/ml/tutorials-and-examples', 1251 from: ['/tutorials-and-examples'], 1252 }, 1253 // Redirect removed sklearn subdirectories to consolidated page 1254 { 1255 to: '/ml/traditional-ml/sklearn/', 1256 from: ['/ml/traditional-ml/sklearn/guide', '/ml/traditional-ml/sklearn/quickstart/quickstart-sklearn'], 1257 }, 1258 // Redirect removed XGBoost subdirectories to consolidated page 1259 { 1260 to: '/ml/traditional-ml/xgboost/', 1261 from: ['/ml/traditional-ml/xgboost/guide', '/ml/traditional-ml/xgboost/quickstart/quickstart-xgboost'], 1262 }, 1263 ], 1264 }, 1265 ], 1266 ], 1267 }; 1268 1269 export default config;