<?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: xiun xiao</title>
    <description>The latest articles on DEV Community by xiun xiao (@xiun_xiao_6eae2df5c108c5f).</description>
    <link>https://dev.to/xiun_xiao_6eae2df5c108c5f</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%2F2969596%2F7055e0a9-0a90-4345-a346-4802ba191b99.JPG</url>
      <title>DEV Community: xiun xiao</title>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xiun_xiao_6eae2df5c108c5f"/>
    <language>en</language>
    <item>
      <title>Open models vs Claude: Kimi K3, GLM 5.3 and DeepSeek V4 Pro against Sonnet 5.5 and Opus 5.5</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Fri, 06 Nov 2026 01:44:12 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/open-models-vs-claude-kimi-k3-glm-53-and-deepseek-v4-pro-against-sonnet-55-and-opus-55-3f1d</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/open-models-vs-claude-kimi-k3-glm-53-and-deepseek-v4-pro-against-sonnet-55-and-opus-55-3f1d</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/open-models-vs-claude/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The usual reason to choose an open model over Claude is price. Now that every Claude model on QuickSilver Pro costs 75% less than Anthropic's list price, that reason needs checking again, and so does the question of what you give up in quality. So we put three large open models from our catalog and two Claude models through the same set of tasks, on 2026-10-20.&lt;/p&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;Price per 1M tokens (input / output)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/kimi-k3/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;Kimi K3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$2.55 / $12.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/glm-5.3/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;GLM 5.3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.60 / $2.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/deepseek-v4-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;DeepSeek V4 Pro&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.70 / $2.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/claude-sonnet-5-5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;Claude Sonnet 5.5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.50 / $2.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/claude-opus-5-5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;Claude Opus 5.5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$1.00 / $5.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;p&gt;17 tasks, each with an answer a script can check, in two groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13 standard tasks:&lt;/strong&gt; six small Python functions (a duration parser, interval merging, an LRU cache, strict Roman numerals, an expression evaluator with C-style division, semantic-version ordering), three extractions to JSON (an invoice from an email, attendees from meeting notes, log-line counts) and four short maths and logic questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 harder tasks:&lt;/strong&gt; shell-style word splitting with quoting rules, the final state of an order after a chat full of changes and reversals, a counting-out puzzle where the count alternates between 3 and 4, and the number of integers up to 100,000 whose digits sum to 20.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code passes only if it survives a fixed set of unit tests; JSON passes only if it equals the expected object; maths answers must match exactly. Every model got the same single user message per task through the OpenAI-compatible &lt;code&gt;/v1/chat/completions&lt;/code&gt; endpoint, non-streaming, &lt;code&gt;max_tokens&lt;/code&gt; 8,000, no system prompt, no temperature setting. Each task ran three times: 51 requests per model.&lt;/p&gt;

&lt;p&gt;With these defaults the three open models think before answering and bill those reasoning tokens as output; the two Claude models answered directly, without extended thinking. Cost below is the billed input and output tokens multiplied by QuickSilver Pro prices on 2026-10-20.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Kimi K3&lt;/th&gt;
&lt;th&gt;GLM 5.3&lt;/th&gt;
&lt;th&gt;DeepSeek V4 Pro&lt;/th&gt;
&lt;th&gt;Claude Sonnet 5.5&lt;/th&gt;
&lt;th&gt;Claude Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard tasks passed&lt;/td&gt;
&lt;td&gt;39 / 39&lt;/td&gt;
&lt;td&gt;37 / 39&lt;/td&gt;
&lt;td&gt;35 / 39&lt;/td&gt;
&lt;td&gt;39 / 39&lt;/td&gt;
&lt;td&gt;39 / 39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harder tasks passed&lt;/td&gt;
&lt;td&gt;10 / 12&lt;/td&gt;
&lt;td&gt;8 / 12&lt;/td&gt;
&lt;td&gt;7 / 12&lt;/td&gt;
&lt;td&gt;12 / 12&lt;/td&gt;
&lt;td&gt;12 / 12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;All tasks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49 / 51&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;45 / 51&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;42 / 51&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;51 / 51&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;51 / 51&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median latency&lt;/td&gt;
&lt;td&gt;26.6 s&lt;/td&gt;
&lt;td&gt;3.7 s&lt;/td&gt;
&lt;td&gt;110.5 s&lt;/td&gt;
&lt;td&gt;3.7 s&lt;/td&gt;
&lt;td&gt;5.2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;90th percentile latency&lt;/td&gt;
&lt;td&gt;140 s&lt;/td&gt;
&lt;td&gt;10 s&lt;/td&gt;
&lt;td&gt;370 s&lt;/td&gt;
&lt;td&gt;7.0 s&lt;/td&gt;
&lt;td&gt;9.4 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average output tokens&lt;/td&gt;
&lt;td&gt;1,312&lt;/td&gt;
&lt;td&gt;513&lt;/td&gt;
&lt;td&gt;2,631&lt;/td&gt;
&lt;td&gt;507&lt;/td&gt;
&lt;td&gt;580&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per 1,000 tasks&lt;/td&gt;
&lt;td&gt;$17.31&lt;/td&gt;
&lt;td&gt;$1.22&lt;/td&gt;
&lt;td&gt;$5.68&lt;/td&gt;
&lt;td&gt;$1.71&lt;/td&gt;
&lt;td&gt;$3.80&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Costs are at QuickSilver Pro prices on 2026-10-20, computed from the measured tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the open models were good enough
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Routine extraction.&lt;/strong&gt; All three open models got the invoice, the attendee list and the log counts right in all nine of their runs. If your workload is "turn this text into this JSON", any of them will do it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small, well-specified functions.&lt;/strong&gt; Kimi K3 passed every coding task in every run. GLM 5.3 missed two of 21 coding runs: once it accepted an empty string as a Roman numeral, once it rejected a valid quoted string in the shell splitter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GLM 5.3 on price and speed.&lt;/strong&gt; It was the only open model that was both cheaper than Sonnet 5.5 (about 30% less per task) and as fast (the same 3.7-second median). On the 13 standard tasks alone it passed 37 of 39 for $0.85 per 1,000 tasks, against 39 of 39 for $1.59 on Sonnet.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where they were not
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-step reasoning.&lt;/strong&gt; The counting-out puzzle needs about forty careful steps. Sonnet 5.5 and Opus 5.5 solved it in all six runs. Kimi K3 solved it once in three, GLM 5.3 once (its other answers were 37 and 13), DeepSeek V4 Pro never.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Getting an answer out at all.&lt;/strong&gt; DeepSeek V4 Pro returned an empty answer 8 times out of 51: it spent its tokens reasoning and stopped before writing anything, five times by reaching the 8,000-token limit. A ninth request had not finished after ten minutes. Kimi K3's two misses were the same pattern. A larger &lt;code&gt;max_tokens&lt;/code&gt; might have let them finish, at a higher cost per task; we did not test that.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Following the output format.&lt;/strong&gt; In one run GLM 5.3 wrote the correct JSON object and then appended its reasoning after it, which breaks any parser that expects JSON only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency.&lt;/strong&gt; Kimi K3's median was 26.6 seconds and DeepSeek V4 Pro's 110 seconds, with DeepSeek's median ranging from 24 seconds in one run to 233 seconds in another. Fine for a batch job, not for anything a user waits on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price.&lt;/strong&gt; At 75% off list, Sonnet 5.5 cost less per task than both Kimi K3 (ten times less) and DeepSeek V4 Pro (a third), and it passed every task. Even Opus 5.5 was cheaper per task than both on this test.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So which should you use?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;For extraction and simple functions where cost matters most, &lt;strong&gt;GLM 5.3&lt;/strong&gt; held up: cheaper than Sonnet and just as fast, with a few more misses. Validate its output, as you would with any model in a pipeline.&lt;/li&gt;
&lt;li&gt;For anything with several reasoning steps, or where a wrong or empty answer is expensive, &lt;strong&gt;Claude Sonnet 5.5&lt;/strong&gt; was the better buy on this test: every task passed, a few seconds each, at a lower cost per task than two of the three open models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kimi K3&lt;/strong&gt; was accurate on the standard tasks but slow and, at its price, by far the most expensive model here per task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V4 Pro&lt;/strong&gt; had the lowest pass rate and the slowest answers on this harness; if you use it, allow a large &lt;code&gt;max_tokens&lt;/code&gt; and retry empty responses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits of this test
&lt;/h2&gt;

&lt;p&gt;17 tasks and three runs per model is a small sample: one task moves a pass rate by two points, and the harder group has only four tasks. The tasks are short, single-turn and in English. We did not test long contexts, tool use, agentic coding, other languages, or the open models with reasoning turned down or Claude with extended thinking turned on, and any of those could change the picture. Latency was measured from one client on one day. Treat the table as a starting point and run your own prompts: the request code is the same for every model, so switching is a one-word change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.quicksilverpro.io/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_QSP_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;kimi-k3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-sonnet-5-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your task here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the full Claude price list, see &lt;a href="https://quicksilverpro.io/blog/claude-api-pricing/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;Claude API pricing in 2026&lt;/a&gt;. For requesting output that follows a JSON schema, see &lt;a href="https://quicksilverpro.io/docs/json-schema/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-models" rel="noopener noreferrer"&gt;the JSON schema guide&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Run Claude Code and Codex on a cloud dev box</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Thu, 05 Nov 2026 01:36:46 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/run-claude-code-and-codex-on-a-cloud-dev-box-26hp</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/run-claude-code-and-codex-on-a-cloud-dev-box-26hp</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/claude-code-cloud-dev-box/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Coding agents are happiest on a machine they can treat as their own: a shell, a browser, Docker, room to install things, and nothing on it you would mind them breaking. That is usually a VPS you set up yourself. &lt;a href="https://quicksilverpro.io/machines/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;QuickSilver Machines&lt;/a&gt; is that machine ready-made: a private Linux desktop and terminal that opens in your browser, with &lt;a href="https://code.claude.com/" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, Codex, &lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt; and Hermes already installed and signed in to your QuickSilver Pro account. Agents ready out of the box, one unified bill, zero friction: the machine and AI usage at normal model prices come from one QuickSilver balance, with no separate cloud, Anthropic or OpenAI bills, no API keys to paste and no config files to edit. Open the terminal and type &lt;code&gt;claude&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We created one on 2026-11-04 and used it the way you would on a first day: open it, check what is installed, give Claude Code a small task, pause it, resume it, and delete it. This post is what we saw, with the times and the bill.&lt;/p&gt;

&lt;p&gt;Short version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From clicking Create to a running machine took about 30 seconds&lt;/strong&gt; in our latest test. The desktop and terminal were usable as soon as the page loaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All four agents worked with no setup.&lt;/strong&gt; No API key to paste, no config file. Claude Code finished a small task with tests in 11 seconds for about 2 cents of AI usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pause and resume kept everything,&lt;/strong&gt; including a shell variable and a background job that kept running after resume. Pausing took about 25 seconds and resuming about 11.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The machine itself cost $0.0027&lt;/strong&gt; for about 8 minutes of running time, at $0.02 per running hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Every machine is the same Standard size during the beta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 vCPU, 4 GB RAM and a 20 GB home disk.&lt;/li&gt;
&lt;li&gt;A Linux desktop with Chromium, and a terminal, side by side in one browser tab.&lt;/li&gt;
&lt;li&gt;Docker, Python with &lt;a href="https://docs.astral.sh/uv/" rel="noopener noreferrer"&gt;uv&lt;/a&gt;, and ports 3000 to 9000 free for your own servers, which you can open from the Ports tab.&lt;/li&gt;
&lt;li&gt;Claude Code, Codex, OpenCode and Hermes, each already configured to use your QuickSilver Pro account.&lt;/li&gt;
&lt;li&gt;A US IP: the machines run in Santa Clara, California, and all outbound traffic leaves from there.&lt;/li&gt;
&lt;li&gt;$0.02 per running hour, billed per minute from your QuickSilver Pro balance. A paused machine costs nothing. There is a cap of 200 running hours a month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8p16xyv6huhi7ti0s9b.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8p16xyv6huhi7ti0s9b.webp" alt="The Create Machine dialog: one Standard size, the preinstalled tools and the price" width="800" height="1503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: create the machine
&lt;/h2&gt;

&lt;p&gt;Open &lt;a href="https://quicksilverpro.io/dashboard/machines/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;Machines&lt;/a&gt; in the dashboard, click &lt;strong&gt;Create Machine&lt;/strong&gt;, give it a name and confirm. The dialog shows your balance. A new account can start its free trial machine on the signup credit, with no card; after the trial, you need at least $1.00 available to start a machine.&lt;/p&gt;

&lt;p&gt;In our latest test, on a brand-new trial account later the same day, the machine was &lt;strong&gt;Running&lt;/strong&gt; 32 seconds after the click. Our very first machine earlier that day took about 14 minutes, during the initial rollout. Start times can be longer when many machines start at once. You can close the tab while it starts; the machine keeps going.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: open it
&lt;/h2&gt;

&lt;p&gt;The machine page puts the terminal on the left and the desktop on the right. The desktop opens on a welcome page that lists the four agents, the command for each, and the model each one uses by default:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Default model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;&lt;code&gt;codex&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GPT 6.1 Terra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;&lt;code&gt;opencode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GPT 6.1 Terra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hermes Agent&lt;/td&gt;
&lt;td&gt;&lt;code&gt;hermes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GPT 6.1 Terra&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On the free trial, the agents use &lt;a href="https://quicksilverpro.io/models/claude-haiku-5-5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;Claude Haiku 5.5&lt;/a&gt; (Claude Code) and &lt;a href="https://quicksilverpro.io/models/deepseek-v4.1-flash/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;DeepSeek V4.1 Flash&lt;/a&gt; (the others) instead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2smy3f5x20wpn3vwfvj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2smy3f5x20wpn3vwfvj.webp" alt="Terminal on the left, the machine's desktop with its welcome page on the right" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first thing we ran in the terminal was a check of what was really there:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;free &lt;span class="nt"&gt;-h&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; ~ | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://ipinfo.io/region
&lt;span class="k"&gt;for &lt;/span&gt;a &lt;span class="k"&gt;in &lt;/span&gt;claude codex opencode hermes&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;'%s: '&lt;/span&gt; &lt;span class="nv"&gt;$a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;$a&lt;/span&gt; &lt;span class="nt"&gt;--version&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It reported 3.8 GiB of memory, a 20 GB home disk, an outbound IP in California, and Claude Code 2.1.316, Codex CLI 0.166.0, OpenCode 1.19.5 and Hermes Agent 0.22.5.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: give an agent a task
&lt;/h2&gt;

&lt;p&gt;The agents need no setup: each machine has its own machine key, and the agents are already pointed at it. We gave Claude Code a small task in non-interactive mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/demo &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/demo
&lt;span class="nb"&gt;time &lt;/span&gt;claude &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt; &lt;span class="s2"&gt;"Create slugify.py with a slugify(text) function that lowercases, strips accents, and joins words with hyphens. Add test_slugify.py with pytest tests, install pytest with uv if needed, run the tests and report the result in one line."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It wrote both files, installed pytest into a new virtual environment with uv, and reported that all 8 tests passed. That took 11.4 seconds and cost $0.0205 of AI usage on Claude Sonnet 5.5. &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; lets Claude Code run commands without asking; on a disposable machine like this one that is a reasonable trade, and it is the main reason to give an agent its own box.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn1z4dcgibudxa6kdeezy.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn1z4dcgibudxa6kdeezy.webp" alt="Claude Code's one-line report after writing the code and running 8 tests" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI usage and machine time come out of the same balance but are counted separately. Each machine key has a $5 AI budget by default. You can raise it under API Keys → Machine keys; topping up your balance does not raise it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: pause and resume
&lt;/h2&gt;

&lt;p&gt;To check what survives a pause, we set a shell variable and started a background loop that wrote the time to a file every 5 seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PAUSE_TEST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;kept
&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; +%T &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/tick.log&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;sleep &lt;/span&gt;5&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we clicked &lt;strong&gt;Pause&lt;/strong&gt;. The machine showed Paused about 25 seconds later. We waited, clicked &lt;strong&gt;Resume&lt;/strong&gt;, and it was Running again after about 11 seconds. Back in the same terminal, &lt;code&gt;PAUSE_TEST&lt;/code&gt; was still set, the background job was still running, and &lt;code&gt;tick.log&lt;/code&gt; had a one-minute gap around the pause before the timestamps picked up again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpymkpp4xounkz0h89s4k.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpymkpp4xounkz0h89s4k.webp" alt="After resume: the shell variable and the background job survived the pause" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pause saves a checkpoint of the running machine for up to 24 hours. If a checkpoint fails, the next resume starts your applications fresh, but the files in your home directory stay. For a known-good state you can come back to, &lt;strong&gt;Save snapshot&lt;/strong&gt; in the header keeps named snapshots of the disks; the newest three are kept.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it cost
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine time, about 8 minutes running&lt;/td&gt;
&lt;td&gt;$0.0027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code task (Claude Sonnet 5.5)&lt;/td&gt;
&lt;td&gt;$0.0205&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Other AI usage during the session, not started by us&lt;/td&gt;
&lt;td&gt;$0.0020&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.025&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At $0.02 per running hour, a machine you use for four hours on each of 20 working days costs $1.60 a month, and nothing while it is paused. The 200-hour monthly cap works out to $4.00. Your agents' AI usage is extra, at normal QuickSilver Pro model prices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using it from a phone or tablet
&lt;/h2&gt;

&lt;p&gt;Everything runs in the browser, so you can reach the same machine from a phone. We checked the layout with Chrome's device emulation rather than on real devices. At phone width, the desktop is view-only (you can zoom in, but not click), while the terminal stays fully usable and gains a row of Esc, Ctrl, Tab, arrow and symbol keys. At iPad width, you can control the desktop as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgh7zsw8kpmz1lkihsoci.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgh7zsw8kpmz1lkihsoci.webp" alt="At phone width, the desktop is view-only and the terminal gets an extra key row" width="600" height="1298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits to know about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is a beta.&lt;/strong&gt; There is no backup guarantee, so keep important work in Git or somewhere else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One size&lt;/strong&gt;, 2 vCPU and 4 GB. Large builds or several containers at once will feel it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sessions stop after 8 continuous hours,&lt;/strong&gt; and there is the 200-hour monthly cap. Paid accounts can have up to 2 machines, both running at once; trial accounts get 1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention:&lt;/strong&gt; a paid account's machine is deleted 30 days after it was last used, a trial machine after 24 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic:&lt;/strong&gt; each month includes 186.3 GiB of download and 93.1 GiB of upload; our session used 16 MiB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start time:&lt;/strong&gt; about 30 seconds in our latest test, longer when many machines start at once. Resuming a paused machine took about 11 seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;New accounts get $0.05 of free credit, no card required, which covers about two and a half running hours shared with your agents' AI usage. After that, add $5 or more by card to keep going. Open &lt;a href="https://quicksilverpro.io/dashboard/machines/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;Machines&lt;/a&gt;, create one, and type &lt;code&gt;claude&lt;/code&gt; in the terminal.&lt;/p&gt;

&lt;p&gt;If you would rather run the agents on your own computer, our setup guides cover &lt;a href="https://quicksilverpro.io/blog/claude-code-quicksilver-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://quicksilverpro.io/blog/codex-cli-quicksilver-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;Codex CLI&lt;/a&gt; and &lt;a href="https://quicksilverpro.io/blog/opencode-crush-quicksilver-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=machines-devbox" rel="noopener noreferrer"&gt;OpenCode and Crush&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Gemini 4 Argon vs Claude Opus 5.5 for coding agents</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Wed, 04 Nov 2026 01:42:42 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/gemini-4-argon-vs-claude-opus-55-for-coding-agents-36e2</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/gemini-4-argon-vs-claude-opus-55-for-coding-agents-36e2</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/gemini-4-argon-vs-opus-5-5-coding/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=argon-vs-opus" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Gemini 4 Argon is Google's new flagship reasoning model. On QuickSilver Pro it costs $2.00 / $10.00 per million tokens, against $1.00 / $5.00 for Claude Opus 5.5. We wanted to know whether it can stand in for Opus in a coding agent, and what that costs.&lt;/p&gt;

&lt;p&gt;We tested this on 2026-10-27. Both models ran in the same agent, OpenCode, on six small but real coding tasks, and we graded every run with tests the agent never saw. Short answer: both passed every hidden test in every run. Gemini 4 Argon was slower and more expensive on every task: 134 seconds and $0.142 per task on average, against 82 seconds and $0.094 for Opus.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent:&lt;/strong&gt; &lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt; 1.19.4, non-interactive (&lt;code&gt;opencode run --auto&lt;/code&gt;), with QuickSilver Pro added as an OpenAI-compatible provider. The only thing that changed between runs was &lt;code&gt;-m quicksilverpro/gemini-4-argon&lt;/code&gt; or &lt;code&gt;-m quicksilverpro/claude-opus-5-5&lt;/code&gt;. QuickSilver Pro serves Gemini 4 Argon on the OpenAI-compatible endpoints (&lt;code&gt;/v1/chat/completions&lt;/code&gt; and &lt;code&gt;/v1/responses&lt;/code&gt;), not on the Anthropic Messages API that Claude Code needs. So we used one agent that can drive both models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent settings:&lt;/strong&gt; a clean OpenCode config with no MCP servers, plugins or extra skills, and OpenCode's defaults otherwise. OpenCode sent no reasoning-effort setting, so each model ran at its default. OpenCode chooses its system prompt by model family, and we left that as shipped. Gemini got a 16,400-character system prompt and Opus a 9,300-character one. Both got the same tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tasks:&lt;/strong&gt; six throwaway Python repositories, each with a one-paragraph prompt, a spec or bug report in the repo, and one visible test. Every task had a separate hidden test suite that we ran after the agent finished. We wrote five of the suites before any run and checked that each passed against our own reference solution and failed against the starting code. The sixth is the official Mustache spec suite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs:&lt;/strong&gt; each task twice per model, same inputs, 24 runs in total. Both models ran each task at the same time, so both saw the same network and server conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graded on:&lt;/strong&gt; the share of hidden tests passing. We also recorded wall-clock time, number of API requests, input / cached / output tokens, and cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; the per-request cost that QuickSilver Pro returns in each response's usage block, summed over every request in a run, at QuickSilver Pro prices on 2026-10-27. We recorded it with a small local pass-through proxy. The same figures appear per request in the dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Two-file bug fix.&lt;/strong&gt; A shop module whose totals were off by a cent and whose discount was applied twice. The fix needed changes in both files, plus a rule from the README that the bug report did not mention: a minimum order for one discount code. 18 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement from a spec.&lt;/strong&gt; A duration parser (&lt;code&gt;"1h30m"&lt;/code&gt;, &lt;code&gt;"2 hours and 5 min"&lt;/code&gt;, &lt;code&gt;"PT1H30M"&lt;/code&gt;) with a page of rules on separators, unit order and what must be rejected, including non-ASCII digits. 84 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor without changing behaviour.&lt;/strong&gt; Split a long function full of copy-pasted code into helpers. The hidden tests compared the new output with the original on 300 random inputs and 16 edge cases, including invalid options and missing fields. They also checked that the function shrank to at most half its original length. 317 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add input validation.&lt;/strong&gt; A sign-up function with a written rule set: per-field error codes, rule order, and fields that interact. For example, a password must not contain the username, but only if the username is valid. 84 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parser for a config format.&lt;/strong&gt; Sections, quoted values with escapes, inline comments, line continuation with correct error line numbers, and &lt;code&gt;${section.key}&lt;/code&gt; references with cycle detection. 57 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Mustache template renderer&lt;/strong&gt; from scratch, graded against the official Mustache spec test suite: interpolation, sections, inverted sections, comments, partials and delimiter changes. 136 hidden tests.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Averages over two runs per model and task. Cost is per run, at QuickSilver Pro prices on 2026-10-27.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon: tests passed&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon: time&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon: cost&lt;/th&gt;
&lt;th&gt;Opus 5.5: tests passed&lt;/th&gt;
&lt;th&gt;Opus 5.5: time&lt;/th&gt;
&lt;th&gt;Opus 5.5: cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Two-file bug fix&lt;/td&gt;
&lt;td&gt;18/18, both runs&lt;/td&gt;
&lt;td&gt;73 s&lt;/td&gt;
&lt;td&gt;$0.079&lt;/td&gt;
&lt;td&gt;18/18, both runs&lt;/td&gt;
&lt;td&gt;34 s&lt;/td&gt;
&lt;td&gt;$0.049&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Duration parser&lt;/td&gt;
&lt;td&gt;84/84, both runs&lt;/td&gt;
&lt;td&gt;74 s&lt;/td&gt;
&lt;td&gt;$0.100&lt;/td&gt;
&lt;td&gt;84/84, both runs&lt;/td&gt;
&lt;td&gt;53 s&lt;/td&gt;
&lt;td&gt;$0.063&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Refactor&lt;/td&gt;
&lt;td&gt;317/317, both runs&lt;/td&gt;
&lt;td&gt;133 s&lt;/td&gt;
&lt;td&gt;$0.131&lt;/td&gt;
&lt;td&gt;317/317, both runs&lt;/td&gt;
&lt;td&gt;85 s&lt;/td&gt;
&lt;td&gt;$0.091&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Input validation&lt;/td&gt;
&lt;td&gt;84/84, both runs&lt;/td&gt;
&lt;td&gt;86 s&lt;/td&gt;
&lt;td&gt;$0.104&lt;/td&gt;
&lt;td&gt;84/84, both runs&lt;/td&gt;
&lt;td&gt;65 s&lt;/td&gt;
&lt;td&gt;$0.075&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Config parser&lt;/td&gt;
&lt;td&gt;57/57, both runs&lt;/td&gt;
&lt;td&gt;267 s&lt;/td&gt;
&lt;td&gt;$0.267&lt;/td&gt;
&lt;td&gt;57/57, both runs&lt;/td&gt;
&lt;td&gt;116 s&lt;/td&gt;
&lt;td&gt;$0.132&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Mustache renderer&lt;/td&gt;
&lt;td&gt;136/136, both runs&lt;/td&gt;
&lt;td&gt;173 s&lt;/td&gt;
&lt;td&gt;$0.172&lt;/td&gt;
&lt;td&gt;136/136, both runs&lt;/td&gt;
&lt;td&gt;139 s&lt;/td&gt;
&lt;td&gt;$0.155&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;all passed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;134 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.142&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;all passed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;82 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.094&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Where the tokens and the money went, averaged over all 12 runs per model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Per run&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Requests (including one short title request from OpenCode)&lt;/td&gt;
&lt;td&gt;10.2&lt;/td&gt;
&lt;td&gt;7.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input tokens&lt;/td&gt;
&lt;td&gt;124,000&lt;/td&gt;
&lt;td&gt;107,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;...of which read from the prompt cache&lt;/td&gt;
&lt;td&gt;86,000 (69%)&lt;/td&gt;
&lt;td&gt;54,000 (51%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output tokens&lt;/td&gt;
&lt;td&gt;5,600&lt;/td&gt;
&lt;td&gt;7,800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;...of which reasoning&lt;/td&gt;
&lt;td&gt;900&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost of uncached input&lt;/td&gt;
&lt;td&gt;$0.077&lt;/td&gt;
&lt;td&gt;$0.052&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost of cached input&lt;/td&gt;
&lt;td&gt;$0.009&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost of output&lt;/td&gt;
&lt;td&gt;$0.056&lt;/td&gt;
&lt;td&gt;$0.039&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total cost per task&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.142&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.094&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the numbers say
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quality was a tie.&lt;/strong&gt; Neither model failed a hidden test in 24 runs. That includes all 136 cases of the official Mustache suite and the 316 comparisons with the original function in the refactor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini got there with less checking.&lt;/strong&gt; On the refactor, both Opus runs saved a copy of the original function and compared old and new output on random inputs before finishing. Neither Gemini run did that; Gemini relied on the one visible test and still matched the original on all 316 hidden comparisons. On the Mustache task, both Opus runs downloaded the official spec test files from GitHub and ran them. Our hidden tests for that task are the same files, so Opus's score there is not independent. Gemini did not download them and passed all 136 anyway. What Gemini did instead was run the test suite more often: 24 &lt;code&gt;pytest&lt;/code&gt; runs over its 12 runs, against 14 for Opus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini was slower on every task&lt;/strong&gt;, from 1.2 times as long on the Mustache renderer to 2.3 times on the config parser. Its typical request was actually quicker than Opus's, with a median of 6.2 seconds against 7.6. But it made more requests (10.2 per task against 7.9), and its slow requests were slower: one in ten took over 34 seconds, and the slowest took 109. The config parser shows the effect most: the second Gemini run took 18 requests and almost five minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini cost more on every task&lt;/strong&gt;, about 1.5 times as much on average. It has the higher per-token prices on QuickSilver Pro, and it sent more input per task because it made more requests. It wrote fewer output tokens than Opus, but at its output price they still cost more ($0.056 against $0.039 per task). Gemini's caching did better than Opus's: 69% of its input came from the prompt cache. On every Opus request the cache covered the same 8,028 tokens, about the size of OpenCode's system prompt and tool definitions. The rest of the conversation was billed at the full input rate. Even so, Opus came out cheaper.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Gemini 4 Argon makes sense
&lt;/h2&gt;

&lt;p&gt;On these tasks, &lt;strong&gt;Opus 5.5 is the better choice for a coding agent.&lt;/strong&gt; It solved the same tasks, in about 60% of the time, for about two thirds of the cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon&lt;/strong&gt; solved every task too, so it is a workable second model. Use it if you want a non-Anthropic model in the loop, for example to cross-check a change, or if you are already building on Gemini elsewhere. We did not find a task in this set that either model failed, so we cannot tell you which one solves more on harder work. On this evidence, Gemini 4 Argon does not save you money over Opus 5.5.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits of this test
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Six tasks, two runs per model. Small, self-contained Python tasks of 30 seconds to 5 minutes each, not a multi-hour change in a large codebase.&lt;/li&gt;
&lt;li&gt;We wrote five of the six hidden test suites, so they reflect our reading of each spec. We checked each against a reference solution before running the agents.&lt;/li&gt;
&lt;li&gt;One agent, OpenCode, with its default per-model system prompts. Another agent, or a different reasoning-effort setting, could change both the speed and the cost. Gemini used about 900 reasoning tokens per task at its default effort. Opus reported none, so it worked without extended thinking.&lt;/li&gt;
&lt;li&gt;The prompt told the agents not to edit the existing tests. In four runs Gemini added its own tests to the end of the existing test file instead of creating a new one. It did not change or remove the existing test, and the hidden tests are separate, so this did not affect the scores.&lt;/li&gt;
&lt;li&gt;Wall time includes network and server time. Two runs of the same model on the same task differed by up to 47%, so read the time column as a rough guide.&lt;/li&gt;
&lt;li&gt;Every Claude request reported about 690 more input tokens than the text sent. OpenCode's short title request, which is the same text for every model, came to 1,593 input tokens on Opus against 639 on Gemini. At 7.9 requests per task that adds at most about $0.005 to an Opus run, which does not change the comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;The OpenCode config we used, pointed at the public endpoint. Save it as &lt;code&gt;opencode.json&lt;/code&gt; in your project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://opencode.ai/config.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"quicksilverpro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"npm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@ai-sdk/openai-compatible"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QuickSilver Pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"baseURL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.quicksilverpro.io/v1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{env:QSP_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"models"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"gemini-4-argon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Gemini 4 Argon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;64000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"claude-opus-5-5"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Claude Opus 5.5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1000000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;64000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run the same prompt with each model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;QSP_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_QSP_KEY

opencode run &lt;span class="nt"&gt;--auto&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; quicksilverpro/gemini-4-argon &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt;
opencode run &lt;span class="nt"&gt;--auto&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; quicksilverpro/claude-opus-5-5 &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--auto&lt;/code&gt; approves the agent's file edits and shell commands without asking, so use it only in a project you can reset. OpenCode shows a cost of 0 for a custom provider. The real cost of each request, with its model and token counts, is in your QuickSilver Pro dashboard. Model details are on the &lt;a href="https://quicksilverpro.io/models/gemini-4-argon/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=argon-vs-opus" rel="noopener noreferrer"&gt;Gemini 4 Argon&lt;/a&gt; and &lt;a href="https://quicksilverpro.io/models/claude-opus-5-5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=argon-vs-opus" rel="noopener noreferrer"&gt;Claude Opus 5.5&lt;/a&gt; pages. For the OpenCode setup, see &lt;a href="https://quicksilverpro.io/blog/opencode-crush-quicksilver-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=argon-vs-opus" rel="noopener noreferrer"&gt;Use QuickSilver Pro in OpenCode and Crush&lt;/a&gt;. For Opus against GPT-6.1 Sol on the same tasks, see &lt;a href="https://quicksilverpro.io/blog/opus-5-5-vs-gpt-6-1-sol-coding/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=argon-vs-opus" rel="noopener noreferrer"&gt;Claude Opus 5.5 vs GPT-6.1 Sol for coding agents&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Kimi K3.1 Pro Highspeed vs Pro: we measured the real speedup</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Tue, 03 Nov 2026 01:16:46 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/kimi-k31-pro-highspeed-vs-pro-we-measured-the-real-speedup-3hm2</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/kimi-k31-pro-highspeed-vs-pro-we-measured-the-real-speedup-3hm2</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/kimi-k3-1-pro-highspeed-vs-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=kimi-highspeed" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quicksilverpro.io/models/kimi-k3.1-pro-highspeed/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=kimi-highspeed" rel="noopener noreferrer"&gt;Kimi K3.1 Pro Highspeed&lt;/a&gt; is the same model as &lt;a href="https://quicksilverpro.io/models/kimi-k3.1-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=kimi-highspeed" rel="noopener noreferrer"&gt;Kimi K3.1 Pro&lt;/a&gt;, served on Moonshot's high-speed endpoint. On QuickSilver Pro it costs $4.00 / $20.00 per million tokens, twice the $2.00 / $10.00 of the standard version. The usual pitch is "about three times faster". We wanted to know how much faster it is end to end, and when the extra money buys anything.&lt;/p&gt;

&lt;p&gt;We tested both on 2026-11-02 through the QuickSilver Pro API, in two ways: single API requests of three shapes, and a coding agent working on six tasks with hidden tests. Short answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generation speed:&lt;/strong&gt; Highspeed generated text 2 to 3 times faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time to first token:&lt;/strong&gt; about the same for both models. Highspeed does not start answering any sooner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End to end:&lt;/strong&gt; a short answer arrived 1.7 times faster and a long code answer 2 times faster. A question about a 52,000-token log came back only 1.25 times faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coding agent:&lt;/strong&gt; every task finished 2.5 times faster on average, for 1.5 times the cost. Both versions passed every hidden test.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Test 1: single API requests
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How we tested
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requests:&lt;/strong&gt; streamed &lt;code&gt;/v1/chat/completions&lt;/code&gt; calls with default settings, sent by a small Python script. Each model got three request types:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Short answer:&lt;/strong&gt; "In three sentences, explain what a database index is and when it hurts write performance." About 110 input tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long code answer:&lt;/strong&gt; an LRU cache module with per-entry TTL, thread safety and size-based eviction, plus a pytest file. About 150 input tokens; both models wrote about 11,700 output tokens, of which about 9,400 were reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long input:&lt;/strong&gt; a 52,614-token service log with one line naming the root cause of an incident. The question asked the model to quote that line and explain it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs:&lt;/strong&gt; 8 per model and request type, 48 requests in total. The two models alternated going first, so both saw the same network and server conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No cache:&lt;/strong&gt; every request started with a unique tag, so no request was served from the prompt cache.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measured:&lt;/strong&gt; time to the first token (reasoning or answer), total time, output tokens per second after the first token, and the cost QuickSilver Pro returned in each response's usage block.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Results
&lt;/h3&gt;

&lt;p&gt;Medians of 8 runs per model and request type.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Request&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;First token&lt;/th&gt;
&lt;th&gt;Total time&lt;/th&gt;
&lt;th&gt;Output tokens/s&lt;/th&gt;
&lt;th&gt;Cost per request&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Short answer&lt;/td&gt;
&lt;td&gt;Kimi K3.1 Pro&lt;/td&gt;
&lt;td&gt;2.1 s&lt;/td&gt;
&lt;td&gt;9.8 s&lt;/td&gt;
&lt;td&gt;37&lt;/td&gt;
&lt;td&gt;$0.0028&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Short answer&lt;/td&gt;
&lt;td&gt;Highspeed&lt;/td&gt;
&lt;td&gt;2.8 s&lt;/td&gt;
&lt;td&gt;5.7 s&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;$0.0059&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long code answer&lt;/td&gt;
&lt;td&gt;Kimi K3.1 Pro&lt;/td&gt;
&lt;td&gt;2.2 s&lt;/td&gt;
&lt;td&gt;5 min 42 s&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;$0.117&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long code answer&lt;/td&gt;
&lt;td&gt;Highspeed&lt;/td&gt;
&lt;td&gt;2.7 s&lt;/td&gt;
&lt;td&gt;2 min 51 s&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;td&gt;$0.235&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;52K-token log&lt;/td&gt;
&lt;td&gt;Kimi K3.1 Pro&lt;/td&gt;
&lt;td&gt;7.3 s&lt;/td&gt;
&lt;td&gt;12.4 s&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;$0.108&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;52K-token log&lt;/td&gt;
&lt;td&gt;Highspeed&lt;/td&gt;
&lt;td&gt;7.4 s&lt;/td&gt;
&lt;td&gt;9.9 s&lt;/td&gt;
&lt;td&gt;148&lt;/td&gt;
&lt;td&gt;$0.216&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both models found the root-cause line in all 16 long-input runs and quoted it exactly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the numbers say
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The speedup is in generation, not in getting started.&lt;/strong&gt; Once text started flowing, Highspeed produced 2 to 3 times as many tokens per second. Time to first token was the same, or slightly longer on Highspeed: 2.8 seconds against 2.1 for the short answer. On the long log both models spent about 7 seconds reading the input before the first token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So the end-to-end gain depends on the shape of the request.&lt;/strong&gt; Total time is the wait for the first token plus the generation time. The more of a request is generation, the closer it gets to the full speedup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Short answer:&lt;/strong&gt; 1.7 times faster. Waiting for the first token is a big share of a 10-second request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long code answer:&lt;/strong&gt; 2 times faster, or 2 minutes 51 seconds saved per answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;52K-token log:&lt;/strong&gt; 1.25 times faster. Most of the time goes to reading the input, so Highspeed saved about 2.5 seconds for twice the cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Twice the price meant twice the cost per request.&lt;/strong&gt; Both models wrote about the same number of tokens for the same request, so each Highspeed request cost almost exactly double.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kimi reasons a lot by default.&lt;/strong&gt; Between 60% and 80% of the output tokens were reasoning, depending on the request type. The long code answer varied from 6,200 to 15,300 output tokens across runs of the same prompt, so the cost of a single request can swing by a factor of two either way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test 2: a coding agent on six tasks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How we tested
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent:&lt;/strong&gt; &lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt; 1.19.4, non-interactive (&lt;code&gt;opencode run --auto&lt;/code&gt;), with QuickSilver Pro added as an OpenAI-compatible provider. The only thing that changed between runs was &lt;code&gt;-m quicksilverpro/kimi-k3.1-pro&lt;/code&gt; or &lt;code&gt;-m quicksilverpro/kimi-k3.1-pro-highspeed&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent settings:&lt;/strong&gt; a clean OpenCode config with no MCP servers, plugins or extra skills, and OpenCode's defaults otherwise. Both models got the same system prompt and tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tasks:&lt;/strong&gt; the six tasks from our &lt;a href="https://quicksilverpro.io/blog/gemini-4-argon-vs-opus-5-5-coding/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=kimi-highspeed" rel="noopener noreferrer"&gt;Gemini 4 Argon vs Claude Opus 5.5&lt;/a&gt; test. Each is a throwaway Python repository with a one-paragraph prompt, a spec or bug report, one visible test, and a separate hidden test suite that we ran after the agent finished:

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Two-file bug fix&lt;/strong&gt; in a shop module. 18 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A duration parser&lt;/strong&gt; implemented from a page of rules. 84 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A refactor&lt;/strong&gt; that must not change behaviour. 317 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sign-up validation&lt;/strong&gt; with interacting rules. 84 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A config-format parser&lt;/strong&gt; with references and cycle detection. 57 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Mustache template renderer&lt;/strong&gt;, graded against the official Mustache spec suite. 136 hidden tests.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs:&lt;/strong&gt; each task twice per model, 24 runs in total. The two models ran side by side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; the per-request cost that QuickSilver Pro returned, summed over every request in a run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Results
&lt;/h3&gt;

&lt;p&gt;Both models passed every hidden test in every run. Averages over two runs per model and task:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Kimi K3.1 Pro: time&lt;/th&gt;
&lt;th&gt;Kimi K3.1 Pro: cost&lt;/th&gt;
&lt;th&gt;Highspeed: time&lt;/th&gt;
&lt;th&gt;Highspeed: cost&lt;/th&gt;
&lt;th&gt;Speedup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Two-file bug fix&lt;/td&gt;
&lt;td&gt;226 s&lt;/td&gt;
&lt;td&gt;$0.143&lt;/td&gt;
&lt;td&gt;115 s&lt;/td&gt;
&lt;td&gt;$0.251&lt;/td&gt;
&lt;td&gt;2.0x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Duration parser&lt;/td&gt;
&lt;td&gt;284 s&lt;/td&gt;
&lt;td&gt;$0.149&lt;/td&gt;
&lt;td&gt;135 s&lt;/td&gt;
&lt;td&gt;$0.259&lt;/td&gt;
&lt;td&gt;2.1x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Refactor&lt;/td&gt;
&lt;td&gt;365 s&lt;/td&gt;
&lt;td&gt;$0.194&lt;/td&gt;
&lt;td&gt;129 s&lt;/td&gt;
&lt;td&gt;$0.310&lt;/td&gt;
&lt;td&gt;2.8x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Sign-up validation&lt;/td&gt;
&lt;td&gt;263 s&lt;/td&gt;
&lt;td&gt;$0.134&lt;/td&gt;
&lt;td&gt;105 s&lt;/td&gt;
&lt;td&gt;$0.206&lt;/td&gt;
&lt;td&gt;2.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Config parser&lt;/td&gt;
&lt;td&gt;559 s&lt;/td&gt;
&lt;td&gt;$0.268&lt;/td&gt;
&lt;td&gt;272 s&lt;/td&gt;
&lt;td&gt;$0.477&lt;/td&gt;
&lt;td&gt;2.1x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Mustache renderer&lt;/td&gt;
&lt;td&gt;754 s&lt;/td&gt;
&lt;td&gt;$0.440&lt;/td&gt;
&lt;td&gt;239 s&lt;/td&gt;
&lt;td&gt;$0.463&lt;/td&gt;
&lt;td&gt;3.2x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;409 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.221&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;166 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.328&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.5x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All twelve runs per model together took 82 minutes on Kimi K3.1 Pro and 33 minutes on Highspeed.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the numbers say
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;In an agent, Highspeed cost 1.5 times as much, not 2.&lt;/strong&gt; About 90% of each run's input tokens were cache reads. An agent sends the whole conversation again on every request, and the repeated part comes from the prompt cache. Cache reads cost $0.20 per million tokens on both versions, so only the new input and the output pay the doubled price.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saving four minutes cost about eleven cents.&lt;/strong&gt; On average a task took 4 minutes less on Highspeed and cost $0.107 more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Mustache gap is partly luck.&lt;/strong&gt; In one of its two Mustache runs, Kimi K3.1 Pro started a sub-agent and made 41 requests, against 11 to 18 in the other Mustache runs. That run took 18 minutes and cost $0.65. Without it, the Mustache times were 7 minutes against 4. All four Mustache runs downloaded the official spec tests and ran them before finishing. Our hidden tests for that task are the same files, so the Mustache scores are not independent.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Highspeed is worth it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Someone is waiting:&lt;/strong&gt; chat, coding assistants, interactive agents. Two to three times faster generation is easy to feel. An agent task that takes 7 minutes takes about 3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long answers:&lt;/strong&gt; code generation and long-form writing, where generation is most of the time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents with long sessions:&lt;/strong&gt; the prompt cache keeps the extra cost to about 1.5 times.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stay on Kimi K3.1 Pro for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Batch jobs and pipelines&lt;/strong&gt;, where nobody watches the clock. You pay twice as much for time nobody uses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long input, short output:&lt;/strong&gt; summarising, extraction and search over big documents. On our 52,000-token log, Highspeed saved 2.5 seconds per request at twice the price.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits of this test
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One day of measurements (2026-11-02). Serving speed depends on load, so another day or time could give different numbers, for either version.&lt;/li&gt;
&lt;li&gt;Eight runs per API request type and two runs per agent task. The agent times varied by up to 2.5 times between two runs of the same task, mostly because of how much the model chose to reason or check its own work.&lt;/li&gt;
&lt;li&gt;Times include network time from our client to QuickSilver Pro and on to the provider.&lt;/li&gt;
&lt;li&gt;Default settings only. We did not change the reasoning effort or limit reasoning tokens. Either would change speed and cost for both versions.&lt;/li&gt;
&lt;li&gt;One agent, OpenCode, and small Python tasks of 1.5 to 18 minutes each, not a multi-hour change in a large codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;Stream a request to each model and watch the difference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;QSP_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_QSP_KEY

&lt;span class="k"&gt;for &lt;/span&gt;model &lt;span class="k"&gt;in &lt;/span&gt;kimi-k3.1-pro kimi-k3.1-pro-highspeed&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"== &lt;/span&gt;&lt;span class="nv"&gt;$model&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="nb"&gt;time &lt;/span&gt;curl &lt;span class="nt"&gt;-sN&lt;/span&gt; https://api.quicksilverpro.io/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$QSP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;model&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="nv"&gt;$model&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;stream&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: true, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;messages&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: [{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;role&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;content&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Write a Python LRU cache with TTL.&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}]}"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To try both in OpenCode, add QuickSilver Pro as a provider in &lt;code&gt;opencode.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://opencode.ai/config.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"quicksilverpro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"npm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@ai-sdk/openai-compatible"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QuickSilver Pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"baseURL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.quicksilverpro.io/v1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"apiKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{env:QSP_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"models"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"kimi-k3.1-pro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Kimi K3.1 Pro"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"kimi-k3.1-pro-highspeed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Kimi K3.1 Pro Highspeed"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode run &lt;span class="nt"&gt;--auto&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; quicksilverpro/kimi-k3.1-pro &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt;
opencode run &lt;span class="nt"&gt;--auto&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; quicksilverpro/kimi-k3.1-pro-highspeed &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every request shows up in your QuickSilver Pro dashboard with its model, token counts and cost, so you can compare the two versions on your own work. Prices for every model are on the &lt;a href="https://quicksilverpro.io/pricing/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=kimi-highspeed" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>9 image prompts worth saving: we ran each one over the API</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:49:36 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/9-image-prompts-worth-saving-we-ran-each-one-over-the-api-c2d</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/9-image-prompts-worth-saving-we-ran-each-one-over-the-api-c2d</guid>
      <description>&lt;p&gt;Nine image prompts collected from GitHub prompt repositories and Threads posts, each one run once over the API on 2026-10-26. Every prompt is plain text-to-image: no photo upload needed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Every image below is the first result we got&lt;/strong&gt; from the exact prompt shown, through the QuickSilver Pro API. Nothing was retried or cherry-picked. Prompts are credited to their authors.&lt;/li&gt;
&lt;li&gt;Short prompts ran on GPT Image 2.5 Flare ($0.018 per image, 1024x1024). The three prompts longer than 1,000 characters ran on GPT Image 2 ($0.01 per image), because Flare on QuickSilver Pro accepts prompts up to 1,000 characters and 1024x1024 only.&lt;/li&gt;
&lt;li&gt;All ten images together cost $0.16.&lt;/li&gt;
&lt;li&gt;Replace anything in &lt;code&gt;[brackets]&lt;/code&gt; with your own content.&lt;/li&gt;
&lt;li&gt;The last section shows how to run these prompts yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. City-name letter poster
&lt;/h2&gt;

&lt;p&gt;A giant city name where every letter is filled with a local street scene, with a panorama strip on top. The original Threads post has 23,000 likes, and the replies are full of "do my city".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9m8bneqgqoti53x1q8v6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9m8bneqgqoti53x1q8v6.jpg" alt="Hong Kong letter poster generated with GPT Image 2" width="799" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2, requested 1536x1024, returned 1672x941, 78 seconds, $0.01.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The prompt is written in Traditional Chinese, and the English lettering still came out spelled correctly. To change the city, swap three things: the city name, the scene in each letter, and the panorama strip.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;製作一張精緻的香港城市旅遊插畫海報，16:9 橫式構圖，暖米白色紙張背景，四周保留乾淨留白。整體結合復古旅行海報、現代平面設計與細緻建築插畫，使用清晰色塊、柔和漸層、細微印刷顆粒與霧面紙張質感。
【核心文字構圖】
畫面中央以極大型英文大寫「HONG KONG」作為主體。文字必須拼寫正確，八個字母完整入鏡，排列為同一行，兩個單字之間保留清楚間距。使用筆畫厚實、窄長比例、幾何感強烈的無襯線字體，所有字母頂部與底部整齊對齊，佔畫面寬度約96%、高度約50%。
使用精準的字母遮罩填景效果：Typography Masking、Image-filled Typography、Clipping Mask Lettering。香港城市風景只出現在字母的實心筆畫內，字母輪廓清楚銳利；字母外部、字母間隙與字母內部孔洞均維持乾淨米白色。每個字母是一幅精緻的小型城市風景插畫，所有場景共享一致畫風與配色。
【八個字母的場景】
第一個 H：香港街道，紅色雙層電車沿軌道行駛，兩旁高樓、直立中文招牌與行人。
第一個 O：青藍色維港海面、紅色中式帆船，背景為高樓與層疊山巒。
第一個 N：茂密綠色山坡，一列紅色登山纜車沿斜坡軌道行駛，遠處可見城市。
第一個 G：中式廟宇入口，綠色琉璃瓦、紅柱、紅燈籠、石階與石獅。
K：繁忙商業街，密集垂直招牌、商店立面、行人與黃色道路標線。
第二個 O：寧靜海灣、淺色沙灘、碧綠海水、沿岸山坡與前景粉紅花叢。
第二個 N：珊瑚粉與蜜桃色夕陽下的香港天際線，海面呈現柔和倒影，一艘紅帆船航行其中。
最後一個 G：淡粉與奶油白色的歷史風格鐘樓建築，拱形窗、柱廊、階梯與棕櫚樹。
【上方全景】
在巨型文字上方安排一條細長、橫跨畫面的香港城市全景帶。由左至右自然串連中式廟宇、樹木、紅色的士、紅色雙層巴士、渡輪、跨海橋樑、維港高樓、紅帆船與沿岸歷史建築。遠方是青綠山巒，天空留白充足，點綴幾隻飛鳥、少量淡粉雲朵與右上方一輪珊瑚粉色太陽。全景帶與中央字母之間保留米白色間隔。
【色彩與質感】
以湖水藍、青綠、珊瑚粉、蜜桃色、奶油白為主，少量朱紅作為電車、帆船與燈籠的視覺亮點，深藍灰用於局部陰影。配色柔和清爽，帶復古印刷感。建築透視合理，線條俐落，細節豐富但不凌亂。
【底部排版】
中央放置一行較小的深藍灰色英文「HONG KONG」，使用寬字距無襯線字體，左右各搭配一條纖細水平線。
下方以更小字級、寬字距排入：
「A CITY OF VIBES, A PLACE LIKE NO OTHER」
全部文字清晰、準確、水平置中。
【避免】
不要寫實照片、3D立體字、厚重陰影、金屬字體、霓虹招牌風格、油畫筆觸、過度飽和、雜亂拼貼。不要讓風景溢出中央字母邊界，不要填滿字母孔洞，不要變形字母、錯字、缺字、額外字母、裁切標題、水印或額外Logo。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://www.threads.com/@bunny_digital/post/DdD3q9CCIc0" rel="noopener noreferrer"&gt;@bunny_digital&lt;/a&gt; on Threads; the prompt was shared in the replies by @ailuna4482.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pixar-style 3D avatars
&lt;/h2&gt;

&lt;p&gt;A consistent avatar set: keep the sentence structure and change the person. Replace &lt;code&gt;MODEL&lt;/code&gt; with a role (software engineer, barista...) and adjust hair, glasses, expression and clothes.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;code&gt;MODEL&lt;/code&gt; = software engineer&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;MODEL&lt;/code&gt; = data analyst&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3j6bgs9qcl9e943bbhnd.jpg" alt="3D avatar of a software engineer" width="800" height="800"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyywymh104c150wgytx44.jpg" alt="3D avatar of a data analyst" width="800" height="800"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, $0.018 each.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a head-and-shoulders Pixar-style 3D avatar of a cute, introverted MODEL with dark hair in space buns and oversized round glasses. She features a wide-eyed expression of wonder with a small "O" shaped mouth, wearing a chunky cream-colored knit sweater. Set against a seamless white background, the render showcases flawless 3D skin and soft cinematic studio lighting for a clean, minimalist aesthetic.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a head-and-shoulders Pixar-style 3D avatar of a sharp-witted MODEL with curly dark hair and thick-rimmed modern glasses. He features a skeptical expression with one raised eyebrow, a calculating smirk, and eyes looking sideways against a seamless white background. Wearing a dark charcoal hoodie, the render showcases flawless 3D skin and soft cinematic studio lighting for a clean, minimalist aesthetic.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://www.threads.com/@designbysaqi_/post/DU8uefUk56a" rel="noopener noreferrer"&gt;@designbysaqi_&lt;/a&gt; on Threads. The prompts are printed under the original images; these two are transcribed from them.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Exploded food infographic
&lt;/h2&gt;

&lt;p&gt;A dish split into floating layers, stacked vertically, with a label line for each layer. Change the food and the layer list for a burger, a ramen bowl or bubble tea.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frjp77ocu07yz49qs98yp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frjp77ocu07yz49qs98yp.jpg" alt="Exploded taco infographic" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, $0.018. All five labels are spelled as given.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a hyper-realistic exploded vertical infographic composition of tacos.
Top → Bottom structure:
Fresh Lettuce (crisp green texture with natural folds)
→ Tomato &amp;amp; Salsa Layer (juicy diced tomatoes and salsa mix)
→ Melted Cheese (smooth cheddar texture)
→ Grilled Meat Filling (juicy seasoned meat detail)
→ Taco Shell Base (crispy golden shell texture)
Perfect vertical alignment, rustic background, soft studio lighting, realistic shadows beneath each floating element.
Add clean infographic text labels with thin pointer lines using these exact labels:
"Lettuce" "Salsa" "Cheese" "Meat" "Shell"
Ultra-detailed food textures, premium commercial aesthetic, 8K.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/freestylefly/awesome-gpt-image-2/blob/main/docs/gallery-part-2.md#L8981" rel="noopener noreferrer"&gt;awesome-gpt-image-2, case 443&lt;/a&gt;, by &lt;a href="https://x.com/Strength04_X/status/2056018963084226866" rel="noopener noreferrer"&gt;@Strength04_X&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. A country as a felt miniature world
&lt;/h2&gt;

&lt;p&gt;One cohesive diorama of a country: daily life in front, streets and rivers in the middle, one landmark at the back. Fill in the country on the first line; we used Portugal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flqyy0a08v36zri0q6mps.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flqyy0a08v36zri0q6mps.jpg" alt="Portugal diorama" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2, 1024x1536, 78 seconds, $0.01.&lt;/em&gt; The layout follows the prompt closely (café life in front, a tram street in the middle, a castle and the bridge at the back), but the result looks more like a painted illustration than wool felt. If the felt texture matters, push it harder in the prompt or try another model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Country: [INSERT COUNTRY NAME]

A miniature felt diorama made of fluffy yarn, wool, and needlework, designed as a single cohesive small world (not a collage), reflecting the real landscape, culture, and daily life of the country.

Structure:
- Select 4–7 naturally integrated elements (landscape, architecture, transport, street life, culture)
- Everything must flow together as one environment

Foreground:
Everyday life — small shops, cafes, markets, people interacting, local clothing, street details, subtle movement, warm human presence

Midground:
Connecting flow — streets, bridges, rivers, paths, transport, cultural spaces that guide the eye naturally from front to back

Background:
One strong identity anchor — landmark, skyline, mountain, or symbolic landscape clearly representing the country (keep it clean, not overcrowded)

Style:
Handmade wool felt, yarn, needle-felt textures, visible fibers, soft edges, miniature craftsmanship, premium diorama realism

Lighting:
Warm golden hour or bright noon, soft shadows, clear visibility, gentle glow enhancing depth

Color:
Soft but saturated palette reflecting the country’s natural tones (greens, sky blues, architectural hues, cultural accents), warm and balanced

Composition:
Vertical frame, balanced or centered perspective, slight top-down or immersive angle, clear foreground–midground–background depth

Mood:
Warm, emotional, calm, refined — like a handcrafted fairy-tale version of real life (not childish)

Rules:
- No logos or text overlays
- No collage-style composition
- No random symbolic clutter
- Keep it realistic but stylized as a handmade miniature world

Quality:
16K, ultra-detailed, hyper-realistic miniature textures, cinematic depth, sharp focus

output_goal:
A single, cohesive felt diorama world that instantly conveys the identity and atmosphere of the chosen country through integrated landscape, culture, and daily life
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/freestylefly/awesome-gpt-image-2/blob/main/docs/gallery-part-2.md#L7383" rel="noopener noreferrer"&gt;awesome-gpt-image-2, case 390&lt;/a&gt;, by &lt;a href="https://x.com/volkan_iras/status/2051403524966141980" rel="noopener noreferrer"&gt;@volkan_iras&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A seed packet growing into its garden
&lt;/h2&gt;

&lt;p&gt;A surreal product scene: the illustration on a seed packet turns into the real plant. Fill in the plant, two details and an insect. We used sunflowers, "A sunflower head", "A tight green sunflower bud" and honeybees.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5o6usuq5jmdmibbwvg3w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5o6usuq5jmdmibbwvg3w.jpg" alt="Sunflower seed packet garden" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2, requested 1024x1024, returned 1536x1024, 78 seconds, $0.01.&lt;/em&gt; The back of the packet even turned "sow in spring" and "full sun" into printed instructions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Epic 3D scene: a weathered seed packet lying open on a potting bench, its promise erupting into the garden it describes. The illustration on the front becomes real. [PLANT / FLOWER] growing at full scale from the paper, roots visible through the packet's base pushing into soil below.
[DETAIL 1] in full bloom at one corner. [DETAIL 2] mid-growth at the other, not yet what it will be.
Tiny insects that belong to this plant, [BEE / BUTTERFLY / BEETLE], hovering at correct scale.
The written instructions on the back become garden calendar, "sow in spring" manifests as actual spring light. "full sun" manifests as a single shaft of it, hitting the tallest bloom perfectly.
Scattered seeds between packet and soil each showing their germination stage, split coat, first root, first shoot, first leaf.
The packet's torn top edge becomes a treeline.
Potting bench surface with soil scatter and water droplets.
Tilt-shift depth of field, greenhouse morning light, the packet as the garden it always intended.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/Evolink-AI/awesome-gpt-image-2-API-Prompts/blob/main/cases/ad-creative.md#L386" rel="noopener noreferrer"&gt;awesome-gpt-image-2-API-Prompts, case 143&lt;/a&gt; (CC0), by &lt;a href="https://x.com/AllaAisling/status/2048156345518768190" rel="noopener noreferrer"&gt;@AllaAisling&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. A miniature city hidden in hair
&lt;/h2&gt;

&lt;p&gt;A macro photo with a tiny city between the hair strands. The run of "no glow", "no CGI", "no perfect surfaces" at the end is what makes it look like a real photo, so keep it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3h1x3dywdf9xo7z51l9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3h1x3dywdf9xo7z51l9.jpg" alt="City in hair" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, $0.018.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Macro photograph of a miniature city hidden in human hair, clearly on a real human head, with part of the forehead and hairline visible, realistic skin texture with pores, tiny people walking through the streets between the hair strands, extremely small but realistic proportions, macro photography, 85mm lens, shallow depth of field, natural lighting, neutral colors, no warm tones, ultra realistic hair with visible roots, natural imperfections, slightly messy strands, realistic materials, slightly dirty buildings, no perfect surfaces, photorealistic, looks like a real photo, no illustration, no CGI, no glow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/freestylefly/awesome-gpt-image-2/blob/main/docs/gallery-part-2.md#L7457" rel="noopener noreferrer"&gt;awesome-gpt-image-2, case 392&lt;/a&gt;, by &lt;a href="https://x.com/krafterlab/status/2051399740986740986" rel="noopener noreferrer"&gt;@krafterlab&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Tiny text on a grain of rice
&lt;/h2&gt;

&lt;p&gt;One sentence that tests how well a model handles very small text. Replace "wOw" with your own word.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsf6se41ejixmqdkjojnr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsf6se41ejixmqdkjojnr.jpg" alt="wOw on a grain of rice" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, 23 seconds, $0.018. The word is on one grain just above the centre.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A massive pile of rice, and on one single grain of rice there is tiny text that reads "wOw"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/ZeroLu/awesome-gpt-image/blob/main/README.md#L104" rel="noopener noreferrer"&gt;awesome-gpt-image&lt;/a&gt;, by &lt;a href="https://x.com/adonis_singh/status/2046673729082560919" rel="noopener noreferrer"&gt;@adonis_singh&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. One-liners that fill in the layout themselves
&lt;/h2&gt;

&lt;p&gt;Short prompts where the model invents the whole interface or document.&lt;/p&gt;

&lt;p&gt;A YouTube video by a time traveller:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F110h4ogeokq7r29gab5n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F110h4ogeokq7r29gab5n.jpg" alt="YouTube screenshot from the Middle Ages" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, $0.018. It invented the title, channel, view count and comments.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Screenshot of a YouTube video showing someone who time-traveled to the Middle Ages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A Chinese national exam paper (replace the subject; we used mathematics):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhrgvyxepzjktlynwvsjr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhrgvyxepzjktlynwvsjr.jpg" alt="Gaokao maths paper" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;GPT Image 2.5 Flare, 1024x1024, $0.018. Header, instructions, numbered questions and a geometry figure, all in Chinese.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate an image of a 2026 Gaokao exam paper for [subject name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sources: YouTube screenshot by &lt;a href="https://x.com/flowersslop/status/2040261168460108213" rel="noopener noreferrer"&gt;@flowersslop&lt;/a&gt; and exam paper by &lt;a href="https://x.com/MrLarus/status/2045529134915600868" rel="noopener noreferrer"&gt;@MrLarus&lt;/a&gt;, both via &lt;a href="https://github.com/ZeroLu/awesome-gpt-image" rel="noopener noreferrer"&gt;awesome-gpt-image&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. A quick test for text rendering
&lt;/h2&gt;

&lt;p&gt;To see which model spells text correctly, this prompt is the fastest check: three lines on a coffee bag, so a wrong letter is obvious. These four images come from the same prompt with the same settings (&lt;code&gt;size="1024x1024"&lt;/code&gt;, &lt;code&gt;n=1&lt;/code&gt;).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPT Image 2.5 Flare&lt;/th&gt;
&lt;th&gt;Qwen Image 3.0&lt;/th&gt;
&lt;th&gt;FLUX.2 Klein&lt;/th&gt;
&lt;th&gt;SDXL Turbo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5t6owy57b7dmc9z6bsxz.jpg" width="768" height="768"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fok33g4vfu9h99gbkxtw5.jpg" width="768" height="768"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh5njvt8cvm1derujnd4n.jpg" width="768" height="768"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff7hinq583mr8qpfxqsjw.jpg" width="768" height="768"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All three lines correct&lt;/td&gt;
&lt;td&gt;All three lines correct&lt;/td&gt;
&lt;td&gt;All three lines correct&lt;/td&gt;
&lt;td&gt;Garbled&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product photo of a matte black coffee bag standing on a wooden table. The front label reads "NORTHWIND ROASTERS" in large white capital letters, and below it, in smaller text, "Ethiopia Yirgacheffe" and "250 g". Soft studio lighting, shallow depth of field.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: our own test in &lt;a href="https://quicksilverpro.io/blog/image-generation-api-compared/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-prompts" rel="noopener noreferrer"&gt;Image generation API compared: 11 models, the same 3 prompts&lt;/a&gt;, which has the full results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for editing these prompts
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fill in every placeholder.&lt;/strong&gt; &lt;code&gt;[brackets]&lt;/code&gt;, &lt;code&gt;MODEL&lt;/code&gt; and similar markers get drawn literally if you leave them in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the structure of long prompts.&lt;/strong&gt; In sections 1 and 4 each block controls one thing (layout, colour, what to avoid). Change the content, not the blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quote any text that must appear&lt;/strong&gt;, for example &lt;code&gt;"HONG KONG"&lt;/code&gt;, so the model does not rephrase it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the model's limits before you pick a shape.&lt;/strong&gt; On QuickSilver Pro, GPT Image 2.5 Flare takes 1024x1024 and prompts up to 1,000 characters only. GPT Image 2 takes longer prompts and other sizes, but it does not always return the size you ask for: in our runs 1536x1024 came back as 1672x941 and 1024x1024 as 1536x1024.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the "avoid" list.&lt;/strong&gt; Listing what you do not want (watermarks, 3D text, oversaturation) is more reliable than describing only what you want.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Running them over an API
&lt;/h2&gt;

&lt;p&gt;ChatGPT and Gemini work for one image at a time. To generate a batch (a poster for every city on a list, a full avatar set) or compare models on the same prompt, an API is easier. The examples below use &lt;a href="https://quicksilverpro.io/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-prompts" rel="noopener noreferrer"&gt;QuickSilver Pro&lt;/a&gt;: one key for a dozen image models behind the OpenAI-compatible &lt;code&gt;/v1/images/generations&lt;/code&gt; endpoint, billed per image.&lt;/p&gt;

&lt;p&gt;Prices per image on 2026-10-26:&lt;/p&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;Model ID&lt;/th&gt;
&lt;th&gt;Per image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-image-2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2.5 Flare&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-image-2.5-flare&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.018&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2.1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemini-nano-banana-2.1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.036&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedream 5.0 Pro&lt;/td&gt;
&lt;td&gt;&lt;code&gt;seedream-5.0-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.07&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;curl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.quicksilverpro.io/v1/images/generations &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$QSP_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gpt-image-2.5-flare",
    "prompt": "A massive pile of rice, and on one single grain of rice there is tiny text that reads \"wOw\"",
    "size": "1024x1024",
    "n": 1
  }'&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.data[0].b64_json'&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;--decode&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; rice.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python, with the official OpenAI SDK and a different &lt;code&gt;base_url&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urllib.request&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.quicksilverpro.io/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_QSP_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-image-2.5-flare&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b64_json&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b64_json&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# Seedream and Bria return a download link instead
&lt;/span&gt;    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;out.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a batch, loop over a list of prompts and call &lt;code&gt;client.images.generate&lt;/code&gt; for each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which model to use
&lt;/h2&gt;

&lt;p&gt;From the comparison in section 9 and today's runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Images with text&lt;/strong&gt; (posters, packaging, labels): GPT Image 2.5 Flare got the text and object counts right in every run of the comparison. In today's runs it took 23 seconds for a single request and 37 to 60 seconds with five requests in parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long prompts or non-square images&lt;/strong&gt;: GPT Image 2 at $0.01 per image. It took about 78 seconds per image today and did not keep the requested size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seedream and Bria return a URL instead of the image.&lt;/strong&gt; Download it straight away; we did not test how long the links stay valid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Model list, prices and docs: &lt;a href="https://quicksilverpro.io/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-prompts" rel="noopener noreferrer"&gt;quicksilverpro.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>generativeai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Claude Opus 5.5 vs Sonnet 5.5 for coding agents: is Opus worth it?</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:51:39 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/claude-opus-55-vs-sonnet-55-for-coding-agents-is-opus-worth-it-ifi</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/claude-opus-55-vs-sonnet-55-for-coding-agents-is-opus-worth-it-ifi</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/claude-opus-5-5-vs-sonnet-5-5-coding/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=opus-vs-sonnet" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Claude Opus 5.5 costs $1.00 / $5.00 per million tokens on QuickSilver Pro, against $0.50 / $2.50 for Claude Sonnet 5.5. The question for anyone running a coding agent is whether Opus buys anything for that.&lt;/p&gt;

&lt;p&gt;We tested it on 2026-10-20 with Claude Code, on six small but real coding tasks, and graded every run with tests the agent never saw. Short answer: on these tasks, no. Both models passed every hidden test in every run. Opus was slower and, per task, cost about two and a half times as much.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent:&lt;/strong&gt; Claude Code 2.1.301, non-interactive (&lt;code&gt;claude -p&lt;/code&gt;), default settings, with &lt;code&gt;--allowedTools "Read,Edit,Write,Bash,Glob,Grep"&lt;/code&gt; so it could read and edit files and run shell commands. The only thing that changed between runs was &lt;code&gt;--model claude-sonnet-5-5&lt;/code&gt; or &lt;code&gt;--model claude-opus-5-5&lt;/code&gt;. &lt;code&gt;ANTHROPIC_DEFAULT_HAIKU_MODEL&lt;/code&gt; was set to &lt;code&gt;claude-haiku-5-5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tasks:&lt;/strong&gt; six throwaway Python repositories, each with a one-paragraph prompt, a spec or bug report in the repo, and one visible test. Every task had a separate hidden test suite that we ran after the agent finished. Five suites were written by us before any run and checked against our own reference solutions; the sixth is the official Mustache spec suite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs:&lt;/strong&gt; each task twice per model, same inputs, 24 runs in total.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graded on:&lt;/strong&gt; the share of hidden tests passing. Also recorded: wall-clock time, number of API requests, input / cached / output tokens, and cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; computed from the token counts of every request each run made, at QuickSilver Pro prices on 2026-10-20 — input, output, cache reads and cache writes each at their own rate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Two-file bug fix.&lt;/strong&gt; A shop module whose totals were off by a cent and whose discount was applied twice. The fix needed changes in both files plus a rule from the README that the bug report did not mention (a minimum order for one code). 17 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement from a spec.&lt;/strong&gt; A duration parser (&lt;code&gt;"1h30m"&lt;/code&gt;, &lt;code&gt;"2 hours and 5 min"&lt;/code&gt;, &lt;code&gt;"PT1H30M"&lt;/code&gt;) with a page of rules on separators, unit order and what must be rejected. 57 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactor without changing behaviour.&lt;/strong&gt; Split a long function full of duplicated code into helpers. The hidden tests compared the new output with the original on 300 random inputs and a set of edge cases, and checked that the function actually got shorter. 312 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add input validation.&lt;/strong&gt; A sign-up function with a written rule set: per-field error codes, rule order, and fields that interact (a password must not contain the username, but only if the username is valid). 52 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parser for a config format.&lt;/strong&gt; Sections, quoted values with escapes, inline comments, line continuation with correct error line numbers, and &lt;code&gt;${section.key}&lt;/code&gt; references with cycle detection. 34 hidden tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Mustache template renderer&lt;/strong&gt; from scratch, graded against the official Mustache spec test suite: interpolation, sections, inverted sections, comments, partials and delimiter changes. 136 hidden tests.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;Averages over two runs per model and task. Cost is per run, at QuickSilver Pro prices on 2026-10-20.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Sonnet 5.5: tests passed&lt;/th&gt;
&lt;th&gt;Sonnet 5.5: time&lt;/th&gt;
&lt;th&gt;Sonnet 5.5: cost&lt;/th&gt;
&lt;th&gt;Opus 5.5: tests passed&lt;/th&gt;
&lt;th&gt;Opus 5.5: time&lt;/th&gt;
&lt;th&gt;Opus 5.5: cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Two-file bug fix&lt;/td&gt;
&lt;td&gt;17/17, both runs&lt;/td&gt;
&lt;td&gt;21 s&lt;/td&gt;
&lt;td&gt;$0.048&lt;/td&gt;
&lt;td&gt;17/17, both runs&lt;/td&gt;
&lt;td&gt;37 s&lt;/td&gt;
&lt;td&gt;$0.120&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Duration parser&lt;/td&gt;
&lt;td&gt;57/57, both runs&lt;/td&gt;
&lt;td&gt;46 s&lt;/td&gt;
&lt;td&gt;$0.093&lt;/td&gt;
&lt;td&gt;57/57, both runs&lt;/td&gt;
&lt;td&gt;62 s&lt;/td&gt;
&lt;td&gt;$0.121&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Refactor&lt;/td&gt;
&lt;td&gt;312/312, both runs&lt;/td&gt;
&lt;td&gt;30 s&lt;/td&gt;
&lt;td&gt;$0.052&lt;/td&gt;
&lt;td&gt;312/312, both runs&lt;/td&gt;
&lt;td&gt;81 s&lt;/td&gt;
&lt;td&gt;$0.156&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Input validation&lt;/td&gt;
&lt;td&gt;52/52, both runs&lt;/td&gt;
&lt;td&gt;33 s&lt;/td&gt;
&lt;td&gt;$0.056&lt;/td&gt;
&lt;td&gt;52/52, both runs&lt;/td&gt;
&lt;td&gt;36 s&lt;/td&gt;
&lt;td&gt;$0.088&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Config parser&lt;/td&gt;
&lt;td&gt;34/34, both runs&lt;/td&gt;
&lt;td&gt;55 s&lt;/td&gt;
&lt;td&gt;$0.075&lt;/td&gt;
&lt;td&gt;34/34, both runs&lt;/td&gt;
&lt;td&gt;77 s&lt;/td&gt;
&lt;td&gt;$0.127&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6. Mustache renderer&lt;/td&gt;
&lt;td&gt;136/136, both runs&lt;/td&gt;
&lt;td&gt;82 s&lt;/td&gt;
&lt;td&gt;$0.093&lt;/td&gt;
&lt;td&gt;136/136, both runs&lt;/td&gt;
&lt;td&gt;137 s&lt;/td&gt;
&lt;td&gt;$0.438&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;all passed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;45 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.069&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;all passed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;72 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.175&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Where the tokens went, averaged over all 12 runs per model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Per run&lt;/th&gt;
&lt;th&gt;Sonnet 5.5&lt;/th&gt;
&lt;th&gt;Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Requests to the chosen model&lt;/td&gt;
&lt;td&gt;5.8&lt;/td&gt;
&lt;td&gt;6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input tokens to the chosen model&lt;/td&gt;
&lt;td&gt;141,000&lt;/td&gt;
&lt;td&gt;148,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;...of which read from the prompt cache&lt;/td&gt;
&lt;td&gt;111,000&lt;/td&gt;
&lt;td&gt;110,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output tokens&lt;/td&gt;
&lt;td&gt;5,200&lt;/td&gt;
&lt;td&gt;5,800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost of the chosen model's requests&lt;/td&gt;
&lt;td&gt;$0.034&lt;/td&gt;
&lt;td&gt;$0.074&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safety-check requests (see below)&lt;/td&gt;
&lt;td&gt;1.4&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost of the safety checks&lt;/td&gt;
&lt;td&gt;$0.036&lt;/td&gt;
&lt;td&gt;$0.101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total cost per task&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.069&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.175&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the numbers say
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Quality was a tie.&lt;/strong&gt; Neither model failed a single hidden test in 24 runs, including the 136 cases of the official Mustache suite, which include the fiddly rules for whitespace around standalone tags and indented partials. These tasks did not find a ceiling for Sonnet 5.5, so they cannot show Opus clearing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opus did not write much more.&lt;/strong&gt; The two models used about the same number of requests and output tokens per task. The model-only cost difference (2.2 times) comes almost entirely from Opus's higher per-token price.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opus checked its own work more, and that is where its extra time and cost went.&lt;/strong&gt; It ran more shell commands. On the refactor, both Opus runs wrote a throwaway script that compared the old and new function on random inputs; one of the two Sonnet runs did the same, the other relied on the existing test. On the Mustache task, both Opus runs downloaded the official spec test files from GitHub and ran them before finishing — one of them started a sub-agent to do it — which made that task four times as expensive as with Sonnet. (Our hidden tests for that task are the same files, so Opus's score there is not independent. Sonnet passed all 136 without them.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opus was slower in every task&lt;/strong&gt;, from about the same speed on the validation task to 2.7 times as long on the refactor. Averaged over all runs it took 1.6 times as long.&lt;/p&gt;

&lt;h2&gt;
  
  
  The extra requests you are billed for
&lt;/h2&gt;

&lt;p&gt;Every run also sent requests to &lt;a href="https://quicksilverpro.io/models/claude-sonnet-5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=opus-vs-sonnet" rel="noopener noreferrer"&gt;Claude Sonnet 5&lt;/a&gt;, a model we never selected. We logged one of them: it is Claude Code's own safety check, a "security monitor" prompt that receives the conversation so far and grades the shell command the agent is about to run. Each check sent about 49,000 input tokens and returned a few tokens of output.&lt;/p&gt;

&lt;p&gt;Three things about these checks matter for your bill:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They do not appear in Claude Code's own usage summary, which in our runs listed only the model we picked. They are ordinary API requests made with your key, so they are billed like any other.&lt;/li&gt;
&lt;li&gt;In our runs they cost about as much as the Sonnet 5.5 work itself ($0.036 against $0.034 per task).&lt;/li&gt;
&lt;li&gt;They scale with how many shell commands the agent runs, not with the model you chose. Opus ran more commands, so it triggered almost three times as many checks; the two Opus Mustache runs, which downloaded files from GitHub, sent 9 and 15.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When Opus earns its price, and when Sonnet is enough
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sonnet 5.5 is enough&lt;/strong&gt; for the kind of work we measured: bug fixes across a couple of files, implementing a function from a written spec, behaviour-preserving refactors, validation rules, parsers of a few hundred lines. It solved all of them, every time, at about 40% of Opus's cost per task and in less time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opus 5.5 is worth trying&lt;/strong&gt; when Sonnet fails a task — and, judging by these runs, when you want the agent to go out of its way to verify its work, as it did by fuzz-testing its refactors and fetching the reference test suite. We did not find a task in this set that Sonnet failed, so we cannot tell you how much more Opus solves on harder work. Treat that as a reason to keep Opus one &lt;code&gt;/model opus&lt;/code&gt; away, not to run it by default.&lt;/p&gt;

&lt;p&gt;A practical setup: map Claude Code's &lt;code&gt;sonnet&lt;/code&gt; alias to &lt;code&gt;claude-sonnet-5-5&lt;/code&gt; and its &lt;code&gt;opus&lt;/code&gt; alias to &lt;code&gt;claude-opus-5-5&lt;/code&gt; (see &lt;a href="https://quicksilverpro.io/blog/claude-code-quicksilver-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=opus-vs-sonnet" rel="noopener noreferrer"&gt;Claude Code with QuickSilver Pro&lt;/a&gt;), work in Sonnet, and switch with &lt;code&gt;/model opus&lt;/code&gt; for the task where Sonnet keeps going round in circles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits of this test
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Six tasks, two runs per model. Small, self-contained Python tasks of 20 seconds to 2.5 minutes each, not a multi-hour change in a large codebase.&lt;/li&gt;
&lt;li&gt;Five of the six hidden test suites were written by us, so they reflect our reading of each spec. We checked each against a reference solution before running the agents.&lt;/li&gt;
&lt;li&gt;Wall time includes network and server time, and two runs of the same model on the same task differed by as much as 55%. Read the time column as a rough guide.&lt;/li&gt;
&lt;li&gt;Claude Code ran with its default settings, including the default effort level for each model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Run it yourself
&lt;/h2&gt;

&lt;p&gt;The settings we used, pointed at the public endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://api.quicksilverpro.io
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_QSP_KEY
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_DEFAULT_HAIKU_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;claude-haiku-5-5

claude &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt; &lt;span class="nt"&gt;--model&lt;/span&gt; claude-sonnet-5-5 &lt;span class="nt"&gt;--allowedTools&lt;/span&gt; &lt;span class="s2"&gt;"Read,Edit,Write,Bash,Glob,Grep"&lt;/span&gt;
claude &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Fix the failing test in tests/"&lt;/span&gt; &lt;span class="nt"&gt;--model&lt;/span&gt; claude-opus-5-5 &lt;span class="nt"&gt;--allowedTools&lt;/span&gt; &lt;span class="s2"&gt;"Read,Edit,Write,Bash,Glob,Grep"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each request shows up in your QuickSilver Pro dashboard with its model, token counts and cost, so you can compare the two models on your own tasks. Prices for every Claude model are in &lt;a href="https://quicksilverpro.io/blog/claude-api-pricing/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=opus-vs-sonnet" rel="noopener noreferrer"&gt;Claude API pricing in 2026&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>programming</category>
      <category>llm</category>
    </item>
    <item>
      <title>Image generation API compared: 11 models, the same 3 prompts, real outputs</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Thu, 22 Oct 2026 04:13:44 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/image-generation-api-compared-11-models-the-same-3-prompts-real-outputs-33ne</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/image-generation-api-compared-11-models-the-same-3-prompts-real-outputs-33ne</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://quicksilverpro.io/blog/image-generation-api-compared/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;QuickSilver Pro blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;QuickSilver Pro sells a dozen image-generation models behind one OpenAI-compatible endpoint, &lt;code&gt;/v1/images/generations&lt;/code&gt;. They are billed per image, and the price per image ranges widely: $0.003 for FLUX.1 Schnell, $0.07 for Seedream 5.0 Pro. The question is what the extra money buys.&lt;/p&gt;

&lt;p&gt;So on 2026-10-20 we gave 11 of them the same three prompts and looked at every image.&lt;/p&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;Price per image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/gpt-image-2.5-flare/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;GPT Image 2.5 Flare&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.018&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/gpt-image-2.5-sunburst/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;GPT Image 2.5 Sunburst&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.018&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2&lt;/td&gt;
&lt;td&gt;$0.01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/seedream-5.0-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;Seedream 5.0 Pro&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/seedream-4/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;Seedream 4&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.055&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/qwen-image-3.0/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;Qwen Image 3.0&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/flux.2-pro/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;FLUX.2 Pro&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/flux.2-klein/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;FLUX.2 Klein&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/flux.1-schnell/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;FLUX.1 Schnell&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/sdxl-turbo/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;SDXL Turbo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://quicksilverpro.io/models/bria-fibo-1.5/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;Bria FIBO 1.5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.055&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prices as of 2026-10-20; current prices are on the &lt;a href="https://quicksilverpro.io/pricing/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nano Banana Pro is also in the catalog; it is not part of this test.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we tested
&lt;/h2&gt;

&lt;p&gt;Three prompts, each testing something different:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Text on packaging:&lt;/strong&gt; &lt;em&gt;Product photo of a matte black coffee bag standing on a wooden table. The front label reads "NORTHWIND ROASTERS" in large white capital letters, and below it, in smaller text, "Ethiopia Yirgacheffe" and "250 g". Soft studio lighting, shallow depth of field.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exact composition:&lt;/strong&gt; &lt;em&gt;Flat vector illustration on a plain white background: exactly three red apples on the left side of the image, and exactly one blue cup on the right side. Nothing else in the image.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photoreal scene:&lt;/strong&gt; &lt;em&gt;Photorealistic photograph of a small wooden cabin beside a mountain lake at dawn, mist over the water, a red canoe tied to a wooden dock in the foreground, pine trees, no people.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every request used the same parameters: &lt;code&gt;size="1024x1024"&lt;/code&gt;, &lt;code&gt;n=1&lt;/code&gt;, nothing else. Each model ran each prompt once. We then ran the composition prompt a second time on every model, one request at a time, to get a cleaner latency figure and a second sample. We judged every image by eye: for the label, whether all three lines are spelled exactly right; for the illustration, whether there are exactly three apples on the left and one cup on the right; for the scene, whether every element in the prompt is there and physically plausible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&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;Median latency&lt;/th&gt;
&lt;th&gt;Text on packaging&lt;/th&gt;
&lt;th&gt;Three apples, one cup&lt;/th&gt;
&lt;th&gt;Photoreal scene&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2.5 Flare&lt;/td&gt;
&lt;td&gt;11.5 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2.5 Sunburst&lt;/td&gt;
&lt;td&gt;17.5 s&lt;/td&gt;
&lt;td&gt;All correct, plus a line we did not ask for&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2&lt;/td&gt;
&lt;td&gt;20.2 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedream 5.0 Pro&lt;/td&gt;
&lt;td&gt;40.8 s&lt;/td&gt;
&lt;td&gt;All correct, brand name smaller than asked&lt;/td&gt;
&lt;td&gt;1 of 1&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedream 4&lt;/td&gt;
&lt;td&gt;6.4 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;1 of 1&lt;/td&gt;
&lt;td&gt;All elements, very saturated colours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen Image 3.0&lt;/td&gt;
&lt;td&gt;5.0 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;1 of 2 (four apples once)&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX.2 Pro&lt;/td&gt;
&lt;td&gt;8.9 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;1 of 2 (two apples once)&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX.2 Klein&lt;/td&gt;
&lt;td&gt;1.3 s&lt;/td&gt;
&lt;td&gt;All correct&lt;/td&gt;
&lt;td&gt;0 of 2 (two apples both times)&lt;/td&gt;
&lt;td&gt;Canoe overlaps the dock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX.1 Schnell&lt;/td&gt;
&lt;td&gt;0.7 s&lt;/td&gt;
&lt;td&gt;Brand correct, small text garbled&lt;/td&gt;
&lt;td&gt;1 of 2 (two apples and two cups once)&lt;/td&gt;
&lt;td&gt;Canoe lying on the dock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SDXL Turbo&lt;/td&gt;
&lt;td&gt;4.1 s&lt;/td&gt;
&lt;td&gt;Garbled&lt;/td&gt;
&lt;td&gt;0 of 2&lt;/td&gt;
&lt;td&gt;Two canoes, neither at the dock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bria FIBO 1.5&lt;/td&gt;
&lt;td&gt;8.9 s&lt;/td&gt;
&lt;td&gt;"Yirgachefee", plus two lines of invented text&lt;/td&gt;
&lt;td&gt;1 of 1&lt;/td&gt;
&lt;td&gt;All elements&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Latency is the median of four requests per model, measured from one client. The second composition run was not saved for Seedream 4, Seedream 5.0 Pro and Bria FIBO 1.5, so those have one sample. All 33 requests in the main run succeeded.&lt;/p&gt;

&lt;p&gt;What stands out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text is mostly solved, except at the cheap end.&lt;/strong&gt; Eight of the eleven models wrote all three lines of the label correctly. FLUX.1 Schnell and Bria FIBO 1.5 got the brand name right and garbled or misspelled the smaller lines; SDXL Turbo produced lettering that is not words.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Counting is where models differ.&lt;/strong&gt; Only the three GPT Image models drew three apples and one cup in both runs. Qwen Image 3.0, FLUX.2 Pro and FLUX.1 Schnell got it right once and wrong once, so a single good image does not mean the model follows counts reliably. FLUX.2 Klein drew two apples both times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The photoreal scene was easy for nearly everyone.&lt;/strong&gt; Eight of eleven images had every element in a plausible arrangement. The failures were physical: a canoe merged into the dock, a canoe lying on top of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency spans nearly two orders of magnitude.&lt;/strong&gt; FLUX.1 Schnell answered in under a second; Seedream 5.0 Pro took 28 to 51 seconds per image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Text on packaging
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;GPT Image 2.5 Flare&lt;/th&gt;
&lt;th&gt;GPT Image 2.5 Sunburst&lt;/th&gt;
&lt;th&gt;Qwen Image 3.0&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fgpt-image-2.5-flare-label.webp" alt="GPT Image 2.5 Flare: coffee bag with all three label lines correct" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fgpt-image-2.5-sunburst-label.webp" alt="GPT Image 2.5 Sunburst: coffee bag with correct label and an added 'Single origin coffee' line" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fqwen-image-3.0-label.webp" alt="Qwen Image 3.0: coffee bag with large correct brand name" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;FLUX.2 Klein&lt;/th&gt;
&lt;th&gt;Bria FIBO 1.5&lt;/th&gt;
&lt;th&gt;SDXL Turbo&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fflux.2-klein-label.webp" alt="FLUX.2 Klein: coffee bag with correct label" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fbria-fibo-1.5-label.webp" alt="Bria FIBO 1.5: coffee bag with 'Yirgachefee' misspelled and invented filler text" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fsdxl-turbo-label.webp" alt="SDXL Turbo: coffee bag with garbled lettering" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Three apples on the left, one cup on the right
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;GPT Image 2.5 Sunburst&lt;/th&gt;
&lt;th&gt;Seedream 5.0 Pro&lt;/th&gt;
&lt;th&gt;Bria FIBO 1.5&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fgpt-image-2.5-sunburst-layout.webp" alt="GPT Image 2.5 Sunburst: three apples left, blue cup right" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fseedream-5.0-pro-layout.webp" alt="Seedream 5.0 Pro: three apples left, blue mug right" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fbria-fibo-1.5-layout.webp" alt="Bria FIBO 1.5: three apples left, blue cup right" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Qwen Image 3.0 (first run)&lt;/th&gt;
&lt;th&gt;FLUX.2 Pro (first run)&lt;/th&gt;
&lt;th&gt;SDXL Turbo&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fqwen-image-3.0-layout.webp" alt="Qwen Image 3.0: four apples instead of three" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fflux.2-pro-layout.webp" alt="FLUX.2 Pro: two apples instead of three" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fsdxl-turbo-layout.webp" alt="SDXL Turbo: several apples in bowls and no cup" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Cabin, lake and red canoe
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;GPT Image 2.5 Flare&lt;/th&gt;
&lt;th&gt;Seedream 5.0 Pro&lt;/th&gt;
&lt;th&gt;FLUX.2 Pro&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fgpt-image-2.5-flare-scene.webp" alt="GPT Image 2.5 Flare: cabin, misty lake, red canoe tied to a dock" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fseedream-5.0-pro-scene.webp" alt="Seedream 5.0 Pro: cabin across a misty lake, red canoe at a dock" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fflux.2-pro-scene.webp" alt="FLUX.2 Pro: cabin with smoking chimney, red canoe next to a dock" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Qwen Image 3.0&lt;/th&gt;
&lt;th&gt;FLUX.2 Klein&lt;/th&gt;
&lt;th&gt;SDXL Turbo&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fqwen-image-3.0-scene.webp" alt="Qwen Image 3.0: cabin, lake, red canoe tied to a dock" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fflux.2-klein-scene.webp" alt="FLUX.2 Klein: red canoe overlapping the dock planks" width="800" height="400"&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fquicksilverpro.io%2Fblog%2Fimage-generation-api-compared%2Fsdxl-turbo-scene.webp" alt="SDXL Turbo: red cabin and two canoes, neither at the dock" width="800" height="400"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the API actually returns
&lt;/h2&gt;

&lt;p&gt;The models do not all answer a request the same way, and code that works with one can break on another:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Size is not always what you ask for.&lt;/strong&gt; We asked for 1024x1024 every time. Seedream 4 returned 1280x1024 every time we checked. GPT Image 2 picks its own aspect ratio at about 1.57 megapixels: 1774x887 for the apples (twice), 1536x1024 for the lake, 1312x1199 for the coffee bag. Every other model returned 1024x1024.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Some models return a link instead of the image.&lt;/strong&gt; GPT Image, Qwen Image, FLUX and SDXL Turbo put the image in &lt;code&gt;b64_json&lt;/code&gt;. Seedream 4, Seedream 5.0 Pro and Bria FIBO 1.5 return a download URL in &lt;code&gt;url&lt;/code&gt; instead, and still did when we passed &lt;code&gt;response_format="b64_json"&lt;/code&gt;. We did not test how long those links stay valid, so download the file straight away.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The format differs too.&lt;/strong&gt; FLUX, SDXL Turbo and the Seedream models returned JPEG; GPT Image, Qwen Image and Bria returned PNG. Check the file's first bytes rather than assuming an extension.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Code that handles both response shapes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urllib.request&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.quicksilverpro.io/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_QSP_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-image-2.5-flare&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Flat vector illustration: three red apples on the left, one blue cup on the right, plain white background.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b64_json&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b64_json&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# Seedream and Bria return a download link instead
&lt;/span&gt;    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apples.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Which one to use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT Image 2.5 Flare&lt;/strong&gt; if the image has to match the prompt: correct text and correct counts in every run, at $0.018 per image and about 11 seconds. Sunburst gave the same accuracy here, more slowly, and added a line of text we did not ask for; GPT Image 2 is cheaper at $0.01 but slower and does not keep the size you request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen Image 3.0 or FLUX.2 Pro&lt;/strong&gt; for good text and photoreal scenes in five to nine seconds, if you can retry when a count comes out wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FLUX.2 Klein or FLUX.1 Schnell&lt;/strong&gt; when speed and volume matter more than precision: drafts, thumbnails, many variations to choose from. Klein even got the label text right, in about a second.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seedream 5.0 Pro&lt;/strong&gt; produced accurate, natural-looking images, but at $0.07 and 28 to 51 seconds per image it is the most expensive and slowest model in this test.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole test, about 50 images including reruns and checks, cost about $1.45 at QuickSilver Pro prices on 2026-10-20.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits of this test
&lt;/h2&gt;

&lt;p&gt;One or two images per model per prompt is a very small sample: the composition prompt showed that the same model can get it right on one run and wrong on the next, so treat every cell in the table as one observation, not a rate. Quality was judged by one person looking at the images, and "looks natural" is a matter of taste. We used default settings only; several of these models accept extra parameters (quality, seeds, prompt rewriting) that we did not try. Latency was measured from one client on one day, and in the first run all eleven models were working at the same time. Run your own prompts before choosing: every image request appears in your dashboard with its cost.&lt;/p&gt;

&lt;p&gt;For setup in other languages and SDKs, see the &lt;a href="https://quicksilverpro.io/docs/quickstart/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;quickstart&lt;/a&gt; and the &lt;a href="https://quicksilverpro.io/docs/models/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image-generation-api-compared" rel="noopener noreferrer"&gt;model list&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>I built CronBox: a local-first menu bar scheduler for scripts and coding-agent tasks</title>
      <dc:creator>xiun xiao</dc:creator>
      <pubDate>Mon, 01 Jun 2026 09:31:22 +0000</pubDate>
      <link>https://dev.to/xiun_xiao_6eae2df5c108c5f/i-built-cronbox-a-local-first-menu-bar-scheduler-for-scripts-and-coding-agent-tasks-3oh8</link>
      <guid>https://dev.to/xiun_xiao_6eae2df5c108c5f/i-built-cronbox-a-local-first-menu-bar-scheduler-for-scripts-and-coding-agent-tasks-3oh8</guid>
      <description>&lt;p&gt;I have a lot of small scripts that are useful only on my own machine: cleanup jobs, sync tasks, backups, local reports, quick data pulls, and lately a few coding-agent tasks.&lt;/p&gt;

&lt;p&gt;Putting those on a server felt heavier than the problem. Plain cron or launchd works, but it is not very pleasant when I want to browse available scripts, attach JSON args, check whether a job is still running, or read stdout/stderr after the fact.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;CronBox&lt;/strong&gt;: a local-first macOS menu bar scheduler for scripts and coding-agent tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;CronBox scans folders for executable entry scripts, lets you run them manually, and lets you schedule them as recurring cron jobs or one-shot runs.&lt;/p&gt;

&lt;p&gt;It keeps the useful operational bits in one place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;script directories and selected entrypoints&lt;/li&gt;
&lt;li&gt;aliases, cron expressions, timezones, JSON args, and environment variables&lt;/li&gt;
&lt;li&gt;run history&lt;/li&gt;
&lt;li&gt;live stdout/stderr logs&lt;/li&gt;
&lt;li&gt;macOS notifications when scheduled jobs complete&lt;/li&gt;
&lt;li&gt;skipped runs when the previous run for the same schedule is still queued or running&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main window can be closed while scheduled jobs keep running from the menu bar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this exists
&lt;/h2&gt;

&lt;p&gt;I wanted something between two extremes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;cron / launchd&lt;/strong&gt;: reliable, but not friendly when iterating on local scripts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;server-side job runners&lt;/strong&gt;: powerful, but too much infrastructure for personal machine tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CronBox is meant for the messy middle: local automation that you actually want to inspect and adjust.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI examples
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cronbox add ~/scripts
cronbox add ~/scripts &lt;span class="nt"&gt;--include&lt;/span&gt; daily-report.sh
cronbox schedules add ./daily-report.sh &lt;span class="s2"&gt;"0 9 * * *"&lt;/span&gt; &lt;span class="nt"&gt;--tz&lt;/span&gt; Asia/Shanghai
cronbox schedules add ./reminder.sh &lt;span class="s2"&gt;"* * * * *"&lt;/span&gt; &lt;span class="nt"&gt;--once&lt;/span&gt;
cronbox run ~/scripts daily-report.sh &lt;span class="nt"&gt;--args&lt;/span&gt; &lt;span class="s1"&gt;'{"date":"today"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also has helpers for creating local Codex and Claude Code task scripts in the default &lt;code&gt;~/.cronbox&lt;/code&gt; workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;The current install path is macOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/xiaoxiunique/cronbox/main/scripts/install-macos.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;CronBox is built with Tauri 2, Vue 3, TypeScript, and Rust. It is MIT licensed.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://cronbox.dev" rel="noopener noreferrer"&gt;https://cronbox.dev&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/xiaoxiunique/cronbox" rel="noopener noreferrer"&gt;https://github.com/xiaoxiunique/cronbox&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am still polishing packaging and the coding-agent task workflows. I would be interested to hear how other people handle local scheduled scripts: do you prefer a GUI/menu bar tool, or do you keep everything in cron/launchd?&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>rust</category>
      <category>tauri</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
