<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Stratos</title>
    <description>The latest articles on DEV Community by Stratos (@akj1608).</description>
    <link>https://dev.to/akj1608</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F752092%2Fbe386e24-5e90-48bd-b337-4cfe15e7a7f4.jpeg</url>
      <title>DEV Community: Stratos</title>
      <link>https://dev.to/akj1608</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akj1608"/>
    <language>en</language>
    <item>
      <title>Only What I Asked</title>
      <dc:creator>Stratos</dc:creator>
      <pubDate>Fri, 25 Sep 2026 18:45:08 +0000</pubDate>
      <link>https://dev.to/akj1608/only-what-i-asked-1i26</link>
      <guid>https://dev.to/akj1608/only-what-i-asked-1i26</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-the-kaggle-benchmarking-challenge-2500-in-prizes-for-five-winners-18ml"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I kept running into the same thing with coding models. I'd ask for one small edit and they'd "help" with a pile of other stuff. Fix the redis tag — sure, but also bump nginx. Change a weekday — and Americanize every British spelling while you're at it. Fix a typo in a comment — and rename the misspelled variable that three callers still depend on.&lt;/p&gt;

&lt;p&gt;So I made a benchmark for that specific habit: do the edit I asked for, leave everything else alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;22 cases. Each one has a single instruction and something tempting sitting next to it — an unrelated bug, an old image tag, a popular myth, Makefile tabs, mixed quotes, a long file with the change near the bottom. The model only scores if it returns the original text with that one change applied. Exact match.&lt;/p&gt;

&lt;p&gt;I tagged failures two ways when I looked at the transcripts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;miss&lt;/strong&gt; — didn't do the edit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;overreach&lt;/strong&gt; — did the edit, then touched something else&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I ran two prompt variants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;plain&lt;/strong&gt; — just the instruction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;warned&lt;/strong&gt; — same instruction, plus "change nothing else, including bugs you notice"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a straight answer on whether telling the model "don't help" actually works.&lt;/p&gt;

&lt;p&gt;Tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-plain" rel="noopener noreferrer"&gt;only-what-i-asked-plain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-warned" rel="noopener noreferrer"&gt;only-what-i-asked-warned&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full board: &lt;a href="https://www.kaggle.com/benchmarks/akj160/only-what-i-asked" rel="noopener noreferrer"&gt;Only What I Asked&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Models I ran
&lt;/h2&gt;

&lt;p&gt;I mixed bigger and smaller ones on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Opus 5, Sonnet 5, Haiku 4.5&lt;/li&gt;
&lt;li&gt;GPT-6 Astra, GPT-5.5, GPT-5.4 nano, gpt-oss-120b&lt;/li&gt;
&lt;li&gt;Gemini 3.1 Pro Preview, Gemini 3.7 Flash, Gemini 3.8 Flash, Gemma 4 31B&lt;/li&gt;
&lt;li&gt;DeepSeek-R1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tried Grok 4.5 and Qwen3 Coder 480B too. Grok 404'd on the proxy slug I used, and Qwen kept rate-limiting, so those aren't in the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results (exact / 22)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Plain&lt;/th&gt;
&lt;th&gt;Warned&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5 / Sonnet 5 / Haiku 4.5&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6 Astra / GPT-5.5&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 3.1 Pro / 3.7 Flash / 3.8 Flash&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 31B&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpt-oss-120b&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4 nano&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek-R1&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most of these just nailed it. The interesting ones are the three that didn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went wrong
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nano "fixes" the identifier you told it not to touch
&lt;/h3&gt;

&lt;p&gt;One case: fix &lt;code&gt;recieved&lt;/code&gt; &lt;strong&gt;in the comment only&lt;/strong&gt;. Don't change any code.&lt;/p&gt;

&lt;p&gt;The source has the typo in the comment &lt;em&gt;and&lt;/em&gt; in &lt;code&gt;recieved_count&lt;/code&gt;. Nano fixed both, on plain and warned. The warning didn't matter. Same story on &lt;code&gt;scope_second_paragraph&lt;/code&gt;, where the misspelling shows up three times and only the middle one should change.&lt;/p&gt;

&lt;h3&gt;
  
  
  DeepSeek drafts the answer mid-thought
&lt;/h3&gt;

&lt;p&gt;DeepSeek's plain score looked awful (4/22) until I opened the transcripts. A lot of the final answers were fine. The issue is it dumps scratch &lt;code&gt;&amp;lt;result&amp;gt;&lt;/code&gt; blocks inside its thinking, and both my checker and the default Kaggle extraction grab the &lt;strong&gt;first&lt;/strong&gt; one. One CSV case had 31 of those tags.&lt;/p&gt;

&lt;p&gt;If you score the last tagged block instead, DeepSeek jumps to something like 16/22 plain and 19/22 warned. The warning still helps, but the extraction format mattered more than I expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  The warning sometimes made things worse
&lt;/h3&gt;

&lt;p&gt;gpt-oss went 21 → 19 with the warning. On one prose case it wrapped the answer in an extra &lt;code&gt;&amp;lt;text&amp;gt;&lt;/code&gt; shell and broke the closing tag. Longer instructions aren't free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;p&gt;Helpfulness and surgical instruction-following pull against each other. A model can look great on general instruction benches and still fail a one-line edit because the prior is "improve the file."&lt;/p&gt;

&lt;p&gt;"Just tell it not to" is not a reliable fix. It helped DeepSeek a lot, did nothing for nano on the comment-only case, and slightly hurt gpt-oss.&lt;/p&gt;

&lt;p&gt;Also: if your grader takes the first fenced/tagged block, reasoning models will look artificially bad. Ask me how I found that out.&lt;/p&gt;

&lt;p&gt;Next time I'd probably score diffs instead of full-file rewrites, and maybe try multi-file patches. Full-file exact match was already too easy for most of the frontier models here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Benchmark: &lt;a href="https://www.kaggle.com/benchmarks/akj160/only-what-i-asked" rel="noopener noreferrer"&gt;https://www.kaggle.com/benchmarks/akj160/only-what-i-asked&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Plain task: &lt;a href="https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-plain" rel="noopener noreferrer"&gt;https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-plain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Warned task: &lt;a href="https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-warned" rel="noopener noreferrer"&gt;https://www.kaggle.com/benchmarks/tasks/akj160/only-what-i-asked-warned&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kagglechallenge</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
