1<!DOCTYPE html> 2<html lang="en-US" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1"> 6 <title>LMQL is a programming language for LLM interaction. | LMQL</title> 7 <meta name="description" content="Language Model Query Language"> 8 <link rel="preload stylesheet" href="/assets/style.aa6b8dc6.css" as="style"> 9 10
10<script type="module" src="/assets/app.7a112693.js"></script>
10 11 <link rel="preload" href="/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin=""> 12 <link rel="modulepreload" href="/assets/chunks/framework.980cae92.js"> 13 <link rel="modulepreload" href="/assets/chunks/theme.908ddb20.js"> 14 <link rel="modulepreload" href="/assets/chunks/VersionSwitch.5d3190fc.js"> 15 <link rel="modulepreload" href="/assets/chunks/lmql.17cc0505.js"> 16 <link rel="modulepreload" href="/assets/index.md.3b2473f1.lean.js"> 17
17<script async src="/promptdown.js"></script>
17 18
18<script src="https://static.cloudflareinsights.com/beacon.min.js?token=f7d2a6b1a0624c51ae4dab9a4239b77d&spa=false"></script>
18 19
19<script async src="https://buttons.github.io/buttons.js"></script>
19 20
20<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
20 21
21<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
21 22 </head> 23 <body> 24 <div id="app"><div class="Layout" data-v-9d8abc1e><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-9d8abc1e data-v-7ad780c2><div class="VPNavBar top" data-v-7ad780c2 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/" data-v-2973dbb4><!--[--><!--]--><!--[--><img class="VPImage logo" src="/lmql.svg" alt data-v-ab19afbb><!--]--><!--[-->LMQL<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" data-v-f1abbc6e><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/blog/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Blog</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/research/index.html" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Research</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/docs/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/playground/" target="_blank" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>â¶ Playground</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-283b26e9><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-283b26e9 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/eth-sri/lmql" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="https://discord.gg/5djae9gJVB" aria-label="discord" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363
240 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/eth-sri/lmql" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="https://discord.gg/5djae9gJVB" aria-label="discord" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363
240 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-9d8abc1e data-v-3cf691b6><div class="VPHome" data-v-3cf691b6 data-v-20eabd3a><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--><!----><!--[--><!--]--><div style="position:relative;" data-v-20eabd3a><div><div class="banner"><p>Help shape the next major version of LMQL by filling out the <a href="https://forms.gle/pGvAicNpUhS1rAkK9" target="_blank" rel="noreferrer">LMQL developer survey</a></p></div><div class="hero" data-v-fb660782><img src="/assets/lmql.6950db7a.svg" alt="LMQL" data-v-fb660782><div data-v-fb660782><h1 data-v-fb660782><img src="/assets/lmql.6950db7a.svg" alt="LMQL" data-v-fb660782><!--[-->LMQL is a programming language for LLMs.<!--]--><br data-v-fb660782></h1><h2 class="tagline" data-v-fb660782><!--[-->Robust and modular LLM prompting using <b>types, templates, constraints and an optimizing runtime.</b><!--]--></h2><div class="buttons" data-v-fb660782><a class="primary btn" href="/docs/" data-v-fb660782> Get Started </a><a class="btn" href="https://github.com/eth-sri/lmql#contribute')" data-v-fb660782> Contribute </a></div></div></div><!--[--><div><div class="feature code" data-v-9d5b0837><div data-v-9d5b0837><h1 data-v-9d5b0837><!--[--> <!--]--><!----></h1><p data-v-9d5b0837><!--[--><div><div class="language-lmql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">lmql</span><pre class="hljs"><code><span class="line"><div class="window-controls"><div class="window-control window-control-close"></div><div class="window-control window-control-minimize"></div><div class="window-control window-control-maximize"></div></div><span class="hljs-meta">@lmql.query</span> 25<span class="hljs-keyword">def</span> <span class="hljs-title function_">meaning_of_life</span>(): 26 <span class="hljs-inline-lmql"><span class='inline-lmql-delim'>'''lmql</span> 27 <span class="hljs-comment"># top-level strings are prompts</span> 28 <span class="hljs-string">"Q: What is the answer to life, the \ 29 universe and everything?"</span> 30 31 <span class="hljs-comment"># generation via (constrained) variables</span> 32 <span class="hljs-string">"A: <span class="hljs-placeholder">[ANSWER]</span>"</span> <span class="hljs-keyword">where</span> \ 33 <span class="hljs-built_in">len</span>(ANSWER) < 120 <span class="hljs-keyword">and</span> STOPS_AT(ANSWER, <span class="hljs-string">"."</span>) 34 35 <span class="hljs-comment"># results are directly accessible</span> 36 <span class="hljs-built_in">print</span>(<span class="hljs-string">"LLM returned"</span>, ANSWER) 37 38 <span class="hljs-comment"># use typed variables for guaranteed </span> 39 <span class="hljs-comment"># output format</span> 40 <span class="hljs-string">"The answer is <span class="hljs-placeholder">[NUM: <span class="hljs-built_in">int</span>]</span>"</span> 41 42 <span class="hljs-comment"># query programs are just functions </span> 43 <span class="hljs-keyword">return</span> NUM 44 <span class='inline-lmql-delim'>'''</span></span> 45 46<span class="hljs-comment"># so from Python, you can just do this</span> 47meaning_of_life() <span class="hljs-comment"># 42</span> 48</span></code></pre> 49</div><br/> 50<center style="font-size: 10pt"> 51<p>Created by the <a href="http://sri.inf.ethz.ch/" target="_blank" rel="noreferrer">SRI Lab</a> @ ETH Zurich and <a href="https://github.com/eth-sri/lmql" target="_blank" rel="noreferrer">contributors</a>.</p> 52<br/> 53<div class="github-star"> 54 <a class="github-button" href="https://github.com/eth-sri/lmql" data-color-scheme="light" data-show-count="true" aria-label="Star LMQL on GitHub">Star</a> 55</div> 56</center> 57</div><!--]--></p></div><code class="reveal" data-v-9d5b0837><!--[--><!--]--></code></div></div><div><div class="feature side-by-side" data-v-9d5b0837><div data-v-9d5b0837><h1 data-v-9d5b0837><!--[-->
57Nested Queries bring Procedural Programming to Prompting <!--]--><span class="badge" data-v-9d5b0837>NEW</span></h1><p data-v-9d5b0837><!--[--><div><p>LMQL now supports nested queries, enabling modularized local instructions and re-use of prompt components.</p> 58<br/> 59<a class="btn" href="../docs/language/nestedqueries.html"> 60Learn more 61</a> 62</div><!--]--></p></div><code class="reveal" data-v-9d5b0837><!--[--><div><div class="language-promptdown vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">promptdown</span><pre animate="true" pd-text="# Execution Trace 63 64![_|Q: When was Obama born?][@wait|200][@begin|incontext][dateformat|(respond in DD/MM/YYYY)][@end|incontext][@wait|200][ANSWER|04/08/1961][@wait|200][@fade|incontext][@wait|200][@hide|incontext][@wait|200] 65![_|Q: When was Bruno Mars born?][@wait|200][@begin|incontext1][dateformat|(respond in DD/MM/YYYY)][@end|incontext1][@wait|200][ANSWER|08/10/1985][@wait|200][@fade|incontext1][@wait|200][@hide|incontext1][@wait|200] 66![_|Q: When was Dua Lipa born?][@wait|200][@begin|incontext2][dateformat|(respond in DD/MM/YYYY)][@end|incontext2][@wait|200][ANSWER|22/08/1995][@wait|200][@fade|incontext2][@wait|200][@hide|incontext2][@wait|200] 67 68[_|Out of these, who was born last?][LAST|Dua Lipa] 69[:replay]" __animate="true" animate-speed="50" class="promptdown promptdown-compiled" style="opacity: 1;"><h1 pd-shadow-id="2364" text=" "> Execution Trace</h1><p pd-shadow-id="2366" text=" 70" pd-insertion-point="true"> 71<span pd-shadow-id="2368" pd-instant="true" text="" class="promptdown-var color-none"><span pd-shadow-id="2369" text="" class="promptdown-var-name" style="display: none;"></span>Q: When was Obama born?</span><span pd-shadow-id="2372" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2373" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2377" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-yellow"><span pd-shadow-id="2378" text="b" class="promptdown-var-name" style="display: none;">begin</span>incontext</span><p pd-shadow-id="2382" id="incontext" text="" pd-ignore-whitespace="true" class="promptdown-container faded" style="display: none;"><span pd-shadow-id="2383" pd-instant="false" text="" class="promptdown-var color-yellow"><span pd-shadow-id="2384" text="d" class="promptdown-var-name">dateformat</span>(respond in DD/MM/YYYY)</span><span pd-shadow-id="2388" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-orange"><span pd-shadow-id="2389" text="e" class="promptdown-var-name" style="display: none;">end</span>incontext</span></p><span pd-shadow-id="2393" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2394" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2398" pd-instant="false" text="" class="promptdown-var color-ochre"><span pd-shadow-id="2399" text="A" class="promptdown-var-name">ANSWER</span>04/08/1961</span><span pd-shadow-id="2403" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2404" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2408" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-red"><span pd-shadow-id="2409" text="f" class="promptdown-var-name" style="display: none;">fade</span>incontext</span><span pd-shadow-id="2413" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2414" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2418" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-ochre"><span pd-shadow-id="2419" text="h" class="promptdown-var-name" style="display: none;">hide</span>incontext</span><span pd-shadow-id="2423" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2424" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span> 72<span pd-shadow-id="2429" pd-instant="true" text="" class="promptdown-var c
72olor-none"><span pd-shadow-id="2430" text="" class="promptdown-var-name" style="display: none;"></span>Q: When was Bruno Mars born?</span><span pd-shadow-id="2433" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2434" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2438" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-yellow"><span pd-shadow-id="2439" text="b" class="promptdown-var-name" style="display: none;">begin</span>incontext1</span><p pd-shadow-id="2443" id="incontext1" text="" pd-ignore-whitespace="true" class="promptdown-container faded" style="display: none;"><span pd-shadow-id="2444" pd-instant="false" text="" class="promptdown-var color-yellow"><span pd-shadow-id="2445" text="d" class="promptdown-var-name">dateformat</span>(respond in DD/MM/YYYY)</span><span pd-shadow-id="2449" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-orange"><span pd-shadow-id="2450" text="e" class="promptdown-var-name" style="display: none;">end</span>incontext1</span></p><span pd-shadow-id="2454" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2455" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2459" pd-instant="false" text="" class="promptdown-var color-ochre"><span pd-shadow-id="2460" text="A" class="promptdown-var-name">ANSWER</span>08/10/1985</span><span pd-shadow-id="2464" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2465" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2469" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-red"><span pd-shadow-id="2470" text="f" class="promptdown-var-name" style="display: none;">fade</span>incontext1</span><span pd-shadow-id="2474" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2475" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2479" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-ochre"><span pd-shadow-id="2480" text="h" class="promptdown-var-name" style="display: none;">hide</span>incontext1</span><span pd-shadow-id="2484" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2485" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span> 73<span pd-shadow-id="2490" pd-instant="true" text="" class="promptdown-var color-none"><span pd-shadow-id="2491" text="" class="promptdown-var-name" style="display: none;"></span>Q: When was Dua Lipa born?</span><span pd-shadow-id="2494" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2495" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2499" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-yellow"><span pd-shadow-id="2500" text="b" class="promptdown-var-name" style="display: none;">begin</span>incontext2</span><p pd-shadow-id="2504" id="incontext2" text="" pd-ignore-whitespace="true" class="promptdown-container faded" style="display: none;"><span pd-shadow-id="2505" pd-instant="false" text="" class="promptdown-var color-yellow"><span pd-shadow-id="2506" text="d" class="promptdown-var-name">dateformat</span>(respond in DD/MM/YYYY)</span><span pd-shadow-id="2510" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-orange"><span pd-shadow-id="2511" text="e" class="promptdown-var-name" style="display: none;">end</span>incontext2</span></p><span pd-shadow-id="2515" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2516" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2520" pd-instant="false" text="" class="promptdown-var color-ochre"><span pd-shadow-id="2521" text="A" class="promptdown-var-name">ANSWER</span>22/08/1995</span><span pd-shadow-id="2525" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2526" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2530" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-red"><span pd-shadow-id="2531" text="f" class="promptdown-var-name" style="display: none;">fade</span>incontext2</span><span pd-shadow-id="2535" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2536" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span><span pd-shadow-id="2540" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-ochre"><span pd-shadow-id="2541" text="h" class="promptdown-var-name" style="display: none;">hide</span>incontext2</span><span pd-shadow-id="2545" pd-instant="false" pd-cmd="true" text="" class="promptdown-var cmd color-pink"><span pd-shadow-id="2546" text="w" class="promptdown-var-name" style="display: none;">wait</span>200</span> 74 75<span pd-shadow-id="2551" pd-instant="false" text="" class="promptdown-var c
75olor-none"><span pd-shadow-id="2552" text="" class="promptdown-var-name" style="display: none;"></span>Out of these, who was born last?</span><span pd-shadow-id="2555" pd-instant="false" text="" class="promptdown-var color-pink"><span pd-shadow-id="2556" text="L" class="promptdown-var-name">LAST</span>Dua Lipa</span> 76</p><button onclick="pd(this.parentElement)" class="promptdown-button-replay">⺠Replay</button></pre> 77</div></div><!--]--></code></div></div><div><div class="feature middle" data-v-9d5b0837><div data-v-9d5b0837><h1 data-v-9d5b0837><!--[-->Works Across Backends <!--]--><!----></h1><p data-v-9d5b0837><!--[--><div><p>LMQL automatically makes your LLM code portable across several backends. You can switch between them with a single line of code.</p> 78<div class="cards"> 79 <a href="../docs/models/llama.cpp.html"> 80 <span style="font-size: 3.0em;">ð¦</span> 81 <h1>llama.cpp</h1> 82 </a> 83 <a href="../docs/models/openai.html"> 84 <img src="/openai.svg" alt="OpenAI" class="invert"/> 85 <h1>OpenAI</h1> 86 </a> 87 <a href="../docs/models/hf.html"> 88 <span style="font-size: 3.0em;">ð¤</span> 89 <h1>Transformers</h1> 90 </a> 91</div> 92</div><!--]--></p></div><code class="reveal" data-v-9d5b0837><!--[--><!--]--></code></div></div><!--]--><div class="examples" data-v-96cfe14a><div style="margin-top:60pt;" data-v-96cfe14a></div><h1 data-v-96cfe14a><!--[-->Explore LMQL<!--]--></h1><div class="btn-group" role="group" aria-label="Basic example" data-v-96cfe14a><!--[--><button class="active btn btn-primary" data-v-96cfe14a>ð´ Packing List</button><button class="btn btn-primary" data-v-96cfe14a>âï¸ Constrained LLMs</button><button class="btn btn-primary" data-v-96cfe14a>ð¢ Types and Regex</button><button class="btn btn-primary" data-v-96cfe14a>ð§ Multi-Part Prompts</button><button class="btn btn-primary" data-v-96cfe14a>ð Measure Distributions</button><button class="btn btn-primary" data-v-96cfe14a>ð Python Support</button><button class="btn btn-primary" data-v-96cfe14a>ð³ Meta Prompting</button><button class="btn btn-primary" data-v-96cfe14a>ð Tool Augmentation</button><button class="btn btn-primary" data-v-96cfe14a>ð¬ Chatbots</button><!--]--></div><div class="description" data-v-96cfe14a><p>Prompt construction and generation is implemented via expressive <em>Python control flow and string interpolation</em>.</p> 93</div><div class="code-by-code" data-v-96cfe14a><div class="left"><!--[--><h2 data-v-96cfe14a>LMQL</h2><div data-v-96cfe14a><div class="language-lmql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">lmql</span><pre class="hljs"><code><span class="line"><span class="hljs-comment"># top level strings are prompts</span> 94<span class="hljs-string">"My packing list for the trip:"</span> 95 96<span class="hljs-comment"># use loops for repeated prompts</span> 97<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">4</span>): 98 <span class="hljs-comment"># 'where' denotes hard constraints enforced by the runtime</span> 99 <span class="hljs-string">"- <span class="hljs-placeholder">[THING]</span> \n"</span> <span class="hljs-keyword">where</span> THING <span class="hljs-keyword">in</span> \ 100 [<span class="hljs-string">"Volleyball"</span>, <span class="hljs-string">"Sunscreen"</span>, <span class="hljs-string">"Bathing Suit"</span>] 101</span></code></pre> 102</div></div><!--]--></div><div class="right"><!--[--><h2 data-v-96cfe14a>Model Output</h2><div data-v-96cfe14a><div class="language-promptdown vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">promptdown</span><pre pd-text="My packing list for the trip: 103 104- [THING| Volleyball] 105- [THING| Bathing Suit] 106- [THING| Sunscreen] 107- [THING| Volleyball] 108" animate="true" __animate="true" animate-speed="50" class="promptdown promptdown-compiled" style="opacity: 1;"><p pd-shadow-id="2708" text="M" pd-insertion-point="true">My packing list for the trip: 109 110- <span pd-shadow-id="2710" pd-instant="false" text="" class="promptdown-var c
110olor-lightorange"><span pd-shadow-id="2711" text="T" class="promptdown-var-name">THING</span> Volleyball</span> 111- <span pd-shadow-id="2716" pd-instant="false" text="" class="promptdown-var color-lightorange"><span pd-shadow-id="2717" text="T" class="promptdown-var-name">THING</span> Bathing Suit</span> 112- <span pd-shadow-id="2722" pd-instant="false" text="" class="promptdown-var color-lightorange"><span pd-shadow-id="2723" text="T" class="promptdown-var-name">THING</span> Sunscreen</span> 113- <span pd-shadow-id="2728" pd-instant="false" text="" class="promptdown-var color-lightorange"><span pd-shadow-id="2729" text="T" class="promptdown-var-name">THING</span> Volleyball</span> 114</p></pre> 115</div></div><!--]--></div></div></div></div></div></div></div><!----><!--[--><!--]--></div></div> 116
116<script>window.__VP_HASH_MAP__=JSON.parse("{\"docs_development_docker-setup.md\":\"0e3e1b2c\",\"docs_language_decorators.md\":\"9a3eb9c2\",\"docs_installation.md\":\"8739ce92\",\"docs_language_decoding.md\":\"0469ec27\",\"readme.md\":\"82e2e066\",\"docs_language_scripted-prompting.md\":\"1a472d51\",\"blog_posts_developer-survey.md\":\"9ee0ba44\",\"blog_index.md\":\"ff9d28cf\",\"docs_latest_development_docker-setup.md\":\"fa59e371\",\"docs_language_tools.md\":\"9aaa96de\",\"docs_development_documentation.md\":\"b9530bbc\",\"docs_latest_development_documentation.md\":\"c26b8856\",\"blog_posts_release-0.0.6.6.md\":\"958a76e8\",\"docs_language_nestedqueries.md\":\"3fc05b78\",\"docs_latest_installation.md\":\"4aae67b7\",\"docs_index.md\":\"526a0692\",\"docs_latest_language_overview.md\":\"7387dad8\",\"blog_posts_release-0.0.5.md\":\"6f3e470e\",\"blog_posts_release-0.0.6.3.md\":\"a170b883\",\"blog_posts_release-0.0.6.1.md\":\"120a8d77\",\"blog_posts_release-0.0.6.md\":\"2111a972\",\"docs_latest_index.md\":\"45032e16\",\"docs_latest_language_decoding.md\":\"018937f6\",\"blog_posts_release-0.0.6.4.md\":\"a07e6028\",\"docs_latest_language_reference.md\":\"a23db647\",\"docs_language_overview.md\":\"4e5dda69\",\"docs_latest_language_constraints.md\":\"c042157c\",\"docs_latest_language_constraints_custom-constraints.md\":\"a673b22d\",\"docs_latest_language_nestedqueries.md\":\"815f2dd9\",\"blog_posts_release-0.0.6.5.md\":\"a82e82a9\",\"docs_lib_inference-certificates.md\":\"9a213cfe\",\"docs_lib_integrations.md\":\"f23c2c07\",\"docs_lib_integrations_langchain.md\":\"82a1a8ce\",\"docs_latest_development_dev-setup.md\":\"18f17674\",\"docs_lib_output.md\":\"6e90a5e7\",\"blog_posts_release-0.7.md\":\"c15b0585\",\"docs_lib_python.md\":\"bc95434a\",\"docs_development_dev-setup.md\":\"94c94af5\",\"docs_lib_integrations_llama_index.md\":\"f3803dc1\",\"docs_latest_models_azure.md\":\"7c6396b6\",\"docs_language_constraints_custom-constraints.md\":\"f81b18dd\",\"docs_latest_lib_integrations_pandas.md\":\"9b6d3f34\",\"docs_latest_lib_chat.md\":\"00476b1d\",\"docs_lib_chat_defend.md\":\"c253ac92\",\"docs_models_azure.md\":\"167a3758\",\"docs_lib_chat.md\":\"f8be0cb3\",\"docs_models_hf.md\":\"00577347\",\"docs_lib_generations.md\":\"4968526e\",\"docs_models_index.md\":\"7dc07083\",\"docs_latest_lib_output.md\":\"4442e9f8\",\"docs_latest_lib_integrations_llama_index.md\":\"4f2fe1b9\",\"docs_latest_lib_python.md\":\"1c370ca3\",\"docs_latest_models_hf.md\":\"d19b7949\",\"docs_models_openai.md\":\"39ade1fd\",\"docs_models_llama.cpp.md\":\"89effe2c\",\"features_2-nested.md\":\"3c4c00f3\",\"features_1-code.md\":\"356f0c36\",\"features_3-models.md\":\"eaf28c02\",\"features__1-types.md\":\"2e12a0c5\",\"features_examples_1-packing-list.md\":\"fe8669f0\",\"features_examples_2-constraining.md\":\"cda9d411\",\"features_examples_2.5-data-types.md\":\"7dcc82ab\",\"docs_models_replicate.md\":\"c1a2236a\",\"features_examples_3-multi-part.md\":\"8bbbe3a5\",\"features_examples_3.6-python.md\":\"376501ff\",\"features_examples_3.5-distributions.md\":\"9d7164a2\",\"features_examples_4-meta-prompting.md\":\"19152cd4\",\"features_examples_5-wikipedia.md\":\"0f7e4309\",\"features_examples_6-chat.md\":\"cc86c446\",\"research_index.md\":\"2696fbba\",\"docs_language_reference.md\":\"93969594\",\"docs_latest_models_index.md\":\"d5054f5a\",\"docs_latest_models_llama.cpp.md\":\"9e418aff\",\"docs_latest_models_replicate.md\":\"4762e61c\",\"docs_latest_lib_integrations.md\":\"eb75ecfa\",\"docs_latest_lib_generations.md\":\"a63039e2\",\"docs_latest_lib_chat_overview.md\":\"aa834f5b\",\"docs_latest_lib_chat_serving.md\":\"c33c8e48\",\"docs_lib_chat_internal.md\":\"865e3c38\",\"docs_latest_lib_chat_internal.md\":\"fc68f234\",\"docs_latest_language_decorators.md\":\"53bd4b02\",\"docs_latest_lib_integrations_langchain.md\":\"42ff678a\",\"docs_latest_lib_inference-certificates.md\":\"414275b7\",\"docs_latest_lib_chat_defend.md\":\"5cbe2338\",\"docs_latest_language_tools.md\":\"2379781a\",\"docs_lib_chat_overview.md\":\"6114091f\",\"docs_lib_chat_serving.md\":\"36ddd098\",\"docs_latest_language_scripted-prompting.md\":\"12afea6e\",\"docs_latest_models_openai.md\":\"0ecf2534\",\"index.md\":\"3b2473f1\",\"docs_language_constraints.md\":\"43fe4757\",\"docs_lib_integrations_pandas.md\":\"f1409ba3\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"LMQL\",\"description\":\"Language Model Query Language\",\"base\":\"/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Blog\",\"link\":\"/blog/\",\"activeMatch\":\"^/blog/\"},{\"text\":\"Research\",\"link\":\"/research/index.html\"},{\"text\":\"Docs\",\"link\":\"/docs/\",\"activeMatch\":\"^/docs/\"},{\"text\":\"â¶ Playground\",\"link\":\"/playground/\",\"target\":\"_blank\"}],\"search\":{\"provider\":\"algolia\",\"options\":{\"appId\":\"TCP95GVDMD\",\"apiKey\":\"f7b4c9cd024536f8085f160045c3aafe\",\"
116indexName\":\"lmql\"}},\"logo\":\"/lmql.svg\",\"sidebar\":{\"docs/\":[{\"text\":\"\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/index.md\"},{\"text\":\"Installation Instructions\",\"link\":\"/installation.md\"}]},{\"text\":\"Language\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/language\",\"items\":[{\"text\":\"Overview\",\"link\":\"/overview.md\"},{\"text\":\"Scripted Prompting\",\"link\":\"/scripted-prompting.md\"},{\"text\":\"Constraints\",\"link\":\"/constraints.md\",\"activeMatch\":\"^/docs/language/constraints/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"Custom Constraints\",\"link\":\"/constraints/custom-constraints.md\"}]},{\"text\":\"Decoders\",\"link\":\"/decoding.md\"},{\"text\":\"Decorators\",\"link\":\"/decorators.md\"},{\"text\":\"Nested Queries <span class=\\\"badge\\\">NEW</span>\",\"link\":\"/nestedqueries.md\"},{\"text\":\"Tool Augmentation\",\"link\":\"/tools.md\"},{\"text\":\"Language Reference\",\"link\":\"/reference.md\"}]},{\"text\":\"Model Support\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/models\",\"items\":[{\"text\":\"Overview\",\"link\":\"/index.md\"},{\"text\":\"Local Models / Transformers\",\"link\":\"/hf.md\"},{\"text\":\"llama.cpp\",\"link\":\"/llama.cpp.md\"},{\"text\":\"OpenAI\",\"link\":\"/openai.md\"},{\"text\":\"Azure\",\"link\":\"/azure.md\"},{\"text\":\"Replicate\",\"link\":\"/replicate.md\"}]},{\"text\":\"Library\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/lib\",\"items\":[{\"text\":\"Chat\",\"link\":\"/chat.md\",\"activeMatch\":\"^/docs/lib/chat/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"Your First Chatbot\",\"link\":\"/chat/overview.md\"},{\"text\":\"Serving\",\"link\":\"/chat/serving.md\"},{\"text\":\"Internal Reasoning\",\"link\":\"/chat/internal.md\"},{\"text\":\"Defending Against Prompt Injections\",\"link\":\"/chat/defend.md\"}]},{\"text\":\"Generations API <span class=\\\"badge\\\">NEW</span>\",\"link\":\"/generations.md\"},{\"text\":\"Inference Certificates\",\"link\":\"/inference-certificates.md\"},{\"text\":\"Output Streaming\",\"link\":\"/output.md\"},{\"text\":\"Python Integration\",\"link\":\"/python.md\"},{\"text\":\"Other Integrations\",\"link\":\"/integrations.md\",\"activeMatch\":\"^/docs/lib/integrations/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"LangChain\",\"link\":\"/integrations/langchain.md\"},{\"text\":\"LlamaIndex\",\"link\":\"/integrations/llama_index.md\"},{\"text\":\"Pandas\",\"link\":\"/integrations/pandas.md\"}]}]},{\"text\":\"Development\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/development\",\"items\":[{\"text\":\"Development Environment\",\"link\":\"/dev-setup.md\"},{\"text\":\"LMQL in Docker\",\"link\":\"/docker-setup.md\"},{\"text\":\"Documentation\",\"link\":\"/documentation.md\"}]}],\"docs/latest/\":[{\"text\":\"\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/latest/\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/index.md\"},{\"text\":\"Installation Instructions\",\"link\":\"/installation.md\"}]},{\"text\":\"Language\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/latest/language\",\"items\":[{\"text\":\"Overview\",\"link\":\"/overview.md\"},{\"text\":\"Scripted Prompting\",\"link\":\"/scripted-prompting.md\"},{\"text\":\"Constraints\",\"link\":\"/constraints.md\",\"activeMatch\":\"^/docs/latest/language/constraints/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"Custom Constraints\",\"link\":\"/constraints/custom-constraints.md\"}]},{\"text\":\"Decoders\",\"link\":\"/decoding.md\"},{\"text\":\"Decorators\",\"link\":\"/decorators.md\"},{\"text\":\"Nested Queries <span class=\\\"badge\\\">NEW</span>\",\"link\":\"/nestedqueries.md\"},{\"text\":\"Tool Augmentation\",\"link\":\"/tools.md\"},{\"text\":\"Language Reference\",\"link\":\"/reference.md\"}]},{\"text\":\"Model Support\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/latest/models\",\"items\":[{\"text\":\"Overview\",\"link\":\"/index.md\"},{\"text\":\"Local Models / Transformers\",\"link\":\"/hf.md\"},{\"text\":\"llama.cpp\",\"link\":\"/llama.cpp.md\"},{\"text\":\"OpenAI\",\"link\":\"/openai.md\"},{\"text\":\"Azure\",\"link\":\"/azure.md\"},{\"text\":\"Replicate\",\"link\":\"/replicate.md\"}]},{\"text\":\"Library\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/latest/lib\",\"items\":[{\"text\":\"Chat\",\"link\":\"/chat.md\",\"activeMatch\":\"^/docs/latest/lib/chat/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"Your First Chatbot\",\"link\":\"/chat/overview.md\"},{\"text\":\"Serving\",\"link\":\"/chat/serving.md\"},{\"text\":\"Internal Reasoning\",\"link\":\"/chat/internal.md\"},{\"text\":\"Defending Against Prompt Injections\",\"link\":\"/chat/defend.md\"}]},{\"text\":\"Generations API <span class=\\\"badge\\\">NEW</span>\",\"link\":\"/generations.md\"},{\"text\":\"Inference Certificates\",\"link\":\"/inference-certificates.md\"},{\"text\":\"Output Streaming\",\"link\":\"/output.md\"},{\"text\":\"Python Integration\",\"link\":\"/python.md\"},{\"text\":\"Other Integrations\",\"link\":\"/integrations.md\",\"activeMatch\":\"^/docs/latest/lib/integrations/\",\"collapsable\":true,\"collapsed\":true,\"items\":[{\"text\":\"LangChain\",\"link\":\"/integrations/langchain.md\"},{\"text\":\"LlamaIndex\",\"link\":\"/integrations/llama_index.md\"},{\"text\":\"Pandas\",\"link\":\"/integrations/pandas.md\"}]}]},{\"text\":\"Development\",\"collapsable\":true,\"collapsed\":false,\"base\":\"/docs/latest/development\",\"items\":[{\"text\":\"Development Environment\",\"link\":\"/dev-setup.md\"},{\"text\":\"LMQL in Docker\",\"link\":\"/docker-setup.md\"},{\"text\":\"Documentation\",\"link\":\"/documentation.md\"}]}]},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/eth-sri/lmql\"},{\"icon\":\"discord\",\"link\":\"https://discord.gg/5djae9gJVB\"}]},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
116 117 118 </body> 119</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.