<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[FactsMachine]]></title><description><![CDATA[AI a-musings by @aaazzam and @jlowin]]></description><link>https://www.factsmachine.ai</link><image><url>https://substackcdn.com/image/fetch/$s_!2K-7!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0f2209b-c406-496c-8abe-711cc21604e0_1024x1024.png</url><title>FactsMachine</title><link>https://www.factsmachine.ai</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 10:59:42 GMT</lastBuildDate><atom:link href="https://www.factsmachine.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Adam Azzam & Jeremiah Lowin]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[factsmachine@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[factsmachine@substack.com]]></itunes:email><itunes:name><![CDATA[Adam Azzam]]></itunes:name></itunes:owner><itunes:author><![CDATA[Adam Azzam]]></itunes:author><googleplay:owner><![CDATA[factsmachine@substack.com]]></googleplay:owner><googleplay:email><![CDATA[factsmachine@substack.com]]></googleplay:email><googleplay:author><![CDATA[Adam Azzam]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Why Pydantic became indispensable for LLMs.]]></title><description><![CDATA[How a validation library accidentally became a translator between code and English.]]></description><link>https://www.factsmachine.ai/p/how-pydantic-became-indispensable</link><guid isPermaLink="false">https://www.factsmachine.ai/p/how-pydantic-became-indispensable</guid><dc:creator><![CDATA[Adam Azzam]]></dc:creator><pubDate>Fri, 19 Jan 2024 17:19:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3073c646-d117-4fd7-9a41-6cb937355d4f_1792x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pydantic is the most widely used data validation library for Python. It&#8217;s long been a favorite of Python pedants, who want to define, share, and enforce &#8220;contracts&#8221; between systems. With Pydantic I can <em>define</em> what a User, Book, or Pizza is in my code, <em>share</em> that definition with another system, and <em>validate</em> whether or not an incoming data adheres to my definitions. </p><p>So why is it it emerging as critical infrastructure for working with LLMs?</p><p>Pydantic lets you share your data models by generating clear, standardized representations of their definitions a la JSON Schema. In doing so, so Pydantic makes it trivial for <em>your</em> spaghetti code to interact with <em>my</em> fettuccini code, since it handles the translation to a global standard. These open standards are ubiquitous in nearly every public description of <em>describing</em> data models or web services.</p><p>It&#8217;s unsurprising then, that in training LLMs like ChatGPT on <em>the entire internet</em>, they&#8217;ve seen millions of well-documented JSON schemas and human descriptions of what those services do. This has given LLMs the uncanny ability to reason back and forth been unstructured data and structured data - after all, it&#8217;s seen hundreds of millions of examples of &#8220;if you want to send a Hawaiian Pizza to our service, you need to send {&#8216;toppings&#8217;: [&#8216;Canadian bacon&#8217;, &#8216;pineapple&#8217;, &#8216;garbage&#8217;]}. </p><p>Breeding LLMs to be both creative and conforming usually means constraining their choices, most often via interleaving them with rigid <em>classic</em> software, or code. We&#8217;ll let the LLM listen to you prattle on about what you want for dinner, and when you&#8217;re done talking we&#8217;ll make it create a <em>valid</em> pizza for our order_pizza function to carry on. We&#8217;ll tell it what it means to be <em>valid</em> with an JSON schema it understands, and we&#8217;ll use Pydantic to validate your pizza isn&#8217;t Hawaiian before ordering it. </p><p>If LLMs speak JSON schemas, its unsurprising then that the spoils of LLMs go to <em>any</em> language or utility that can easily broker a conversation between code and schema. Pydantic has earned its place in the Python ecosystem, but it benefitted from being one of the few sane options for brokering this conversation in Python when developers discovered how well LLMs speak JSON schemas. </p><p>If we prod deeper, this victory for Pydantic teaches us a more general lesson about the importance of quantizing your decision space. Put another way: today&#8217;s LLMs are better at paint-by-numbers than they are at making a masterpiece on a blank canvas. They&#8217;re better at speaking JSON schemas than your spaghetti code, they&#8217;re better at text-to-ORM than text-to-SQL, they&#8217;re better at text-to-component-library than text-to-html. The recipe behind many successful projects is finding the correct tessellation for an LLM to creatively in-paint than telling it to make your user another Picasso. For this moment in time when LLMs are better at paint-by-numbers, AI Engineers distinguish themselves by how well they can quantize these design decisions so they still appear to the end user as a masterpiece. </p><p>Looking forward, there are a few hiccups on the horizon for Pydantic and its cousins in other languages (e.g. Zod in TypeScript). LLMs are overfit to the hundreds of millions of examples that conform to the JSON 2019-09 draft. In December 2020 JSON Schema released its 2020-12 draft, which is sufficiently different to cause a headache (e.g. how it handles enums). Pydantic&#8217;s last major release conforms to this new specification, and many LLM frameworks that migrated to Pydantic V2 saw regressions in ChatGPT&#8217;s performance as a result. </p><p>This presents a beautiful conflict and form of amplification bias. JSON Schema draft 2019-09 is more ubiquitous in the training data of today&#8217;s LLMs. LLM applications will have more success using an <em>outdated</em> standard since it&#8217;s trained on it and slow to change. LLMs sticky training data risks creating a real bias towards using standards from 2017-2021, which in turn discourages adoption of new standards, products, and libraries which is ironically what we&#8217;re all trying to build.  </p>]]></content:encoded></item><item><title><![CDATA[Marvin's turning 2.0!]]></title><description><![CDATA[Your favorite AI toolkit just got simpler, more powerful, and fully multi-modal]]></description><link>https://www.factsmachine.ai/p/marvins-turning-20</link><guid isPermaLink="false">https://www.factsmachine.ai/p/marvins-turning-20</guid><dc:creator><![CDATA[Jeremiah Lowin]]></dc:creator><pubDate>Wed, 17 Jan 2024 21:11:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KMzY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KMzY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KMzY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KMzY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KMzY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KMzY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515e7eb5-ff61-4613-807f-15c79c4edfb7_1792x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today we&#8217;re introducing <a href="https://askmarvin.ai">Marvin 2.0</a>, a new, streamlined version of our lightweight AI engineering toolkit. Marvin lets you build natural language interfaces that are reliable, scalable, and easy to trust.</p><p>You can upgrade right now:</p><blockquote><p><code>pip install marvin -U</code></p></blockquote><p>Marvin consists of a variety of useful tools, all designed to be used independently. Each one represents a common LLM use case, and packages that power into a simple, self-documenting interface. With 2.0, we&#8217;ve introduced dedicated functionality for the most frequent tasks and gone multi-modal! </p><p>Here&#8217;s an overview of all the new functionality:</p><h4><strong>General</strong></h4><p>&#129470; <a href="https://askmarvin.ai/docs/text/functions">Write custom AI-powered functions</a> without source code</p><h4><strong>Text</strong></h4><p>&#127991;&#65039; <a href="https://askmarvin.ai/docs/text/classification">Classify text</a> into categories</p><p>&#128269; <a href="https://askmarvin.ai/docs/text/extraction">Extract structured entities</a> from text</p><p>&#129668; <a href="https://askmarvin.ai/docs/text/transforming">Transform text</a> into structured data</p><p>&#10024; <a href="https://askmarvin.ai/docs/text/generation">Generate synthetic data</a> from a schema</p><h4><strong>Images</strong></h4><p>&#128444;&#65039; <a href="https://askmarvin.ai/docs/images/generation">Create images</a> from text or functions</p><p>&#128221; <a href="https://askmarvin.ai/docs/vision/captioning">Describe images</a> with natural language</p><p>&#127991;&#65039; <a href="https://askmarvin.ai/docs/vision/classification">Classify images</a> into categories</p><p>&#128269; <a href="https://askmarvin.ai/docs/vision/extraction">Extract structured entities</a> from images</p><p>&#129668; <a href="https://askmarvin.ai/docs/vision/transforming">Transform images</a> into structured data</p><h4><strong>Audio</strong></h4><p>&#127897;&#65039; <a href="https://askmarvin.ai/docs/audio/speech">Generate speech</a> from text or functions</p><h4><strong>Interaction</strong></h4><p>&#129302; <a href="https://askmarvin.ai/docs/interactive/assistants">Chat with assistants</a> and use custom tools</p><p>&#129517; <a href="https://askmarvin.ai/docs/interactive/applications">Build applications</a> that manage persistent state</p><p>Marvin is focused on making cutting-edge LLM technology feel just like any other function. Instead of building heavy pipelines, Marvin lets you add just the right amount of AI Magic&#8482;&#65039; to your traditional software. Marvin 2.0 introduces a number of new, dedicated interfaces for the most common LLM use cases.</p><h3>Classification</h3><p>To give you a taste for what it&#8217;s like to use Marvin, here&#8217;s how to perform sentiment analysis by classifying text:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UP-f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UP-f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 424w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 848w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 1272w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UP-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png" width="1410" height="716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:716,&quot;width&quot;:1410,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84248,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UP-f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 424w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 848w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 1272w, https://substackcdn.com/image/fetch/$s_!UP-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb781720d-1ce9-41a5-a59e-aaae24fcff71_1410x716.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Entity Extraction</h3><p>One of Marvin&#8217;s core use cases has always been structuring text into Python types, including Pydantic models. Here, we use the new <code>extract</code> function to automatically pull a list of people out of the text and create a &#8220;Person&#8221; model for each one:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k_wt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k_wt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 424w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 848w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k_wt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png" width="1420" height="1030" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1030,&quot;width&quot;:1420,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157072,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k_wt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 424w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 848w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 1272w, https://substackcdn.com/image/fetch/$s_!k_wt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5a84b3d-b348-4cb4-b8d5-0446ae746bfa_1420x1030.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Transforming images into data</h3><p>Marvin 2.0 is fully multi-modal, with support for both images and audio! Here&#8217;s an example of transforming an image into a list of strings to see if we forgot any items on our shopping list. This also shows how every Marvin tool can be given natural language instructions for precise control:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iNWH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iNWH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 424w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 848w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 1272w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iNWH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png" width="1402" height="1936" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1936,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2296613,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iNWH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 424w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 848w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 1272w, https://substackcdn.com/image/fetch/$s_!iNWH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa25179cd-84eb-4adf-ad37-c7ce1b963bb9_1402x1936.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Please note that image support will be beta until OpenAI finalizes the vision API.</em></p><h3>AI functions</h3><p>When the standard tools aren&#8217;t enough, Marvin&#8217;s AI functions let you combine any inputs, instructions, and output types to create custom AI-powered behaviors... without source code. These functions look and feel like normal Python functions, but when they are called, the result is generated on-demand by an LLM This is done safely, without generating or executing source code, by using the LLM as a sort of &#8220;runtime&#8221; to predict the function output. Marvin functions can handle complex use cases and behaviors that would be difficult or impossible to express as code. Here&#8217;s one that can generate structured recipe objects from a variety of inputs:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LkF8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LkF8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 424w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 848w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 1272w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LkF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png" width="1384" height="2050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50817284-612e-482c-9127-6b17446905e6_1384x2050.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2050,&quot;width&quot;:1384,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:292266,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LkF8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 424w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 848w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 1272w, https://substackcdn.com/image/fetch/$s_!LkF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50817284-612e-482c-9127-6b17446905e6_1384x2050.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Assistants</h3><p>OpenAI&#8217;s new assistants API handles many of the most complex aspects of building agents or chatbots, including memory, threading, code execution, and more. Marvin makes it simple to create and interact with assistants programmatically, including OpenAI tools like the code interpreter and any custom functions you give the assistant to call.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kbAB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kbAB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 424w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 848w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 1272w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kbAB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png" width="1398" height="1882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1882,&quot;width&quot;:1398,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:395204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kbAB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 424w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 848w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 1272w, https://substackcdn.com/image/fetch/$s_!kbAB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cf5cd02-533f-4591-bf91-0d6060ad7c7c_1398x1882.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Please note that assistants support will be beta until OpenAI finalizes the assistants API.</em></p><h3>Generating images</h3><p>For all of Marvin&#8217;s advanced functionality, sometimes the most fun thing to do is making simple calls to generate speech or images. Here&#8217;s how to generate the image at the top of this post:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6CkF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6CkF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 424w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 848w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 1272w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6CkF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png" width="1410" height="610" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:1410,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102888,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6CkF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 424w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 848w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 1272w, https://substackcdn.com/image/fetch/$s_!6CkF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd71e196e-f345-4bb3-b5f9-41d4be599dc3_1410x610.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>To learn more about Marvin, check out <a href="https://www.askmarvin.ai">the docs</a>, star us <a href="https://www.github.com/prefecthq/marvin">on GitHub</a>, join us <a href="https://discord.gg/Kgw4HpcuYG">in Discord</a>, or &#8230;x?&#8230; us <a href="https://twitter.com/AskMarvinAI">on X</a>. </p><p>Happy engineering!</p>]]></content:encoded></item><item><title><![CDATA[Marvin 1.5 - The Grimoire ]]></title><description><![CDATA[Prompt and Circumstance]]></description><link>https://www.factsmachine.ai/p/marvin-15-the-grimoire</link><guid isPermaLink="false">https://www.factsmachine.ai/p/marvin-15-the-grimoire</guid><dc:creator><![CDATA[Adam Azzam]]></dc:creator><pubDate>Fri, 22 Sep 2023 22:21:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9OSl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9OSl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9OSl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 424w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 848w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 1272w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9OSl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png" width="542" height="332.27766323024053" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:892,&quot;width&quot;:1455,&quot;resizeWidth&quot;:542,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9OSl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 424w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 848w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 1272w, https://substackcdn.com/image/fetch/$s_!9OSl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5912a7ea-8c8c-4307-abb9-84aa1ac5aa1c_1455x892.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today we&#8217;re excited to release Marvin 1.5. We&#8217;re:</p><ul><li><p>Putting the `engineering` in prompt engineering with our new prompt_fn, and</p></li><li><p>Speeding up serialization in Marvin by ~50x by transitioning to Pydantic V2. </p></li></ul><p>Last week we released 1.4, and the response has been overwhelmingly positive. At its core, Marvin translates your Python code to English (&#8220;serialization&#8221;) and then calls a Large Language Model on your behalf (&#8220;execution&#8221;) before parsing its result. We shipped the first step of what we called the separation of &#8216;serialization&#8217; and &#8216;execution&#8217;. This week we&#8217;re doubling down.</p><p><strong>Prompt Functions</strong></p><p>This week we introduce prompt functions, or prompt_fn. We now expose a low-level decorator that lets you write prompts as <em>functions</em>. This lets you build fully type-hinted prompts that other engineers can introspect, version, and test. Let&#8217;s take a look (long photo ahead):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P2_B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P2_B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 424w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 848w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 1272w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P2_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png" width="1434" height="2280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2280,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:259044,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P2_B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 424w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 848w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 1272w, https://substackcdn.com/image/fetch/$s_!P2_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f8cdf6-fe66-4862-80a2-1d3d1312bae8_1434x2280.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every parameter above is fully-customizable. There&#8217;s no black-box, or &#8220;magic&#8221; separating you from the prompt you want to write and the powerful serialization engine that powers Marvin. To see more examples <a href="https://www.askmarvin.ai/prompting/prompt_function/">check out our docs</a>.</p><p><strong>Pydantic V2 Migration</strong></p><p>Pydantic is one of the most popular Python libraries today for validating and serializing data models. Not only is it useful as a developer, but it exposes really helpful components for turning a Python data model into an industry-standard schema that GPT and other Large Language Models are accustomed to parsing. This standardized schema and its cameo its played in GPT&#8217;s training data gives us an effective way to communicate rigorous types back and forth in English and code.</p><p>Pydantic recently rebuilt its entire foundation in Rust and, as a result, boasts a 50x speed improvement. It&#8217;s a treat to work with, and it&#8217;s the version of choice for developers starting new projects. We&#8217;re excited to support developers working with either Pydantic V1 or V2!</p><p>The feedback from Marvin users has been loud and clear: it&#8217;s the most ergonomic framework for working with Large Language Models. It&#8217;s a framework that feels familiar: if you know Python, you know Marvin.</p><p>Upgrade today (<code>pip install marvin -U)</code>, check out the <a href="http://askmarvin.ai/">docs</a>, and give the <a href="https://github.com/prefecthq/marvin">repo a star</a>!</p>]]></content:encoded></item><item><title><![CDATA[Marvin 1.4 - The Chain]]></title><description><![CDATA[Listen to the wind blow, watch the sun rise.]]></description><link>https://www.factsmachine.ai/p/marvin-14-the-chain</link><guid isPermaLink="false">https://www.factsmachine.ai/p/marvin-14-the-chain</guid><dc:creator><![CDATA[Adam Azzam]]></dc:creator><pubDate>Wed, 13 Sep 2023 23:15:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1fhC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1fhC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1fhC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 424w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 848w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 1272w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1fhC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png" width="1451" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1451,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1405031,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1fhC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 424w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 848w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 1272w, https://substackcdn.com/image/fetch/$s_!1fhC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffabc6516-f149-48eb-8a11-2948483dd38c_1451x836.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today we&#8217;re excited to release Marvin 1.4. </p><p>This release comes with powerful, opinionated, and flexible framework for building (semi-)autonomous workflows - something we&#8217;ve thought a lot about at Prefect. Today we&#8217;re adding:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.factsmachine.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading FactsMachine! Subscribe for free to receive new posts.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p>Conservational State for managing multi-turn conversations and workflows. </p></li><li><p>Long-running chaining for autonomous workflows. </p></li><li><p>Ejectable prompts - separating serialization and logic.</p></li></ul><p>If you&#8217;ve built an LLM-based system, you know first-hand that fully autonomous workflows, while powerful, are brittle and hard to trust. LLMs, like a sharp college intern, can go off rails if you don&#8217;t have touch points to check in. Once they&#8217;ve proven they&#8217;re capable of handling a task on their own, you&#8217;re able to set and forget. <br><br><strong>Conservational State and Autonomous Workflows.</strong><br>We&#8217;ve built a framework for writing semi- and fully-autonomous agents with tools. Here&#8217;s what writing an agent <em>feels </em>like in Marvin.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q6cR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q6cR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q6cR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg" width="1200" height="757" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:757,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Q6cR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Q6cR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ffbb04-78f3-476a-a0f7-4a49c3f94a7c_1200x757.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This lets you introspect and debug agents with the simplicity you would for writing pure Python. No black box, and no PhD required. </p><p>Alternatively, when you want to turn full control over to an LLM for autonomous execution, you can simply <em>chain</em> to implement this while-loop behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KhNw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KhNw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 424w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 848w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 1272w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KhNw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png" width="1456" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1034936,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KhNw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 424w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 848w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 1272w, https://substackcdn.com/image/fetch/$s_!KhNw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09bb29e0-c30e-4cdb-b337-d937d9daf512_1850x1196.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Ejectable prompts. </strong></p><p>One of the things developers <em>love</em> about Marvin is our emphasis on the <em>engineering</em> in prompt <em>engineering</em>. Marvin developers write prompts with python functions, dataclasses, enums. We take your code, written in python, and translate it to English - so an LLM can autocomplete to a response which we parse for you. <br><br>As developers explore open source models, we saw a greater need to separate <em>serialization</em> (code to english) and execution (english to LLM). We&#8217;ve worked to make each component of Marvin (AI Functions, AI Models, AI Classifiers) expose their raw English prompt to use with open source models.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jm0U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jm0U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 424w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 848w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 1272w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jm0U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png" width="1456" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:711844,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jm0U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 424w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 848w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 1272w, https://substackcdn.com/image/fetch/$s_!Jm0U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F405a2fcd-1656-4b96-8687-f9e7348ae2b7_1850x836.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The feedback from Marvin users has been loud and clear: it&#8217;s the most ergonomic framework for working with Large Language Models. It&#8217;s a framework that feels familiar: if you know Python, you know Marvin.</p><p>Upgrade today (<code>pip install marvin -U)</code>, check out the <a href="http://askmarvin.ai/">docs</a>, and give the <a href="https://github.com/prefecthq/marvin">repo a star</a>!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.factsmachine.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading FactsMachine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Hidden in Plain Sight]]></title><description><![CDATA[Embedding text in AI images with ControlNet and Modal]]></description><link>https://www.factsmachine.ai/p/hidden-in-plain-sight</link><guid isPermaLink="false">https://www.factsmachine.ai/p/hidden-in-plain-sight</guid><dc:creator><![CDATA[Jeremiah Lowin]]></dc:creator><pubDate>Sat, 05 Aug 2023 00:45:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lv_G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lv_G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset image2-full-screen"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lv_G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lv_G!,w_5760,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;full&quot;,&quot;height&quot;:682,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-fullscreen" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!lv_G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lv_G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc17b4763-ad03-42f5-a318-8f3c89dbc7df_2132x998.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Can you see the forest for the trees?</p><p>You might need to squint.</p><p>A few weeks ago, a viral <a href="https://www.reddit.com/r/StableDiffusion/comments/1561k15/free_tool_to_generate_hidden_text_using_stable/">post on Reddit</a> caught my attention. It was about embedding text in plain sight within AI-generated images using Stable Diffusion and ControlNet, creating an ingenious blend of art and technology. Here&#8217;s one example from that post:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mMIW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mMIW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 424w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 848w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 1272w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mMIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png" width="960" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/StableDiffusion - Free Tool to Generate &#8220;Hidden&#8221; Text (Using Stable Diffusion + ControlNet)&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/StableDiffusion - Free Tool to Generate &#8220;Hidden&#8221; Text (Using Stable Diffusion + ControlNet)" title="r/StableDiffusion - Free Tool to Generate &#8220;Hidden&#8221; Text (Using Stable Diffusion + ControlNet)" srcset="https://substackcdn.com/image/fetch/$s_!mMIW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 424w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 848w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 1272w, https://substackcdn.com/image/fetch/$s_!mMIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde0aedbe-beb2-43a0-82fb-bf028d3ef163_960x960.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;re like me, you&#8217;re probably a bit confused right now: where&#8217;s the text?  I couldn&#8217;t see it myself until I looked at a thumbnail preview of the same image:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v2-l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v2-l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 424w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 848w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 1272w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v2-l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png" width="184" height="184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8729603-2d97-4ac8-8816-04557286f286_184x184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:184,&quot;width&quot;:184,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93895,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v2-l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 424w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 848w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 1272w, https://substackcdn.com/image/fetch/$s_!v2-l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8729603-2d97-4ac8-8816-04557286f286_184x184.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>It&#8217;s hard to believe those are the same picture! Try resizing (or squinting) to prove it to yourself.</p><p>(Mobile readers: you&#8217;re probably REALLY confused right now because you see the text in both images, which are naturally small on your device. Zoom in or come back from a laptop to see the full effect.)</p><p>Essentially, the text is hidden as a low-frequency component of the image. Zooming out or even squinting can hide the high-frequency details that prevent your brain from resolving it. </p><p>I thought this was so clever and fascinating and wanted to try myself. I only found one tutorial online (unfortunately, it has since disappeared), and it relied on the popular Automatic1111 UI. I wanted a way to do generate these images programmatically, so I began writing a script to do so. This gave me a greater opportunity to learn how they worked, as well as to exercise more control over the output.</p><p>I <a href="https://twitter.com/jlowin/status/1683174085092581376">tweeted</a> some of my early results and got such an warm response that I decided to publish my code and write this piece.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!93If!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!93If!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 424w, https://substackcdn.com/image/fetch/$s_!93If!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 848w, https://substackcdn.com/image/fetch/$s_!93If!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 1272w, https://substackcdn.com/image/fetch/$s_!93If!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!93If!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png" width="536" height="608.4324324324324" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1344,&quot;width&quot;:1184,&quot;resizeWidth&quot;:536,&quot;bytes&quot;:1834169,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!93If!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 424w, https://substackcdn.com/image/fetch/$s_!93If!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 848w, https://substackcdn.com/image/fetch/$s_!93If!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 1272w, https://substackcdn.com/image/fetch/$s_!93If!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F278007a9-94a5-4eb3-bfdb-43cf523006f7_1184x1344.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>What&#8217;s going on here?</h1><p>Stable Diffusion (SD) in an open-source text-to-image model, meaning it translates a description of a scene into a picture of that scene. This technology is incredibly powerful, but it can be difficult to control. For example, I can use it to generate infinite variations of &#8220;a house,&#8221; but getting it to produce one that looks the same as the house I grew up in would defy even the most precise natural language prompt.</p><p>ControlNet (CN) is a technique that can precisely guide the output of a SD model. There are a variety of ControlNets optimized for different types of images, but broadly speaking it would let me show the SD model a picture of my house and have it generate an image that appeared to be of the same house, but under different lighting, weather, or completely fanciful conditions.</p><p>Recently, a CN was developed that excelled at producing natural-looking images that are actually valid QR codes, like this one (try scanning it):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SfhK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SfhK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SfhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg" width="768" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:768,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;island.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="island.png" title="island.png" srcset="https://substackcdn.com/image/fetch/$s_!SfhK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SfhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23978437-df8c-48bb-9658-ed45167f5048_768x768.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It works by using the black-and-white QR code pattern to inform areas of high-and-low contrast in the final image, with SD filling in the details in an aesthetic way.</p><p>It turns out we can use this same technique to embed text instead of QR codes. The effect can be extremely subtle or painfully obvious, depending on the settings used. The most fascinating thing to me is how the text completely disappears when the image is large and reappears when it&#8217;s small (or you stand back, or squint) and only focus on the low-frequency components.</p><p>Here are a few examples I generated:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gnxZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gnxZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gnxZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png" width="1024" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:887247,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gnxZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!gnxZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12c479a2-bf31-46b8-aa75-9d192a8b5829_1024x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">FOREST</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0_MH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0_MH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0_MH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg" width="1024" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!0_MH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0_MH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F424e2a67-28bc-4150-b998-f7593975a397_1024x512.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">MARVIN</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T-be!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T-be!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!T-be!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!T-be!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!T-be!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T-be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png" width="1024" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:588356,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T-be!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!T-be!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!T-be!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!T-be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F508a9ed5-6c4b-44a7-96e2-ed304239088b_1024x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">COFFEE</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T9aj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T9aj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T9aj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png" width="1024" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:730454,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T9aj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 424w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 848w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 1272w, https://substackcdn.com/image/fetch/$s_!T9aj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfb4d265-fc8a-464e-a986-5327e7e5d467_1024x512.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">FUTURE</figcaption></figure></div><p></p><h1>Try it yourself</h1><p>When I started generating these images, I quickly ran into a problem. My M1 MBP takes minutes to generate a single image, which is just too slow. I&#8217;m a fan of <a href="https://modal.com/">Modal</a> for rapid access to serverless compute, so I used Modal to offload computation to a remote A10G GPU, which brought generation time down to seconds. </p><p>I&#8217;ve <a href="https://github.com/jlowin/aimages">published the script</a> that I used to generate many of these images. Its only requirement is a Modal account.</p><p>The process isn't without its challenges. Fine-tuning the visibility of the text in the images is intricate and depends on various factors, including guidance scales, image size, and the prompt. Some scenes are more amenable to this technique than others, and naturally high-contrast scenes lend themselves particularly well.</p><p>There's a lot to be explored in the interplay of text and images in this way. The melding of high and low-frequency components to create, hide, and reveal meaning opens up exciting possibilities, from art to cryptography to novel forms of communication. There is a frontier here that's ripe for exploration, and I&#8217;m thrilled to get to dive into it! I hope you&#8217;ll give it a shot, too.</p>]]></content:encoded></item><item><title><![CDATA[Marvin 1.1: More ways to play]]></title><description><![CDATA[Introducing Anthropic and Azure support, native mapping, natural language guidance, and more.]]></description><link>https://www.factsmachine.ai/p/marvin-11-more-ways-to-play</link><guid isPermaLink="false">https://www.factsmachine.ai/p/marvin-11-more-ways-to-play</guid><dc:creator><![CDATA[Jeremiah Lowin]]></dc:creator><pubDate>Fri, 21 Jul 2023 18:22:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Lkk3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lkk3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lkk3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lkk3!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png" width="1004" height="573.7142857142857" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1004,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!Lkk3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!Lkk3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfc2b081-4428-49ec-ab30-db294cc81a42_1456x832.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://github.com/prefecthq/marvin">Marvin</a> is an AI engineering framework for building natural language interfaces that are reliable, scalable, and easy to trust. </p><p>With the <a href="https://www.factsmachine.ai/p/marvins-turning-10">1.0 release</a> last week, we focused on delivering four key components that you can adopt anywhere in your software:</p><p>&#129513; <strong>AI Models</strong> for structuring text into type-safe schemas</p><p>&#127991;&#65039; <strong>AI Classifiers</strong> for bulletproof classification and routing</p><p>&#129668; <strong>AI Functions</strong> for complex business logic and transformations</p><p>&#129309; <strong>AI Applications</strong> for interactive use and persistent state</p><p>Marvin 1.0 was focused on getting the developer experience <em>just right</em> by reusing familiar interfaces like Pydantic models, enums, and functions. Today, we&#8217;re making some substantial enhancements to that core functionality in Marvin 1.1.</p><h2>Anthropic &amp; Azure OpenAI Service support</h2><p>In addition to OpenAI, Marvin 1.1 adds support for both Anthropic and the Azure OpenAI Service through a new providers interface. To change your model, set your <code>llm_model</code> (or the <code>MARVIN_LLM_MODEL</code> environment variable) to a compatible string, like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HO3J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HO3J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 424w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 848w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 1272w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HO3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png" width="1456" height="887" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:887,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:899641,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HO3J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 424w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 848w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 1272w, https://substackcdn.com/image/fetch/$s_!HO3J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd022e1ae-3f41-4254-beab-306bd93195d5_1950x1188.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Adding new providers is straightforward, as long as they are compatible with the OpenAI functions API (or can be taught to be compatible with it!). You can see the full list of supported models <a href="https://www.askmarvin.ai/src/docs/configuration/settings/#llm-providers">here</a>.</p><p>Please note that at this time, AI Classifiers only support OpenAI-compatible APIs because they take advantage of a special tokenization feature to deliver results extremely quickly.</p><h2>Mapping: process batches in parallel</h2><p>AI Models, AI Classifiers, and AI Functions all have a new <code>.map()</code> method that applies their logic to multiple inputs. Mapping operates concurrently, which means that processing happens (almost) in parallel and your results will be available as soon as the slowest call completes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TwdG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TwdG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 424w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 848w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 1272w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TwdG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2119482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TwdG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 424w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 848w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 1272w, https://substackcdn.com/image/fetch/$s_!TwdG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e75a969-7b7b-4c4b-9768-d423893baea1_3195x2130.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Guide behavior with instructions</h2><p>AI Models, AI Classifiers, and AI Functions all have a new <code>instructions </code>parameter that can be used to steer their behavior. This is helpful for controlling parsing or edge cases without redefining your entire component. Instructions can be provided when you decorate a component or on a per-call basis:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ewzH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ewzH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 424w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 848w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ewzH!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png" width="1520" height="414.45054945054943" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:397,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1520,&quot;bytes&quot;:3858714,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ewzH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 424w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 848w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 1272w, https://substackcdn.com/image/fetch/$s_!ewzH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca2e03dd-3ccd-401f-9eea-c993ecc07cca_6088x1658.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Note that for AI Models, the parameter is called <code>instructions_ </code>to avoid conflicts with models that have an actual &#8220;instructions&#8221; field!</p><h2>Streaming and more</h2><p>All Marvin LLMs now support streaming outputs, which is most useful when working with AI Applications. In addition, 1.1 is full of improvements, bug fixes, and prompt tweaks designed to improve the overall developer experience.</p><p>Upgrade today (<code>pip install marvin -U)</code>, check out the <a href="http://askmarvin.ai">docs</a>, and give the <a href="https://github.com/prefecthq/marvin">repo a star</a>!</p><p></p>]]></content:encoded></item><item><title><![CDATA[🥳 Marvin's turning 1.0!]]></title><description><![CDATA[It's the lightweight AI engineering framework that you'd probably build yourself (if you had time)]]></description><link>https://www.factsmachine.ai/p/marvins-turning-10</link><guid isPermaLink="false">https://www.factsmachine.ai/p/marvins-turning-10</guid><dc:creator><![CDATA[Jeremiah Lowin]]></dc:creator><pubDate>Tue, 11 Jul 2023 18:59:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!juL0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!juL0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!juL0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 424w, https://substackcdn.com/image/fetch/$s_!juL0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 848w, https://substackcdn.com/image/fetch/$s_!juL0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 1272w, https://substackcdn.com/image/fetch/$s_!juL0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!juL0!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp" width="946" height="540.5714285714286" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:946,&quot;bytes&quot;:202776,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!juL0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 424w, https://substackcdn.com/image/fetch/$s_!juL0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 848w, https://substackcdn.com/image/fetch/$s_!juL0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 1272w, https://substackcdn.com/image/fetch/$s_!juL0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b781a25-0ffa-46de-8ba4-55782f014c39_1456x832.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today we&#8217;re releasing <a href="https://askmarvin.ai">Marvin 1.0</a>! This major release is the result of incredible feedback and opportunities to work closely with our developer community over the past few months. We&#8217;re so grateful for their time, attention, and contributions, and this release is truly a community effort.</p><p>Check out the docs at <a href="https://www.askmarvin.ai">askmarvin.ai</a>, give Marvin a star on <a href="https://github.com/prefecthq/marvin">GitHub</a>, or take 1.0 for a spin by upgrading now: <code>pip install marvin -U</code></p><h2>Hello, Marvin!</h2><p>Marvin is a lightweight framework for building AI-powered software that&#8217;s reliable, scalable, and easy to trust. It is designed primarily for AI engineers: users who are deploying cutting-edge AI to build powerful new features and applications. Since our initial release, thousands of developers, engineers, and founders have adopted Marvin to integrate and build with Large Language Models (LLMs). We&#8217;ve been humbled by the warm reception.</p><p>Sometimes the most challenging part of working with generative AI is remembering that it's not magic; it's software. It's new, it's nondeterministic, and it's incredibly powerful, but it's still software: parameterized API calls that can trigger dependent actions (and just might talk like a pirate). Marvin's goal is to bring the best practices of building dependable, observable software to the frontier of generative AI. As the team behind <a href="https://github.com/prefecthq/prefect">Prefect</a>, which does something very similar for data engineers, we've poured years of open-source developer tool experience (and a few hard-won lessons!) into Marvin's design.</p><h2>Developer Experience</h2><p>Above all else, Marvin is focused on a rock-solid developer experience. It's ergonomic and opinionated at every layer, but also incrementally adoptable so you can use it as much or as little as you like. It&#8217;s a Swiss Army Knife, not a kitchen sink. It&#8217;s familiar. It feels like the library you&#8217;d write if you had the time: simple, accessible, portable LLM abstractions that you can quickly deploy in your application, whether you&#8217;re doing straightforward NLP or building a full-featured autonomous agent.</p><p>Marvin prioritizes a developer experience focused on speed and reliability. It's built with type-safety and observability as first-class citizens. Its abstractions are Pythonic, simple, and self-documenting. These core primitives let us build surprisingly complex agentic software without sacrificing control:</p><p>&#129513; <strong>AI Models</strong> for structuring text into type-safe schemas</p><p>&#127991;&#65039; <strong>AI Classifiers</strong> for bulletproof classification and routing</p><p>&#129668; <strong>AI Functions</strong> for complex business logic and transformations</p><p>&#129309; <strong>AI Applications</strong> for interactive use and persistent state</p><p>If our mission sounds exciting to you, please <a href="https://www.askmarvin.ai/src/community/">join our community</a>!</p><h1>Ambient AI</h1><p>One of our <a href="https://twitter.com/DrJimFan/status/1657782710344249344">favorite reactions</a> to Marvin&#8217;s initial release came from Dr. Jim Fan at NVIDIA:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ALwF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ALwF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 424w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 848w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ALwF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png" width="504" height="734.6440677966102" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1720,&quot;width&quot;:1180,&quot;resizeWidth&quot;:504,&quot;bytes&quot;:640353,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ALwF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 424w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 848w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!ALwF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc866ed6-58ee-4985-b0c7-a41184f84f98_1180x1720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This idea really resonated with us, and Marvin is the first step on a journey to deliver &#8220;Ambient AI:&#8221; omnipresent but unobtrusive autonomous routines that act as persistent translators for noisy, real-world data. Ambient AI makes unstructured data universally accessible to traditional software, allowing the entire software stack to embrace AI technology without interrupting the development workflow. </p><p>This ideal has the potential to unlock value analogous to the shift from analog to digital music, which revolutionized accessibility and search. Suddenly, vast song libraries were at our fingertips, ready to be explored with a few keystrokes no matter where we were. Ambient AIs can do the same for real-world data and interactions by making them suddenly available to traditional software, without compromise. That is how AI technology can become as pervasive and personalized as music is today.</p><p>To play its part, Marvin introduces a set of AI components that integrate seamlessly with the Software 1.0 stack. This lets developers focus on core functionality and delivering value to users, not turning knobs on an LLM. Our goal is to create a future where all software can work in concert with ambient AI receptors. This synergy brings simplicity and stability to AI engineering, allowing every application to effortlessly harness AI technologies and making AI a natural and integrated part of the software landscape.</p><h1>AI Components</h1><p>Marvin&#8217;s core AI abstractions are all packaged as familiar, Pythonic interfaces. These form the building blocks of the Ambient AI framework.</p><h2>&#129513; AI Models</h2><p>AI Models are a drop-in replacement for Pydantic&#8217;s BaseModel that bring structure to unstructured data. They can be instantiated from any string, allowing them to parse unstructured text into typesafe schemas. AI models are perfect for typed entity extraction, generating synthetic data, and standardization.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z34L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z34L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 424w, https://substackcdn.com/image/fetch/$s_!z34L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 848w, https://substackcdn.com/image/fetch/$s_!z34L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 1272w, https://substackcdn.com/image/fetch/$s_!z34L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z34L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png" width="1456" height="689" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1015912,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!z34L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 424w, https://substackcdn.com/image/fetch/$s_!z34L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 848w, https://substackcdn.com/image/fetch/$s_!z34L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 1272w, https://substackcdn.com/image/fetch/$s_!z34L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12fb2322-58ba-4a1a-8c59-7b27c7d43bfa_2000x947.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#127991;&#65039; AI Classifiers</h2><p>AI Classifiers let you build a multi-label classifier with no code and no training data. They are <strong>fast</strong> and <strong>bulletproof</strong> because they use a <a href="https://twitter.com/AAAzzam/status/1669753722828730378">clever logit bias trick</a> to get results with just a single token.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KSbv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KSbv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 424w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 848w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 1272w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KSbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png" width="1456" height="1167" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f922d03a-c648-4757-9653-306aa7160d36_2238x1794.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1167,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1476819,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KSbv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 424w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 848w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 1272w, https://substackcdn.com/image/fetch/$s_!KSbv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff922d03a-c648-4757-9653-306aa7160d36_2238x1794.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RYwR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RYwR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 424w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 848w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RYwR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png" width="530" height="650.3338898163606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1470,&quot;width&quot;:1198,&quot;resizeWidth&quot;:530,&quot;bytes&quot;:467554,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!RYwR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 424w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 848w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!RYwR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa036c309-9fed-4d9b-90b0-778b7780af1a_1198x1470.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#129668; AI Functions</h2><p>AI functions look just like &#8220;normal&#8221; functions, but don&#8217;t have any source code. Instead, they use AI to predict outputs based on their inputs and a description of the function. They&#8217;re perfect for complex NLP tasks like entity extraction and qualitative tasks like sentiment analysis. They can also be used for generating synthetic data according to a set of constraints.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aMpg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aMpg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 424w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 848w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 1272w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aMpg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1383927,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!aMpg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 424w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 848w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 1272w, https://substackcdn.com/image/fetch/$s_!aMpg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90399379-03bd-4885-9ee6-5f87d68385a9_2000x1241.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#129309; AI Applications</h2><p>AI Applications are optimized for interactive use cases, where users invoke the application multiple times to achieve a goal (or it loops autonomously!). In addition to tracking a history of user inputs, AI Applications maintain persistent state and are capable of making high-level plans, which keeps them reliably on track. This means that while they can implement &#8220;classic&#8221; LLM demos like chatbots, coding assistants, and tool-using agents, they can also implement full-fledged <em>applications </em>for which chat (or unstructured text) might be a surprising interface&#8230; at least not without a lot of extra coding! This includes role-playing games, technical writing, or even this to-do app:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3ky6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3ky6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 424w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 848w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3ky6!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png" width="1200" height="454.1208791208791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:551,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3ky6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 424w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 848w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!3ky6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5e76ec-a461-4ce4-98b6-3a9c098f3a49_3170x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Marvin&#8217;s high-level abstractions are powered by a complete AI platform that users may choose to delve into, if it&#8217;s helpful. At the lowest level, Marvin introduces a drop-in replacement for the <code>openai</code> library that adds useful features like portable configuration, logging, and other useful utilities.</p><p>In addition, Marvin has a powerful prompt DSL inspired heavily by (and developed in collaboration with) our friend <a href="https://twitter.com/jxnlco">Jason Liu&#8217;s</a> <a href="https://github.com/jxnl/openai_function_call">OpenAI Function Call</a> library. Rather than attempting to munge string templates together, Marvin embraces prompts-as-code and allows users to customize LLM interactions in a variety of ways.</p><h1>What makes Marvin different?</h1><p>There's no shortage of tools and libraries out there for integrating LLMs into your software. So what makes Marvin different? In addition to a relentless focus on incrementally-adoptable, familiar abstractions, Marvin embraces five pillars:</p><h3>User-Centric Design</h3><p>We built Marvin with you in mind. It's not just about what it does, but how it does it. Marvin is designed to be as user-friendly as possible, with a focus on an easy, intuitive experience. Whether you're a coding expert or just starting, Marvin works for you. </p><h3>Flexibility</h3><p>Marvin is built to adapt to your needs, not the other way around. Embracing Prefect&#8217;s core principle of incremental adoption, you can use as much or as little of Marvin as you need. Need a full suite of LLM integration tools? We&#8217;ve got you covered. Only need a single component? Marvin can happily do that, too.</p><h3><strong>Community Driven</strong></h3><p>Marvin isn't just a tool, it's a <a href="https://www.askmarvin.ai/src/feedback/">community</a>. We value feedback and collaboration from users like you, and Marvin reflects hard-won best practices from folks on the cutting edge of production AI engineering. We're always learning, iterating, and improving based on what the community learns.</p><h3><strong>Speed</strong></h3><p>We're serious about speed. We believe that getting started should be quick and easy, and every Marvin-specific keystroke is a penalty you pay for our design. That's why with Marvin, you can get up and running in no time and with almost no dependencies.</p><h3>Open-Source</h3><p>Marvin is fully open-source, which means it's not only free to use, but you're also free to modify and adapt as you see fit. The <a href="https://www.prefect.io">Prefect</a> team has years of open-source experience and is fully committed to supporting Marvin as an open-source product. We believe in the power of collective intelligence, and we're excited to see what you can create.</p><h1>The road to 1.0</h1><p>Marvin was born in 2022 as an internal tool at Prefect, powering our early exploration of LLM technologies. In March 2023, we released the first open-source version of Marvin as a &#8220;batteries-included library&#8221; for building AI-powered software. A few thousand users later, we discovered that users don&#8217;t actually want a library that prepackages <em>everything</em>. What they want are clear and effective tools for deploying AI in a manageable way. With that in mind, it&#8217;s no surprise that AI Models and AI Functions have always been Marvin&#8217;s most popular features. </p><p>Marvin 1.0 leans hard into this discovery by ensuring that every abstraction is rock solid and independent. That&#8217;s how we hope to pursue the goal of truly ambient AI. In addition to a full rewrite, 1.0 introduces two new major components, AI Classifiers and AI Applications, that we expect to become bedrock for a new class of AI-enabled features. However, please note that some 0.x features didn&#8217;t meet the standard for inclusion in 1.0, so for some users this may be a breaking release.</p><p>If Marvin has a secret weapon, it&#8217;s that we view its primary job as making AI technology, no matter how complex, available through interfaces that feel familiar to our users.  Every Marvin component strives to be future-proof and incredibly useful. As a team, we are committed to making sure that Marvin&#8217;s DX is solid and we take complete responsibility for continuously adapting it to the ever-changing AI landscape. </p><p>We hope you enjoy using Marvin as much as we do!</p><p>We still have a number of major features to announce, so please watch this space and <a href="https://www.twitter.com/askmarvinai">@AskMarvinAI</a> for more.</p><p>Happy engineering!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.factsmachine.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading FactsMachine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[You autocomplete me]]></title><description><![CDATA[On balance, a skynet positive.]]></description><link>https://www.factsmachine.ai/p/you-autocomplete-me</link><guid isPermaLink="false">https://www.factsmachine.ai/p/you-autocomplete-me</guid><dc:creator><![CDATA[Adam Azzam]]></dc:creator><pubDate>Fri, 16 Jun 2023 17:59:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FvDn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FvDn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FvDn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 424w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 848w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 1272w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FvDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png" width="1456" height="829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2809294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FvDn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 424w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 848w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 1272w, https://substackcdn.com/image/fetch/$s_!FvDn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79939f4b-15bd-48ac-9a3d-b7e067add141_1458x830.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>It&#8217;s like we finish each other&#8217;s sandwiches.</h3><p>It's been a hell of a year for autocomplete. It feels like just yesterday we brought our first Language Model home from the hospital. On a diet of the entire internet it&#8217;s grown Large and, like every parent hopes, omniscient. It&#8217;s humbling to see its attention span as ravaged as mine has been by binging on Reddit and the like. </p><p>&#8216;Omniscient autocomplete&#8217; is less an aspersion and more a reminder of what it&#8217;s doing. And we should remind ourselves what it&#8217;s actually doing. Given a series of word snippets (tokens) strung together, Large Language Models like ChatGPT predict what token is most likely to come next. It&#8217;s good at guessing because it&#8217;s well read and we&#8217;ve had humans give it treats when it&#8217;s done a good job<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. </p><p>Omniscient autocomplete is great at solving autocomplete problems. It&#8217;s filled with a discrete set of facts and opinions it&#8217;s seen on the internet, and it&#8217;s seen enough examples of deductive reasoning to be able to infer things it hasn&#8217;t observed directly<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. </p><h3>What's not an autocomplete task?</h3><p>There are a lot of autocomplete problems in the world. Writing this post is one of them. Answering <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Jeremiah Lowin&quot;,&quot;id&quot;:3272278,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20c3440f-818a-43b3-83bf-0d3574a3275b_377x370.png&quot;,&quot;uuid&quot;:&quot;e6bfb902-6570-436f-8c0d-e04f9032bd8d&quot;}" data-component-name="MentionToDOM"></span>&#8217;s Slack why this post is late is one of them. LLMs are water to those who had the misfortune of building a chatbot or summarizing documents in the last decade. I think autocomplete problems are valuable, but much like I responded to Jeremiah&#8217;s slack &#8220;it&#8217;s just not my focus at the moment&#8221;. </p><p>In Math you learn early that the easiest<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> way to solve a problem is simply recast it into a problem that&#8217;s already been solved. </p><ul><li><p>Does my differential equation have a solution? It sure does if you recast it as fixed point problem and smack it with the Banach Fixed Point Theorem<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>. </p></li><li><p>Can we design a matching program for medical residencies so that everyone is incentivized to tell the truth? It sure does if you recast it as a private information game and crack it over the head with Gale-Shapley. </p></li></ul><p><a href="https://en.wikipedia.org/wiki/Jacques_Hadamard">Jackie Hadamard</a> (can I call you Jackie?) said &#8220;The shortest path between two truths in the real domain passes through the complex domain.&#8221; If autocomplete problems are <em>solved</em>, this means that any problem that can be reliably translated into and back from an autocomplete problem is <em>solved</em> (where my category theorists at?).</p><p>We&#8217;ve seen glimmers of this. </p><p>Research has shown LLMs to reliably do zero-shot<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> classification. To build a spam classifier, we used to manufacture features from thousands of emails, manually labeling them, and artisanally crafting a bespoke model to learn the relationship between our features and labels. Now, we show OpenAI the text of an email and simply ask it: is this spam or not?</p><p>Research has shown LLMs to reliably do zero-shot entity extraction. To build a model to do entity extraction, we used to have to pray to SpaCy or Gensim that classical linguistics could help us identify proper nouns in our document. If you were feeling particularly adventurous, you could try to get buy-in to use conditional random fields before throwing it in the backlog. Now, we show OpenAI the text of a resume and simply ask it: &#8220;where did this person go to school and what degrees did they get there?&#8221;. </p><p>A corollary of these two emergent<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> behaviors is that LLMs can generate their own tasks and choose the right tools to solve them. To do this five years ago you&#8217;d have to wait four years. You simply describe what tools do and how to use them, give your LLM an amorphous task, and ask &#8220;oh, great OpenAI, what sayeth you the best tool to use to solve my lowly task&#8221;. We can unfurl workflows from a simple objective and dynamically generate our own tasks. </p><p>This process of translating the task we actually want to be completed (classification, extraction, tool choices) into an autocomplete is called prompt engineering. In a sense, prompt engineering is a transpiler<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> (or functor): we take an instruction set in one language and translate into an instruction set native to our LLM, which we&#8217;re treating as a runtime.</p><h3>Pedantic to semantic: leave me out of it.</h3><p>Transpilers should be neither seen or heard. After all, one of their promises is to let thoughtless single-language engineers like me approximate a mediocre engineer in languages I don&#8217;t know. They exist ambiently, and I love that feeling. I love that experience as a developer. </p><p>In LLMs this means creating a semantic layer between code and LLMs: something that translates the pedantry of software into the &#8230; semantry (?) of LLMs and back again. I deeply believe that working with LLMs should be the same, and this is what motivated my choice to join the <a href="https://www.askmarvin.ai/">Marvin</a> team at Prefect. <br></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>If you raise a Language Model on a diet of human language and give it a treat when it answers your question correctly, you get ChatGPT. If you raise it on a diet of code and give it a treat when it writes a good function, you&#8217;ll get Codex. If you raise it on Arrested Development and reward it for unloading the dishwasher you get, well, me. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>If you&#8217;ve had the misfortune of taking real analysis, LLM&#8217;s are in some sense the deductive closure of the facts and opinions in its training corpus. Of course, much like any metric space, the closure looks wildly different depending on what metric you choose. Different metrics for what counts as &#8216;good reasoning&#8217; in some sense what differentiates the menagerie of Cohere, Anthropic, OpenAI, and others. </p><p>Good reasoning lets you emulate a sharp intern that costs $.0004/hour. Bad reasoning in LLMs has the same impact as bad reasoning in humans: it can be factually wrong, and it can perpetuate systemic bias that hurts people. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Refuted of course by Charlie Fefferman (can I call you Charlie?) &#8220;If you're stuck on a problem, then one way out is to interest Terry Tao&#8221;.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Does my game have an Nash equilibrium? It sure does if you recast it as a fixed point problem and smack it with the Kakutani Fixed Point Theorem.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>&#8220;Look ma, no training data!&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>When you hear folks say &#8220;emergent&#8221;, you should think &#8220;ohhh, like the scene where the Velociraptors unlocked the doors&#8221;. Technically we never instructed it to do these things explicitly, but baby&#8217;s learning. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>I&#8217;m using transpiler really liberally here. It has a precise meaning that people who think about compilers care deeply about. For me it means &#8220;big ole&#8217; magic program that lets me take advantage of optimized language X by writing in language Y&#8221;. I&#8217;ve called React Native a transpiler, even though most folks who have a rigid definition would be right to call me out that it&#8217;s not one. </p></div></div>]]></content:encoded></item><item><title><![CDATA[The Prodigal JSON.]]></title><description><![CDATA[Welcoming you with OpenAI arms.]]></description><link>https://www.factsmachine.ai/p/the-prodigal-json</link><guid isPermaLink="false">https://www.factsmachine.ai/p/the-prodigal-json</guid><dc:creator><![CDATA[Adam Azzam]]></dc:creator><pubDate>Wed, 14 Jun 2023 02:09:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a2tx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a2tx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a2tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1d31898-35c3-47fa-9375-d17d67675427_1456x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!a2tx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!a2tx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d31898-35c3-47fa-9375-d17d67675427_1456x832.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today OpenAI announced support for functions. When you ask it a question, you can now supply and describe a set of functions to GPT 3.5 and GPT 4.  It will decide if and which functions are prudent to call to confidently answer your question. If it decides that it needs to use one of your supplied functions, it&#8217;ll even do you the favor of formatting the input to that function. OpenAI choice to format <em>inputs</em> seems at first to be going the wrong way, after all, for the last year developers have focused on getting structured <em>outputs</em> from LLMs. Turns out, it&#8217;s all the same. </p><p>Consider the usual fare of constraining a large language model to do your bidding:</p><ol><li><p>Here&#8217;s this email I got from <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Jeremiah Lowin&quot;,&quot;id&quot;:5738543,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d661039-1d40-4fef-b919-b0f3e61f10e5_377x370.png&quot;,&quot;uuid&quot;:&quot;a585c67c-10ee-4d4c-aa4c-d5aa7cbc97f9&quot;}" data-component-name="MentionToDOM"></span> <code>{email_text}</code>. </p></li><li><p>Extract the following information: <code>num_puns: int, worst_puns: list[str], best_pun: Optional[str] = None</code></p></li><li><p>Output as JSON.</p></li></ol><p>This works okay, at first. But as the number of requirements increases or the depth or &#8216;nestedness&#8217; of the schema grows, this starts to fail and fail often. </p><p>But we can recast this problem as a tool choice problem. OpenAI now lets me pass tools to it in service of a question. If it chooses that tool, it will format the data that needs to be passed to that function. So all we need to do is to </p><ol><li><p>Create a tool whose &#8220;inputs&#8221; are <code>num_puns</code>, <code>worst_puns</code>, and <code>best_pun</code> </p></li><li><p>Trick OpenAI into using that tool. </p></li></ol><p>Luckily, OpenAI exposes a parameter where you can force it to use a tool. So, really it&#8217;s as simple as telling OpenAI &#8220;I want to extract the following information from <code>{email_text}</code>&#8221; and passing it:</p><blockquote><p><code>extract_puns(num_punts:int, worst_puns:list[str], best_pun: Optional[str])</code></p></blockquote><p>What do you get back? Beautiful, bulletproof, formatted, boring, typesafe, atomic-unit-of-trust JSON. </p><p>We shipped this in our latest version of <a href="https://askmarvin.ai">Marvin</a> today, but it&#8217;s all under the hood - as it should be. It&#8217;s open source, free to use, and all our code is publicly available. You&#8217;ll pay your tithing to wherever you buy your inference, but it&#8217;s now 15x cheaper to extract structured data from unstructured text and documents. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JreG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JreG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 424w, https://substackcdn.com/image/fetch/$s_!JreG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 848w, https://substackcdn.com/image/fetch/$s_!JreG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 1272w, https://substackcdn.com/image/fetch/$s_!JreG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JreG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png" width="813" height="866" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:866,&quot;width&quot;:813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:223477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JreG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 424w, https://substackcdn.com/image/fetch/$s_!JreG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 848w, https://substackcdn.com/image/fetch/$s_!JreG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 1272w, https://substackcdn.com/image/fetch/$s_!JreG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06c44da4-ca74-4dcf-93fe-102e40967f6c_813x866.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.factsmachine.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading FactsMachine! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[FactsMachine]]></title><description><![CDATA[More Moving Type and less Moving Hype.]]></description><link>https://www.factsmachine.ai/p/factsmachine</link><guid isPermaLink="false">https://www.factsmachine.ai/p/factsmachine</guid><dc:creator><![CDATA[Jeremiah Lowin]]></dc:creator><pubDate>Mon, 12 Jun 2023 21:08:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!er0o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!er0o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!er0o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!er0o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!er0o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!er0o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!er0o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png" width="1456" height="832" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:832,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!er0o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 424w, https://substackcdn.com/image/fetch/$s_!er0o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 848w, https://substackcdn.com/image/fetch/$s_!er0o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 1272w, https://substackcdn.com/image/fetch/$s_!er0o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f86675c-60a9-4cd6-9068-d2a63ac97ed2_1456x832.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Generative AI has turned us all from authors into editors. It's enabled machines we can program in natural language, and overnight has reduced the marginal effort of building to zero. We&#8217;re all developers now, for better or for worse. </p><p>The off-key trio of &#8220;woah!&#8221;, &#8220;no.&#8221;, and &#8220;apropos?&#8221; is belted across social media as our cast of newfound developers, career engineers, and business leaders make sense of our new productivity gains.</p><p>The pace of AI is unrelenting. Researchers push the energy density of our engines. Hackers push the boundaries of where we can travel. Craftspeople remind us why some roads are off limits. Every week feels like a year.</p><p>But what should be a symphony is instead a cacophony. We're starting FactsMachine to fix that. If you find yourself wishing Generative AI felt more like Moving Type and less like Moving Hype, you might enjoy subscribing. We'll share what we learn as we pair code with developers, help engineers move LLMs to production, and business leaders grok their AI strategy. </p><p>We've spent our careers building tools for hackers, craftspeople, and business leaders alike to leverage data and machine learning in their software and business. Thousands of developers use Prefect as their data engineering backend and Marvin as their AI engineering backend. </p><p>We're excited to share those lessons, every week, at FactsMachine.</p>]]></content:encoded></item></channel></rss>