CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1) | by Plotly | Plotly | Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2024-03-25T20:49:19.695Z"/><meta data-rh="true" name="title" content="Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1) | by Plotly | Plotly | Medium"/><meta data-rh="true" property="og:title" content="Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)"/><meta data-rh="true" property="al:android:url" content="medium://p/6bfb8a86872b"/><meta data-rh="true" property="al:ios:url" content="medium://p/6bfb8a86872b"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="It has never been easier to develop and deploy custom LLMs tailored to your organization. Gone are the days of parsing through pages of documentation and code across different websites and services…"/><meta data-rh="true" property="og:description" content="Web applications created with Plotly Dash for nontechnical end users to register, deploy, and serve LLMs interactively via Databricks."/><meta data-rh="true" property="og:url" content="https://medium.com/plotly/amplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b"/><meta data-rh="true" property="al:web:url" content="https://medium.com/plotly/amplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/da:true/resize:fit:800/0*mQ-8QvDpcUY5CAqd"/><meta data-rh="true" property="article:author" content="https://plotlygraphs.medium.com"/><meta data-rh="true" name="author" content="Plotly"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)"/><meta data-rh="true" name="twitter:site" content="@plotlygraphs"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/6bfb8a86872b"/><meta data-rh="true" property="twitter:description" content="Web applications created with Plotly Dash for nontechnical end users to register, deploy, and serve LLMs interactively via Databricks."/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/da:true/resize:fit:800/0*mQ-8QvDpcUY5CAqd"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:creator" content="@plotlygraphs"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="6 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" rel="preconnect" href="https://glyph.medium.com" crossOrigin=""/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://plotlygraphs.medium.com"/><link data-rh="true" rel="canonical" href="https://medium.com/plotly/amplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/6bfb8a86872b"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fda:true\u002Fresize:fit:1200\u002F0*mQ-8QvDpcUY5CAqd"],"url":"https:\u002F\u002Fmedium.com\u002Fplotly\u002Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b","dateCreated":"2024-03-25T18:08:48.106Z","datePublished":"2024-03-25T18:08:48.106Z","dateModified":"2024-03-26T04:20:40.367Z","headline":"Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)","name":"Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)","description":"It has never been easier to develop and deploy custom LLMs tailored to your organization. Gone are the days of parsing through pages of documentation and code across different websites and services…","identifier":"6bfb8a86872b","author":{"@type":"Person","name":"Plotly","url":"https:\u002F\u002Fplotlygraphs.medium.com"},"creator":["Plotly"],"publisher":{"@type":"Organization","name":"Plotly","url":"https:\u002F\u002Fmedium.com\u002Fplotly","logo":{"@type":"ImageObject","width":60,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:120\u002F1*BGP-bpgUuP8pmEZuMiGJAA.jpeg"}},"mainEntityOfPage":"https:\u002F\u002Fmedium.com\u002Fplotly\u002Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b"}</script><style type="text/css" data-fela-rehydration="520" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="520" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(26, 137, 23, 1)}.es{border-color:rgba(26, 137, 23, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(26, 137, 23, 1)}.ez:disabled:hover{border-color:rgba(26, 137, 23, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gn{word-break:break-word}.go{word-wrap:break-word}.gp:after{display:block}.gq:after{content:""}.gr:after{clear:both}.gs{line-height:1.23}.gt{letter-spacing:0}.gu{font-style:normal}.gv{font-weight:700}.ia{align-items:baseline}.ib{width:48px}.ic{height:48px}.id{border:2px solid rgba(255, 255, 255, 1)}.ie{z-index:0}.if{box-shadow:none}.ig{border:1px solid rgba(0, 0, 0, 0.05)}.ih{margin-left:-12px}.ii{width:28px}.ij{height:28px}.ik{z-index:1}.il{width:24px}.im{margin-bottom:2px}.in{flex-wrap:nowrap}.io{font-size:16px}.ip{line-height:24px}.ir{margin:0 8px}.is{display:inline}.it{color:rgba(26, 137, 23, 1)}.iu{fill:rgba(26, 137, 23, 1)}.ix{flex:0 0 auto}.ja{flex-wrap:wrap}.jd{white-space:pre-wrap}.je{margin-right:4px}.jf{overflow:hidden}.jg{max-height:20px}.jh{text-overflow:ellipsis}.ji{display:-webkit-box}.jj{-webkit-line-clamp:1}.jk{-webkit-box-orient:vertical}.jl{word-break:break-all}.jn{padding-left:8px}.jo{padding-right:8px}.kp> *{flex-shrink:0}.kq{overflow-x:scroll}.kr::-webkit-scrollbar{display:none}.ks{scrollbar-width:none}.kt{-ms-overflow-style:none}.ku{width:74px}.kv{flex-direction:row}.kw{z-index:2}.kz{-webkit-user-select:none}.la{border:0}.lb{fill:rgba(117, 117, 117, 1)}.le{outline:0}.lf{user-select:none}.lg> svg{pointer-events:none}.lp{cursor:progress}.lq{opacity:1}.lr{padding:4px 0}.lu{margin-top:0px}.lv{width:16px}.lx{display:inline-flex}.md{max-width:100%}.me{padding:8px 2px}.mf svg{color:#6B6B6B}.mw{line-height:1.58}.mx{letter-spacing:-0.004em}.my{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.nt{margin-bottom:-0.46em}.nu{text-decoration:underline}.nv{margin-left:auto}.nw{margin-right:auto}.nx{max-width:800px}.od{clear:both}.of{cursor:zoom-in}.og{z-index:auto}.oi{height:auto}.oj{margin-top:10px}.ok{max-width:728px}.on{font-weight:600}.oo{font-style:inherit}.op{line-height:1.18}.oq{letter-spacing:-0.022em}.pg{margin-bottom:-0.31em}.pm{font-style:italic}.pn{list-style-type:decimal}.po{margin-left:30px}.pp{padding-left:0px}.pv{max-width:1600px}.pw{max-width:600px}.px{margin-bottom:26px}.py{margin-top:6px}.pz{margin-top:8px}.qa{margin-right:8px}.qb{padding:8px 16px}.qc{border-radius:100px}.qd{transition:background 300ms ease}.qf{white-space:nowrap}.qg{border-top:none}.qm{height:52px}.qn{max-height:52px}.qo{box-sizing:content-box}.qp{position:static}.qr{max-width:155px}.qx{margin-right:20px}.rd{margin-bottom:48px}.rr{border-radius:2px}.rt{height:64px}.ru{width:64px}.rv{align-self:flex-end}.rw{flex:1 1 auto}.sc{padding-right:4px}.sd{font-weight:500}.sk{margin-top:16px}.sl{color:rgba(255, 255, 255, 1)}.sm{fill:rgba(255, 255, 255, 1)}.sn{background:rgba(25, 25, 25, 1)}.so{border-color:rgba(25, 25, 25, 1)}.sr:disabled{opacity:0.1}.ss:disabled:hover{background:rgba(25, 25, 25, 1)}.st:disabled:hover{border-color:rgba(25, 25, 25, 1)}.su{height:0px}.sv{border-bottom:solid 1px #E5E5E5}.sw{margin-top:56px}.sx{margin-top:72px}.sy{padding:24px 0}.sz{margin-bottom:0px}.ta{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(15, 115, 12, 1)}.eu:hover{border-color:rgba(15, 115, 12, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.iq:hover{text-decoration:underline}.iv:hover:not(:disabled){color:rgba(15, 115, 12, 1)}.iw:hover:not(:disabled){fill:rgba(15, 115, 12, 1)}.ld:hover{fill:rgba(8, 8, 8, 1)}.ls:hover{fill:#000000}.lt:hover p{color:#000000}.lw:hover{color:#000000}.mg:hover svg{color:#000000}.qe:hover{background-color:#F2F2F2}.rs:hover{background-color:none}.sp:hover{background:#000000}.sq:hover{border-color:#242424}.bd:focus-within path{fill:#242424}.lc:focus{fill:rgba(8, 8, 8, 1)}.mh:focus svg{color:#000000}.oh:focus{transform:scale(1.01)}.lh:active{border-style:none}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:68px}.gc{max-width:680px}.hq{font-size:42px}.hr{margin-top:1.19em}.hs{margin-bottom:32px}.ht{line-height:52px}.hu{letter-spacing:-0.011em}.hz{align-items:center}.kb{border-top:solid 1px #F2F2F2}.kc{border-bottom:solid 1px #F2F2F2}.kd{margin:32px 0 0}.ke{padding:3px 8px}.kn> *{margin-right:24px}.ko> :last-child{margin-right:0}.lo{margin-top:0px}.mc{margin:0}.np{font-size:20px}.nq{margin-top:2.14em}.nr{line-height:32px}.ns{letter-spacing:-0.003em}.oc{margin-top:56px}.pd{margin-top:1.72em}.pe{line-height:24px}.pf{letter-spacing:0}.pl{margin-top:0.94em}.pu{margin-top:1.14em}.ql{margin-bottom:88px}.qw{display:inline-block}.rc{padding-top:72px}.re{flex-direction:row}.rh{margin-bottom:0}.ri{margin-right:20px}.rx{max-width:500px}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.ln{margin-top:0px}.ol{margin-left:auto}.om{text-align:center}.qv{display:inline-block}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.lm{margin-top:0px}.qu{display:inline-block}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.lk{margin-top:0px}.ll{margin-right:0px}.qt{display:inline-block}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:4px}.gw{font-size:32px}.gx{margin-top:1.01em}.gy{margin-bottom:24px}.gz{line-height:38px}.ha{letter-spacing:-0.014em}.hv{align-items:flex-start}.iy{flex-direction:column}.jb{margin-bottom:2px}.jp{margin:24px -24px 0}.jq{padding:0}.kf> *{margin-right:8px}.kg> :last-child{margin-right:24px}.kx{margin-left:0px}.li{margin-top:0px}.lj{margin-right:0px}.ly{margin:0}.mi{border:1px solid #F2F2F2}.mj{border-radius:99em}.mk{padding:0px 16px 0px 12px}.ml{height:38px}.mm{align-items:center}.mo svg{margin-right:8px}.mz{font-size:18px}.na{margin-top:1.56em}.nb{line-height:28px}.nc{letter-spacing:-0.003em}.ny{margin-top:40px}.or{font-size:16px}.os{margin-top:1.23em}.ot{letter-spacing:0}.ph{margin-top:0.67em}.pq{margin-top:1.34em}.qh{margin-bottom:80px}.qs{display:inline-block}.qy{padding-top:48px}.rp{margin-bottom:20px}.rq{margin-right:0}.sb{max-width:100%}.se{font-size:24px}.sf{line-height:30px}.sg{letter-spacing:-0.016em}.mn:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:68px}.gb{max-width:680px}.hl{font-size:42px}.hm{margin-top:1.19em}.hn{margin-bottom:32px}.ho{line-height:52px}.hp{letter-spacing:-0.011em}.hy{align-items:center}.jx{border-top:solid 1px #F2F2F2}.jy{border-bottom:solid 1px #F2F2F2}.jz{margin:32px 0 0}.ka{padding:3px 8px}.kl> *{margin-right:24px}.km> :last-child{margin-right:0}.mb{margin:0}.nl{font-size:20px}.nm{margin-top:2.14em}.nn{line-height:32px}.no{letter-spacing:-0.003em}.ob{margin-top:56px}.pa{margin-top:1.72em}.pb{line-height:24px}.pc{letter-spacing:0}.pk{margin-top:0.94em}.pt{margin-top:1.14em}.qk{margin-bottom:88px}.rb{padding-top:72px}.rf{flex-direction:row}.rj{margin-bottom:0}.rk{margin-right:20px}.ry{max-width:500px}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:68px}.ga{max-width:680px}.hg{font-size:42px}.hh{margin-top:1.19em}.hi{margin-bottom:32px}.hj{line-height:52px}.hk{letter-spacing:-0.011em}.hx{align-items:center}.jt{border-top:solid 1px #F2F2F2}.ju{border-bottom:solid 1px #F2F2F2}.jv{margin:32px 0 0}.jw{padding:3px 8px}.kj> *{margin-right:24px}.kk> :last-child{margin-right:0}.ma{margin:0}.nh{font-size:20px}.ni{margin-top:2.14em}.nj{line-height:32px}.nk{letter-spacing:-0.003em}.oa{margin-top:56px}.ox{margin-top:1.72em}.oy{line-height:24px}.oz{letter-spacing:0}.pj{margin-top:0.94em}.ps{margin-top:1.14em}.qj{margin-bottom:88px}.ra{padding-top:72px}.rg{flex-direction:row}.rl{margin-bottom:0}.rm{margin-right:20px}.rz{max-width:500px}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:4px}.hb{font-size:32px}.hc{margin-top:1.01em}.hd{margin-bottom:24px}.he{line-height:38px}.hf{letter-spacing:-0.014em}.hw{align-items:flex-start}.iz{flex-direction:column}.jc{margin-bottom:2px}.jr{margin:24px 0 0}.js{padding:0}.kh> *{margin-right:8px}.ki> :last-child{margin-right:8px}.ky{margin-left:0px}.lz{margin:0}.mp{border:1px solid #F2F2F2}.mq{border-radius:99em}.mr{padding:0px 16px 0px 12px}.ms{height:38px}.mt{align-items:center}.mv svg{margin-right:8px}.nd{font-size:18px}.ne{margin-top:1.56em}.nf{line-height:28px}.ng{letter-spacing:-0.003em}.nz{margin-top:40px}.ou{font-size:16px}.ov{margin-top:1.23em}.ow{letter-spacing:0}.pi{margin-top:0.67em}.pr{margin-top:1.34em}.qi{margin-bottom:80px}.qz{padding-top:48px}.rn{margin-bottom:20px}.ro{margin-right:0}.sa{max-width:100%}.sh{font-size:24px}.si{line-height:30px}.sj{letter-spacing:-0.016em}.mu:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="print">.qq{display:none}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.jm{max-height:none}</style><style type="text/css" data-fela-rehydration="520" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.oe{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2F6bfb8a86872b&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderCollection&source=---top_nav_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=---top_nav_layout_nav----------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---top_nav_layout_nav-----------------------new_post_topnav-----------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=---top_nav_layout_nav----------------------------------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><div><h1 id="c871" class="pw-post-title gs gt gu bf gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu bk" data-testid="storyTitle">Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="hv hw hx hy hz ab"><div><div class="ab ia"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@plotlygraphs?source=post_page---byline--6bfb8a86872b--------------------------------"><div class="l ib ic by id ie"><div class="l fj"><img alt="Plotly" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*kX7ORGMwq0fhYPlE-qeOoQ.png" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="if by l dd de fs n ig ft"></div></div></div></a></div></div><div class="ih ab fj"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/plotly?source=post_page---byline--6bfb8a86872b--------------------------------" rel="noopener follow"><div class="l ii ij by id ik"><div class="l fj"><img alt="Plotly" class="l fd by br il cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*4R9HdZXaBGLPD_xPoit7iA.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="if by l br il fs n ig ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="im ab q"><div class="ab q in"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b io ip bk"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" data-testid="authorName" rel="noopener follow" href="/@plotlygraphs?source=post_page---byline--6bfb8a86872b--------------------------------">Plotly</a></p></div></div></div><span class="ir is" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b io ip du"><span><a class="it iu ah ai aj ak al am an ao ap aq ar ex iv iw" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F5fdd6522cd45&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&user=Plotly&userId=5fdd6522cd45&source=post_page-5fdd6522cd45--byline--6bfb8a86872b---------------------post_header-----------">Follow</a></span></p></div></div></span></div></div><div class="l ix"><span class="bf b bg z du"><div class="ab cn iy iz ja"><div class="jb jc ab"><div class="bf b bg z du ab jd"><span class="je l ix">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar iq ab q" data-testid="publicationName" href="https://medium.com/plotly?source=post_page---byline--6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b bg z jf jg jh ji jj jk jl jm bk">Plotly</p></a></div></div></div><div class="h k"><span class="ir is" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">6 min read</span><div class="jn jo l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Mar 25, 2024</span></div></span></div></span></div></div></div><div class="ab cp jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke"><div class="h k w fg fh q"><div class="ku l"><div class="ab q kv kw"><div class="pw-multi-vote-icon fj je kx ky kz"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fplotly%2F6bfb8a86872b&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&user=Plotly&userId=5fdd6522cd45&source=---header_actions--6bfb8a86872b---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="la ao lb lc ld le am lf lg lh kz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l li lj lk ll lm ln lo"><p class="bf b dv z du"><span class="lp">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao la lq lr ab q fk ls lt" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="lu"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div><div class="ab q kf kg kh ki kj kk kl km kn ko kp kq kr ks kt"><div class="lv k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F6bfb8a86872b&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&source=---header_actions--6bfb8a86872b---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd lx cn"><div class="l ae"><div class="ab cb"><div class="ly lz ma mb mc md ci bh"><div class="ab"><div class="bm bh" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al me an ao ap ex mf mg lt mh mi mj mk ml s mm mn mo mp mq mr ms u mt mu mv"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al me an ao ap ex mf mg lt mh mi mj mk ml s mm mn mo mp mq mr ms u mt mu mv"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="469a" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk"><strong class="my gv">Author</strong>: <a class="af nu" href="https://www.linkedin.com/in/sachin-seth-8b7b7222b/" rel="noopener ugc nofollow" target="_blank">Sachin Seth</a> <strong class="my gv">Contributors</strong>: <a class="af nu" href="https://www.linkedin.com/in/cal-reynolds-117868149/" rel="noopener ugc nofollow" target="_blank">Cal Reynolds</a>, <a class="af nu" href="https://www.linkedin.com/in/dave-gibbon-8a6219/" rel="noopener ugc nofollow" target="_blank">Dave Gibbon</a></p><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw nx"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*mQ-8QvDpcUY5CAqd 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*mQ-8QvDpcUY5CAqd 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*mQ-8QvDpcUY5CAqd 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*mQ-8QvDpcUY5CAqd 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*mQ-8QvDpcUY5CAqd 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*mQ-8QvDpcUY5CAqd 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*mQ-8QvDpcUY5CAqd 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*mQ-8QvDpcUY5CAqd 640w, https://miro.medium.com/v2/resize:fit:720/0*mQ-8QvDpcUY5CAqd 720w, https://miro.medium.com/v2/resize:fit:750/0*mQ-8QvDpcUY5CAqd 750w, https://miro.medium.com/v2/resize:fit:786/0*mQ-8QvDpcUY5CAqd 786w, https://miro.medium.com/v2/resize:fit:828/0*mQ-8QvDpcUY5CAqd 828w, https://miro.medium.com/v2/resize:fit:1100/0*mQ-8QvDpcUY5CAqd 1100w, https://miro.medium.com/v2/resize:fit:1400/0*mQ-8QvDpcUY5CAqd 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="343" loading="eager" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du"><strong class="bf on"><em class="oo">TL;DR</em></strong><em class="oo">: Nontechnical readers can rejoice (and feel affirmed by</em><a class="af nu" href="https://www.itworldcanada.com/post/nvidia-ceo-says-we-no-longer-need-to-teach-children-to-code#:~:text=At%20the%20World%20Government%20Summit,skill%20for%20the%20younger%20generation." rel="noopener ugc nofollow" target="_blank"><em class="oo"> Jensen Huang’s prediction</em></a><em class="oo">). You too can participate in the LLM revolution by leveraging an intuitive, interactive front end to derive full value from your Data/ML/AI stack, all without having to look at any code. </em><strong class="bf on"><em class="oo">Send this article to your data engineering colleagues.</em></strong></figcaption></figure><h2 id="3e48" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Overview</h2><p id="7942" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">It has never been easier to develop and deploy custom LLMs tailored to your organization. Gone are the days of parsing through pages of documentation and code across different websites and services to leverage an open-source LLM model catered to your data. Instead, this article demonstrates how end users (i.e., non-coders!) can use a Plotly Dash application to check out, register, manage, and deploy LLM models on Databricks, all from the comfort of an interactive web application front end.</p><p id="843f" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">This app in particular acts as a device for exploring models that might be too large to run on your local machine by leveraging high-powered and easily accessible Databricks GPUs. Moving forward, we want this app to be for Databricks, what alternative desktop solutions such as LM Studio or Ooogabooga are for those with the hardware on hand.</p><p id="a0b0" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk"><strong class="my gv">Note</strong><em class="pm">: This article is part one of a two-part series. In this article, we provide the barebones implementation and back end information for our workflow. In article two, we will demonstrate what this workflow is capable of — think complex Plotly visualizations, big data, cascading LLMs, and more!</em></p><h2 id="349a" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">High-level steps</h2><p id="8a54" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">Behind the scenes, this app is running a notebook as a workflow in a Databricks workspace. On a broader level, the process can be broken down into a few steps. This application:</p><ol class=""><li id="a68e" class="mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt pn po pp bk">Allows users to dynamically select either a model from <a class="af nu" href="https://huggingface.co/" rel="noopener ugc nofollow" target="_blank">Hugging Face</a> or one of the Databricks Foundational models.</li><li id="5431" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk">Automatically registers the model to Unity Catalog inside of Databricks with MLFlow and the Databricks SDK.</li><li id="ee68" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk">Dynamically deploys the model to a Serving Endpoint hosted on a Databricks GPU.</li><li id="c989" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk">Provides an interface for querying that model from a sleek, full-stack, Python-based Plotly Dash application.</li></ol><p id="6f50" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">Below is a simple visual architecture that shows this application’s flow:</p><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw pv"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*2FesCnAVy5DudfQH 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*2FesCnAVy5DudfQH 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*2FesCnAVy5DudfQH 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*2FesCnAVy5DudfQH 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*2FesCnAVy5DudfQH 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*2FesCnAVy5DudfQH 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*2FesCnAVy5DudfQH 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*2FesCnAVy5DudfQH 640w, https://miro.medium.com/v2/resize:fit:720/0*2FesCnAVy5DudfQH 720w, https://miro.medium.com/v2/resize:fit:750/0*2FesCnAVy5DudfQH 750w, https://miro.medium.com/v2/resize:fit:786/0*2FesCnAVy5DudfQH 786w, https://miro.medium.com/v2/resize:fit:828/0*2FesCnAVy5DudfQH 828w, https://miro.medium.com/v2/resize:fit:1100/0*2FesCnAVy5DudfQH 1100w, https://miro.medium.com/v2/resize:fit:1400/0*2FesCnAVy5DudfQH 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="436" loading="lazy" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">Our application’s architecture visualized</figcaption></figure><p id="d202" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">In the following steps, we’ll break down this application’s workflow even more granularly. If you are less interested in the nitty-gritty details, skip to our <a class="af nu" href="#f424" rel="noopener ugc nofollow"><strong class="my gv">Conclusion</strong></a> section below.</p><p id="c3a7" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">For a step-by-step guide to running this application, see this article’s corresponding <a class="af nu" href="https://github.com/plotly/dbx_llm_app/tree/main" rel="noopener ugc nofollow" target="_blank">Github repository</a>.</p><h2 id="5ca6" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Browse Hugging Face for a model you want to chat with</h2><p id="0ee8" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">Hugging Face is a platform best known for the development and maintenance of its <em class="pm">Transformers</em> library. The library itself provides a vast collection of pre-trained models for a wide range of NLP tasks as well as refined techniques for fine-tuning and pipeline construction. This article’s Dash app allows for end users to interact with any of Hugging Face’s models without having to know <em class="pm">how</em> to make an interface, host the model, or any of the other technical back end steps.</p><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw pv"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*EuU5SDzfYsQ1P7cz 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*EuU5SDzfYsQ1P7cz 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*EuU5SDzfYsQ1P7cz 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*EuU5SDzfYsQ1P7cz 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*EuU5SDzfYsQ1P7cz 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*EuU5SDzfYsQ1P7cz 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*EuU5SDzfYsQ1P7cz 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*EuU5SDzfYsQ1P7cz 640w, https://miro.medium.com/v2/resize:fit:720/0*EuU5SDzfYsQ1P7cz 720w, https://miro.medium.com/v2/resize:fit:750/0*EuU5SDzfYsQ1P7cz 750w, https://miro.medium.com/v2/resize:fit:786/0*EuU5SDzfYsQ1P7cz 786w, https://miro.medium.com/v2/resize:fit:828/0*EuU5SDzfYsQ1P7cz 828w, https://miro.medium.com/v2/resize:fit:1100/0*EuU5SDzfYsQ1P7cz 1100w, https://miro.medium.com/v2/resize:fit:1400/0*EuU5SDzfYsQ1P7cz 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="344" loading="lazy" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">The Hugging Face platform</figcaption></figure><p id="5a1a" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">An end user of this application can navigate to <a class="af nu" href="https://huggingface.co/" rel="noopener ugc nofollow" target="_blank">Hugging Face</a> to browse and input the name of the model they are interested in chatting with into their Dash app. Hugging Face provides high-level, nontechnical descriptions of each of their hosted models’ capabilities. Currently, this app is designed for text-generation tasks, but keep an eye out for more NLP tasks coming soon.</p><h2 id="0eb0" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Using this Dash app to register and deploy a Hugging Face model on Databricks</h2><p id="17fe" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">In your Plotly Dash application, to provision and utilize a model from Hugging Face + Databricks, here’s what you will need to do:</p><ol class=""><li id="cd50" class="mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt pn po pp bk"><strong class="my gv">Provide some information</strong>: You’ll need to fill in a few things, like the name of the model you found on Hugging Face, the maximum amount of text you want the model to generate, and a starting setting for how creative it should be with its answers (called temperature).</li><li id="51d3" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk"><strong class="my gv">Optionally, pick your resources</strong>: If your model requires more GPU resources than the default values of GPU Medium (A10G) and Small 4 concurrency (24 DBU), you can make those changes here as well.</li><li id="590a" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk"><strong class="my gv">Start the process</strong>: Once you’ve filled in everything, just click a button to get the notebook working!</li></ol><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw pv"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*rUZdau9_wn8DiwY3 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*rUZdau9_wn8DiwY3 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*rUZdau9_wn8DiwY3 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*rUZdau9_wn8DiwY3 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*rUZdau9_wn8DiwY3 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*rUZdau9_wn8DiwY3 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*rUZdau9_wn8DiwY3 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*rUZdau9_wn8DiwY3 640w, https://miro.medium.com/v2/resize:fit:720/0*rUZdau9_wn8DiwY3 720w, https://miro.medium.com/v2/resize:fit:750/0*rUZdau9_wn8DiwY3 750w, https://miro.medium.com/v2/resize:fit:786/0*rUZdau9_wn8DiwY3 786w, https://miro.medium.com/v2/resize:fit:828/0*rUZdau9_wn8DiwY3 828w, https://miro.medium.com/v2/resize:fit:1100/0*rUZdau9_wn8DiwY3 1100w, https://miro.medium.com/v2/resize:fit:1400/0*rUZdau9_wn8DiwY3 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="326" loading="lazy" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">Register a Hugging Face model</figcaption></figure><h2 id="612c" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">What happens when you click “Register”?</h2><p id="27f3" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">When an end user clicks the “Register…” button in this Dash app, a few crucial steps happen behind the scenes:</p><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw nx"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*Acoe_MmrCNGEOJG1 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*Acoe_MmrCNGEOJG1 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*Acoe_MmrCNGEOJG1 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*Acoe_MmrCNGEOJG1 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*Acoe_MmrCNGEOJG1 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*Acoe_MmrCNGEOJG1 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*Acoe_MmrCNGEOJG1 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*Acoe_MmrCNGEOJG1 640w, https://miro.medium.com/v2/resize:fit:720/0*Acoe_MmrCNGEOJG1 720w, https://miro.medium.com/v2/resize:fit:750/0*Acoe_MmrCNGEOJG1 750w, https://miro.medium.com/v2/resize:fit:786/0*Acoe_MmrCNGEOJG1 786w, https://miro.medium.com/v2/resize:fit:828/0*Acoe_MmrCNGEOJG1 828w, https://miro.medium.com/v2/resize:fit:1100/0*Acoe_MmrCNGEOJG1 1100w, https://miro.medium.com/v2/resize:fit:1400/0*Acoe_MmrCNGEOJG1 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="402" loading="lazy" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">What happens when you click “Register…”</figcaption></figure><ol class=""><li id="9bde" class="mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt pn po pp bk"><strong class="my gv">Firing up the notebook</strong>: Our application uses a special type of cluster, a spot-type job cluster, to run a Databricks notebook that provisions our Hugging Face model. It only runs when you need it (like a temporary worker!). Utilizing the Jobs API via the Databricks SDK for Python, our application pushes the parameters the end user entered into the now-running Databricks notebook, which then does the hard work of interfacing with Hugging Face.</li></ol><figure class="ny nz oa ob oc od nv nw paragraph-image"><div role="button" tabindex="0" class="oe of fj og bh oh"><div class="nv nw pv"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*qe544z4WQhJjbW2B 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*qe544z4WQhJjbW2B 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*qe544z4WQhJjbW2B 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*qe544z4WQhJjbW2B 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*qe544z4WQhJjbW2B 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*qe544z4WQhJjbW2B 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*qe544z4WQhJjbW2B 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*qe544z4WQhJjbW2B 640w, https://miro.medium.com/v2/resize:fit:720/0*qe544z4WQhJjbW2B 720w, https://miro.medium.com/v2/resize:fit:750/0*qe544z4WQhJjbW2B 750w, https://miro.medium.com/v2/resize:fit:786/0*qe544z4WQhJjbW2B 786w, https://miro.medium.com/v2/resize:fit:828/0*qe544z4WQhJjbW2B 828w, https://miro.medium.com/v2/resize:fit:1100/0*qe544z4WQhJjbW2B 1100w, https://miro.medium.com/v2/resize:fit:1400/0*qe544z4WQhJjbW2B 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh md oi c" width="700" height="166" loading="lazy" role="presentation"/></picture></div></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">Firing up the notebook</figcaption></figure><p id="2537" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">2. <strong class="my gv">Databricks back end interface:</strong> This single Databricks notebook not only registers our new LLM model to Unity Catalog for us, but it also logs it in MLFlow so that we can create a model serving endpoint. Here, we can specify what kind of GPU we need in order to query your endpoint. <strong class="my gv">Keep in mind that bigger models might need more memory!</strong></p><p id="8477" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">If completed exclusively on Databricks, these steps are technical by nature. They require that a Python-literate analyst or engineer can run notebooks in Databricks. By packaging this workflow into a Dash application, we avoid a Python interface.</p><p id="6ffb" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk"><strong class="my gv"><em class="pm">Heads up!</em></strong><em class="pm"> Depending on the size of your model, this whole process could take up to a few hours before it’s ready to go.</em></p><h2 id="f2c7" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Chatting with the model from your Dash application</h2><p id="9444" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">Once your model is all set up, here’s how to interact with it:</p><ol class=""><li id="e3fc" class="mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt pn po pp bk"><strong class="my gv">Pick your model:</strong> A dropdown menu will appear near the chat window, where you can choose the model you registered.</li><li id="17cb" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk"><strong class="my gv">Check the status:</strong> A badge will show you if your chosen model is ready to use (“READY” means go!).</li><li id="cecc" class="mw mx gu my b mz pq nb nc nd pr nf ng nh ps nj nk nl pt nn no np pu nr ns nt pn po pp bk"><strong class="my gv">Start the conversation:</strong> Now, you can simply type your message and hit send. The system will send your message to the model and the response will appear in the chat window. All three Databricks Foundational Model Types (chat, embedded, and completion) are supported natively.</li></ol><p id="ba48" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">Remember: choose the right model from the dropdown and send the appropriate message type to get the best results!</p><p id="4104" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">This application logs chat history in a separate tab that is accessible at any time. And, because each endpoint request consumes a certain amount of computational resources, we track resource consumption as well to ensure that the end user isn’t racking up an inordinate amount on non-business critical queries.</p><h2 id="f424" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Conclusion</h2><p id="ed31" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">The power of Databricks with Plotly is clear in this workflow. Databricks provides the most powerful data platform on the market, allowing users to build, develop, and derive value from generative AI securely.</p><p id="d755" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">Plotly Dash provides both a seamless front-end visual experience and a strong back end capable of complex API connections to Databricks in Python. Dash enables even the least technical end users to derive value from their organization’s Databricks platform — due to intuitive full-stack web UIs, perhaps without even knowing it.</p><p id="15bd" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">This workflow shows just the beginning of what is possible using Dash as a front end for the robust model-serving capabilities provided by Databricks. In the future, this architecture could be used to build a fully-fledged, Databricks-powered application to explore large, open-source LLMs and additionally configure and finetune these models into custom solutions.</p><p id="f997" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">This guide aims to empower Dash and Databricks users to envision and actualize LLM-based data science solutions within their organizations. We are eager to see how organizations large and small will build off of this workflow.</p><h2 id="273e" class="op oq gu bf on or os dy ot ou ov ea ow nh ox oy oz nl pa pb pc np pd pe pf pg bk">Looking forward</h2><p id="1017" class="pw-post-body-paragraph mw mx gu my b mz ph nb nc nd pi nf ng nh pj nj nk nl pk nn no np pl nr ns nt gn bk">In part two of this article, we will cover how we can extend this application to build Dash applications complete with Plotly charts utilizing Databricks LLMs. See below for a preview:</p><figure class="ny nz oa ob oc od nv nw paragraph-image"><div class="nv nw pw"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*gTjOSJOJDa-uiYW4 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*gTjOSJOJDa-uiYW4 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*gTjOSJOJDa-uiYW4 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*gTjOSJOJDa-uiYW4 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*gTjOSJOJDa-uiYW4 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*gTjOSJOJDa-uiYW4 1100w, https://miro.medium.com/v2/resize:fit:1200/format:webp/0*gTjOSJOJDa-uiYW4 1200w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*gTjOSJOJDa-uiYW4 640w, https://miro.medium.com/v2/resize:fit:720/0*gTjOSJOJDa-uiYW4 720w, https://miro.medium.com/v2/resize:fit:750/0*gTjOSJOJDa-uiYW4 750w, https://miro.medium.com/v2/resize:fit:786/0*gTjOSJOJDa-uiYW4 786w, https://miro.medium.com/v2/resize:fit:828/0*gTjOSJOJDa-uiYW4 828w, https://miro.medium.com/v2/resize:fit:1100/0*gTjOSJOJDa-uiYW4 1100w, https://miro.medium.com/v2/resize:fit:1200/0*gTjOSJOJDa-uiYW4 1200w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 600px"/><img alt="" class="bh md oi c" width="600" height="338" loading="lazy" role="presentation"/></picture></div><figcaption class="oj ff ok nv nw ol om bf b bg z du">Build Dash applications with Plotly charts utilizing Databricks LLMs</figcaption></figure><p id="b70c" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">Please reach out if you want to learn how to stream OpenAI API responses and responses from Databricks endpoints into your Dash app.</p><p id="9582" class="pw-post-body-paragraph mw mx gu my b mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt gn bk">Stay tuned for more detailed tutorials, code snippets, and best practices for integrating Dash and Databricks.</p></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="px py ab ja"><div class="pz ab"><a class="qa ay am ao" rel="noopener follow" href="/tag/unity-catalog?source=post_page-----6bfb8a86872b--------------------------------"><div class="qb fj cx qc ge qd qe bf b bg z bk qf">Unity Catalog</div></a></div><div class="pz ab"><a class="qa ay am ao" rel="noopener follow" href="/tag/databricks-sdk?source=post_page-----6bfb8a86872b--------------------------------"><div class="qb fj cx qc ge qd qe bf b bg z bk qf">Databricks Sdk</div></a></div><div class="pz ab"><a class="qa ay am ao" rel="noopener follow" href="/tag/custom-llms?source=post_page-----6bfb8a86872b--------------------------------"><div class="qb fj cx qc ge qd qe bf b bg z bk qf">Custom Llms</div></a></div><div class="pz ab"><a class="qa ay am ao" rel="noopener follow" href="/tag/hugging-face?source=post_page-----6bfb8a86872b--------------------------------"><div class="qb fj cx qc ge qd qe bf b bg z bk qf">Hugging Face</div></a></div><div class="pz ab"><a class="qa ay am ao" rel="noopener follow" href="/tag/mlflow?source=post_page-----6bfb8a86872b--------------------------------"><div class="qb fj cx qc ge qd qe bf b bg z bk qf">Mlflow</div></a></div></div></div></div><div class="l"></div><footer class="qg qh qi qj qk ql qm qn qo ab q qp ik c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp qq"><div class="ab q kv"><div class="qr l"><span class="l qs qt qu e d"><div class="ab q kv kw"><div class="pw-multi-vote-icon fj je kx ky kz"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fplotly%2F6bfb8a86872b&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&user=Plotly&userId=5fdd6522cd45&source=---footer_actions--6bfb8a86872b---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="la ao lb lc ld le am lf lg lh kz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l li lj lk ll lm ln lo"><p class="bf b dv z du"><span class="lp">--</span></p></div></div></span><span class="l h g f qv qw"><div class="ab q kv kw"><div class="pw-multi-vote-icon fj je kx ky kz"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fplotly%2F6bfb8a86872b&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&user=Plotly&userId=5fdd6522cd45&source=---footer_actions--6bfb8a86872b---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="la ao lb lc ld le am lf lg lh kz"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l li lj lk ll lm ln lo"><p class="bf b dv z du"><span class="lp">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao la lq lr ab q fk ls lt" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="lu"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div></div><div class="ab q"><div class="qx l ix"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F6bfb8a86872b&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fplotly%2Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b&source=---footer_actions--6bfb8a86872b---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du lw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="qx l ix"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al me an ao ap ex mf mg lt mh"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="qy qz ra rb rc l bx"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="rd l"><div class="ab re rf rg iz iy"><div class="rh ri rj rk rl rm rn ro rp rq ab cp"><div class="h k"><a href="https://medium.com/plotly?source=post_page---post_publication_info--6bfb8a86872b--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Plotly" class="rr ib ic cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*4R9HdZXaBGLPD_xPoit7iA.png" width="48" height="48" loading="lazy"/><div class="rr l ic ib fs n fr rs"></div></div></a></div><div class="j i d"><a href="https://medium.com/plotly?source=post_page---post_publication_info--6bfb8a86872b--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Plotly" class="rr ru rt cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*4R9HdZXaBGLPD_xPoit7iA.png" width="64" height="64" loading="lazy"/><div class="rr l rt ru fs n fr rs"></div></div></a></div><div class="j i d rv ix"><div class="ab"></div></div></div><div class="ab co rw"><div class="rx ry rz sa sb l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://medium.com/plotly?source=post_page---post_publication_info--6bfb8a86872b--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf sd se sf sg sh si sj nh oy oz nl pb pc np pe pf bk"><span class="gn sc">Published in <!-- -->Plotly</span></h2></a><div class="pz ab ia"><div class="l ix"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/plotly/followers?source=post_page---post_publication_info--6bfb8a86872b--------------------------------">3.9K Followers</a></span></div><div class="bf b bg z du ab jd"><span class="ir l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/plotly/meet-cléa-aumont-manager-of-professional-services-at-plotly-b07b9196b065?source=post_page---post_publication_info--6bfb8a86872b--------------------------------">Last published <span>Nov 19, 2024</span></a></div></div><div class="sk l"><p class="bf b bg z bk"><span class="gn">Plotly is a data visualization company that makes it easy to build, test, and deploy beautiful interactive web apps, charts and graphs—in any programming language.</span></p></div></div></div><div class="h k"><div class="ab"></div></div></div></div><div class="ab re rf rg iz iy"><div class="rh ri rj rk rl rm rn ro rp rq ab cp"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@plotlygraphs?source=post_page---post_author_info--6bfb8a86872b--------------------------------"><div class="l fj"><img alt="Plotly" class="l fd by ic ib cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*kX7ORGMwq0fhYPlE-qeOoQ.png" width="48" height="48" loading="lazy"/><div class="fr by l ic ib fs n ay rs"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@plotlygraphs?source=post_page---post_author_info--6bfb8a86872b--------------------------------"><div class="l fj"><img alt="Plotly" class="l fd by rt ru cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*kX7ORGMwq0fhYPlE-qeOoQ.png" width="64" height="64" loading="lazy"/><div class="fr by l rt ru fs n ay rs"></div></div></a></div><div class="j i d rv ix"><div class="ab"><span><button class="bf b bg z sl qb sm sn so sp sq ev ew sr ss st fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co rw"><div class="rx ry rz sa sb l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" rel="noopener follow" href="/@plotlygraphs?source=post_page---post_author_info--6bfb8a86872b--------------------------------"><h2 class="pw-author-name bf sd se sf sg sh si sj nh oy oz nl pb pc np pe pf bk"><span class="gn sc">Written by <!-- -->Plotly</span></h2></a><div class="pz ab ia"><div class="l ix"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/@plotlygraphs/followers?source=post_page---post_author_info--6bfb8a86872b--------------------------------">32K Followers</a></span></div><div class="bf b bg z du ab jd"><span class="ir l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar iq" rel="noopener follow" href="/@plotlygraphs/following?source=post_page---post_author_info--6bfb8a86872b--------------------------------">976 Following</a></div></div><div class="sk l"><p class="bf b bg z bk"><span class="gn">The low-code framework for rapidly building interactive, scalable data apps in Python.</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z sl qb sm sn so sp sq ev ew sr ss st fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="su bh sv sw"></div></div></div><div class="h k j"><div class="su bh sv sx"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="sy ab kv ja"><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/about?autoplay=1&source=post_page-----6bfb8a86872b--------------------------------"><p class="bf b dv z du">About</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----6bfb8a86872b--------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="sz ta l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----6bfb8a86872b--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="sz l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/business?source=post_page-----6bfb8a86872b--------------------------------"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241126-181518-0cb59a020f"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-6bfb8a86872b","user-5fdd6522cd45","collection-c8d304cbe76"],"serverVariantState":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":true,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"0da114a3-b620-4cab-9026-efa7ca6fbcab","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-bb70321efdd3d3a5ba157ccd83cbf113-2a81c27ad0375c6b-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002Fplotly\u002Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20241126-181518-0cb59a020f","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241126-181518-0cb59a020f","commit":"0cb59a020f4453d0900f671f1a6576feecc55e74"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"plotly\"})":{"__ref":"Collection:c8d304cbe76"},"postResult({\"id\":\"6bfb8a86872b\"})":{"__ref":"Post:6bfb8a86872b"}},"ImageMetadata:":{"__typename":"ImageMetadata","id":""},"Collection:c8d304cbe76":{"__typename":"Collection","id":"c8d304cbe76","favicon":{"__ref":"ImageMetadata:"},"customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFFFFFFF","point":0},{"__typename":"ColorPoint","color":"#FFE8F3E8","point":0.1},{"__typename":"ColorPoint","color":"#FFE8F3E8","point":0.2},{"__typename":"ColorPoint","color":"#FFD1E7D1","point":0.6},{"__typename":"ColorPoint","color":"#FFA3D0A2","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF1A8917","point":0},{"__typename":"ColorPoint","color":"#FF11800E","point":0.1},{"__typename":"ColorPoint","color":"#FF0F730C","point":0.2},{"__typename":"ColorPoint","color":"#FF095407","point":1}]},"tintBackgroundSpectrum":null},"domain":null,"slug":"plotly","googleAnalyticsId":null,"editors":[{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:5fdd6522cd45"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:bae24f18fd5b"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:1a52c7a1d28b"}}],"name":"Plotly","avatar":{"__ref":"ImageMetadata:1*4R9HdZXaBGLPD_xPoit7iA.png"},"description":"Plotly is a data visualization company that makes it easy to build, test, and deploy beautiful interactive web apps, charts and graphs—in any programming language.","subscriberCount":3988,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:b07b9196b065"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:c8d304cbe76-viewerId:lo_88f31f7cdab0"},"twitterUsername":"plotlygraphs","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*BGP-bpgUuP8pmEZuMiGJAA.jpeg"}},"User:5fdd6522cd45":{"__typename":"User","id":"5fdd6522cd45","customDomainState":{"__typename":"CustomDomainState","live":{"__typename":"CustomDomain","domain":"plotlygraphs.medium.com"}},"hasSubdomain":true,"username":"plotlygraphs","name":"Plotly","newsletterV3":{"__ref":"NewsletterV3:d3f8b1b6ab53"},"linkedAccounts":{"__ref":"LinkedAccounts:5fdd6522cd45"},"isSuspended":false,"imageId":"1*kX7ORGMwq0fhYPlE-qeOoQ.png","mediumMemberAt":1594924864000,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":32171,"followingCount":954,"collectionFollowingCount":22},"bio":"The low-code framework for rapidly building interactive, scalable data apps in Python.","isPartnerProgramEnrolled":false,"viewerEdge":{"__ref":"UserViewerEdge:userId:5fdd6522cd45-viewerId:lo_88f31f7cdab0"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":{"__ref":"Membership:64b088c1-85ca-4fd4-aa2f-9ae52c507614"},"allowNotes":true,"twitterScreenName":"plotlygraphs"},"User:bae24f18fd5b":{"__typename":"User","id":"bae24f18fd5b"},"User:1a52c7a1d28b":{"__typename":"User","id":"1a52c7a1d28b"},"ImageMetadata:1*4R9HdZXaBGLPD_xPoit7iA.png":{"__typename":"ImageMetadata","id":"1*4R9HdZXaBGLPD_xPoit7iA.png"},"Post:b07b9196b065":{"__typename":"Post","id":"b07b9196b065","firstPublishedAt":1732027572340,"creator":{"__ref":"User:5fdd6522cd45"},"collection":{"__ref":"Collection:c8d304cbe76"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fplotly\u002Fmeet-cl%C3%A9a-aumont-manager-of-professional-services-at-plotly-b07b9196b065","sequence":null,"uniqueSlug":"meet-cléa-aumont-manager-of-professional-services-at-plotly-b07b9196b065"},"LinkedAccounts:5fdd6522cd45":{"__typename":"LinkedAccounts","mastodon":null,"id":"5fdd6522cd45"},"UserViewerEdge:userId:5fdd6522cd45-viewerId:lo_88f31f7cdab0":{"__typename":"UserViewerEdge","id":"userId:5fdd6522cd45-viewerId:lo_88f31f7cdab0","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:d3f8b1b6ab53":{"__typename":"NewsletterV3","id":"d3f8b1b6ab53","type":"NEWSLETTER_TYPE_AUTHOR","slug":"5fdd6522cd45","name":"5fdd6522cd45","collection":null,"user":{"__ref":"User:5fdd6522cd45"}},"Membership:64b088c1-85ca-4fd4-aa2f-9ae52c507614":{"__typename":"Membership","tier":"MEMBER","id":"64b088c1-85ca-4fd4-aa2f-9ae52c507614"},"Paragraph:e4f6a4b844a3_0":{"__typename":"Paragraph","id":"e4f6a4b844a3_0","name":"c871","type":"H3","href":null,"layout":null,"metadata":null,"text":"Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_1":{"__typename":"Paragraph","id":"e4f6a4b844a3_1","name":"469a","type":"P","href":null,"layout":null,"metadata":null,"text":"Author: Sachin Seth Contributors: Cal Reynolds, Dave Gibbon","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":8,"end":19,"href":"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fsachin-seth-8b7b7222b\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":34,"end":46,"href":"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcal-reynolds-117868149\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":48,"end":59,"href":"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fdave-gibbon-8a6219\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":6,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":20,"end":32,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*mQ-8QvDpcUY5CAqd":{"__typename":"ImageMetadata","id":"0*mQ-8QvDpcUY5CAqd","originalHeight":392,"originalWidth":800,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_2":{"__typename":"Paragraph","id":"e4f6a4b844a3_2","name":"2461","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*mQ-8QvDpcUY5CAqd"},"text":"TL;DR: Nontechnical readers can rejoice (and feel affirmed by Jensen Huang’s prediction). You too can participate in the LLM revolution by leveraging an intuitive, interactive front end to derive full value from your Data\u002FML\u002FAI stack, all without having to look at any code. Send this article to your data engineering colleagues.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":61,"end":87,"href":"https:\u002F\u002Fwww.itworldcanada.com\u002Fpost\u002Fnvidia-ceo-says-we-no-longer-need-to-teach-children-to-code#:~:text=At%20the%20World%20Government%20Summit,skill%20for%20the%20younger%20generation.","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":5,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":275,"end":329,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":329,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_3":{"__typename":"Paragraph","id":"e4f6a4b844a3_3","name":"3e48","type":"H4","href":null,"layout":null,"metadata":null,"text":"Overview","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_4":{"__typename":"Paragraph","id":"e4f6a4b844a3_4","name":"7942","type":"P","href":null,"layout":null,"metadata":null,"text":"It has never been easier to develop and deploy custom LLMs tailored to your organization. Gone are the days of parsing through pages of documentation and code across different websites and services to leverage an open-source LLM model catered to your data. Instead, this article demonstrates how end users (i.e., non-coders!) can use a Plotly Dash application to check out, register, manage, and deploy LLM models on Databricks, all from the comfort of an interactive web application front end.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_5":{"__typename":"Paragraph","id":"e4f6a4b844a3_5","name":"843f","type":"P","href":null,"layout":null,"metadata":null,"text":"This app in particular acts as a device for exploring models that might be too large to run on your local machine by leveraging high-powered and easily accessible Databricks GPUs. Moving forward, we want this app to be for Databricks, what alternative desktop solutions such as LM Studio or Ooogabooga are for those with the hardware on hand.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_6":{"__typename":"Paragraph","id":"e4f6a4b844a3_6","name":"a0b0","type":"P","href":null,"layout":null,"metadata":null,"text":"Note: This article is part one of a two-part series. In this article, we provide the barebones implementation and back end information for our workflow. In article two, we will demonstrate what this workflow is capable of — think complex Plotly visualizations, big data, cascading LLMs, and more!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":4,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":4,"end":296,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_7":{"__typename":"Paragraph","id":"e4f6a4b844a3_7","name":"349a","type":"H4","href":null,"layout":null,"metadata":null,"text":"High-level steps","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_8":{"__typename":"Paragraph","id":"e4f6a4b844a3_8","name":"8a54","type":"P","href":null,"layout":null,"metadata":null,"text":"Behind the scenes, this app is running a notebook as a workflow in a Databricks workspace. On a broader level, the process can be broken down into a few steps. This application:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_9":{"__typename":"Paragraph","id":"e4f6a4b844a3_9","name":"a68e","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Allows users to dynamically select either a model from Hugging Face or one of the Databricks Foundational models.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":55,"end":67,"href":"https:\u002F\u002Fhuggingface.co\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_10":{"__typename":"Paragraph","id":"e4f6a4b844a3_10","name":"5431","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Automatically registers the model to Unity Catalog inside of Databricks with MLFlow and the Databricks SDK.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_11":{"__typename":"Paragraph","id":"e4f6a4b844a3_11","name":"ee68","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Dynamically deploys the model to a Serving Endpoint hosted on a Databricks GPU.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_12":{"__typename":"Paragraph","id":"e4f6a4b844a3_12","name":"c989","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Provides an interface for querying that model from a sleek, full-stack, Python-based Plotly Dash application.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_13":{"__typename":"Paragraph","id":"e4f6a4b844a3_13","name":"6f50","type":"P","href":null,"layout":null,"metadata":null,"text":"Below is a simple visual architecture that shows this application’s flow:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*2FesCnAVy5DudfQH":{"__typename":"ImageMetadata","id":"0*2FesCnAVy5DudfQH","originalHeight":995,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_14":{"__typename":"Paragraph","id":"e4f6a4b844a3_14","name":"afb6","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*2FesCnAVy5DudfQH"},"text":"Our application’s architecture visualized","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_15":{"__typename":"Paragraph","id":"e4f6a4b844a3_15","name":"d202","type":"P","href":null,"layout":null,"metadata":null,"text":"In the following steps, we’ll break down this application’s workflow even more granularly. If you are less interested in the nitty-gritty details, skip to our Conclusion section below.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":159,"end":169,"href":"#f424","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":159,"end":169,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_16":{"__typename":"Paragraph","id":"e4f6a4b844a3_16","name":"c3a7","type":"P","href":null,"layout":null,"metadata":null,"text":"For a step-by-step guide to running this application, see this article’s corresponding Github repository.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":87,"end":104,"href":"https:\u002F\u002Fgithub.com\u002Fplotly\u002Fdbx_llm_app\u002Ftree\u002Fmain","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_17":{"__typename":"Paragraph","id":"e4f6a4b844a3_17","name":"5ca6","type":"H4","href":null,"layout":null,"metadata":null,"text":"Browse Hugging Face for a model you want to chat with","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_18":{"__typename":"Paragraph","id":"e4f6a4b844a3_18","name":"0ee8","type":"P","href":null,"layout":null,"metadata":null,"text":"Hugging Face is a platform best known for the development and maintenance of its Transformers library. The library itself provides a vast collection of pre-trained models for a wide range of NLP tasks as well as refined techniques for fine-tuning and pipeline construction. This article’s Dash app allows for end users to interact with any of Hugging Face’s models without having to know how to make an interface, host the model, or any of the other technical back end steps.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"EM","start":81,"end":93,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":388,"end":391,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*EuU5SDzfYsQ1P7cz":{"__typename":"ImageMetadata","id":"0*EuU5SDzfYsQ1P7cz","originalHeight":786,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_19":{"__typename":"Paragraph","id":"e4f6a4b844a3_19","name":"c010","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*EuU5SDzfYsQ1P7cz"},"text":"The Hugging Face platform","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_20":{"__typename":"Paragraph","id":"e4f6a4b844a3_20","name":"5a1a","type":"P","href":null,"layout":null,"metadata":null,"text":"An end user of this application can navigate to Hugging Face to browse and input the name of the model they are interested in chatting with into their Dash app. Hugging Face provides high-level, nontechnical descriptions of each of their hosted models’ capabilities. Currently, this app is designed for text-generation tasks, but keep an eye out for more NLP tasks coming soon.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":48,"end":60,"href":"https:\u002F\u002Fhuggingface.co\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_21":{"__typename":"Paragraph","id":"e4f6a4b844a3_21","name":"0eb0","type":"H4","href":null,"layout":null,"metadata":null,"text":"Using this Dash app to register and deploy a Hugging Face model on Databricks","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_22":{"__typename":"Paragraph","id":"e4f6a4b844a3_22","name":"17fe","type":"P","href":null,"layout":null,"metadata":null,"text":"In your Plotly Dash application, to provision and utilize a model from Hugging Face + Databricks, here’s what you will need to do:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_23":{"__typename":"Paragraph","id":"e4f6a4b844a3_23","name":"cd50","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Provide some information: You’ll need to fill in a few things, like the name of the model you found on Hugging Face, the maximum amount of text you want the model to generate, and a starting setting for how creative it should be with its answers (called temperature).","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":24,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_24":{"__typename":"Paragraph","id":"e4f6a4b844a3_24","name":"51d3","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Optionally, pick your resources: If your model requires more GPU resources than the default values of GPU Medium (A10G) and Small 4 concurrency (24 DBU), you can make those changes here as well.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":31,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_25":{"__typename":"Paragraph","id":"e4f6a4b844a3_25","name":"590a","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Start the process: Once you’ve filled in everything, just click a button to get the notebook working!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":17,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*rUZdau9_wn8DiwY3":{"__typename":"ImageMetadata","id":"0*rUZdau9_wn8DiwY3","originalHeight":745,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_26":{"__typename":"Paragraph","id":"e4f6a4b844a3_26","name":"56da","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*rUZdau9_wn8DiwY3"},"text":"Register a Hugging Face model","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_27":{"__typename":"Paragraph","id":"e4f6a4b844a3_27","name":"612c","type":"H4","href":null,"layout":null,"metadata":null,"text":"What happens when you click “Register”?","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_28":{"__typename":"Paragraph","id":"e4f6a4b844a3_28","name":"27f3","type":"P","href":null,"layout":null,"metadata":null,"text":"When an end user clicks the “Register…” button in this Dash app, a few crucial steps happen behind the scenes:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*Acoe_MmrCNGEOJG1":{"__typename":"ImageMetadata","id":"0*Acoe_MmrCNGEOJG1","originalHeight":459,"originalWidth":800,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_29":{"__typename":"Paragraph","id":"e4f6a4b844a3_29","name":"a789","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*Acoe_MmrCNGEOJG1"},"text":"What happens when you click “Register…”","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_30":{"__typename":"Paragraph","id":"e4f6a4b844a3_30","name":"9bde","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Firing up the notebook: Our application uses a special type of cluster, a spot-type job cluster, to run a Databricks notebook that provisions our Hugging Face model. It only runs when you need it (like a temporary worker!). Utilizing the Jobs API via the Databricks SDK for Python, our application pushes the parameters the end user entered into the now-running Databricks notebook, which then does the hard work of interfacing with Hugging Face.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*qe544z4WQhJjbW2B":{"__typename":"ImageMetadata","id":"0*qe544z4WQhJjbW2B","originalHeight":378,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_31":{"__typename":"Paragraph","id":"e4f6a4b844a3_31","name":"2cae","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*qe544z4WQhJjbW2B"},"text":"Firing up the notebook","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_32":{"__typename":"Paragraph","id":"e4f6a4b844a3_32","name":"2537","type":"P","href":null,"layout":null,"metadata":null,"text":"2. Databricks back end interface: This single Databricks notebook not only registers our new LLM model to Unity Catalog for us, but it also logs it in MLFlow so that we can create a model serving endpoint. Here, we can specify what kind of GPU we need in order to query your endpoint. Keep in mind that bigger models might need more memory!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":3,"end":33,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":285,"end":340,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_33":{"__typename":"Paragraph","id":"e4f6a4b844a3_33","name":"8477","type":"P","href":null,"layout":null,"metadata":null,"text":"If completed exclusively on Databricks, these steps are technical by nature. They require that a Python-literate analyst or engineer can run notebooks in Databricks. By packaging this workflow into a Dash application, we avoid a Python interface.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_34":{"__typename":"Paragraph","id":"e4f6a4b844a3_34","name":"6ffb","type":"P","href":null,"layout":null,"metadata":null,"text":"Heads up! Depending on the size of your model, this whole process could take up to a few hours before it’s ready to go.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":9,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":0,"end":119,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_35":{"__typename":"Paragraph","id":"e4f6a4b844a3_35","name":"f2c7","type":"H4","href":null,"layout":null,"metadata":null,"text":"Chatting with the model from your Dash application","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_36":{"__typename":"Paragraph","id":"e4f6a4b844a3_36","name":"9444","type":"P","href":null,"layout":null,"metadata":null,"text":"Once your model is all set up, here’s how to interact with it:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_37":{"__typename":"Paragraph","id":"e4f6a4b844a3_37","name":"e3fc","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Pick your model: A dropdown menu will appear near the chat window, where you can choose the model you registered.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":16,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_38":{"__typename":"Paragraph","id":"e4f6a4b844a3_38","name":"17cb","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Check the status: A badge will show you if your chosen model is ready to use (“READY” means go!).","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":17,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_39":{"__typename":"Paragraph","id":"e4f6a4b844a3_39","name":"cecc","type":"OLI","href":null,"layout":null,"metadata":null,"text":"Start the conversation: Now, you can simply type your message and hit send. The system will send your message to the model and the response will appear in the chat window. All three Databricks Foundational Model Types (chat, embedded, and completion) are supported natively.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":23,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_40":{"__typename":"Paragraph","id":"e4f6a4b844a3_40","name":"ba48","type":"P","href":null,"layout":null,"metadata":null,"text":"Remember: choose the right model from the dropdown and send the appropriate message type to get the best results!","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_41":{"__typename":"Paragraph","id":"e4f6a4b844a3_41","name":"4104","type":"P","href":null,"layout":null,"metadata":null,"text":"This application logs chat history in a separate tab that is accessible at any time. And, because each endpoint request consumes a certain amount of computational resources, we track resource consumption as well to ensure that the end user isn’t racking up an inordinate amount on non-business critical queries.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_42":{"__typename":"Paragraph","id":"e4f6a4b844a3_42","name":"f424","type":"H4","href":null,"layout":null,"metadata":null,"text":"Conclusion","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_43":{"__typename":"Paragraph","id":"e4f6a4b844a3_43","name":"ed31","type":"P","href":null,"layout":null,"metadata":null,"text":"The power of Databricks with Plotly is clear in this workflow. Databricks provides the most powerful data platform on the market, allowing users to build, develop, and derive value from generative AI securely.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_44":{"__typename":"Paragraph","id":"e4f6a4b844a3_44","name":"d755","type":"P","href":null,"layout":null,"metadata":null,"text":"Plotly Dash provides both a seamless front-end visual experience and a strong back end capable of complex API connections to Databricks in Python. Dash enables even the least technical end users to derive value from their organization’s Databricks platform — due to intuitive full-stack web UIs, perhaps without even knowing it.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_45":{"__typename":"Paragraph","id":"e4f6a4b844a3_45","name":"15bd","type":"P","href":null,"layout":null,"metadata":null,"text":"This workflow shows just the beginning of what is possible using Dash as a front end for the robust model-serving capabilities provided by Databricks. In the future, this architecture could be used to build a fully-fledged, Databricks-powered application to explore large, open-source LLMs and additionally configure and finetune these models into custom solutions.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_46":{"__typename":"Paragraph","id":"e4f6a4b844a3_46","name":"f997","type":"P","href":null,"layout":null,"metadata":null,"text":"This guide aims to empower Dash and Databricks users to envision and actualize LLM-based data science solutions within their organizations. We are eager to see how organizations large and small will build off of this workflow.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_47":{"__typename":"Paragraph","id":"e4f6a4b844a3_47","name":"273e","type":"H4","href":null,"layout":null,"metadata":null,"text":"Looking forward","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_48":{"__typename":"Paragraph","id":"e4f6a4b844a3_48","name":"1017","type":"P","href":null,"layout":null,"metadata":null,"text":"In part two of this article, we will cover how we can extend this application to build Dash applications complete with Plotly charts utilizing Databricks LLMs. See below for a preview:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*gTjOSJOJDa-uiYW4":{"__typename":"ImageMetadata","id":"0*gTjOSJOJDa-uiYW4","originalHeight":338,"originalWidth":600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:e4f6a4b844a3_49":{"__typename":"Paragraph","id":"e4f6a4b844a3_49","name":"cc4d","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*gTjOSJOJDa-uiYW4"},"text":"Build Dash applications with Plotly charts utilizing Databricks LLMs","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_50":{"__typename":"Paragraph","id":"e4f6a4b844a3_50","name":"b70c","type":"P","href":null,"layout":null,"metadata":null,"text":"Please reach out if you want to learn how to stream OpenAI API responses and responses from Databricks endpoints into your Dash app.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:e4f6a4b844a3_51":{"__typename":"Paragraph","id":"e4f6a4b844a3_51","name":"9582","type":"P","href":null,"layout":null,"metadata":null,"text":"Stay tuned for more detailed tutorials, code snippets, and best practices for integrating Dash and Databricks.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:c8d304cbe76-viewerId:lo_88f31f7cdab0":{"__typename":"CollectionViewerEdge","id":"collectionId:c8d304cbe76-viewerId:lo_88f31f7cdab0","isEditor":false,"isMuting":false},"ImageMetadata:1*BGP-bpgUuP8pmEZuMiGJAA.jpeg":{"__typename":"ImageMetadata","id":"1*BGP-bpgUuP8pmEZuMiGJAA.jpeg","originalWidth":600,"originalHeight":600},"PostViewerEdge:postId:6bfb8a86872b-viewerId:lo_88f31f7cdab0":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:6bfb8a86872b-viewerId:lo_88f31f7cdab0"},"Tag:unity-catalog":{"__typename":"Tag","id":"unity-catalog","displayTitle":"Unity Catalog","normalizedTagSlug":"unity-catalog"},"Tag:databricks-sdk":{"__typename":"Tag","id":"databricks-sdk","displayTitle":"Databricks Sdk","normalizedTagSlug":"databricks-sdk"},"Tag:custom-llms":{"__typename":"Tag","id":"custom-llms","displayTitle":"Custom Llms","normalizedTagSlug":"custom-llm"},"Tag:hugging-face":{"__typename":"Tag","id":"hugging-face","displayTitle":"Hugging Face","normalizedTagSlug":"hugging-face"},"Tag:mlflow":{"__typename":"Tag","id":"mlflow","displayTitle":"Mlflow","normalizedTagSlug":"mlflow"},"Post:6bfb8a86872b":{"__typename":"Post","id":"6bfb8a86872b","collection":{"__ref":"Collection:c8d304cbe76"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"d87a","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:e4f6a4b844a3_0"},{"__ref":"Paragraph:e4f6a4b844a3_1"},{"__ref":"Paragraph:e4f6a4b844a3_2"},{"__ref":"Paragraph:e4f6a4b844a3_3"},{"__ref":"Paragraph:e4f6a4b844a3_4"},{"__ref":"Paragraph:e4f6a4b844a3_5"},{"__ref":"Paragraph:e4f6a4b844a3_6"},{"__ref":"Paragraph:e4f6a4b844a3_7"},{"__ref":"Paragraph:e4f6a4b844a3_8"},{"__ref":"Paragraph:e4f6a4b844a3_9"},{"__ref":"Paragraph:e4f6a4b844a3_10"},{"__ref":"Paragraph:e4f6a4b844a3_11"},{"__ref":"Paragraph:e4f6a4b844a3_12"},{"__ref":"Paragraph:e4f6a4b844a3_13"},{"__ref":"Paragraph:e4f6a4b844a3_14"},{"__ref":"Paragraph:e4f6a4b844a3_15"},{"__ref":"Paragraph:e4f6a4b844a3_16"},{"__ref":"Paragraph:e4f6a4b844a3_17"},{"__ref":"Paragraph:e4f6a4b844a3_18"},{"__ref":"Paragraph:e4f6a4b844a3_19"},{"__ref":"Paragraph:e4f6a4b844a3_20"},{"__ref":"Paragraph:e4f6a4b844a3_21"},{"__ref":"Paragraph:e4f6a4b844a3_22"},{"__ref":"Paragraph:e4f6a4b844a3_23"},{"__ref":"Paragraph:e4f6a4b844a3_24"},{"__ref":"Paragraph:e4f6a4b844a3_25"},{"__ref":"Paragraph:e4f6a4b844a3_26"},{"__ref":"Paragraph:e4f6a4b844a3_27"},{"__ref":"Paragraph:e4f6a4b844a3_28"},{"__ref":"Paragraph:e4f6a4b844a3_29"},{"__ref":"Paragraph:e4f6a4b844a3_30"},{"__ref":"Paragraph:e4f6a4b844a3_31"},{"__ref":"Paragraph:e4f6a4b844a3_32"},{"__ref":"Paragraph:e4f6a4b844a3_33"},{"__ref":"Paragraph:e4f6a4b844a3_34"},{"__ref":"Paragraph:e4f6a4b844a3_35"},{"__ref":"Paragraph:e4f6a4b844a3_36"},{"__ref":"Paragraph:e4f6a4b844a3_37"},{"__ref":"Paragraph:e4f6a4b844a3_38"},{"__ref":"Paragraph:e4f6a4b844a3_39"},{"__ref":"Paragraph:e4f6a4b844a3_40"},{"__ref":"Paragraph:e4f6a4b844a3_41"},{"__ref":"Paragraph:e4f6a4b844a3_42"},{"__ref":"Paragraph:e4f6a4b844a3_43"},{"__ref":"Paragraph:e4f6a4b844a3_44"},{"__ref":"Paragraph:e4f6a4b844a3_45"},{"__ref":"Paragraph:e4f6a4b844a3_46"},{"__ref":"Paragraph:e4f6a4b844a3_47"},{"__ref":"Paragraph:e4f6a4b844a3_48"},{"__ref":"Paragraph:e4f6a4b844a3_49"},{"__ref":"Paragraph:e4f6a4b844a3_50"},{"__ref":"Paragraph:e4f6a4b844a3_51"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:5fdd6522cd45"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002Fplotly\u002Famplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"data-science"},{"__typename":"Topic","slug":"programming"}],"isPublished":true,"latestPublishedVersion":"e4f6a4b844a3","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":0},"clapCount":28,"allowResponses":true,"isLimitedState":false,"title":"Amplify Your Organization’s Custom LLM Strategy Using Databricks with Plotly (Part 1)","isSeries":false,"sequence":null,"uniqueSlug":"amplify-your-organizations-custom-llm-strategy-using-databricks-with-plotly-part-1-6bfb8a86872b","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1711399759695,"readingTime":5.989622641509434,"previewContent":{"__typename":"PreviewContent","subtitle":"Web applications created with Plotly Dash for nontechnical end users to register, deploy, and serve LLMs interactively via Databricks."},"previewImage":{"__ref":"ImageMetadata:0*mQ-8QvDpcUY5CAqd"},"isShortform":false,"seoTitle":"","firstPublishedAt":1711390128106,"updatedAt":1711426840367,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:6bfb8a86872b-viewerId:lo_88f31f7cdab0"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:unity-catalog"},{"__ref":"Tag:databricks-sdk"},{"__ref":"Tag:custom-llms"},{"__ref":"Tag:hugging-face"},{"__ref":"Tag:mlflow"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":1309,"layerCake":0,"responsesLocked":false}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"MISS"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.aa9242f7.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.e556b4ac.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5787.e66a3a4d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3104.c3413b66.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.8ad8a900.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.094844de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.1387c5dc.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e90a6fe0a2f8944',t:'MTczMjY5NTEzNy4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>