<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Evaluation on Programmer.ie: Modern AI programming</title>
    <link>http://programmer.ie/tags/ai-evaluation/</link>
    <description>Recent content in AI Evaluation on Programmer.ie: Modern AI programming</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 02 Sep 2026 14:10:00 +0100</lastBuildDate>
    <atom:link href="http://programmer.ie/tags/ai-evaluation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>When Models Make Things Up</title>
      <link>http://programmer.ie/books/hallucination-from-first-principles/01-chapter/</link>
      <pubDate>Sat, 29 Aug 2026 22:10:00 +0100</pubDate>
      <guid>http://programmer.ie/books/hallucination-from-first-principles/01-chapter/</guid>
      <description>&lt;p&gt;A language model can produce an answer that is fluent, grammatical, detailed, confident, and wrong.&lt;/p&gt;&#xA;&lt;p&gt;That combination is what makes hallucination interesting.&lt;/p&gt;&#xA;&lt;p&gt;Ordinary software failures usually leave evidence. A parser throws an exception. A database rejects an invalid constraint. A test fails. A network call times out. The failure changes the shape of the result.&lt;/p&gt;&#xA;&lt;p&gt;A hallucinating language model can do something more difficult to handle: &lt;strong&gt;it can fail without looking broken&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Runtime, Several Interfaces</title>
      <link>http://programmer.ie/books/browser-ai-from-first-principles/05-chapter/</link>
      <pubDate>Wed, 02 Sep 2026 14:00:00 +0100</pubDate>
      <guid>http://programmer.ie/books/browser-ai-from-first-principles/05-chapter/</guid>
      <description>&lt;p&gt;The first Browser AI Observatory knew about one global object: &lt;code&gt;LanguageModel&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;That was enough to expose the common lifecycle. We could inspect availability, create a session, monitor model acquisition, stream output, cancel a request and record what happened.&lt;/p&gt;&#xA;&lt;p&gt;Chrome also exposes narrower built-in AI capabilities. Instead of asking a general language-model session to perform an arbitrary task, an application can create a summarizer, writer, rewriter, proofreader, translator or language detector.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Summarization Is a Contract</title>
      <link>http://programmer.ie/books/browser-ai-from-first-principles/06-chapter/</link>
      <pubDate>Wed, 02 Sep 2026 14:05:00 +0100</pubDate>
      <guid>http://programmer.ie/books/browser-ai-from-first-principles/06-chapter/</guid>
      <description>&lt;p&gt;Summarization looks like the ideal local AI feature.&lt;/p&gt;&#xA;&lt;p&gt;The input is already in the browser. The desired output is smaller than the input. The task is useful for articles, documentation, conversations, reviews and support content. Sending the entire source to a remote provider can feel disproportionate when a browser-managed model can operate on the device.&lt;/p&gt;&#xA;&lt;p&gt;So the implementation seems obvious:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;summarizer&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Summarizer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;create&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;result&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;summarizer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;summarize&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The code is correct.&lt;/p&gt;&#xA;&lt;p&gt;The feature is unspecified.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Writing, Rewriting and Proofreading Are Different Operations</title>
      <link>http://programmer.ie/books/browser-ai-from-first-principles/07-chapter/</link>
      <pubDate>Wed, 02 Sep 2026 14:10:00 +0100</pubDate>
      <guid>http://programmer.ie/books/browser-ai-from-first-principles/07-chapter/</guid>
      <description>&lt;p&gt;Writer, Rewriter and Proofreader all accept text and return text-related results.&lt;/p&gt;&#xA;&lt;p&gt;That surface similarity makes it tempting to place them behind one function:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;improveText&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;input&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The name hides the most important property of the operation.&lt;/p&gt;&#xA;&lt;p&gt;How much is it allowed to change?&lt;/p&gt;&#xA;&lt;p&gt;A writer may create content that did not exist. A rewriter may change expression while preserving the underlying message. A proofreader should correct a bounded class of errors while leaving correct content alone.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
