<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Llm on Principles</title><link>https://shuffzord.github.io/tags/llm/</link><description>Recent content in Llm on Principles</description><generator>Hugo</generator><language>en</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="noopener">CC BY-NC 4.0&lt;/a></copyright><lastBuildDate>Sat, 21 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://shuffzord.github.io/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>Pydantic + LLM Structured Outputs Cheat Sheet</title><link>https://shuffzord.github.io/cheatsheats/llm-pydantic/</link><pubDate>Sat, 21 Jun 2025 00:00:00 +0000</pubDate><guid>https://shuffzord.github.io/cheatsheats/llm-pydantic/</guid><description>&lt;h2 id="what-is-pydantic">What is Pydantic?&lt;/h2>
&lt;p>A Python library for &lt;strong>data validation&lt;/strong> and &lt;strong>serialization&lt;/strong> that automatically:&lt;/p>
&lt;ul>
&lt;li>Validates data types&lt;/li>
&lt;li>Converts types when possible&lt;/li>
&lt;li>Provides clear error messages&lt;/li>
&lt;li>Serializes to/from JSON, dictionaries&lt;/li>
&lt;/ul>
&lt;h2 id="basic-pydantic-model">Basic Pydantic Model&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> pydantic &lt;span style="color:#f92672">import&lt;/span> BaseModel
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">Evaluation&lt;/span>(BaseModel):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> is_acceptable: bool
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> feedback: str
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="using-with-llms">Using with LLMs&lt;/h2>
&lt;h3 id="the-problem">The Problem&lt;/h3>
&lt;ul>
&lt;li>LLMs return unstructured text&lt;/li>
&lt;li>Hard to parse and validate&lt;/li>
&lt;li>Inconsistent formats&lt;/li>
&lt;/ul>
&lt;h3 id="the-solution">The Solution&lt;/h3>
&lt;p>Use Pydantic models to enforce structure!&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>response &lt;span style="color:#f92672">=&lt;/span> gemini&lt;span style="color:#f92672">.&lt;/span>beta&lt;span style="color:#f92672">.&lt;/span>chat&lt;span style="color:#f92672">.&lt;/span>completions&lt;span style="color:#f92672">.&lt;/span>parse(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> model&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;gemini-2.0-flash&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> messages&lt;span style="color:#f92672">=&lt;/span>messages, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> response_format&lt;span style="color:#f92672">=&lt;/span>Evaluation &lt;span style="color:#75715e"># Your Pydantic model&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Returns validated Evaluation object&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print(response&lt;span style="color:#f92672">.&lt;/span>is_acceptable) &lt;span style="color:#75715e"># bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>print(response&lt;span style="color:#f92672">.&lt;/span>feedback) &lt;span style="color:#75715e"># str&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="how-it-works-under-the-hood">How It Works Under the Hood&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Your Pydantic Model&lt;/strong> → &lt;strong>JSON Schema&lt;/strong> (automatic conversion)&lt;/li>
&lt;li>&lt;strong>JSON Schema&lt;/strong> → &lt;strong>LLM API&lt;/strong> (as instructions)&lt;/li>
&lt;li>&lt;strong>LLM generates&lt;/strong> → &lt;strong>JSON matching schema&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Library parses&lt;/strong> → &lt;strong>Validated Pydantic object&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h3 id="example-json-schema-generated">Example JSON Schema Generated&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;object&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;properties&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;is_acceptable&amp;#34;&lt;/span>: {&lt;span style="color:#f92672">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;boolean&amp;#34;&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;feedback&amp;#34;&lt;/span>: {&lt;span style="color:#f92672">&amp;#34;type&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;string&amp;#34;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;required&amp;#34;&lt;/span>: [&lt;span style="color:#e6db74">&amp;#34;is_acceptable&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;feedback&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="benefits">Benefits&lt;/h2>
&lt;p>✅ &lt;strong>Guaranteed structure&lt;/strong> - Always get expected fields&lt;br>
✅ &lt;strong>Type safety&lt;/strong> - Fields are correct types&lt;br>
✅ &lt;strong>Error handling&lt;/strong> - Validation catches format errors&lt;br>
✅ &lt;strong>Easy processing&lt;/strong> - Use data immediately in code&lt;br>
✅ &lt;strong>No manual parsing&lt;/strong> - Library handles conversion&lt;/p></description></item></channel></rss>