<?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: boluo</title>
    <description>The latest articles on DEV Community by boluo (@buluo).</description>
    <link>https://dev.to/buluo</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%2F4138987%2F11d42b82-4828-41a1-81f4-f7d86612f3a4.png</url>
      <title>DEV Community: boluo</title>
      <link>https://dev.to/buluo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/buluo"/>
    <language>en</language>
    <item>
      <title>DeepSeek: Zuerst die Methode festhalten, dann erst Ergänzungen holen</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Wed, 11 Nov 2026 10:37:07 +0000</pubDate>
      <link>https://dev.to/buluo/deepseek-zuerst-die-methode-festhalten-dann-erst-erganzungen-holen-31d3</link>
      <guid>https://dev.to/buluo/deepseek-zuerst-die-methode-festhalten-dann-erst-erganzungen-holen-31d3</guid>
      <description>&lt;p&gt;Die Regeln für deinen Wochenbericht kennst du längst: Wer ihn liest, welche Zahlen belegt sein müssen und warum ein offener Punkt nicht unter „erledigt“ stehen darf. Nur liegen diese Regeln noch im Kopf und in alten Chats. Bevor du neue Fähigkeiten suchst, schreib die Methode auf. Danach ordnest du die Dateien, auf die sie sich stützt. Erst wenn dann etwas fehlt, brauchst du eine Ergänzung.&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%2Fy6irbwlf5qzym8oh4au0.png" 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%2Fy6irbwlf5qzym8oh4au0.png" alt="DeepSeek: Zuerst die Methode festhalten" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beim Schreiben habe ich KI-Unterstützung genutzt.&lt;/p&gt;

&lt;p&gt;Der Weg passt zu Menschen, die Texte aus Arbeitsmaterial erstellen, Dateien ordnen und ähnliche Aufgaben regelmäßig erledigen. Für den Anfang reicht Tippen im offiziellen Chat. Ab dem Skill installierst du einmal ein Werkzeug auf deinem Rechner. Es geht hier weder um Modelltraining noch um eine private Installation oder einen Modellvergleich. Die Angaben zu Harness folgen der offiziellen Dokumentation vom November 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eine DeepSeek-Routine wird erst stabil, wenn die Methode schriftlich liegt
&lt;/h2&gt;

&lt;p&gt;Ein brauchbarer Wochenbericht hängt nicht nur von einer gelungenen Formulierung in diesem einen Chat ab. Dieselben Entscheidungen kehren jede Woche wieder: Was ist abgeschlossen? Was bleibt offen? Welche Aussage ist durch die Notizen gedeckt? Stehen die Regeln nur in früheren Unterhaltungen, musst du sie jedes Mal neu zusammensuchen.&lt;/p&gt;

&lt;p&gt;Der Prompt beschreibt den aktuellen Auftrag. Ein Skill hält die wiederkehrende Methode fest. Die Dateien im Workspace — dem ausgewählten Arbeitsordner — liefern die Fakten. Ein Plugin ergänzt später eine Fähigkeit, etwa die Suche im Internet oder den Zugriff auf ein System außerhalb dieses Ordners. In dieser Reihenfolge lassen sich Fehler leichter finden: War die Frage unklar, fehlte eine Arbeitsregel, oder lag die Information in einer Datei, die man am Namen nicht erkennt?&lt;/p&gt;

&lt;h2&gt;
  
  
  Schärfe die DeepSeek-Anfrage zuerst im offiziellen Chat
&lt;/h2&gt;

&lt;p&gt;Beginne auf &lt;a href="https://chat.deepseek.com" rel="noopener noreferrer"&gt;der offiziellen DeepSeek-Chat-Seite&lt;/a&gt; oder in der offiziellen App. Noch brauchst du keine lokale Einrichtung. Nimm eine echte Frage aus der vergangenen Woche und vergleiche nur die Prompts, nicht ausgedachte Antworten.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vorher:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Schreib mir einen Wochenbericht.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Nachher, als kopierbare Karte:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Wer ich bin: Ich arbeite im Content-Betrieb. Dieser Wochenbericht ist für die Abteilungsleitung
Was ich brauche: Ordne die folgenden Notizen in drei kurze Abschnitte zu Fortschritt, offenen Problemen und nächster Woche. Höchstens 250 Wörter. In jedem Abschnitt zuerst die Folgerung, danach die stützenden Fakten
Was nicht geht: Keine leeren Slogans. Unfertiges nicht als erledigt darstellen. Keine Zahlen erfinden. Steht es nicht in den Notizen, schreib: „In den Notizen steht das nicht“

---

[Hier die echten Notizen der letzten Woche einfügen]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Das ist kein Zauberformular. Es macht nur Leser, Form und Grenze für diesen einen Auftrag sichtbar. Das Trennzeichen &lt;code&gt;---&lt;/code&gt; hält Anweisung und Material auseinander. Bleib bei einer Trennzeichenart. Die Regeln, die jede Woche gelten, stehen oben; darunter kommt die wechselnde Frage mit den aktuellen Notizen. Ist im Chat bereits der Denkmodus (thinking mode) aktiv, musst du nicht zusätzlich „denk Schritt für Schritt“ verlangen.&lt;/p&gt;

&lt;p&gt;Schreib jetzt eine eigene Frage nach dieser Karte um und sende sie einmal im offiziellen Chat. Prüfe besonders den zweiten Absatz: Ist er konkreter geworden, und lässt er sich auf das mitgegebene Material beziehen? Unzufrieden? Dann ergänze Hintergrund oder Grenze. Hier arbeitest du am Auftrag, noch nicht an Erweiterungen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lege die wiederkehrende DeepSeek-Methode als Skill ab
&lt;/h2&gt;

&lt;p&gt;Wenn dieselben Regeln auch nächste Woche gelten, gehören sie nicht mehr nur in den Prompt. Dafür wechselst du zu DeepSeek Harness, dem offiziellen lokalen Open-Source-Werkzeug. Es ist keine versteckte Schaltfläche im offiziellen Chat. Harness befindet sich noch in der developer preview; spätere Versionen können inkompatible Änderungen bringen.&lt;/p&gt;

&lt;p&gt;Installiere zuerst Node.js. Aktuell ist &lt;strong&gt;Node.js 24.9 oder höher&lt;/strong&gt; nötig. Node 22 wird nicht mehr unterstützt. Prüfe die installierte Version in demselben Terminal und starte dann Harness:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node --version
npx @deepseek-ai/dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Beim ersten Aufruf fragt npx möglicherweise, ob es &lt;code&gt;@deepseek-ai/dsh&lt;/code&gt; installieren darf. Bestätige das. Download und Initialisierung können eine Weile dauern. Harness lauscht standardmäßig auf &lt;code&gt;127.0.0.1:3080&lt;/code&gt;. Öffne trotzdem &lt;strong&gt;die vollständige URL aus dem Terminal&lt;/strong&gt;, einschließlich des einmaligen Tokens. Der Browser öffnet sich beim lokalen Start meist selbst; andernfalls füge die ganze URL-Zeile in den Browser ein. Nur &lt;code&gt;http://127.0.0.1:3080&lt;/code&gt; ohne Token liefert 401, du kommst nicht hinein. Lass das Terminalfenster offen, solange du die Oberfläche nutzt. Es zu schließen bedeutet, die Oberfläche zu beenden.&lt;/p&gt;

&lt;p&gt;Öffne dort &lt;strong&gt;Einstellungen → Modelle&lt;/strong&gt;, füge deinen DeepSeek-API-Schlüssel ein und speichere. Den Schlüssel erhältst du auf &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;der offiziellen DeepSeek-Plattform&lt;/a&gt;. Nach dem Speichern ist kein Neustart nötig. Klicke anschließend auf &lt;strong&gt;Workspace auswählen&lt;/strong&gt;, füge deinen Arbeitsordner hinzu und wähle ihn aus. Vorher bleibt das Eingabefeld gesperrt. Sobald der Workspace gewählt ist, kann der Agent Dateien darin bereits lesen und bearbeiten sowie Befehle ausführen. Ein Plugin nur zum Lesen von Dateien ist dafür nicht nötig.&lt;/p&gt;

&lt;p&gt;Ein Skill ist in Harness die schriftlich festgehaltene Methode. Für den Wochenbericht kannst du die Kennung &lt;code&gt;zhoubao&lt;/code&gt; behalten. Lege im passenden Workspace diese Datei an: &lt;code&gt;.dsh/skills/zhoubao/SKILL.md&lt;/code&gt;. Liegt dein gewählter Workspace in einem Unterverzeichnis eines Git-Repos, gehört &lt;code&gt;.dsh/skills&lt;/code&gt; an die Repo-Wurzel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;---
name: zhoubao
description: "Verwenden, wenn jemand aus Arbeitsnotizen einen Wochenbericht schreiben, sortieren oder prüfen lassen möchte."
---

&lt;span class="gu"&gt;# Wochenbericht schreiben
&lt;/span&gt;
1. Aus den Notizen der Nutzerin oder des Nutzers Erledigtes, Unfertiges und den Plan für die nächste Woche trennen.
2. Den Text nach Fortschritt dieser Woche, aufgetretenen Problemen und Plan für die nächste Woche gliedern.
3. In jedem Punkt zuerst die Folgerung, danach die stützenden Fakten. Stehen keine Zahlen in den Notizen, keine Zahlen ergänzen.
4. Unfertiges so beschreiben, wie es ist, nicht mit leeren Floskeln zudecken.
5. Vor der Abgabe prüfen, ob jede Folgerung in den ursprünglichen Notizen vorkommt.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;name&lt;/code&gt; und &lt;code&gt;description&lt;/code&gt; sind Pflicht. Die Beschreibung sagt, &lt;strong&gt;wann&lt;/strong&gt; Harness den Skill verwenden soll, nicht wie mächtig er sei. Harness sieht zuerst Name und Beschreibung; den restlichen Text liest es, wenn der Skill gebraucht wird. Das Skill liegt eine Ebene unter &lt;code&gt;.dsh/skills&lt;/code&gt;, als &lt;code&gt;Name/SKILL.md&lt;/code&gt;, oder flach als &lt;code&gt;Name.md&lt;/code&gt;. Weitere Ordnerebenen brauchst du nicht. Am Anfang reicht eine &lt;code&gt;SKILL.md&lt;/code&gt;. Falls später &lt;code&gt;scripts/&lt;/code&gt; oder &lt;code&gt;references/&lt;/code&gt; hinzukommen, liegen sie neben &lt;code&gt;SKILL.md&lt;/code&gt;, nicht darunter. &lt;code&gt;.agents/skills&lt;/code&gt; wird ebenfalls durchsucht, hat aber niedrigere Priorität; im ersten Beispiel brauchst du es nicht.&lt;/p&gt;

&lt;p&gt;Nach dem Speichern ist meist kein Neustart nötig. Prüfe in der Skill-Liste, ob Name und Beschreibung erscheinen. Du kannst &lt;code&gt;zhoubao&lt;/code&gt; ausdrücklich mit &lt;code&gt;/zhoubao&lt;/code&gt; aufrufen. Probiere drei echte Wochenbericht-Aufgaben. Löst der Skill dreimal nicht aus, schärfe zuerst die &lt;code&gt;description&lt;/code&gt; nach, näher an der Formulierung, mit der du die Aufgabe gewöhnlich stellst.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ordne den DeepSeek-Workspace so, dass Dateien auffindbar sind
&lt;/h2&gt;

&lt;p&gt;Eine „Wissensbasis“ ist hier keine eigene Produktschaltfläche. Gemeint sind die Dateien im gewählten Workspace, die Harness über Pfad und Dateinamen finden kann. Für das Lesen der gerade abgelegten Unterlagen brauchst du kein zusätzliches Plugin.&lt;/p&gt;

&lt;p&gt;Das folgende Verzeichnis samt Inhalten und Geschäftsregel ist &lt;strong&gt;erfunden&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01-套餐与报价.md
02-退款政策.md
03-发票说明.md
新建文本文档 (2).md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Die ersten drei Namen weisen auf Tarife und Preise, die Rückerstattungsrichtlinie und Rechnungen hin. Der letzte ist ein Standardname wie „Neues Textdokument (2).md“. Nun fragt jemand: Ein Kunde hat das Paket für 299 gekauft und will am fünften Tag eine Rückerstattung. Was soll er tun?&lt;/p&gt;

&lt;p&gt;Die entscheidende zusätzliche Regel steht ausgerechnet in &lt;code&gt;新建文本文档 (2).md&lt;/code&gt;: Für die Rückerstattung muss zusätzlich ein Ticket im Backend angelegt werden. Die Ticketnummer beginnt mit &lt;code&gt;RF-&lt;/code&gt;; ohne Nummer wird der Antrag abgelehnt. Wer nur die Dateinamen überfliegt, übersieht das leicht. Benenne die Datei in &lt;code&gt;04-退款工单规则.md&lt;/code&gt; um, sinngemäß „04-Regeln-für-Rückerstattungstickets.md“. Jetzt zeigt der Ordner selbst, wo die Ergänzung steht. Du musst die Datei nicht öffnen, um zu wissen, wohin eine Rückerstattungsfrage gehört. Dateiname und Pfad sind die Suchhinweise.&lt;/p&gt;

&lt;p&gt;Fang bei dem Ordner an, den du am häufigsten brauchst. Ersetze Namen wie „Neu“ oder „Endfassung 2“ durch Namen, die den Inhalt benennen. Eine Datei sollte möglichst ein Thema behandeln; alt und neu unterscheidest du durch Datum oder Version im Dateinamen. Eine Vektordatenbank musst du dafür noch nicht aufbauen.&lt;/p&gt;

&lt;p&gt;Teste das mit einer Frage, deren Antwort sicher in einer Datei steht. Frage anschließend, &lt;strong&gt;aus welcher Datei und welchem Absatz&lt;/strong&gt; der Satz stammt. Fehlt die Angabe, prüfe zuerst den gewählten Workspace, den Speicherort und die Namen. Ein Modellwechsel oder ein Dateileser-Plugin löst einen unübersichtlichen Ordner nicht.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hol ein DeepSeek-Plugin erst, wenn der Workspace nicht mehr reicht
&lt;/h2&gt;

&lt;p&gt;Ein Plugin ist sinnvoll, wenn die nächste konkrete Aufgabe außerhalb des Workspace liegt: etwa eine aktuelle Information im Internet nachschlagen oder ein anderes System anbinden. Für Git-Quellen lautet der Installationsbefehl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @deepseek-ai/dsh plugin --profile web add github:owner/repo#&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;commit&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ist &lt;code&gt;dsh&lt;/code&gt; global installiert, geht auch &lt;code&gt;dsh plugin --profile web add ...&lt;/code&gt;. Ersetze &lt;code&gt;&amp;lt;commit&amp;gt;&lt;/code&gt; durch einen konkreten Commit. Nach Bundle-Plugins starte &lt;code&gt;dsh web&lt;/code&gt; einmal neu. Wird ein Build-Skript abgelehnt, folge der Terminalaufforderung, erlaube Builds und versuche es erneut.&lt;/p&gt;

&lt;p&gt;Es ist noch zu früh, wenn du nicht sagen kannst, welche konkrete Aufgabe das Plugin beim nächsten Mal erledigen soll; wenn du aus Git ohne festgelegten Commit und ohne Prüfung von Inhalt und Skripten installieren würdest; oder wenn du der Quelle nicht vertraust beziehungsweise den Bestätigungsdialog nicht gelesen hast.&lt;/p&gt;

&lt;p&gt;Der Plugin-Index bringt keine eingebaute offizielle Quelle mit. Die Inhalte kommen aus Drittquellen, die du selbst hinzufügst. Das Programm prüft nur das Dateiformat, nicht die Behauptungen darin. Füge nur Quellen hinzu, denen du vertraust, und lies vor der Installation die Quelle im Bestätigungsdialog.&lt;/p&gt;

&lt;p&gt;Prüfe das Plugin an seiner eigentlichen Aufgabe. Lass etwa eine Softwareversion nachschlagen, die sich mit der Zeit ändern kann, und gleiche die Quelle ab. Ob es Workspace-Dateien lesen kann, ist kein sinnvoller Test für ein Netz-Plugin.&lt;/p&gt;

&lt;p&gt;Später willst du vielleicht nur nachsehen, welche DeepSeek-Modelle derzeit aufgeführt sind. Dafür gibt es einen &lt;a href="https://crazyrouter.com/en/models/deepseek" rel="noopener noreferrer"&gt;Katalog der DeepSeek-Modelle&lt;/a&gt;. Du kannst auch &lt;a href="https://crazyrouter.com/en/models/deepseek?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_1f794a7fb507_cta" rel="noopener noreferrer"&gt;die DeepSeek-Modelle prüfen, die derzeit auf Crazyrouter verfügbar sind&lt;/a&gt;. Das ist eine optionale Überprüfung, keine Pflichtkonfiguration. Der beschriebene Weg beginnt mit dem offiziellen Chat und einem offiziellen DeepSeek-API-Schlüssel in Harness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Halte die DeepSeek-Werkstatt klein genug, dass du sie weiter benutzt
&lt;/h2&gt;

&lt;p&gt;Mit jeder Ergänzung wächst die Pflege. Eine &lt;code&gt;description&lt;/code&gt;, die noch von einem alten Auftrag spricht, löst nicht mehr aus — oder sie löst aus und folgt einem Ablauf, den du längst geändert hast. Tauchen im Ordner wieder Namen wie „Endfassung 2“ auf, wird das Suchen schwieriger. Plugins können nach einem Update der Hauptanwendung nicht mehr zusammenpassen.&lt;/p&gt;

&lt;p&gt;Schau deshalb gelegentlich nach, was du wirklich verwendest, und verkleinere dieses Set: Skills, die drei Monate nicht ausgelöst haben, undeutliche Dateinamen, Plugins, die einer Testversion hinterherlaufen. Wenn nur eine Sache zu tun ist, nimm die Arbeit, die jede Woche wiederkehrt, und schreib die Methode in eine &lt;code&gt;SKILL.md&lt;/code&gt;. Sie muss niemandem gezeigt werden. Wenn du sie nächste Woche selbst benutzen kannst, reicht das.&lt;/p&gt;

</description>
      <category>deepseek</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Don't eyeball AI-generated product images. Test the text like CI.</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Wed, 11 Nov 2026 09:40:40 +0000</pubDate>
      <link>https://dev.to/buluo/dont-eyeball-ai-generated-product-images-test-the-text-like-ci-1con</link>
      <guid>https://dev.to/buluo/dont-eyeball-ai-generated-product-images-test-the-text-like-ci-1con</guid>
      <description>&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%2F8cuqcpz1l03v4315c9cy.png" 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%2F8cuqcpz1l03v4315c9cy.png" alt="Cover: integration notes on two image APIs" width="799" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you generate product artwork through an API, at some point a render ships with the price painted wrong, and the first person to notice is a customer. Visual "quality" reviews catch that maybe. Automation catches it always. This post is about the second option — plus a baseline measurement I ran to see where two popular image models actually stand on on-image text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The baseline first.&lt;/strong&gt; On Nov 11, 2026 I sent identical prompts to &lt;strong&gt;GPT Image 2&lt;/strong&gt; (OpenAI's reasoning-first image model, Apr 2026) and &lt;strong&gt;Nano Banana Pro&lt;/strong&gt; (Google's Gemini 3 Pro Image, GA May 2026) through Crazyrouter — &lt;code&gt;gpt-image-2&lt;/code&gt; and &lt;code&gt;nano-banana-pro&lt;/code&gt; on one account and one key, three e-commerce scenes at a time, one render per prompt, every flaw kept. Fourteen required strings total: headlines, discount badges, prices, a struck-through price, a dated banner, brand names, and one tiny spec line. The verdict: &lt;strong&gt;14 of 14 correct on both models&lt;/strong&gt; — no typos, no garbled glyphs, and no invented "decorative" words on a label that explicitly banned them.&lt;/p&gt;

&lt;p&gt;Here are the six renders. Read them like code review, not like a gallery:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flash-sale hero&lt;/strong&gt; — check the strikethrough placement and the banner:&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%2Fg2qsqd7de4k95ngytu78.png" 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%2Fg2qsqd7de4k95ngytu78.png" alt="GPT Image 2 flash-sale hero render" width="800" height="800"&gt;&lt;/a&gt;&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%2Fzhygrw55x9k03d40b15o.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%2Fzhygrw55x9k03d40b15o.jpg" alt="Nano Banana Pro flash-sale hero render" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hot-sauce label&lt;/strong&gt; — the scene that banned extra words; scan every edge for fake typography:&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%2F4k34hf77pbkdyt0mbaun.png" 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%2F4k34hf77pbkdyt0mbaun.png" alt="GPT Image 2 hot-sauce label render" width="800" height="800"&gt;&lt;/a&gt;&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%2F682jmuvnu0rn6z1jadm0.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%2F682jmuvnu0rn6z1jadm0.jpg" alt="Nano Banana Pro hot-sauce label render" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cold-brew detail card&lt;/strong&gt; — the tiny &lt;code&gt;NET WT 300ml / SERVINGS: 2&lt;/code&gt; line is the real exam. One defect of the whole run lives in the Nano render: dotted artifacts on the bottom-right edge. Kept on purpose:&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%2Fyer9m0gw1t2eycultfwz.png" 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%2Fyer9m0gw1t2eycultfwz.png" alt="GPT Image 2 cold-brew detail card render" width="800" height="800"&gt;&lt;/a&gt;&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%2Fgxlmgrvdjct3ucuc8i7r.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%2Fgxlmgrvdjct3ucuc8i7r.jpg" alt="Nano Banana Pro cold-brew detail card render" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So if both models spell, what did the run actually measure? The integration details — and that's where "trust the prompt" breaks down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assert the strings, don't admire the picture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Treat a render like a build artifact. Each prompt declares required strings and forbidden strings; after generation, run OCR over the output and diff against the declaration. Fail the job on a miss. Both of my models passed a human-read version of this check, but human reads don't run at batch scale, and OCR-based assertion is cheap enough to gate every job. Bonus: the "no invented words" constraint from the label scene is exactly the kind of assertion that catches regression when a provider silently updates a model behind the same ID.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model IDs are contracts that change under you&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Model naming drifts fast — I confirmed both IDs and their exposed tiers in &lt;a href="https://crazyrouter.com/en/models" rel="noopener noreferrer"&gt;Crazyrouter's model directory&lt;/a&gt; before the run, and you should too, on your run day. Availability changes do not announce themselves in your error logs until they do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What differs once spelling ties&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Latency:&lt;/strong&gt; 18.4–21.0s for Nano Banana Pro vs 75.5–124.6s for GPT Image 2 per timed request. Fourfold. Batch jobs feel this immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format:&lt;/strong&gt; PNG ~1.0–1.4 MB from GPT Image 2, JPEG ~0.4–0.6 MB from Nano Banana Pro. If your pipeline needs alpha transparency, that decides it; if it needs cheap storage, the JPEG side wins by ~3×.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retries have types.&lt;/strong&gt; The one failure I logged was an &lt;code&gt;IncompleteRead&lt;/code&gt; mid-transfer on the Nano side — connection layer, retry fixed it. A content-policy refusal would not have been retryable. Your job runner should classify failures, not blanket-retry them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timeouts:&lt;/strong&gt; a two-minute single request will outlive default HTTP timeouts. Raise past 180s, or use Nano Banana Pro's async path (&lt;code&gt;asyncGenerateContent&lt;/code&gt; → poll a task id).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editing:&lt;/strong&gt; GPT Image 2 is the only one with mask-based local edits and up to 16 reference images; Nano Banana Pro does conversational edits by putting reference images in the request &lt;code&gt;parts&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both IDs are callable from one gateway with one key — &lt;a href="https://crazyrouter.com/en/pricing?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_a1ddb274b7cf_mid_text" rel="noopener noreferrer"&gt;check availability before you build&lt;/a&gt; — and switching models is one &lt;code&gt;model&lt;/code&gt; parameter plus a different request body shape. Entry point:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://api.crazyrouter.com/v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The pairing that actually works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Draft in bulk with Nano Banana Pro (cheap at 20 seconds a layout), then promote winners to GPT Image 2 for finishing — texture, typography, or a surgical mask edit. Drafting and finishing are different jobs; using one model for both is how you pay GPT-tier latency for every rejected idea.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not covered, on purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One render per prompt, English only, 1024×1024, a single day. CJK text, extreme small type, reference-image editing, 2K/4K output — all untested, so I'm not extending the 14/14 claim to them. Automate the assertion and the next model update answers the question for you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure per DEV's AI guidelines: this article was written with AI assistance. Every image and every number in it comes from real API runs performed on Nov 11, 2026, and the failed/artifact-bearing renders were kept as-is.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>imagegeneration</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>Kimi K2.5 to K3.1 Pro: 8 API Models, One Enterprise Task, and What Actually Got Done</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Wed, 11 Nov 2026 07:23:00 +0000</pubDate>
      <link>https://dev.to/buluo/kimi-k25-to-k31-pro-8-api-models-one-enterprise-task-and-what-actually-got-done-16na</link>
      <guid>https://dev.to/buluo/kimi-k25-to-k31-pro-8-api-models-one-enterprise-task-and-what-actually-got-done-16na</guid>
      <description>&lt;p&gt;I needed to pick a Kimi model for a work project that involves code review, contract field extraction, and requirements validation. The problem was simple: Moonshot AI has released K2.5, K2.6, K2.7 Code, K2.8 Preview, K3, and now K3.1 Pro, each with a high-speed variant. The directory on my API gateway listed eight IDs. I had no idea which one would actually return a usable, parseable result on the first try.&lt;/p&gt;

&lt;p&gt;On November 10, 2026, I sent the same three-part enterprise task to all eight models through a single API endpoint. Three returned complete JSON: &lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt; in 8.48 seconds, &lt;code&gt;kimi-k2.7-code&lt;/code&gt; in 36.53 seconds, and &lt;code&gt;kimi-k2.5&lt;/code&gt; in 32.26 seconds. The current flagship &lt;code&gt;kimi-k3.1-pro&lt;/code&gt; hit my 180-second timeout. This article is for developers who need to make a similar choice and want to know what happened before they commit their own integration time.&lt;/p&gt;

&lt;p&gt;If you are looking for a million-token stress test, multimodal evaluation, or local deployment guide, this is not that article. I used text-only input, one run per model, and a 5,000-token output limit.&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%2Fcc9iyhfbja2f4koejujl.png" 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%2Fcc9iyhfbja2f4koejujl.png" alt="Black-and-white Kimi API test cover with ascending model version bars on black background" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick decision table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What I needed&lt;/th&gt;
&lt;th&gt;Model I would try first&lt;/th&gt;
&lt;th&gt;What happened&lt;/th&gt;
&lt;th&gt;What I would verify next&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fast structured output with all three tasks covered&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Complete JSON in 8.48 seconds&lt;/td&gt;
&lt;td&gt;Whether the route lifecycle fits the project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Most detailed requirements review&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Complete JSON in 36.53 seconds, eight open questions listed&lt;/td&gt;
&lt;td&gt;Same as above: migration timeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A solid general-purpose baseline&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Complete JSON in 32.26 seconds&lt;/td&gt;
&lt;td&gt;Official retirement status before long-term use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code and contract work with shorter requirements&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.8-preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Useful partial output, then JSON truncation&lt;/td&gt;
&lt;td&gt;Split the task and raise the output budget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-pass long review&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kimi-k3&lt;/code&gt;, &lt;code&gt;kimi-k3.1-pro-highspeed&lt;/code&gt;, &lt;code&gt;kimi-k2.6&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Output limit reached, empty &lt;code&gt;content&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Shorter stages instead of a larger single prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current flagship check&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Timed out at 180 seconds&lt;/td&gt;
&lt;td&gt;Short request and timeout retest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The lifecycle column matters. Kimi's official platform lists K2.5 as retired and K2.6 / K2.7 Code as closed to new users, with full retirement scheduled by the end of December 2026. Seeing an older ID in an API directory does not extend its official lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why K3.1 Pro is not just "K3 with a bump"
&lt;/h2&gt;

&lt;p&gt;Moonshot AI released K3.1 Pro on October 23, 2026, as a post-trained upgrade to K3. The team increased reinforcement-learning scale across coding, 3D creation, financial research, and multi-step agent tasks. Total parameters are still 2.8 trillion; the meaningful change is training, not a larger foundation model.&lt;/p&gt;

&lt;p&gt;There is also a deliberate security trade-off in the open-weight release. Moonshot removed some cybersecurity data from mid-training and RL stages. On the internal &lt;code&gt;xdev-bench-hard&lt;/code&gt;, the unfiltered checkpoint scored 90.5%, while the released model scored 81.0%. That is a documented capability reduction, not a defect.&lt;/p&gt;

&lt;p&gt;The official Hugging Face repository &lt;code&gt;moonshotai/Kimi-K3.1-Pro&lt;/code&gt; now lists the weights and the Kimi K3.1 Pro License. Earlier articles saying "license pending" are outdated. I checked the model card but did not download or deploy the weights.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kimi version timeline
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Version or change&lt;/th&gt;
&lt;th&gt;Why it matters for integration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;January 2026&lt;/td&gt;
&lt;td&gt;K2.5 reached the official API&lt;/td&gt;
&lt;td&gt;Retired on the official platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;April 2026&lt;/td&gt;
&lt;td&gt;K2.6 reached the official API&lt;/td&gt;
&lt;td&gt;Closed to new registered users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;June 2026&lt;/td&gt;
&lt;td&gt;K2.7 Code and Highspeed released&lt;/td&gt;
&lt;td&gt;Closed to new users; retirement by end of December 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;July 2026&lt;/td&gt;
&lt;td&gt;K3 reached the official API&lt;/td&gt;
&lt;td&gt;Previous flagship, one-million-token context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;September 11, 2026&lt;/td&gt;
&lt;td&gt;K2.8 Preview rolled out in Kimi Code&lt;/td&gt;
&lt;td&gt;Client-side ID is &lt;code&gt;kimi-for-coding&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;October 23, 2026&lt;/td&gt;
&lt;td&gt;K3.1 Pro and Highspeed launched&lt;/td&gt;
&lt;td&gt;Current flagship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;November 10, 2026&lt;/td&gt;
&lt;td&gt;Weights and license public on Hugging Face&lt;/td&gt;
&lt;td&gt;No longer a future promise&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Specifications I verified but did not fully exercise
&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;Official spec&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Mixture of Experts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total parameters&lt;/td&gt;
&lt;td&gt;2.8 trillion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active parameters per token&lt;/td&gt;
&lt;td&gt;104 billion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Layers&lt;/td&gt;
&lt;td&gt;93&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experts&lt;/td&gt;
&lt;td&gt;896 total, 16 selected per token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;1,048,576 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modalities (model card)&lt;/td&gt;
&lt;td&gt;Text and image; API docs also cover video input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning&lt;/td&gt;
&lt;td&gt;Always on, with &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;max&lt;/code&gt; effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quantization&lt;/td&gt;
&lt;td&gt;MXFP4 weights, MXFP8 activations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Official API IDs&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;, &lt;code&gt;kimi-k3.1-pro-highspeed&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I did not test the million-token context, image or video input, or local deployment. A spec table is not evidence that those workloads worked here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Official benchmarks vs. my delivery scores
&lt;/h2&gt;

&lt;p&gt;Moonshot's published numbers give context, but they do not predict whether a specific API route will return a complete answer within your timeout and token limits.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Kimi K3.1 Pro&lt;/th&gt;
&lt;th&gt;Claude Opus 5.5&lt;/th&gt;
&lt;th&gt;GPT-6 Astra&lt;/th&gt;
&lt;th&gt;DeepSeek V4.1 Flash&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench 4.0&lt;/td&gt;
&lt;td&gt;65.7%&lt;/td&gt;
&lt;td&gt;66.4%&lt;/td&gt;
&lt;td&gt;58.2%&lt;/td&gt;
&lt;td&gt;42.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SWE-Marathon v1.1&lt;/td&gt;
&lt;td&gt;51.7%&lt;/td&gt;
&lt;td&gt;46.3%&lt;/td&gt;
&lt;td&gt;42.5%&lt;/td&gt;
&lt;td&gt;40.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BenchCAD with tools&lt;/td&gt;
&lt;td&gt;92.7%&lt;/td&gt;
&lt;td&gt;96.2%&lt;/td&gt;
&lt;td&gt;95.9%&lt;/td&gt;
&lt;td&gt;81.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OfficeQA Pro v2&lt;/td&gt;
&lt;td&gt;64.4&lt;/td&gt;
&lt;td&gt;62.2&lt;/td&gt;
&lt;td&gt;54.4&lt;/td&gt;
&lt;td&gt;40.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE v1.1&lt;/td&gt;
&lt;td&gt;75.5%&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;td&gt;74.1%&lt;/td&gt;
&lt;td&gt;77.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Moonshot also reports that claim-level hallucinations in an internal stress test dropped from 23.4% in K3 to 8.3% in K3.1 Pro. The company explicitly says this is a difficult-sample result, not an everyday error-rate estimate.&lt;/p&gt;

&lt;p&gt;For a third-party launch-day view, The Decoder cited Artificial Analysis: K3.1 Pro scored 55 on the Intelligence Index, 11 points above K3 and fourth at that date. That is a snapshot, not a permanent rank.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing I checked on the official platform
&lt;/h2&gt;

&lt;p&gt;These are RMB per million tokens on Kimi's official Chinese open platform, checked November 10, 2026. They are not aggregated-platform prices and are not my test bill.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Official API model&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;th&gt;Cache hit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥13&lt;/td&gt;
&lt;td&gt;¥68&lt;/td&gt;
&lt;td&gt;¥1.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro-highspeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥26&lt;/td&gt;
&lt;td&gt;¥136&lt;/td&gt;
&lt;td&gt;¥1.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥20&lt;/td&gt;
&lt;td&gt;¥100&lt;/td&gt;
&lt;td&gt;¥2.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥6.50&lt;/td&gt;
&lt;td&gt;¥27&lt;/td&gt;
&lt;td&gt;¥1.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥13&lt;/td&gt;
&lt;td&gt;¥54&lt;/td&gt;
&lt;td&gt;¥2.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;¥6.50&lt;/td&gt;
&lt;td&gt;¥27&lt;/td&gt;
&lt;td&gt;¥1.10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;K3.1 Pro's list prices are roughly one-third below K3's, but total cost still depends on reasoning output, cache behavior, retries, and tool calls. K3.1 Pro and K3 Batch API usage is listed at 60% of standard pricing.&lt;/p&gt;

&lt;p&gt;Kimi Code membership is separate. Plus starts at ¥99/month, Pro at ¥199/month, Max at ¥699/month, and Ultra at ¥1,399/month. Annual billing lowers the effective monthly rate. Go has no Kimi Code allowance; Plus is the entry point, and Pro is required for Highspeed and the highest 1M context tier. Membership and open-platform API billing do not mix.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I ran the test
&lt;/h2&gt;

&lt;p&gt;I used a non-streaming Chat Completions request with &lt;code&gt;max_tokens=5000&lt;/code&gt;, no temperature setting, one run per model, and a 180-second timeout. The task had three parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Code defect analysis:&lt;/strong&gt; A JavaScript discount function that incorrectly overwrites the discount rate based on array order instead of selecting the highest qualifying tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract field extraction:&lt;/strong&gt; Pull the document type, date, total amount, parties, payment terms, and warranty from a synthetic procurement contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requirements validation:&lt;/strong&gt; Identify conflicts and open questions in a conflicting overnight batch-import specification.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Scoring weights: code analysis 30%, document extraction 25%, requirements review 25%, format and call reliability 20%. A zero means no assessable delivery under these conditions, not zero general capability.&lt;/p&gt;

&lt;p&gt;The calls went through an OpenAI-compatible aggregated API with Base URL &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;. The &lt;a href="https://crazyrouter.com/en/pricing" rel="noopener noreferrer"&gt;Crazyrouter model directory&lt;/a&gt; is useful for checking which IDs are currently listed; if you want to run a same-prompt comparison before integrating into your own pipeline, the &lt;a href="https://crazyrouter.com/experimental?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_6a958ac672bf_mid_text" rel="noopener noreferrer"&gt;comparison environment&lt;/a&gt; is a convenient place to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  The eight results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API model ID&lt;/th&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;th&gt;What I received&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4.9/5&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;td&gt;Complete JSON; code defect, contract fields, and requirements all covered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0/5&lt;/td&gt;
&lt;td&gt;★☆☆☆☆&lt;/td&gt;
&lt;td&gt;HTTP 200, output limit reached, no complete deliverable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.8-preview&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3.6/5&lt;/td&gt;
&lt;td&gt;★★★☆☆&lt;/td&gt;
&lt;td&gt;Code and contract content returned, then JSON truncated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4.7/5&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;td&gt;Complete JSON with usable results for all three tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0/5&lt;/td&gt;
&lt;td&gt;★☆☆☆☆&lt;/td&gt;
&lt;td&gt;Timed out before producing assessable content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro-highspeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0/5&lt;/td&gt;
&lt;td&gt;★☆☆☆☆&lt;/td&gt;
&lt;td&gt;Output limit reached without complete JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0/5&lt;/td&gt;
&lt;td&gt;★☆☆☆☆&lt;/td&gt;
&lt;td&gt;Output limit reached without complete JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4.9/5&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;td&gt;Complete JSON and the shortest response time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Seven models returned HTTP 200. Only three produced complete JSON. That is the lesson I would carry into an integration checklist: a green status code does not mean your downstream parser has something to work with.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the three complete answers looked like
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt; found the array-order bug and supplied four regression categories: unordered tiers, exact thresholds, no eligible tier, and invalid rules. It kept the contract total of ¥186,500 separate from the ¥55,950 advance and ¥130,550 balance. It also caught the duplicate-record conflict and flagged the roughly one-hour processing window between 23:00 and midnight. All of this in 8.48 seconds.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kimi-k2.7-code&lt;/code&gt; took longer at 36.53 seconds but went deeper on requirements. It identified the idempotency problem between rerunning failed records and preventing duplicate payments, then listed eight open questions. I would keep it for a second-pass review.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kimi-k2.5&lt;/code&gt; was accurate on code and contract but identified only one conflict and three open questions. It used 4,930 output tokens, close to the 5,000 limit. For this task, a longer response did not produce deeper analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went wrong for the other five
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;kimi-k2.8-preview&lt;/code&gt; returned reviewable code and contract content, then stopped partway through requirements. Its 3.6 score reflects useful partial work with an incomplete final object. I would split the task and retest rather than discard the correct parts.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kimi-k3&lt;/code&gt;, &lt;code&gt;kimi-k3.1-pro-highspeed&lt;/code&gt;, and &lt;code&gt;kimi-k2.6&lt;/code&gt; all reached the 5,000-token output limit with empty &lt;code&gt;content&lt;/code&gt;. &lt;code&gt;kimi-k3.1-pro&lt;/code&gt; simply timed out.&lt;/p&gt;

&lt;p&gt;These are not "model quality" verdicts. They are delivery results under one specific request shape. Changing the prompt length, splitting the task, or adjusting the output budget could shift the outcomes. What matters for integration is that you check &lt;code&gt;content&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt;, and JSON parsing before you treat HTTP 200 as success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing between Kimi and alternatives
&lt;/h2&gt;

&lt;p&gt;If your main workloads are long-context programming agents, 3D modeling, financial documents, or multi-step agents, K3.1 Pro belongs in the candidate list. Its Terminal-Bench and OfficeQA Pro v2 scores are above DeepSeek V4.1 Flash, but DeepSWE is slightly lower. There is no universal winner.&lt;/p&gt;

&lt;p&gt;If you are already using Claude Opus 5.5, K3.1 Pro's appeal is more about open weights, the one-million-token context, and official API pricing. BenchCAD still favors Opus 5.5.&lt;/p&gt;

&lt;p&gt;If you only care about this specific three-task delivery profile, &lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt; was the fastest complete result. But K2.7 Code is in a migration period, so a new long-term project should verify route availability before committing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does the zero for K3.1 Pro mean the flagship is broken?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. It means this single request did not produce assessable content within 180 seconds. Official specs, public benchmarks, and one API run answer different questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can K3.1 Pro disable reasoning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. The official API docs say reasoning is always enabled. You can lower the effort level; you cannot turn it off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are Kimi Code membership and open-platform API the same bill?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. Kimi Code shares a subscription allowance with Kimi membership. The open platform charges per token. They do not mix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use the model IDs from this test directly in Kimi Code?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not blindly. Kimi Code lists &lt;code&gt;k3.1-pro&lt;/code&gt;, &lt;code&gt;k3.1-pro-highspeed&lt;/code&gt;, &lt;code&gt;k3&lt;/code&gt;, &lt;code&gt;k3-256k&lt;/code&gt;, &lt;code&gt;kimi-for-coding&lt;/code&gt;, and &lt;code&gt;kimi-for-coding-highspeed&lt;/code&gt;. Client IDs and aggregated-API route IDs are separate namespaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which one would I try first in production?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this exact task profile, &lt;code&gt;kimi-k2.7-code-highspeed&lt;/code&gt;. For a new long-term project, I would verify the route lifecycle and rerun short tasks against K3.1 Pro before writing anything into production config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.kimi.ai/blog/kimi-k3-1-pro" rel="noopener noreferrer"&gt;Kimi K3.1 Pro technical blog&lt;/a&gt;: release background, benchmarks, and security decisions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://platform.kimi.com/docs/models" rel="noopener noreferrer"&gt;Kimi model list&lt;/a&gt;, &lt;a href="https://platform.kimi.com/docs/changelog" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;, and &lt;a href="https://platform.kimi.com/docs/pricing/chat" rel="noopener noreferrer"&gt;API pricing&lt;/a&gt;: lifecycle and price checks.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://huggingface.co/moonshotai/Kimi-K3.1-Pro" rel="noopener noreferrer"&gt;Kimi K3.1 Pro on Hugging Face&lt;/a&gt;: weights, model card, and license.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.kimi.com/code/docs/kimi-code/models.html" rel="noopener noreferrer"&gt;Kimi Code model configuration&lt;/a&gt; and &lt;a href="https://www.kimi.com/code/docs/kimi-code/membership.html" rel="noopener noreferrer"&gt;membership rules&lt;/a&gt;: client IDs and plan requirements.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://the-decoder.com/chinese-ai-model-kimi-k3-1-pro-is-closing-in-on-anthropics-claude-opus-5-5/" rel="noopener noreferrer"&gt;The Decoder's launch-day report&lt;/a&gt;: the external Artificial Analysis observation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;I wrote and edited this article myself. AI tools assisted with language checks and formatting, while the test design, API runs, result review, and final conclusions were completed and verified by me.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>Kimi Code External Models: Set Up and Verify Kimi K3.1 Pro</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Tue, 10 Nov 2026 11:04:47 +0000</pubDate>
      <link>https://dev.to/buluo/kimi-code-external-models-set-up-and-verify-kimi-k31-pro-2ih7</link>
      <guid>https://dev.to/buluo/kimi-code-external-models-set-up-and-verify-kimi-k31-pro-2ih7</guid>
      <description>&lt;p&gt;This article was created with the help of AI. The configuration records and test results were checked against saved evidence.&lt;/p&gt;

&lt;p&gt;A working external-model setup has three separate milestones: the provider is saved, the model is selected, and a real answer is returned. This guide walks through all three with Kimi K3.1 Pro in Kimi Code Desktop. It is intended for developers who already have an API key. If you only want free chat, have no key, or do not plan to manage API usage, you do not need this setup. The screenshots and documentation were checked on November 10, 2026.&lt;/p&gt;

&lt;p&gt;An official API is usually enough when Kimi is the only model you need. An aggregator becomes useful when you want several model vendors in the same project. The example below uses one aggregator, but the same decision process applies to any compatible service you already use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kimi Code and Kimi K3.1 Pro: the setup checks that save time later
&lt;/h2&gt;

&lt;p&gt;Before touching the settings, separate the values that determine a request. Base URL is the destination, the API key is the credential, and the model ID is the model you want to call. A provider label or display name is only for readability.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Common misunderstanding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provider name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;crazyrouter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Thinking the label determines the protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Protocol&lt;/td&gt;
&lt;td&gt;&lt;code&gt;OpenAI&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mixing it with an Anthropic-native endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Key&lt;/td&gt;
&lt;td&gt;Your own key&lt;/td&gt;
&lt;td&gt;Showing it in a screenshot or using it with another service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base URL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Duplicating &lt;code&gt;/v1&lt;/code&gt; or copying a full request endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Typing the display name instead of copying the ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Display name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Expecting an alias to change the requested model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;Check the model documentation&lt;/td&gt;
&lt;td&gt;Treating it as a way to increase model capability&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The screenshots use &lt;code&gt;1048576&lt;/code&gt; for Context, but this article does not verify a 1M-token context. Check the actual limit for every model you add.&lt;/p&gt;

&lt;p&gt;If you choose another aggregator, replace the Base URL, key, and model ID together. Do not assume an ID from another documentation set will route to the same model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add Kimi K3.1 Pro to Kimi Code: open Settings and create the provider
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: open Settings.&lt;/strong&gt; Click the gear icon in the lower-left corner of Kimi Code Desktop. External models are configured here, not by writing a model name in the chat box.&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%2F43ovvl24ypppwdcwzhgw.png" 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%2F43ovvl24ypppwdcwzhgw.png" alt="The Settings gear in the lower-left corner of Kimi Code" width="411" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: create a provider.&lt;/strong&gt; Select &lt;code&gt;Model Providers&lt;/code&gt;, then click &lt;code&gt;Add provider&lt;/code&gt; in the upper-right corner. Your custom provider will appear separately from the built-in Kimi Subscription.&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%2F8wt3wd3w5izk38rocphe.png" 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%2F8wt3wd3w5izk38rocphe.png" alt="The Model Providers page and Add provider button in Kimi Code" width="799" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The provider owns the connection details; models sit beneath it. This separation lets you add another model later without duplicating the endpoint configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Kimi K3.1 Pro in Kimi Code: protocol, credential, and endpoint
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 3: choose Custom and enter the connection details.&lt;/strong&gt; Select &lt;code&gt;OpenAI&lt;/code&gt; and use this Base URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://api.crazyrouter.com/v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fb26mfyz3d5qtd70ukj1h.png" 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%2Fb26mfyz3d5qtd70ukj1h.png" alt="The custom provider form for protocol, API key, and Base URL in Kimi Code" width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.crazyrouter.com/en/api-endpoint" rel="noopener noreferrer"&gt;Crazyrouter endpoint guide&lt;/a&gt; explains the distinction: an OpenAI-compatible client uses the address through &lt;code&gt;/v1&lt;/code&gt;, while an Anthropic-native client uses the root domain. A &lt;code&gt;/v1/v1&lt;/code&gt; error generally means the path was added twice.&lt;/p&gt;

&lt;p&gt;Paste the full API key without revealing it in a screenshot. If it is exposed, rotate it at the service. Also avoid copying an address from another client without checking the expected format: some tools need a root domain, some need &lt;code&gt;/v1&lt;/code&gt;, and a manual HTTP request needs the complete endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add the Kimi K3.1 Pro model ID to Kimi Code by copying it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 4: copy the ID from the catalog.&lt;/strong&gt; Open the &lt;a href="https://crazyrouter.com/en/pricing" rel="noopener noreferrer"&gt;Crazyrouter model catalog&lt;/a&gt;, search or filter by Moonshot, and use the copy icon on the model card. Paste the result into &lt;code&gt;Model ID&lt;/code&gt; in Kimi Code.&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%2Fjl7adq6cib0qz57ctly3.png" 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%2Fjl7adq6cib0qz57ctly3.png" alt="Copying a model ID from the model catalog for Kimi Code" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kimi K3.1 Pro is the readable model name; &lt;code&gt;kimi-k3.1-pro&lt;/code&gt; is the request ID for this service. Another guide may use &lt;code&gt;k3.1-pro&lt;/code&gt;, but that belongs to a different configuration context. Copying the ID avoids errors with prefixes, capitalisation, dots, hyphens, and spaces.&lt;/p&gt;

&lt;p&gt;Check the pasted value once. It should begin with &lt;code&gt;kimi-&lt;/code&gt; and contain no leading or trailing whitespace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Save and select Kimi K3.1 Pro in Kimi Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 5: save one model first.&lt;/strong&gt; Review &lt;code&gt;Model ID&lt;/code&gt;, &lt;code&gt;Context&lt;/code&gt;, and &lt;code&gt;Display name&lt;/code&gt;, then click &lt;code&gt;Save&lt;/code&gt;. Resist adding every available model before the first call. One working entry is easier to verify than a long list.&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%2Fg5qn8lzanz7oailvp2lk.png" 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%2Fg5qn8lzanz7oailvp2lk.png" alt="The list of external models added to Kimi Code" width="800" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The list is evidence of saved local settings, not evidence of successful calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: open More models.&lt;/strong&gt; Return to the main window, open the model picker, and click &lt;code&gt;More models...&lt;/code&gt; at the bottom. The first list can still contain built-in models; custom entries are one level deeper.&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%2Fga3ok1jn0ab6fd37ukou.png" 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%2Fga3ok1jn0ab6fd37ukou.png" alt="The More models entry in the Kimi Code model picker" width="782" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: select the custom model.&lt;/strong&gt; In the &lt;code&gt;Switch model&lt;/code&gt; window, choose the &lt;code&gt;crazyrouter&lt;/code&gt; tab and click &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;. Searching for the complete ID is safer when several names are similar.&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%2F7bh1i6bf37q2w60afytt.png" 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%2F7bh1i6bf37q2w60afytt.png" alt="Selecting the custom provider and model in the Kimi Code Switch model window" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: confirm the active model and start a new session.&lt;/strong&gt; The input box should show &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;. A new session avoids carrying an earlier model's context into the first check.&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%2Fua1vu19uh4752h6vxvdu.png" 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%2Fua1vu19uh4752h6vxvdu.png" alt="Kimi K3.1 Pro selected as the active external model in Kimi Code" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the model is absent, confirm &lt;code&gt;Save&lt;/code&gt;, reopen the picker, and restart Desktop if needed. Do not create multiple providers with the same name; it makes the active source difficult to identify.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Kimi K3.1 Pro in Kimi Code: saved, selected, and actually generating
&lt;/h2&gt;

&lt;p&gt;The last screenshot proves selection, not generation. On November 10, 2026, I created an independent session through the local Kimi Code desktop service and bound it to &lt;code&gt;crazyrouter/kimi-k3.1-pro&lt;/code&gt;. I asked for three configuration checks. The session reached &lt;code&gt;completed&lt;/code&gt; and returned non-empty text:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the complete model ID from the catalog rather than entering it from memory.&lt;/li&gt;
&lt;li&gt;Match the Base URL to the selected protocol and confirm whether &lt;code&gt;/v1&lt;/code&gt; is required.&lt;/li&gt;
&lt;li&gt;Send a real prompt and inspect the returned content instead of treating a connection as the final test.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I then sent a non-streaming request through &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;. The available-model list included &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;; the chat returned HTTP 200, the response named the same model, and the finish reason was &lt;code&gt;stop&lt;/code&gt;. You can use the &lt;a href="https://docs.crazyrouter.com/en/chat/openai/models?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_55d096e5019f_mid_text" rel="noopener noreferrer"&gt;Crazyrouter model list endpoint&lt;/a&gt; to check the models available to your own key before testing a chat request.&lt;/p&gt;

&lt;p&gt;The request used 691 tokens in total, of which 451 were reasoning tokens. Visible answer length and total generation usage are different measurements.&lt;/p&gt;

&lt;p&gt;For your own project, add one verification layer at a time. Ask for an explanation of an existing file, then a small edit with a test, and only then a command whose output you can inspect. If something fails, save the prompt, output, and failure category before changing anything. This keeps setup errors separate from model-quality issues.&lt;/p&gt;

&lt;p&gt;The evidence here does not cover 1M-context behaviour, file editing, command execution, or long-term stability. It covers a real text generation in Kimi Code and a direct API response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshoot Kimi K3.1 Pro in Kimi Code by changing one variable at a time
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The model is not in the picker.&lt;/strong&gt; Check &lt;code&gt;Save&lt;/code&gt; and the custom-provider tab before changing the endpoint. If the ID looks similar to another model, copy it again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The response is 401.&lt;/strong&gt; Check that the key is complete and valid, and that it belongs to the service in the Base URL. Credentials are not interchangeable between platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The response is 403 or a permission error.&lt;/strong&gt; A valid model ID does not guarantee access. Check the models and capabilities available to your account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The response is 404 or model not found.&lt;/strong&gt; Inspect the copied ID and look for &lt;code&gt;/v1/v1&lt;/code&gt;. Keep OpenAI-compatible and Anthropic-native formats separate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The request succeeds but there is no visible answer.&lt;/strong&gt; Inspect the final text field, finish reason, and output cap. Reasoning tokens may be consumed before visible text, and a small cap can leave no room for the answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Results change after switching models or thinking effort.&lt;/strong&gt; Start a new session. Kimi Code's documentation notes that these changes invalidate the existing prompt cache and can increase token usage. Leave Thinking enabled for models that require it rather than misdiagnosing the error as an endpoint issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do with Kimi K3.1 Pro in Kimi Code after setup
&lt;/h2&gt;

&lt;p&gt;Regular Kimi works well for conversations, reading, search, and everyday agent tasks. Kimi Code is designed around a project and working directory, where the model can participate in a development workflow.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Regular Kimi&lt;/th&gt;
&lt;th&gt;Kimi Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Main context&lt;/td&gt;
&lt;td&gt;Conversations, uploaded documents, web information&lt;/td&gt;
&lt;td&gt;Projects, repositories, terminals, development tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Files&lt;/td&gt;
&lt;td&gt;Understands material supplied in the conversation&lt;/td&gt;
&lt;td&gt;Searches and edits across project files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Execution&lt;/td&gt;
&lt;td&gt;Does not necessarily operate in your current environment&lt;/td&gt;
&lt;td&gt;Runs commands, builds, and tests under a permission policy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model choice&lt;/td&gt;
&lt;td&gt;Primarily built-in Kimi models&lt;/td&gt;
&lt;td&gt;Multiple providers through compatible protocols&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extensions&lt;/td&gt;
&lt;td&gt;Built-in product capabilities&lt;/td&gt;
&lt;td&gt;MCP, Skills, Hooks, plugins, and sub-agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forms&lt;/td&gt;
&lt;td&gt;Web or app&lt;/td&gt;
&lt;td&gt;Desktop, CLI, VS Code, and third-party agent integrations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A connected model can help you understand a repository, make a small feature change with tests, organise documentation, or compare several models on the same task. MCP and plugins add external tools, while Skills preserve reusable project instructions. These are reasons to use the project environment, not guarantees that every task will succeed.&lt;/p&gt;

&lt;p&gt;For occasional questions, regular Kimi is simpler. For project work that needs file edits and verification through real runs, Kimi Code is more useful. Start with a small, checkable task, then expand permissions and complexity only after the connection and output prove reliable.&lt;/p&gt;

</description>
      <category>kimi</category>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>DeepSeek V4.1 Flash in DeepSeek Harness: GenUI praktisch einrichten und prüfen</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Tue, 10 Nov 2026 10:19:15 +0000</pubDate>
      <link>https://dev.to/buluo/deepseek-v41-flash-in-deepseek-harness-genui-praktisch-einrichten-und-prufen-3nmi</link>
      <guid>https://dev.to/buluo/deepseek-v41-flash-in-deepseek-harness-genui-praktisch-einrichten-und-prufen-3nmi</guid>
      <description>&lt;p&gt;Wenn du in DeepSeek Harness mit DeepSeek V4.1 Flash nicht nur Text lesen, sondern Tabellen sortieren und Funktionsparameter direkt verändern möchtest, ist GenUI einen Test wert. Ich habe das Plugin am 10. November 2026 installiert und eine vollständige Demo ausführen lassen; die Erzeugung dauerte 3 Minuten 58 Sekunden. Der größte praktische Gewinn: Sortieren, Filtern und Schieberegler laufen lokal im Browser und lösen keinen neuen Modellaufruf aus. Der Artikel richtet sich an DSH-Nutzerinnen und -Nutzer, die Daten oder Parameter wiederholt untersuchen. Für reine Textantworten, eine noch fehlende API-Konfiguration oder den Umgang mit einem nicht geprüften Drittanbieter-Plugin ist die Installation nicht nötig. Ich habe weder alle Komponenten noch alle DSH-Versionen getestet.&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%2F5cjw03i0dv6psx6r2wpt.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%2F5cjw03i0dv6psx6r2wpt.jpg" alt="Der von DeepSeek V4.1 Flash erzeugte GenUI-Funktionsplot mit Schiebereglern" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Der tatsächliche Funktionsplot aus dem Test. Die Oberfläche und der ursprüngliche Prompt sind auf vereinfachtem Chinesisch; die deutsche Sprachqualität wurde nicht gemessen.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Aufmerksam wurde ich durch &lt;a href="https://x.com/libukai" rel="noopener noreferrer"&gt;Li Bukais Beitrag auf X&lt;/a&gt;. Dort waren sortierbare Datenpaneele, veränderbare Funktionsplots, selbst korrigierende Tests und ein Panel über dem Eingabefeld zu sehen. Mich interessierte vor allem, welche Aktionen ohne eine weitere Modellanfrage auskommen.&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%2F3huysvk7wdsjjvc1x6on.png" 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%2F3huysvk7wdsjjvc1x6on.png" alt="Li Bukais X-Beitrag zu GenUI in DeepSeek Harness" width="751" height="1121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash mit GenUI: zuerst das richtige Paket installieren
&lt;/h2&gt;

&lt;p&gt;Das Paket für diesen Test heißt &lt;strong&gt;&lt;code&gt;@changfenhuang/dsh-genui&lt;/code&gt;&lt;/strong&gt;. Der Scope gehört zum Namen und darf nicht weggelassen werden.&lt;/p&gt;

&lt;p&gt;Der ursprünglich genannte Repository-Pfad &lt;code&gt;changfenhuang/dsh-genui&lt;/code&gt; liefert inzwischen einen 404-Fehler. Der aktuelle Quelltext liegt unter &lt;a href="https://github.com/omdsh-dev/dsh-genui" rel="noopener noreferrer"&gt;omdsh-dev/dsh-genui&lt;/a&gt;. Das passende &lt;a href="https://www.npmjs.com/package/@changfenhuang/dsh-genui" rel="noopener noreferrer"&gt;npm-Paket ist @changfenhuang/dsh-genui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bei npm existiert außerdem ein Paket namens &lt;code&gt;dsh-genui&lt;/code&gt; ohne Scope. Es handelt sich um eine andere Implementierung eines anderen Maintainers, nicht um eine Kurzform des getesteten Pakets. Auch eine gewöhnliche Installation als Node-Abhängigkeit registriert das Plugin noch nicht bei DSH.&lt;/p&gt;

&lt;p&gt;So bin ich in DeepSeek Harness vorgegangen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Die Plugin-Seite öffnen und &lt;strong&gt;Add plugin&lt;/strong&gt; wählen.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@changfenhuang/dsh-genui&lt;/code&gt; vollständig eintragen.&lt;/li&gt;
&lt;li&gt;Die offizielle Registry oder einen ausdrücklich vertrauenswürdigen Mirror verwenden.&lt;/li&gt;
&lt;li&gt;In der Liste installierter Plugins den vollständigen Namen kontrollieren und das Plugin aktivieren.&lt;/li&gt;
&lt;li&gt;Den DSH-Websdienst neu starten, den Browser hart aktualisieren und eine neue Sitzung beginnen.&lt;/li&gt;
&lt;/ol&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%2Ffgypnufc027ewu5d7trv.png" 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%2Ffgypnufc027ewu5d7trv.png" alt="Das korrekt registrierte Paket @changfenhuang/dsh-genui in DeepSeek Harness" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Der offizielle Quick Start nennt derzeit die DSH-Hosts &lt;code&gt;^0.2.0-rc.1&lt;/code&gt;, &lt;code&gt;^0.2.1-rc.1&lt;/code&gt; und &lt;code&gt;^0.2.2-alpha.2&lt;/code&gt;. Die aktuellen RC- und Alpha-Hosts benötigen Node.js 24.9.0 oder neuer; für die Plugin-CLI wird außerdem &lt;code&gt;pnpm&lt;/code&gt; gebraucht. Prüfe diese Angaben vor der Installation erneut. Da meine Screenshots den genauen DSH-Build nicht festhalten, kann ich die gleichen Menüs nicht für jede ältere Version zusichern.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash im Praxistest: aus einer Antwort werden vier UI-Kanäle
&lt;/h2&gt;

&lt;p&gt;Für die vollständige Demo habe ich den chinesischen Prompt「展示一下刚刚加入的ui的完整功能。」verwendet. Er bedeutet sinngemäß: „Zeig mir alle Funktionen der UI, die ich gerade hinzugefügt habe.“ Es handelt sich also nicht um einen Test mit deutschem Prompt.&lt;/p&gt;

&lt;p&gt;DeepSeek V4.1 Flash erkannte zunächst das neu installierte Paket und erzeugte anschließend die Oberfläche. Statt rohem JSON erschien eine Karte mit den Fähigkeiten, gefolgt von Tabellen, Diagrammen, einem Funktionsplot, Berechnungsfeldern, einem Quiz und einer 3D-Szene.&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%2F5sj5yj3bj0mjb7eonik2.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%2F5sj5yj3bj0mjb7eonik2.jpg" alt="Die GenUI-Fähigkeitenkarte am Anfang der Antwort von DeepSeek V4.1 Flash" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In der Antwort wurden vier Darstellungswege beschrieben:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dsh-ui&lt;/code&gt;-Blöcke rendern Komponenten direkt in der Unterhaltung.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;render_ui&lt;/code&gt;-Karten stellen UI in der Werkzeugzeile dar.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/panel&lt;/code&gt; hält einen Arbeitsbereich über dem Eingabefeld fest.&lt;/li&gt;
&lt;li&gt;Über die rechte obere Ecke des Panels erreicht man Vorlagen und lokale Erfolge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Das folgende GIF zeigt den tatsächlichen Ablauf beim Scrollen und Öffnen der Diagramme.&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%2Fot6g1ec61cpax1zahxge.gif" 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%2Fot6g1ec61cpax1zahxge.gif" alt="Die aufgezeichnete GenUI-Demonstration mit DeepSeek V4.1 Flash in DeepSeek Harness" width="600" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Falls du nur einen &lt;code&gt;dsh-ui&lt;/code&gt;-Codeblock siehst, prüfe zuerst die Plugin-Registrierung, den Neustart, die Browser-Aktualisierung und die Host-Version. Die Erzeugung der UI-Spezifikation durch das Modell und ihre Darstellung durch das Plugin sind zwei getrennte Prüfschritte.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash bedienen, ohne jede Änderung neu anzufragen
&lt;/h2&gt;

&lt;p&gt;Die Übersicht unter der Fähigkeitenkarte zeigt, welche Aktionen lokal abgeschlossen werden können. Genau diese Information ist im Alltag nützlicher als die Zahl der angebotenen Komponenten.&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%2Fxgy77nsbw9xkl9zj51ay.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%2Fxgy77nsbw9xkl9zj51ay.jpg" alt="Die GenUI-Komponententabelle mit lokalen Aktionen und Kopierfunktionen" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Im Test ließen sich die Interaktionen drei Gruppen zuordnen:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nur Browserzustand:&lt;/strong&gt; Spalten sortieren, Zeilen filtern, Tabs wechseln sowie Markdown oder CSV kopieren.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lokale Neuberechnung:&lt;/strong&gt; Legenden ein- und ausblenden, Funktionsparameter verschieben und die Animation abspielen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anschließende Modellarbeit:&lt;/strong&gt; Ein Formular absenden oder eine Schaltfläche mit &lt;code&gt;action&lt;/code&gt; betätigen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Der Diagrammbereich enthielt Balken, P50/P95-Linien und ein Ringdiagramm. Sämtliche Werte waren Demo-Daten. Geprüft habe ich deshalb nicht ihre fachliche Aussage, sondern ob die Bedienelemente reagieren und ob dabei ein weiterer Modellaufruf entsteht.&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%2Fayyv4zj64pq99fu1l52d.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%2Fayyv4zj64pq99fu1l52d.jpg" alt="Die von DeepSeek V4.1 Flash erzeugten Balken-, Linien- und Ringdiagramme" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Damit entfällt für viele kleine Änderungen ein zusätzlicher Prompt. Eine Tabelle muss nicht neu geschrieben werden, nur weil du eine andere Sortierung möchtest. Eine Kurve muss nicht neu generiert werden, wenn du lediglich einen Parameter verschiebst. Erst wenn der nächste Schritt wieder Modellreasoning braucht, geht das Ereignis an das Modell zurück.&lt;/p&gt;

&lt;p&gt;Daraus folgt jedoch keine pauschale Token-Ersparnis. Die erste UI-Erzeugung kostet weiterhin Ausgabetokens, und &lt;code&gt;action&lt;/code&gt;-Ereignisse können weitere Aufrufe erzeugen. Ein kontrollierter Vergleich der Gesamtmenge war nicht Teil dieses Tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash mit Tabellen, Funktionsplots und Panels arbeiten
&lt;/h2&gt;

&lt;p&gt;Für den Einstieg würde ich drei Anwendungen ausprobieren:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daten sichten:&lt;/strong&gt; Das Modell erstellt eine Tabelle, danach übernimmst du Sortierung und Filterung direkt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parameter erklären:&lt;/strong&gt; Formel und Kurve bleiben zusammen sichtbar, während du die Werte mit Schiebereglern veränderst.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arbeitsbereich offen halten:&lt;/strong&gt; Eine Checkliste oder kleine Bedienfläche bleibt mit &lt;code&gt;/panel&lt;/code&gt; über dem Eingabefeld verfügbar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Das Panel lässt sich mit &lt;code&gt;/panel&lt;/code&gt; ein- und ausblenden sowie mit dem × rechts schließen. &lt;code&gt;/panel 清单&lt;/code&gt; passt den Inhalt an, &lt;code&gt;/panel clear&lt;/code&gt; leert ihn. Es ist eine optionale Arbeitsfläche, keine dauerhaft erzwungene Ansicht.&lt;/p&gt;

&lt;p&gt;Weiter unten enthielt die Demo Berechnungsfelder, ein Quiz und erweiterte Visualisierungen. Die Berechnungskarten verwendeten Formeln aus einer Whitelist statt beliebigem JavaScript. Das Quiz konnte lokal auswerten; der Stand 0/2 bedeutet in meinem Screenshot lediglich, dass ich noch keine Antwort ausgewählt hatte.&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%2F4z5y63enuq3s15e1te54.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%2F4z5y63enuq3s15e1te54.jpg" alt="GenUI-Berechnungsfelder, Quiz und 3D-Szene in der Antwort von DeepSeek V4.1 Flash" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Die 3D-Szene ließ sich drehen und zoomen; darunter erschien ein isoliert gerendertes SVG-Diagramm. Am Ende wurden außerdem Offline-Karten, eine Bild-Lightbox, Audio- und Video-Player sowie ein horizontales Carousel genannt. Diese Elemente habe ich nicht einzeln geöffnet und zähle sie deshalb nicht zu den verifizierten Interaktionen.&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%2F774o3lw4tov8ced09czk.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%2F774o3lw4tov8ced09czk.jpg" alt="Die am Ende der DeepSeek V4.1 Flash-Demo aufgeführten zusätzlichen GenUI-Funktionen" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Für deine erste eigene Prüfung reicht eine kleine sortierbare Tabelle. Danach kannst du einen Plot mit zwei Parametern und erst anschließend eine &lt;code&gt;action&lt;/code&gt;-Schaltfläche oder &lt;code&gt;/panel&lt;/code&gt; testen. So erkennst du eher, ob ein Problem beim Modelloutput, beim Rendering oder beim Ereignisrückweg liegt.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash über eine separate API-Verbindung konfigurieren
&lt;/h2&gt;

&lt;p&gt;GenUI übernimmt Darstellung und Interaktion, nicht die Modellverbindung. Der Test nutzte DeepSeek V4.1 Flash über die OpenAI-kompatible API von Crazyrouter mit der Base URL &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Bewahre den API-Schlüssel ausschließlich in deinen DSH-Zugangsdaten auf. Er gehört weder in einen Prompt noch in Screenshots oder erzeugte Formulare. Verwende außerdem die Modell-ID, die für dein Konto tatsächlich verfügbar ist, statt sie aus dem Anzeigenamen abzuleiten.&lt;/p&gt;

&lt;p&gt;Die &lt;a href="https://crazyrouter.com/en/integrations" rel="noopener noreferrer"&gt;Crazyrouter-Integrationsanleitungen&lt;/a&gt; helfen bei der Konfiguration kompatibler Clients. Wenn du denselben UI-Prompt mit mehreren Modellen ausprobieren möchtest, kannst du vorher &lt;a href="https://crazyrouter.com/en/models/task/chat?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_c2abfdf80b96_mid_text" rel="noopener noreferrer"&gt;Chat-Modelle im Crazyrouter-Katalog vergleichen&lt;/a&gt;. Diese Seite ist ein allgemeiner Modellkatalog, keine spezielle GenUI- oder Flash-Dokumentation. Das tatsächliche Rendering musst du danach in DSH prüfen.&lt;/p&gt;

&lt;p&gt;Auch in den X-Kommentaren ging es um Tokens. Li Bukai antwortete dort, dass die Ausgabetokens in Nicht-Coding-Szenarien im Allgemeinen nicht besonders hoch seien. Das ist die Einschätzung des Beitragsautors, keine kontrollierte Messung aus diesem Test.&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%2F2ibbbazllmryxmdq79rf.png" 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%2F2ibbbazllmryxmdq79rf.png" alt="Die X-Diskussion über GenUI-Tokenverbrauch und das Schließen des Panels" width="648" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wenn du den Verbrauch beurteilen willst, erfasse die erste UI-Erzeugung, rein lokale Interaktionen, &lt;code&gt;action&lt;/code&gt;-Ereignisse und vollständige Neugenerierungen getrennt. Ein einzelner Gesamtwert beantwortet nicht, welcher Arbeitsschritt Tokens verursacht hat.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek V4.1 Flash und GenUI: Grenzen des Tests und häufige Fehler
&lt;/h2&gt;

&lt;p&gt;Die Fähigkeitenkarte zeigte 60+ Komponenten, während die aktuelle offizielle README eine Matrix mit 30+ Komponenten verwendet. Versionen oder Zählweisen können sich unterscheiden. Ich habe die Anzahl nicht selbst nachgezählt und leite aus der Differenz keine Empfehlung für ein Upgrade oder Downgrade ab.&lt;/p&gt;

&lt;p&gt;Bei Problemen hilft diese Reihenfolge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nur ein &lt;code&gt;dsh-ui&lt;/code&gt;-Block erscheint:&lt;/strong&gt; Paketname, Aktivierung, DSH-Neustart, Browser-Aktualisierung und Host-Version prüfen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eine Schaltfläche löst nichts aus:&lt;/strong&gt; Kontrollieren, ob sie überhaupt eine &lt;code&gt;action&lt;/code&gt; besitzt; reine Anzeigeelemente müssen nicht mit dem Modell kommunizieren.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Der Slider verändert die Kurve nicht:&lt;/strong&gt; Zuerst mit einem kleinen offiziellen Funktionsbeispiel prüfen, bevor du eine eigene Formel verantwortlich machst.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Das Panel stört:&lt;/strong&gt; Mit &lt;code&gt;/panel&lt;/code&gt; oder dem × schließen; Inhalte bei Bedarf mit &lt;code&gt;/panel clear&lt;/code&gt; entfernen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keine Modellantwort:&lt;/strong&gt; API-Schlüssel, Base URL, verfügbare Modell-ID und Kontofreigabe kontrollieren, bevor du die Plugin-Einstellungen änderst.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whitelist-Formeln und isoliertes Rendering ersetzen keine Prüfung von Drittanbieter-Code, Kompatibilität und Berechtigungen. Gib in Demoformularen keine Passwörter, API-Schlüssel oder anderen vertraulichen Werte ein. Und auch ein gut bedienbares Interface verbessert nicht die faktische Richtigkeit der Modellantwort.&lt;/p&gt;

&lt;p&gt;GenUI lohnt sich daher vor allem dann, wenn du Antworten häufig neu sortierst, filterst oder mit veränderten Parametern erkundest. Für einen ersten Versuch reicht eine Aufgabe, deren Daten du bereits kennst und deren Bedienung du leicht kontrollieren kannst.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Transparenz: Text und Struktur wurden von einem KI-Agenten erstellt. Die beschriebenen Ergebnisse stammen aus dem dokumentierten DSH-Test vom 10. November 2026; nicht jede aufgeführte Komponente wurde einzeln geprüft.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>deepseek</category>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Warum DeepSeek außerhalb Chinas so bekannt wurde – und wie man die DeepSeek API 2026 aufruft</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Mon, 09 Nov 2026 14:19:53 +0000</pubDate>
      <link>https://dev.to/buluo/warum-deepseek-ausserhalb-chinas-so-bekannt-wurde-und-wie-man-die-deepseek-api-2026-aufruft-3gla</link>
      <guid>https://dev.to/buluo/warum-deepseek-ausserhalb-chinas-so-bekannt-wurde-und-wie-man-die-deepseek-api-2026-aufruft-3gla</guid>
      <description>&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%2Fnnvp93zovk5e60w5wfmo.png" 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%2Fnnvp93zovk5e60w5wfmo.png" alt="Warum DeepSeek international bekannt wurde Cover" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zwei Fragen stehen oft im selben Satz, brauchen aber völlig verschiedene Antworten: Warum hat ein Modell aus China 2025 weltweit die Schlagzeilen beherrscht, und wie spricht man es 2026 eigentlich an? Die erste ist eine Mediengeschichte, die zweite eine Konfigurationsfrage. Wer nur die erste beantwortet, schreibt einen Kommentar. Wer nur die zweite beantwortet, kopiert vermutlich einen Modellnamen, der schon nicht mehr gültig ist.&lt;/p&gt;

&lt;p&gt;Dieser Beitrag entstand mit KI-Unterstützung; die technischen Angaben habe ich gegen die offizielle Dokumentation geprüft. Ich gehe beide Fragen nacheinander durch und ende bei dem Punkt, an dem die meisten Integrationen tatsächlich hängen bleiben: bei der Frage, woher der Modellname kommt, den man in den Request schreibt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warum DeepSeek international zum Thema wurde
&lt;/h2&gt;

&lt;p&gt;Am 20. Januar 2025 veröffentlichte DeepSeek R1. Bei AIME 2024 erreichte das Modell 79,8 %, bei MATH-500 97,3 % – Werte auf Augenhöhe mit OpenAI o1, in Mathematik, Code und Schlussfolgern. Für den letzten Trainingslauf des zugrunde liegenden V3 wurden rund 5,6 Millionen US-Dollar genannt: 2048 H800 über 55 Tage. In dieser Zahl stecken nur die Rechenkosten dieses einen Laufs, nicht Vorforschung, Experimente, Daten oder Hardwarebeschaffung; genau darüber wurde später heftig gestritten. Aber selbst mit diesem Abschlag war die Botschaft unübersehbar: Die stillschweigende Annahme, Vorsprung entstehe proportional zur eingesetzten Rechenleistung, war nicht mehr selbstverständlich.&lt;/p&gt;

&lt;p&gt;Der eigentliche Bruch war meiner Ansicht nach aber nicht der Preis, sondern dass Überprüfbarkeit auf einmal billiger war als Vertrauen. Die Gewichte von R1 kamen unter MIT-Lizenz, dazu das technische Paper, die Trainingsmethode und sechs destillierte Modelle zwischen 1,5B und 70B – kommerziell nutzbar und frei veränderbar. o1 und vergleichbare Reasoning-Modelle waren zu der Zeit geschlossen und nur über eine API erreichbar. Teams aus Berkeley, der HKUST und Hugging Face reproduzierten zentrale Effekte für Beträge im zweistelligen Dollarbereich. In einer technischen Community zählt nicht die Behauptung, sondern dass jemand anderes sie nachgebaut hat. Deshalb verbreitete sich das in Foren und Repositories schneller als jede Pressemitteilung.&lt;/p&gt;

&lt;p&gt;Dazu kam eine Geschichte, die sich nicht ignorieren ließ: ein rund 200köpfiges Team, hervorgegangen aus einem Quant-Fonds, überwiegend im Inland ausgebildet, mitten unter Chip-Exportkontrollen. Marc Andreessen nannte es den „Sputnik-Moment der KI“. Damit war DeepSeek kein Technikthema mehr, sondern ein öffentliches über die technologische Führung der USA, über die Wirksamkeit von Exportkontrollen und darüber, ob Investitionen in dreistelliger Milliardenhöhe gerechtfertigt sind.&lt;/p&gt;

&lt;p&gt;Und schließlich der Tag, an dem es auch außerhalb der Branche ankam: Am 27. Januar 2025 stand die App in den US-App-Store-Charts auf Platz 1, vor ChatGPT; 100 Millionen Nutzer in sieben Tagen, wofür ChatGPT rund zwei Monate gebraucht hatte. Am selben Tag verlor NVIDIA etwa 17 % seines Börsenwerts, rund 600 Milliarden US-Dollar an einem einzigen Handelstag. WSJ, NYT, CNBC und Time titelten gleichzeitig. Das ist der Unterschied zwischen „in der Szene bekannt“ und „allgemein bekannt“.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was von der DeepSeek-Aufregung 2026 übrig geblieben ist
&lt;/h2&gt;

&lt;p&gt;2026 liegt der Token-Absatz chinesischer Modelle auf OpenRouter seit 27 Wochen in Folge über dem US-amerikanischer Modelle; vier der fünf meistgenutzten Modelle pro Woche stammen von dort, DeepSeek führt die Anbieterliste an. Im Frühjahrsbericht von Hugging Face steht, dass 41 % der Downloads großer Modelle im vorangegangenen Jahr auf in China entwickelte Modelle entfielen. Die Berichterstattung hat sich parallel verschoben: von „Schock“ und „Weckruf“ zu Finanzierungsrunden, IPO, Margen und der Frage, ob der Nachfolger noch überzeugt.&lt;/p&gt;

&lt;p&gt;Für jemanden, der eine Anwendung baut, ist das die eigentlich interessante Wendung. Aus einem Ereignis wurde Infrastruktur. Die spannende Frage lautet nicht mehr, ob man das Modell ernst nehmen muss, sondern wie man es stabil anbindet – und welche Angaben man dabei besser nicht aus einem zwei Jahre alten Blogbeitrag übernimmt.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek API: Warum man Modellnamen nicht aus Blogposts übernehmen sollte
&lt;/h2&gt;

&lt;p&gt;Crazyrouter hat dafür eine eigene, leicht zu übersehende Seite: &lt;a href="https://docs.crazyrouter.com/ai-tools.md" rel="noopener noreferrer"&gt;AI-Tools lesen die Dokumentation&lt;/a&gt;. Sie richtet sich ausdrücklich an Codex, Claude Code, ChatGPT und Cursor und nennt stabile Einstiegspunkte, allen voran &lt;code&gt;llms.txt&lt;/code&gt; und die vollständige Fassung &lt;code&gt;llms-full.txt&lt;/code&gt;. Der interessante Teil ist der Abschnitt mit den verbindlichen Regeln, denn er beschreibt genau den Fehler, den man beim automatisierten Generieren von Anbindungscode macht:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;llms.txt&lt;/code&gt; ist &lt;strong&gt;keine&lt;/strong&gt; vollständige Modellliste.&lt;/li&gt;
&lt;li&gt;Modellnamen, Preise und Abrechnungsarten richten sich nach der Pricing-Seite.&lt;/li&gt;
&lt;li&gt;Welche Modelle ein konkreter API-Schlüssel wirklich aufrufen darf, entscheidet allein &lt;code&gt;GET https://api.crazyrouter.com/v1/models&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Beim Generieren von Aufrufcode sollen bevorzugt die Endpunkt-Beispiele aus der jeweiligen Modellseite verwendet werden.&lt;/li&gt;
&lt;li&gt;OpenAI-kompatible Clients nutzen &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;; Anthropic-native Clients die Root-Domain ohne selbst angehängtes &lt;code&gt;/v1&lt;/code&gt;; Konto- und Verwaltungsendpunkte wie &lt;code&gt;/api/user/self&lt;/code&gt; gehören auf &lt;code&gt;https://crazyrouter.com&lt;/code&gt; und liefern auf der API-Domain &lt;code&gt;404 api_only_endpoint&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Warum das praktisch ist, zeigt ein Blick auf die DeepSeek-Doku selbst. Verschiedene Parameterversionen ihrer Seiten zeigen nebeneinander unterschiedliche, zeitlich versetzte Modellnamen: die parameterlose Startseite noch &lt;code&gt;deepseek-chat&lt;/code&gt; und &lt;code&gt;deepseek-reasoner&lt;/code&gt;, eine andere Seite &lt;code&gt;deepseek-v4-flash&lt;/code&gt; zusammen mit &lt;code&gt;deepseek-v4-flash-vision-exp&lt;/code&gt;, die aktuelle Seite &lt;code&gt;deepseek-flash&lt;/code&gt; und &lt;code&gt;deepseek-v4-pro&lt;/code&gt;. Selbst zur Behandlung von &lt;code&gt;deepseek-v4-pro&lt;/code&gt; widersprechen sich zwei aktuelle Seiten. Das sind keine Erfindungen einzelner Blogs, sondern Cache-Generationen derselben Dokumentation.&lt;/p&gt;

&lt;p&gt;Wer einem Coding-Assistenten einfach „schreib mir einen DeepSeek-Aufruf“ sagt, bekommt daher mit einiger Wahrscheinlichkeit einen Namen aus der falschen Generation. Die verlässliche Reihenfolge ist unspektakulär, spart aber Debugging-Zeit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Das Tool zuerst den Index lesen lassen, nicht aus dem Gedächtnis generieren lassen.&lt;/li&gt;
&lt;li&gt;Den öffentlichen Namen im Modellverzeichnis prüfen und zusätzlich mit &lt;code&gt;GET /v1/models&lt;/code&gt; und dem eigenen Schlüssel gegenprüfen.&lt;/li&gt;
&lt;li&gt;Den Namen in eine Umgebungsvariable wie &lt;code&gt;API_MODEL&lt;/code&gt; legen, statt ihn im Code zu verteilen. Bei der nächsten Umbenennung bleibt es dann eine Konfigurationsänderung statt eines Releases.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Konkret veraltet sind &lt;code&gt;deepseek-chat&lt;/code&gt; und &lt;code&gt;deepseek-reasoner&lt;/code&gt; seit dem 24. Juli 2026; &lt;code&gt;deepseek-v4-flash&lt;/code&gt; und &lt;code&gt;deepseek-v4-flash-vision-exp&lt;/code&gt; bezeichnen bereits ausgemusterte Modelle, deren Anfragen von V4.1-Flash-1017 übernommen werden. Beides liest man auf &lt;code&gt;deepseek-flash&lt;/code&gt; um.&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%2Fkcofrw2nnr5yafwx41sw.png" 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%2Fkcofrw2nnr5yafwx41sw.png" alt="Alte Namen, aktuelle IDs" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek direkt oder über Crazyrouter: zwei Wege, drei Werte
&lt;/h2&gt;

&lt;p&gt;Beide Wege sprechen OpenAI-kompatibel, es bleibt also beim &lt;code&gt;openai&lt;/code&gt;-SDK. Unterschiedlich sind genau drei Werte: &lt;code&gt;API_KEY&lt;/code&gt;, &lt;code&gt;API_BASE_URL&lt;/code&gt; und &lt;code&gt;API_MODEL&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direkt beim Anbieter.&lt;/strong&gt; Base URL &lt;code&gt;https://api.deepseek.com&lt;/code&gt;, Endpunkt &lt;code&gt;POST /chat/completions&lt;/code&gt;, Authentifizierung per &lt;code&gt;Authorization: Bearer&lt;/code&gt;, Schlüssel über &lt;code&gt;platform.deepseek.com/api_keys&lt;/code&gt;. Aktuelle Modellnamen: &lt;code&gt;deepseek-flash&lt;/code&gt; und &lt;code&gt;deepseek-v4-pro&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Über Crazyrouter.&lt;/strong&gt; Base URL &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt;, in Ostasien &lt;code&gt;https://cn.crazyrouter.com/v1&lt;/code&gt;, Endpunkt &lt;code&gt;POST /v1/chat/completions&lt;/code&gt;, Schlüssel über &lt;code&gt;crazyrouter.com/console/token&lt;/code&gt;. Die dort gelisteten DeepSeek-Namen sind &lt;code&gt;deepseek-v4.1-flash&lt;/code&gt; und &lt;code&gt;deepseek-v4-pro&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Der Punkt, den man leicht übersieht: &lt;strong&gt;Die Modell-IDs sind auf beiden Seiten nicht identisch.&lt;/strong&gt; &lt;code&gt;deepseek-flash&lt;/code&gt; ist ein Name des Anbieters; &lt;code&gt;deepseek-v4.1-flash&lt;/code&gt; steht im öffentlichen Verzeichnis des Gateways. Wer einen davon in die jeweils andere Konfiguration kopiert, bekommt einen Fehler, der auf den ersten Blick nach einem falschen Schlüssel aussieht. Wer ohnehin mehrere Modelle parallel betreibt, kann im &lt;a href="https://crazyrouter.com/en/pricing?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_5b14f7d0ff1c_mid_text" rel="noopener noreferrer"&gt;öffentlichen Modellverzeichnis von Crazyrouter&lt;/a&gt; nachsehen, welche DeepSeek-Namen aktuell gelistet sind – und danach trotzdem mit &lt;code&gt;GET /v1/models&lt;/code&gt; prüfen, was der eigene Schlüssel darf.&lt;/p&gt;

&lt;p&gt;Der API-Schlüssel selbst gehört in eine Umgebungsvariable, nicht in den Quelltext und nicht in ein Repository. Auch als Platzhalter hat ein Schlüsselwert im Beispielcode nichts verloren.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wofür sich DeepSeek eignet – und wo die Grenzen liegen
&lt;/h2&gt;

&lt;p&gt;Die Wahl des Modells folgt der Aufgabe, nicht der Versionsnummer. Häufige, kurze Anfragen – Dialoge, Klassifikation, Extraktion, RAG – laufen auf &lt;code&gt;deepseek-flash&lt;/code&gt; beziehungsweise &lt;code&gt;deepseek-v4.1-flash&lt;/code&gt;. Mehrstufige Schlussfolgerungen und Code-Aufgaben mit langem Kontext eher auf &lt;code&gt;deepseek-v4-pro&lt;/code&gt;. Das wirkt sich stärker auf das Ergebnis aus als das Feilen an Parametern.&lt;/p&gt;

&lt;p&gt;Praktisch und ohne Änderung der Geschäftslogik: unveränderliche Inhalte wie System-Prompts oder lange Referenzdokumente an den Anfang des Prompts stellen, damit wiederholte Aufrufe den Kontext-Cache treffen. Wie viel davon tatsächlich getroffen wurde, steht in &lt;code&gt;usage.prompt_cache_hit_tokens&lt;/code&gt;. Und man sollte &lt;code&gt;usage&lt;/code&gt; ohnehin lesen, nicht nur den Antworttext – eine kurze Antwort mit HTTP 200 sagt nichts über langes Kontextfenster, Tool-Aufrufe oder Streaming aus.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;thinking&lt;/code&gt; ist standardmäßig aktiv. Im Python-SDK gehört es nicht als Top-Level-Argument in den Aufruf, sondern in &lt;code&gt;extra_body&lt;/code&gt;, etwa als &lt;code&gt;{"thinking": {"type": "disabled"}}&lt;/code&gt;; bei einem direkten HTTP-Request steht es auf oberster Ebene im Body. Für einfache Fragen lohnt sich das Abschalten, weil sonst eine Menge Ausgabe-Tokens für Überlegungen entstehen, die niemand lesen will.&lt;/p&gt;

&lt;p&gt;Zur Einordnung: Wenn nur DeepSeek genutzt wird und die feinsten Anbieter-Parameter sowie rohe Verbrauchsdetails gebraucht werden, ist der direkte Weg der kürzere. Sobald mehrere Anbieter im Projekt sind, werden Schlüssel, Verbrauch, Rate-Limits und Retry-Logik zu einem gemeinsamen Problem – dann ist ein einheitlicher Einstiegspunkt die einfachere Lösung. Das ist keine Qualitätsaussage über einen der beiden Wege, sondern eine Frage der Anzahl der Modelle im Projekt.&lt;/p&gt;

&lt;p&gt;Eine Grenze sollte man ausdrücklich stehen lassen: Zur weiteren Behandlung von &lt;code&gt;deepseek-v4-pro&lt;/code&gt; sind die offiziellen Seiten derzeit nicht einheitlich; eine nennt eine Umleitung auf V4.1 Flash ab September 2026, eine andere die Fortführung des Dienstes. „Aktuell im Verzeichnis gelistet“ ist deshalb die belastbare Aussage, „dauerhaft verfügbar“ wäre es nicht. Vor dem Produktivgang die Doku und &lt;code&gt;GET /v1/models&lt;/code&gt; erneut prüfen.&lt;/p&gt;

&lt;p&gt;Also: Warum wurde DeepSeek außerhalb Chinas so bekannt? Nicht wegen einer einzelnen Zahl. Drei Dinge fielen in denselben Monat – die Benchmarks von R1 auf o1-Niveau, MIT-Gewichte, die Nachbau für kleines Geld erlaubten, und der 27. Januar mit Platz 1 im US-App-Store und rund 600 Milliarden US-Dollar weniger NVIDIA-Börsenwert. Ein Modell wurde zum Ereignis, weil Technik, Überprüfbarkeit und ein öffentliches Narrativ gleichzeitig da waren.&lt;/p&gt;

&lt;p&gt;Und die zweite Frage? Dass chinesische Modelle auf OpenRouter seit 27 Wochen in Folge mehr Token-Aufrufe haben als US-amerikanische, ist die nüchterne Antwort auf die Aufregung von damals: Das Ereignis ist zur Infrastruktur geworden, und was davon übrig ist, ist Konfiguration. Setz &lt;code&gt;API_MODEL&lt;/code&gt; auf einen Namen, den du zuvor mit deinem eigenen Schlüssel geprüft hast, schick eine minimale Anfrage und sieh dir &lt;code&gt;usage&lt;/code&gt; an. Schlägt sie fehl, prüfe in dieser Reihenfolge: Modell-ID, Base URL, Rechte des Schlüssels. Wenn diese eine Anfrage durchläuft, hast du beide Fragen aus der Überschrift nicht mehr als Meinung, sondern als laufende Konfiguration beantwortet.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>JEV 1.14 for developers: what the decision model takes in, returns and can judge</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Mon, 09 Nov 2026 09:44:02 +0000</pubDate>
      <link>https://dev.to/buluo/jev-114-for-developers-what-the-decision-model-takes-in-returns-and-can-judge-328j</link>
      <guid>https://dev.to/buluo/jev-114-for-developers-what-the-decision-model-takes-in-returns-and-can-judge-328j</guid>
      <description>&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%2Fxk5xjmnt5q051a1y73c0.png" 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%2Fxk5xjmnt5q051a1y73c0.png" alt="JEV 1.14 for developers" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many features in a product come down to a small decision on a piece of text. Which queue should this ticket go to? Is this message urgent? Does this retrieved paragraph actually answer the user's question? You can ask a general chat model these things, but it replies in prose. You then write a parser for that prose, and you still have no clear idea how sure the model was. For a decision that drives code, that is an awkward shape of output.&lt;/p&gt;

&lt;p&gt;JEV 1.14 is a decision model from TypeSafe, built for this shape of problem. You send it a piece of context and a set of typed questions. It sends back typed answers that your program can read field by field. This post is about what it takes in, what it gives back, what kinds of judgment it handles well, and where it stops being useful. It is written for developers deciding whether a feature should depend on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What JEV 1.14 is
&lt;/h2&gt;

&lt;p&gt;JEV belongs to the family TypeSafe calls System One Models. It reads a situation and makes a judgment about it. It does not generate prose, write code, or hold a multi-turn conversation, so it is not a replacement for a chat model. Third-party coverage dates the 1.14 release to 14 October 2026, as the successor to 1.13.&lt;/p&gt;

&lt;p&gt;The distinction matters when you design the system around it. A chat model is a text producer whose output you then interpret. A decision model is a classifier and scorer with a richer output format. You ask a question with a defined answer space, and you get back a structured result for that question.&lt;/p&gt;

&lt;h2&gt;
  
  
  What goes into a JEV 1.14 request
&lt;/h2&gt;

&lt;p&gt;A request carries three things: the model name, the context, and a set of questions. The context is the text or structured information the judgment is about. Each question has a name you choose, a type, and an instruction that says what to decide. Choice questions also list the options you allow, each with a short description. Score questions list the levels on the scale, from lowest to highest, with a description for each.&lt;/p&gt;

&lt;p&gt;Because the answer space is defined by you, the model cannot invent a department that is not on your list. That is one of the main practical benefits: a whole class of parsing and validation work disappears.&lt;/p&gt;

&lt;h2&gt;
  
  
  What JEV 1.14 returns
&lt;/h2&gt;

&lt;p&gt;The response contains an answers object keyed by the question names you chose. Each answer carries its type. A Choice answer gives the selected option, a probability for every option, and a confidence value. A Noul answer gives a single probability between 0 and 1. A Score answer gives a numeric score, usually fractional, and a confidence.&lt;/p&gt;

&lt;p&gt;The response also names the model that actually answered, and reports usage in input and output tokens. Read the model field from every response and store it with the answer. The name you send is not a reliable indication of which version processed the call; in the test, the older name returned the newer model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three JEV 1.14 question types in practice
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choice&lt;/strong&gt; is for routing and triage. Use it when exactly one of several labels applies. The probability spread tells you how contested the decision was. A dominant option at a probability near 1 is a clear case; a flat distribution is a warning that your options overlap or the context is thin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Noul&lt;/strong&gt; is for yes/no signals such as urgency or relevance. Its output is a probability, not a boolean, so you need to choose the threshold that triggers an action, and you should choose it from labelled examples rather than from intuition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Score&lt;/strong&gt; is for graded judgments such as severity or fit. Its output is a weighted position on your scale. Fractional values are normal. Treat the levels as boundaries you defined, and check that the boundaries match how your team actually grades things.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEV 1.14 with several questions in one request
&lt;/h2&gt;

&lt;p&gt;A single request can carry several questions over the same context, and each answer is returned as its own field. For a support message, you can ask for the department, the urgency and the customer's frustration level in one call. Your code then combines the three answers, instead of making three calls or parsing one long reply.&lt;/p&gt;

&lt;p&gt;This is useful for cost and latency, but it has a limit. The questions share the same context, so if one question's answer depends on another, read the first answer in your code and send a second request. Do not expect the model to chain the answers for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What JEV 1.14 adds, and its status
&lt;/h2&gt;

&lt;p&gt;Compared with 1.13, version 1.14 adds three capabilities, and they are not at the same stage.&lt;/p&gt;

&lt;p&gt;Image input lets a picture be part of the context, for example a screenshot of an error. The output is still a choice, a probability or a score over your own definitions, not a description of the image. It must be enabled explicitly.&lt;/p&gt;

&lt;p&gt;Box is a new answer type that returns a bounding box and a confidence. It is useful when the question is where something is, such as the region of a product photo with a visible defect. The box is the model's estimate, not a precise segmentation, so anything with compliance consequences needs a human review.&lt;/p&gt;

&lt;p&gt;The 262K context mode allows long documents in one request. It must be enabled explicitly. Third-party sources describe all three additions as high-risk, and TypeSafe says they are not yet ready for production. Reports also disagree on the context size, so use the official documentation for that number.&lt;/p&gt;

&lt;p&gt;None of the three was exercised in the test described below. Treat them as capabilities to evaluate separately, not as tested behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the JEV 1.14 test showed
&lt;/h2&gt;

&lt;p&gt;The test ran on 9 November 2026 through the api.crazyrouter.com endpoint. It covered nine requests in total. Eight succeeded. One returned a not-found response because it used an alias that the catalogue does not list. No request timed out. The purpose was to see the shape of the judgments and how stable they were, not to measure accuracy.&lt;/p&gt;

&lt;p&gt;Requests were sent to &lt;a href="https://api.crazyrouter.com/api/alpha/decisions" rel="noopener noreferrer"&gt;https://api.crazyrouter.com/api/alpha/decisions&lt;/a&gt; with the model name jev-1.14.&lt;/p&gt;

&lt;p&gt;For a clear support message about an integration failing for three days, the model returned the technical department with probability about 0.92 and urgency 0.98. Repeating the call returned the same department with a probability of 0.91. The labels matched; the numbers moved a little. That is the stability you should expect, and it is why comparisons should use exact equality on labels and a tolerance on numbers.&lt;/p&gt;

&lt;p&gt;For a message asking about next month's pricing, with no urgency stated, the model returned sales at 0.99 and urgency 0.05. For a message reporting a suspected double charge, with no verified transaction, it returned billing at 1.00, but urgency was only 0.41. This is the most informative case in the set. The department was clear and the urgency was genuinely uncertain, so the urgency needs its own threshold, a fallback, or a person.&lt;/p&gt;

&lt;p&gt;For retrieval, a snippet about the timeout parameter of the requests library was rated highly relevant, with a 0.90 probability of answering the question on its own. A snippet about image models was rated 0 for relevance and 0.02 for answerability. The model separates clear matches from clear misses. Near-miss snippets were not tested.&lt;/p&gt;

&lt;p&gt;Latency for the single-question calls in the api.crazyrouter.com run fell between about 0.68 and 0.75 seconds. Input usage ranged from roughly 390 to 470 tokens across the successful calls, and output usage from about 35 to 75 tokens. The single-question example used 380 input tokens and 38 output tokens, so the output side is small for these decisions. Plan for input size, since your context drives most of the cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where JEV 1.14 stops being useful
&lt;/h2&gt;

&lt;p&gt;It cannot write or converse, so it is the wrong tool for anything that must produce text for a reader. It answers only the questions you define, so a vague question produces a vague answer, and a badly chosen set of options produces spread-out probabilities. Its probabilities describe how concentrated its answer is, not how often it is right, so a high confidence is not a guarantee.&lt;/p&gt;

&lt;p&gt;It is also the wrong place to make irreversible decisions. Refunds, account freezes and deletions should use its output as one input to a rule or a human check, not as the decision on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where JEV 1.14 fits
&lt;/h2&gt;

&lt;p&gt;It fits decisions with clear boundaries and a finite answer set, made on text, many times a day: triage, urgency ranking, and filtering snippets before they reach a generator. It is most valuable when the answer is consumed by code, because the typed fields remove much of the parsing that a chat model would require.&lt;/p&gt;

&lt;p&gt;A sensible first step is to pick one decision, write its questions precisely, and assemble a set of examples with known answers. Check the labels on those examples before you connect the output to anything that acts. Keep low-reliability questions, such as urgency in the test above, behind a human check until you have evidence they are reliable on your data.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEV 1.14 summary
&lt;/h2&gt;

&lt;p&gt;JEV 1.14 takes a context and a set of typed questions, and returns typed answers with probabilities or scores, along with the model that answered and the token usage. Its strength is judgments with clear boundaries that code can consume directly. Its limits are that it does not generate text, its probabilities are not accuracy, and its newer image, Box and long-context features are high-risk and need their own evaluation.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEV 1.14 references
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.marktechpost.com/2026/10/14/typesafe-ai-jev-1-14-images-box-long-context/" rel="noopener noreferrer"&gt;TypeSafe releases JEV 1.14 (MarkTechPost)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openrouter.ai/typesafe/jev-1.14" rel="noopener noreferrer"&gt;Jev 1.14 model page (OpenRouter)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Tracking link (DEV.to version, ID: cr_16fbe997e4ed)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To see decision scenarios in a browser, open the &lt;a href="https://crazyrouter.com/tools/jev-decision-playground/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_16fbe997e4ed_bottom_cta" rel="noopener noreferrer"&gt;JEV Decision Playground&lt;/a&gt; and edit a scenario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO link:&lt;/strong&gt; the &lt;a href="https://crazyrouter.com/en/blog/jev-1-13-guide-playground-2026-en" rel="noopener noreferrer"&gt;JEV 1.13 guide&lt;/a&gt; covers the previous version.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>Sonnet 5.5 vs. Opus 5.5 im API-Test: Was 132 Aufrufe belegen und was nicht</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Mon, 09 Nov 2026 08:11:53 +0000</pubDate>
      <link>https://dev.to/buluo/sonnet-55-vs-opus-55-im-api-test-was-132-aufrufe-belegen-und-was-nicht-5aap</link>
      <guid>https://dev.to/buluo/sonnet-55-vs-opus-55-im-api-test-was-132-aufrufe-belegen-und-was-nicht-5aap</guid>
      <description>&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%2Fwxbhgwqeeh38lma04cuj.png" 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%2Fwxbhgwqeeh38lma04cuj.png" alt="Sonnet 5.5 vs. Opus 5.5: Methodik statt Bauchgefühl" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dieser Artikel beschreibt einen kleinen, reproduzierbaren Vergleich der Modelle &lt;code&gt;claude-sonnet-5-5&lt;/code&gt; und &lt;code&gt;claude-opus-5-5&lt;/code&gt;. Er zeigt die Methodik, die Zahlen und vor allem die Stellen, an denen die Methodik selbst Grenzen hat. Die Ergebnisse sind schnell zusammengefasst: Bei den überprüfbaren Aufgaben waren beide Modelle gleich korrekt. Opus war langsamer und schrieb mehr Text. Mehr Gewicht liegt hier aber auf dem Vorgehen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aufbau des Tests
&lt;/h2&gt;

&lt;p&gt;Beide Modelle wurden über die OpenAI-kompatible Schnittstelle unter &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt; aufgerufen, Endpunkt &lt;code&gt;/chat/completions&lt;/code&gt;. Insgesamt gab es 132 Aufrufe, alle mit HTTP 200. Der Testlauf fand am 9. November 2026 statt.&lt;/p&gt;

&lt;p&gt;Die Aufgaben bestanden aus zwei Gruppen. Die erste umfasste 14 übliche Entwicklungsaufgaben, etwa einen LRU-Cache, eine Log-Auswertung, Bugfixes, Umformung von Text in JSON und ein Werkzeug-Aufruf-Szenario. Die zweite Gruppe umfasste 8 schwerere Aufgaben: eine Fehlerbehebung über drei Dateien, ein Suffix-Array mit einer Laufzeitgrenze von drei Sekunden bei 200.000 Zeichen, einen Token-Bucket-Limiter, Schedulingregeln und eine Zählaufgabe.&lt;/p&gt;

&lt;p&gt;Jede Aufgabe lief dreimal pro Modell. Prompt, Systemnachricht (keine) und Temperatur (Standard) waren identisch. Es wurde kein &lt;code&gt;effort&lt;/code&gt;-Parameter gesetzt, sondern der Standardwert der Schnittstelle verwendet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bewertung
&lt;/h2&gt;

&lt;p&gt;Code wurde mit versteckten Unit-Tests geprüft. Antworten mit einer einzigen richtigen Lösung wurden exakt verglichen. Bei Werkzeugaufrufen wurden Funktionsname und Argumente geprüft. Die Regeln für die Bewertung wurden vor dem Lauf festgelegt und in einem Preregistrierungsdokument mit Hash-Werten festgehalten.&lt;/p&gt;

&lt;p&gt;Nach dem Lauf wurden zwei Änderungen vorgenommen, die ich offenlegen möchte. Der Referenzwert für die Aufgabe mit dem langen Dokument hatte zwei gültige Bedingungen nicht berücksichtigt, und die Prüfung auf Ablenkungen zählte auch Erklärungstabellen mit. Beides wurde korrigiert, und beide Korrekturen sind in einer Änderungsliste dokumentiert. An den Modellausgaben wurde nichts verändert. Der Hinweis dient dazu, dass Leser die Korrekturen nachvollziehen können. Eine Bewertung, bei der Regeln nach Sichtung der Ergebnisse geändert werden können, ist eine Schwäche, die man nur durch vorab festgelegte Regeln vermeidet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ergebnisse
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kennzahl&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;Erste Gruppe, Durchschnittsscore (0–10)&lt;/td&gt;
&lt;td&gt;9,76&lt;/td&gt;
&lt;td&gt;9,76&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zweite Gruppe, Durchschnittsscore (0–10)&lt;/td&gt;
&lt;td&gt;9,58&lt;/td&gt;
&lt;td&gt;10,00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Erste Gruppe, mittlere Latenz&lt;/td&gt;
&lt;td&gt;6,2 s&lt;/td&gt;
&lt;td&gt;7,7 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zweite Gruppe, mittlere Latenz&lt;/td&gt;
&lt;td&gt;11,6 s&lt;/td&gt;
&lt;td&gt;17,6 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zweite Gruppe, mittlere Ausgabe-Tokens&lt;/td&gt;
&lt;td&gt;1.445&lt;/td&gt;
&lt;td&gt;1.843&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Der Score von 9,58 bei Sonnet entsteht durch einen einzigen Lauf, bei dem der Code das Paket &lt;code&gt;numpy&lt;/code&gt; importierte, das in der Testumgebung nicht installiert war. Mit installiertem Paket bestand derselbe Code alle vier Tests. Das ist ein Umgebungsproblem, kein Algorithmusfehler. Ohne diese Korrektur wären die Werte gleich.&lt;/p&gt;

&lt;p&gt;Die Werkzeugaufrufe zeigten ein gemeinsames Problem. Nachdem ein Werkzeug Wetterdaten geliefert hatte, fragte der Nutzer zusätzlich, ob er einen Regenschirm braucht. Beide Modelle lösten nur den nächsten Werkzeugaufruf aus und beantworteten die Textfrage nicht. Das ist eine Frage der Prompt- und Anwendungslogik.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was die Zahlen nicht zeigen
&lt;/h2&gt;

&lt;p&gt;Insgesamt gab es 22 Aufgaben mit je drei Durchläufen. Das reicht für eine Aussage über die getesteten Aufgaben, nicht für eine Aussage über Modelle allgemein. Offene Aufgaben wie Architekturentscheidungen oder Langtextverfassung wurden nicht mit einer belastbaren Methode bewertet.&lt;br&gt;
Die Latenz hängt von Netzwerk und Auslastung ab. Die Zahlen sind deshalb nur als Größenordnung zu verstehen. Die Aufrufe liefen über eine gemeinsame Gateway-Schnittstelle, die Ergebnisse können daher von direkten Aufrufen beim Anbieter abweichen. Preise wurden in diesem Test nicht geprüft; bitte den offiziellen Preisseiten entnehmen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproduktion
&lt;/h2&gt;

&lt;p&gt;Der Ablauf lässt sich mit eigenen Aufgaben wiederholen: Fixe Regeln vor dem Lauf festlegen, jede Aufgabe mehrfach ausführen, &lt;code&gt;usage&lt;/code&gt; und &lt;code&gt;finish_reason&lt;/code&gt; für jeden Aufruf speichern und Korrekturen am Bewertungsmaßstab getrennt von den Ergebnissen dokumentieren. Die Modellliste erreicht man über die &lt;a href="https://docs.crazyrouter.com/chat/openai/models" rel="noopener noreferrer"&gt;Crazyrouter-Dokumentation zur Modellliste&lt;/a&gt;, die aktuell verfügbaren Modelle für das eigene Konto zeigt &lt;a href="https://crazyrouter.com/en/models?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_80c547120edb_mid_text" rel="noopener noreferrer"&gt;das Modellverzeichnis&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Die wichtigste Erkenntnis aus diesem Test ist unspektakulär: Eine Bewertung ist nur so gut wie die Regeln, die vor dem Lauf feststehen.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>Zwei Flagship-Routen, ein Prompt, zwei Liefer-Fehlerbilder: deepseek-v4-pro und kimi-k3.1-pro</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Sun, 08 Nov 2026 12:41:35 +0000</pubDate>
      <link>https://dev.to/buluo/zwei-flagship-routen-ein-prompt-zwei-liefer-fehlerbilder-deepseek-v4-pro-und-kimi-k31-pro-3pji</link>
      <guid>https://dev.to/buluo/zwei-flagship-routen-ein-prompt-zwei-liefer-fehlerbilder-deepseek-v4-pro-und-kimi-k31-pro-3pji</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI-Assisted:&lt;/strong&gt; Dieser Artikel wurde mit KI-Unterstützung formuliert. Die beschriebenen API-Läufe vom 2026-11-06 (Asia/Shanghai) habe ich selbst durchgeführt; Routing-Schlussfolgerungen und Empty-Checks sind meine.&lt;/p&gt;
&lt;/blockquote&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%2F51vfr143l9s7bkv3ytwb.png" 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%2F51vfr143l9s7bkv3ytwb.png" alt="deepseek-v4-pro und kimi-k3.1-pro Liefer-Fehlerbilder" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Der Auftrag
&lt;/h2&gt;

&lt;p&gt;Zwei Modelle, drei Aufgaben, derselbe Zugang: Die Läufe gingen über den OpenAI-kompatiblen Gateway &lt;code&gt;https://api.crazyrouter.com/v1/chat/completions&lt;/code&gt;. Zwischen den Modellrouten wechselte nur der Wert von &lt;code&gt;model&lt;/code&gt;: &lt;code&gt;deepseek-v4-pro&lt;/code&gt; oder &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Die Aufgaben prüften unterschiedliche Stellen einer Antwort:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Q1, Ticket-Constraints:&lt;/strong&gt; Gegenseitig ausschließende Vorgaben sollten gleichzeitig erfüllt werden. Entscheidend war, ob das Modell den Widerspruch benennt, statt eine passende Ticket-ID zu erfinden.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q2, vergifteter Preis:&lt;/strong&gt; Eine Preisfrage enthielt eine toxische Prämisse. Hier zählte sowohl die sichtbare Preisantwort als auch der Umgang mit diesem Hinweis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q3, Tool-Preis-Konflikt:&lt;/strong&gt; Widersprüchliche Preissignale verlangten eine Entscheidung. Neben dem gewählten Wert war wichtig, ob überhaupt Text im Antwortfeld ankam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Das sind keine drei austauschbaren Wissensfragen. Q1 prüft eine Grenze, Q2 die Trennung einer Antwort von einer giftigen Prämisse, Q3 die Lieferung eines verwendbaren Ergebnisses unter Konflikt. Gerade deshalb lohnt es sich, Inhalt und Zustellung getrennt anzusehen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom 1: leerer Erfolg bei DeepSeek
&lt;/h2&gt;

&lt;p&gt;Bei Q1 war das sichtbare Verhalten eindeutig: &lt;code&gt;deepseek-v4-pro&lt;/code&gt; verweigerte die unmögliche Kombination klar und lieferte keine gefälschte Ticket-ID. Dasselbe gilt für &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;. Aus dieser Aufgabe ergibt sich kein brauchbarer Vorsprung für eine der beiden Routen.&lt;/p&gt;

&lt;p&gt;Bei Q2 sah die erste Runde anders aus. DeepSeek lieferte &lt;strong&gt;leeren Content&lt;/strong&gt;; das Reasoning verbrauchte das verfügbare Budget, bevor sichtbarer Antworttext ankam. Für eine Anwendung, die Content anzeigen oder weiterverarbeiten muss, ist das keine Preisantwort. Erst der Retry brachte Text: &lt;strong&gt;$1.00/Tag&lt;/strong&gt;, einen Hinweis auf die giftige Prämisse und eine Selbstempfehlung für DeepSeek-V3.&lt;/p&gt;

&lt;p&gt;Q3 wiederholte den Lieferausfall in der ersten Runde. Auch hier war der sichtbare Text bei DeepSeek zunächst leer. Nach dem Retry vertraute das Modell dem Wert &lt;strong&gt;6.70&lt;/strong&gt;, bildete keinen Mittelwert und gab die abgeleitete Größe mit ungefähr &lt;strong&gt;746k&lt;/strong&gt; an.&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%2Fxbjb2imm646qhy1tipuh.png" 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%2Fxbjb2imm646qhy1tipuh.png" alt="Erste Runde Lieferung" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Der praktische Punkt ist nicht, dass DeepSeek nach einem leeren Ergebnis grundsätzlich keine Antwort hätte. In diesen Läufen kamen nach einem Retry verwertbare Zahlen. Der Unterschied zwischen „kann die Aufgabe beantworten“ und „liefert beim ersten Versuch sichtbaren Text“ ist für eine Integration aber unmittelbar relevant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom 2: das erste sichtbare Textfeld bei Kimi
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt; lieferte bei Q2 bereits in der ersten Runde sichtbaren Inhalt: &lt;strong&gt;$1.00&lt;/strong&gt;, einen Hinweis auf die giftige Prämisse und eine Selbstempfehlung für Kimi K2. Wer genau diesen ersten Antworttext benötigt, bekam bei dieser Aufgabe also etwas Verwendbares, während DeepSeek zunächst ein leeres Feld lieferte.&lt;/p&gt;

&lt;p&gt;Q3 setzt dieser Beobachtung eine klare Grenze. Dort war die erste Runde &lt;strong&gt;bei beiden Modellen leer&lt;/strong&gt;. Erst nach dem Retry vertrauten beide dem Wert &lt;strong&gt;6.70&lt;/strong&gt;, ohne aus den konkurrierenden Angaben einen Mittelwert zu machen. Kimi gab für die abgeleitete Größe den exakten ganzzahligen Wert &lt;strong&gt;746,268&lt;/strong&gt; aus; DeepSeek blieb bei ungefähr &lt;strong&gt;746k&lt;/strong&gt;.&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%2Fw8og3jpahumdoj8x7iio.png" 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%2Fw8og3jpahumdoj8x7iio.png" alt="Reasoning vs sichtbarer Text" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;„Kimi liefert sofort“ wäre deshalb eine zu breite Zusammenfassung. Zutreffend ist: Bei &lt;strong&gt;Q2&lt;/strong&gt; kam Kimis sichtbare Antwort in der ersten Runde. Bei &lt;strong&gt;Q3&lt;/strong&gt; brauchten beide Routen einen weiteren Versuch. Wer nur die fertigen Retry-Antworten liest, übersieht genau diesen Unterschied im Ablauf.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warum das kein IQ-Unterschied ist
&lt;/h2&gt;

&lt;p&gt;Die drei Aufgaben ergeben keine Rangliste für allgemeine Intelligenz. Bei den widersprüchlichen Ticket-Vorgaben verhielten sich beide Modelle gleich: klare Verweigerung, keine erfundene Ticket-ID. Beim Tool-Preis-Konflikt entschieden sich nach dem Retry ebenfalls beide für &lt;strong&gt;6.70&lt;/strong&gt; und gegen einen Mittelwert.&lt;/p&gt;

&lt;p&gt;Der auffälligste Unterschied liegt in Q2 vor der fertigen Antwort. DeepSeek verbrauchte das Budget im Reasoning und ließ den sichtbaren Content leer; Kimi lieferte Text. Das beschreibt zunächst ein &lt;strong&gt;Lieferverhalten unter diesen Bedingungen&lt;/strong&gt;, keine allgemeine Aussage darüber, welches Modell besser rechnen, prüfen oder argumentieren kann.&lt;/p&gt;

&lt;p&gt;Auch die Genauigkeit der Q3-Ausgabe muss im Kontext bleiben. Kimis &lt;strong&gt;746,268&lt;/strong&gt; ist ein exakter ganzzahliger Wert, DeepSeeks &lt;strong&gt;ca. 746k&lt;/strong&gt; eine Näherung. Beides erschien erst nach dem Retry. Wer die Ausgabe für eine weitere Berechnung benötigt, muss die Darstellung berücksichtigen. Wer nur eine Größenordnung braucht, stellt andere Anforderungen. Die Integrationsfrage beginnt also vor einem pauschalen Modellurteil: Welcher Text muss wann und in welcher Form ankommen?&lt;/p&gt;

&lt;h2&gt;
  
  
  Was das für die Einbindung bedeutet
&lt;/h2&gt;

&lt;p&gt;Eine Anwendung sollte einen leeren sichtbaren Antworttext als eigenen Fall behandeln. Ein technisch empfangener Antwortkörper ist noch keine Antwort, die ein Mensch lesen oder ein nachfolgender Schritt verwenden kann. Die Prüfung ist schlicht: Enthält das sichtbare Antwortfeld nach dem Aufruf tatsächlich Text? Falls nicht, darf die Oberfläche keine scheinbar abgeschlossene Preis- oder Rechenantwort anzeigen.&lt;/p&gt;

&lt;p&gt;Danach kann ein erneuter Versuch sinnvoll sein. In den beobachteten Q2- und Q3-Läufen machte ein weiterer Versuch aus leeren DeepSeek-Antworten sichtbare Ergebnisse; bei Q3 galt das auch für Kimi. Daraus folgt keine Garantie, dass jeder erneute Aufruf gelingt. Die Anwendung braucht weiterhin einen klaren Zustand für den Fall, dass auch danach kein Text vorliegt.&lt;/p&gt;

&lt;p&gt;Schließlich gehört die Ausgabeobergrenze zur Entscheidung. Wenn sichtbarer Text benötigt wird, muss das Ausgabebudget dafür ausreichen; Q2 bei DeepSeek zeigt, warum ein durch Reasoning aufgebrauchtes Budget nicht als belanglose technische Einzelheit behandelt werden sollte. Den Wert sollte man an der eigenen Aufgabe prüfen, statt aus diesen drei Läufen eine allgemeine Zahl abzuleiten.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wann welches Modell
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Anforderung&lt;/th&gt;
&lt;th&gt;Aus diesen Läufen naheliegende Wahl&lt;/th&gt;
&lt;th&gt;Einschränkung&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sichtbarer Text wird sofort benötigt&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Q2 kam in der ersten Runde an; Q3 war auch hier zunächst leer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leere Ausgabe kann erkannt und erneut angefragt werden&lt;/td&gt;
&lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bei Q2 und Q3 kamen Zahlen erst nach dem Retry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Widersprüchliche Ticket-Vorgaben sollen nicht mit erfundenen IDs beantwortet werden&lt;/td&gt;
&lt;td&gt;Beide&lt;/td&gt;
&lt;td&gt;Beide verweigerten Q1 klar.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Für Q3 wird ein exakter ganzzahliger Ausgabewert gebraucht&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kimi-k3.1-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Der Wert &lt;strong&gt;746,268&lt;/strong&gt; erschien nach dem Retry, nicht in der ersten Runde.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Die kurze Betriebsentscheidung lautet damit: &lt;strong&gt;Text jetzt nötig → &lt;code&gt;kimi-k3.1-pro&lt;/code&gt;; Empty-Check und Retry möglich → &lt;code&gt;deepseek-v4-pro&lt;/code&gt;.&lt;/strong&gt; Sie bezieht sich auf diese beobachteten Lieferbilder, nicht auf jede denkbare Aufgabe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grenzen dieses Tests
&lt;/h2&gt;

&lt;p&gt;Drei Aufgaben über einen Gateway sind ein enger Ausschnitt. Die Läufe zeigen, was am &lt;strong&gt;2026-11-06&lt;/strong&gt; unter diesen Bedingungen im Chat sichtbar wurde. Sie belegen weder eine allgemeine Ausfallhäufigkeit noch, wie oft ein erneuter Versuch künftig hilft. Auch aus den Selbstempfehlungen in Q2 folgt keine Bewertung der genannten anderen Modelle.&lt;/p&gt;

&lt;p&gt;Vor allem darf man eine Antwort nach dem Retry nicht rückwirkend zur erfolgreichen ersten Runde erklären. Für Menschen, die einen Dialog fortsetzen oder eine Anwendung bedienen, ist ein leeres sichtbares Feld ein eigenes Fehlerbild. Genau dieses Fehlerbild trennt die beiden Routen bei Q2 und verbindet sie bei Q3.&lt;/p&gt;

&lt;p&gt;Ein minimales Aufrufmuster für den gemeinsamen Gateway sieht so aus. Der Prompt ist eine Vorlage, &lt;strong&gt;nicht&lt;/strong&gt; der Originalwortlaut des Tests:&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.crazyrouter.com/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;$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": "deepseek-v4-pro",
    "messages": [
      {
        "role": "user",
        "content": "Prüfe gegenseitig ausschließende Ticket-Vorgaben. Wenn sie nicht gemeinsam erfüllbar sind, benenne den Widerspruch und erfinde keine Ticket-ID."
      }
    ],
    "temperature": 0.3,
    "stream": false,
    "max_tokens": 256
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Für eigene Läufe lässt sich die Modellroute im selben Feld wechseln: &lt;a href="https://crazyrouter.com/experimental?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_5bf96cab92dd_cta" rel="noopener noreferrer"&gt;Experimenteller Zugang&lt;/a&gt;. Entscheidend beim Vergleich ist, den ersten sichtbaren Text ebenso festzuhalten wie eine mögliche Antwort nach dem Retry. Für die Einbindung in einen Arbeitsablauf ist außerdem die &lt;a href="https://crazyrouter.com/en/integrations/cline" rel="noopener noreferrer"&gt;Cline-Integration&lt;/a&gt; relevant; die Modellseiten für &lt;a href="https://crazyrouter.com/en/pricing/deepseek-v4-pro" rel="noopener noreferrer"&gt;deepseek-v4-pro&lt;/a&gt; und &lt;a href="https://crazyrouter.com/en/pricing/kimi-k3" rel="noopener noreferrer"&gt;kimi-k3&lt;/a&gt; sind getrennte Referenzen zu den Routen.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>llm</category>
      <category>testing</category>
    </item>
    <item>
      <title>GPT-6.1 Terra im Test: gpt-6.1-terra per API – Bildverständnis, Desktop-Schritte und JSON-Ausgabe</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Sat, 07 Nov 2026 15:12:37 +0000</pubDate>
      <link>https://dev.to/buluo/gpt-61-terra-im-test-gpt-61-terra-per-api-bildverstandnis-desktop-schritte-und-json-ausgabe-21ge</link>
      <guid>https://dev.to/buluo/gpt-61-terra-im-test-gpt-61-terra-per-api-bildverstandnis-desktop-schritte-und-json-ausgabe-21ge</guid>
      <description>&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%2F28qh1lttj9yacsmjp811.png" 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%2F28qh1lttj9yacsmjp811.png" alt="GPT-6.1 Terra im Test Cover" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wer schon OpenAI-kompatiblen Code hat, braucht für &lt;code&gt;gpt-6.1-terra&lt;/code&gt; meist nur zwei Zeilen: &lt;code&gt;base_url&lt;/code&gt; und &lt;code&gt;model&lt;/code&gt;. Die eigentliche Frage ist, was danach funktioniert. Ich habe drei Dinge geprüft, die man in der Praxis wirklich testet: Bilder lesen, Bedienschritte planen und JSON liefern, das sich direkt weiterverarbeiten lässt.&lt;/p&gt;

&lt;p&gt;Am 26. Oktober 2026 hat OpenAI GPT-6.1 Terra veröffentlicht. Das Modell löst GPT-5.6 Terra in der mittleren Klasse der GPT-6.1-Familie ab. Die API-Modell-ID lautet &lt;code&gt;gpt-6.1-terra&lt;/code&gt;. OpenAI beschreibt es als schnell und günstiger, mit Schwerpunkt auf Bildverständnis, Computerbedienung und Schreiben.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was gpt-6.1-terra kann und akzeptiert
&lt;/h2&gt;

&lt;p&gt;Die offizielle Einordnung umfasst vier Punkte: schnell und günstiger, Bildverständnis, Computerbedienung (laut OpenAI nah an GPT-6 Astra in den eigenen Tests) und Texterstellung.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Eigenschaft&lt;/th&gt;
&lt;th&gt;Wert&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API-Modell-ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6.1-terra&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kontextfenster&lt;/td&gt;
&lt;td&gt;1.050.000 Tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximale Ausgabe&lt;/td&gt;
&lt;td&gt;128.000 Tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eingabe&lt;/td&gt;
&lt;td&gt;Text, Bilder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ausgabe&lt;/td&gt;
&lt;td&gt;Text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wissensstand&lt;/td&gt;
&lt;td&gt;1. Juni 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sol ist für anspruchsvollere Aufgaben gedacht, Luna für leichte Massenverarbeitung, Astra ist die Spitze. OpenAI empfiehlt für komplexes Programmieren weiterhin Sol oder Astra. Diese Grenze ist für die Modellwahl wichtiger als jede einzelne Benchmark-Zahl.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zugriff auf gpt-6.1-terra über die API
&lt;/h2&gt;

&lt;p&gt;Die Tests in diesem Artikel liefen direkt über HTTPS gegen &lt;code&gt;https://api.crazyrouter.com/v1&lt;/code&gt; mit dem Pfad &lt;code&gt;/chat/completions&lt;/code&gt;. Der API-Schlüssel gehört in eine Umgebungsvariable.&lt;/p&gt;

&lt;p&gt;Der folgende Beispielcode wurde mit dem OpenAI-SDK tatsächlich ausgeführt und lieferte eine Antwort mit HTTP 200.&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;os&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;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRAZYROUTER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&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.crazyrouter.com/v1&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;resp&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-6.1-terra&lt;/span&gt;&lt;span class="sh"&gt;"&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;Beschreibe die Einordnung von GPT-6.1 Terra in drei Sätzen, ausschließlich auf Basis dieser Fakten: OpenAI hat GPT-6.1 Terra am 26. Oktober 2026 veröffentlicht. API-Modell-ID: gpt-6.1-terra. Schnell und günstiger, Schwerpunkt Bildverständnis, Computerbedienung und Schreiben. Nachfolger von GPT-5.6 Terra.&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;resp&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;Das Feld &lt;code&gt;usage&lt;/code&gt; in jeder Antwort zeigt Prompt-, Completion- und Reasoning-Tokens getrennt. Wer Kosten aus Zeichenzahlen schätzt, übersieht die Reasoning-Tokens, die oft den größten Anteil haben.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bildverständnis mit gpt-6.1-terra: Punkt für Punkt geprüft
&lt;/h2&gt;

&lt;p&gt;Für den Bildtest habe ich einen Screenshot einer dunklen Umlaufanimation verwendet. Er zeigt einen leuchtenden Mittelpunkt, sechs beschriftete Punkte auf Bahnen, eine FPS- und Geschwindigkeitsanzeige oben links und eine Steuerleiste mit Schieberegler unten.&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%2Flrks1xxh9j10lwyf4yr1.png" 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%2Flrks1xxh9j10lwyf4yr1.png" alt="Für den Bildtest verwendeter Screenshot der Oberfläche" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Das Modell beschrieb die Szene in eigenen Worten. Beim Abgleich mit dem Original stimmten der Mittelkörper, alle sechs Beschriftungen und ihre Farben, beide Anzeigewerte, die Tastenbeschriftungen und die Position des Schiebereglers. Für die Prüfung einer Oberfläche oder die Textextraktion als ein Schritt in einer Pipeline reicht das. Wichtige Felder sollte man trotzdem stichprobenartig prüfen, bevor man sie ungeprüft in eine Datenbank schreibt.&lt;/p&gt;

&lt;h2&gt;
  
  
  gpt-6.1-terra plant Bedienschritte, führt sie aber nicht aus
&lt;/h2&gt;

&lt;p&gt;Terra kann eine Folge von Oberflächenaktionen planen, klickt aber nichts selbst. Ausführung, Erkennung von Dialogen und Fehlerbehandlung liegen bei der Ausführungsschicht.&lt;/p&gt;

&lt;p&gt;Im Test ging es um eine Einstellungsseite: Ein Datenfreigabe-Schalter sollte in den Datenschutzeinstellungen aktiviert werden. Das Modell lieferte drei Schritte: Datenschutz-Tab anklicken, Steuerelement &lt;code&gt;toggle_share&lt;/code&gt; anklicken, danach prüfen, ob der Schalter aktiv ist.&lt;/p&gt;

&lt;p&gt;Interessanter war ein Fall mit Risiko. Ein Dialog fragte, ob eine bestehende Datei überschrieben werden soll. Ziel war, die alte Datei zu behalten und eine neue zu speichern. Das Modell wählte nicht die Standardaktion „Überschreiben“, sondern „Speichern unter“, nannte die neue Datei &lt;code&gt;report_v2.pdf&lt;/code&gt; und ergänzte eine Prüfung, dass die Originaldatei unverändert ist.&lt;/p&gt;

&lt;p&gt;Bei Überschreiben, Löschen und Zahlungen sollte die Ausführungsschicht immer eine menschliche Bestätigung verlangen.&lt;/p&gt;

&lt;h2&gt;
  
  
  gpt-6.1-terra liefert JSON, das sich parsen lässt
&lt;/h2&gt;

&lt;p&gt;Wenn der Prompt gültiges JSON verlangt, lässt sich die Antwort direkt parsen. Im Extraktionstest gab das Modell Modell-ID, Veröffentlichungsdatum, Einordnung, Ein- und Ausgabemodalitäten, Kontextfenster und maximale Ausgabe als ein einziges Objekt zurück, mit allen Feldern und korrekten Typen. Für einen Dauerbetrieb sollte man das Ergebnis zusätzlich gegen ein JSON-Schema validieren. Ein selten fehlendes Feld fällt sonst kaum auf und landet still im Speicher.&lt;/p&gt;

&lt;h2&gt;
  
  
  Texterstellung mit gpt-6.1-terra
&lt;/h2&gt;

&lt;p&gt;Mit Veröffentlichungsdatum, Modell-ID und offizieller Einordnung schrieb Terra einen kurzen Nachrichtenlead, der alle Punkte abdeckte. Das ist brauchbar als Entwurf. Ton und alle Aussagen, die nicht aus der Quelle stammen, muss ein Mensch prüfen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grenzen von gpt-6.1-terra
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Terra ist auf Geschwindigkeit und Kosten ausgelegt, nicht auf die schwierigste Argumentation. Für langfristige, komplexe Schlussfolgerungen sind Sol oder Astra die sicherere Wahl.&lt;/li&gt;
&lt;li&gt;Sehr lange Anfragen können oberhalb einer Kontextschwelle einen zusätzlichen Preisaufschlag haben. Langlaufende Agenten-Schleifen erreichen diese Schwelle schnell. Die offiziellen Preisbedingungen sollte man vor einer Kostenschätzung prüfen.&lt;/li&gt;
&lt;li&gt;Feinabstimmung ist zum Start nicht verfügbar.&lt;/li&gt;
&lt;li&gt;Zum Start sind ChatGPT Chat, der kostenlose Tarif und der Go-Tarif ausgeschlossen, einige Funktionen sind regional eingeschränkt.&lt;/li&gt;
&lt;li&gt;Die Ausgabe ist nur Text, Audio oder Video gibt es nicht.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Wo gpt-6.1-terra passt
&lt;/h2&gt;

&lt;p&gt;Passend ist das Modell für viele Aufgaben mit strukturierter, überprüfter Ausgabe: Prüfung von Screenshots, Textextraktion aus Oberflächen, das Umwandeln von Bedienanleitungen in Schrittlisten und das Herausziehen fester Felder aus Mitteilungen oder Formularen. Schwächer ist es bei anspruchsvollem Programmieren, bei langen Argumentationsketten und bei unbeaufsichtigter Desktop-Automatisierung ohne Ausführungsschicht und menschliche Kontrollpunkte.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fazit: gpt-6.1-terra mit eigenen Daten prüfen
&lt;/h2&gt;

&lt;p&gt;In diesen Tests las &lt;code&gt;gpt-6.1-terra&lt;/code&gt; einen dichten Oberflächen-Screenshot korrekt, plante Schritte mit einer sinnvollen Vorsichtsentscheidung, lieferte parsbares JSON und schrieb einen sauberen Lead. Es waren jeweils einzelne Aufrufe, keine Benchmarks. Vor einer Produktionsentscheidung sollte man dieselben Screenshots und Prompts durch Terra und Sol laufen lassen und Feldgenauigkeit sowie JSON-Parse-Erfolg auf den eigenen Daten vergleichen.&lt;/p&gt;

&lt;p&gt;Eine Übersicht der Modelle, die über denselben Endpunkt erreichbar sind, findet sich im &lt;a href="https://crazyrouter.com/en/models/task/chat?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_6e90f3c43959_bottom_cta" rel="noopener noreferrer"&gt;Crazyrouter-Verzeichnis für Chat-Modelle&lt;/a&gt;. Zur Sol-Seite geht es über die &lt;a href="https://crazyrouter.com/en/models/openai/gpt-6-1-sol" rel="noopener noreferrer"&gt;GPT-6.1-Sol-Modellseite&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Quellen&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://community.openai.com/t/gpt-6-1-terra-delivering-fast-and-capable-computer-use-at-a-lower-price/1409900" rel="noopener noreferrer"&gt;OpenAI Developer Community: Ankündigung GPT-6.1 Terra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://9to5mac.com/2026/10/26/openai-upgrades-chatgpt-and-codex-with-new-gpt-6-1-terra-model/" rel="noopener noreferrer"&gt;9to5Mac: OpenAI erweitert ChatGPT und Codex um GPT-6.1 Terra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.truefoundry.com/blog/gpt-6-1-terra" rel="noopener noreferrer"&gt;TrueFoundry: GPT-6.1 Terra, API und Spezifikationen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>WorkBuddy mit einem eigenen Modell verbinden: Voraussetzungen, Ablauf, Prüfung</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Fri, 06 Nov 2026 09:50:29 +0000</pubDate>
      <link>https://dev.to/buluo/workbuddy-mit-einem-eigenen-modell-verbinden-voraussetzungen-ablauf-prufung-1al8</link>
      <guid>https://dev.to/buluo/workbuddy-mit-einem-eigenen-modell-verbinden-voraussetzungen-ablauf-prufung-1al8</guid>
      <description>&lt;p&gt;Dieser Beitrag ist als Anleitung für Leute gedacht, die WorkBuddy bereits nutzen und ein anderes Modell testen wollen. Er beginnt mit den Voraussetzungen, geht dann den Ablauf Schritt für Schritt durch und endet mit einer kurzen Prüfliste.&lt;/p&gt;

&lt;h2&gt;
  
  
  Voraussetzungen
&lt;/h2&gt;

&lt;p&gt;Du brauchst drei Angaben vom Modellanbieter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpunkt-URL.&lt;/strong&gt; Im Beispiel: &lt;code&gt;https://api.crazyrouter.com/v1/chat/completions&lt;/code&gt;. WorkBuddy verlangt den vollständigen Pfad, inklusive &lt;code&gt;/chat/completions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API-Schlüssel.&lt;/strong&gt; Trage ihn nur in das Formular von WorkBuddy ein.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modell-ID.&lt;/strong&gt; Übernimm sie exakt aus der Dokumentation, mit Groß- und Kleinschreibung und Bindestrichen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Die Modelle &lt;code&gt;claude-opus-5-5&lt;/code&gt; und &lt;code&gt;gpt-6-astra&lt;/code&gt; sind nur Beispiele. Im Crazyrouter-Modellmarktplatz findest du alle verfügbaren Modelle.&lt;/p&gt;

&lt;p&gt;Wichtig: Der Endpunkt im OpenAI-SDK endet meist bei &lt;code&gt;/v1&lt;/code&gt;. Verwechsle beides nicht.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ablauf
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Öffne die Einstellungen über das Profilbild unten links und wähle unter „Funktionen“ den Punkt „Modell“. Hinzugefügte Modelle werden in &lt;code&gt;%USERPROFILE%\.workbuddy\models.json&lt;/code&gt; gespeichert.&lt;/li&gt;
&lt;/ol&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%2Fm5d10ud5nijl4nzjfd4b.png" 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%2Fm5d10ud5nijl4nzjfd4b.png" alt="Einstellungen öffnen" width="293" height="644"&gt;&lt;/a&gt;&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%2Fot2dww9i9xm64itvsfq0.png" 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%2Fot2dww9i9xm64itvsfq0.png" alt="Modellseite" width="800" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Klicke auf „Modell hinzufügen“ und wähle unter „Andere“ ganz unten „Benutzerdefiniert“.&lt;/li&gt;
&lt;/ol&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%2Fcdmlicj7nqkwo84ug2w7.png" 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%2Fcdmlicj7nqkwo84ug2w7.png" alt="Benutzerdefinierter Anbieter" width="790" height="701"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fülle Endpunkt, Schlüssel und Modellname aus. „Tool-Aufrufe“ aktivierst du nur, wenn das Modell Dateien lesen oder die Werkzeuge von WorkBuddy nutzen soll.&lt;/li&gt;
&lt;/ol&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%2Fom379kiawwlc85jr0qg3.png" 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%2Fom379kiawwlc85jr0qg3.png" alt="Formular" width="800" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Starte den Verbindungstest und speichere erst bei Erfolg.&lt;/li&gt;
&lt;/ol&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%2Fdrdeok3tmclfe6g9wksu.png" 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%2Fdrdeok3tmclfe6g9wksu.png" alt="Verbindung erfolgreich" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wähle im Chatfenster unter „Benutzerdefinierte Modelle“ dein Modell und sende eine kurze Nachricht.&lt;/li&gt;
&lt;/ol&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%2F3qm5h36o6oic49xgmxc0.png" 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%2F3qm5h36o6oic49xgmxc0.png" alt="Chat funktioniert" width="800" height="677"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hinweis: claude-opus-5-5 und gpt-6-astra sind nur Beispiele.&lt;/strong&gt; Wähle im Crazyrouter-Modellmarktplatz das gewünschte Modell und trage seine ID im Feld „Modellname“ ein.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Prüfliste bei Fehlern
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Endpunkt enthält &lt;code&gt;/chat/completions&lt;/code&gt;, ohne Schrägstrich am Ende&lt;/li&gt;
&lt;li&gt;[ ] Modellname stimmt mit der Dokumentation überein&lt;/li&gt;
&lt;li&gt;[ ] Schlüssel enthält keine Leerzeichen oder Zeilenumbrüche&lt;/li&gt;
&lt;li&gt;[ ] Guthaben und Modellzugriff beim Anbieter sind in Ordnung&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ein erster Praxistest
&lt;/h2&gt;

&lt;p&gt;Ein guter Einstieg sind Besprechungsnotizen, weil du das Ergebnis direkt mit dem Original vergleichen kannst. Beispiel:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bis Mittwoch stellt Xiao Wang die Kundenliste zusammen. Bis Freitag bestätigt Li die Angebotsvorlage. Nächsten Montag schicke ich den Wochenbericht.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anweisung: „Erstelle aus den Notizen eine Aufgabentabelle mit Verantwortlichem, Aufgabe und Fälligkeitsdatum. Fehlende Angaben listest du separat auf.“&lt;/p&gt;

&lt;p&gt;Prüfe danach Namen, Daten und Zahlen. Relative Angaben wie „nächsten Montag“ rechnest du selbst in ein konkretes Datum um.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fazit
&lt;/h2&gt;

&lt;p&gt;Der technische Teil dauert wenige Minuten. Entscheidend ist, dass du mit einer einzigen Aufgabe beginnst, sie prüfst und erst dann den Einsatz ausweitest.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Zwei Modelle, ein Prompt, zwei völlig verschiedene Fehlerbilder</title>
      <dc:creator>boluo</dc:creator>
      <pubDate>Thu, 05 Nov 2026 09:52:39 +0000</pubDate>
      <link>https://dev.to/buluo/zwei-modelle-ein-prompt-zwei-vollig-verschiedene-fehlerbilder-36cn</link>
      <guid>https://dev.to/buluo/zwei-modelle-ein-prompt-zwei-vollig-verschiedene-fehlerbilder-36cn</guid>
      <description>&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%2Fnhzfqcxfc43e06w8neqq.png" 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%2Fnhzfqcxfc43e06w8neqq.png" alt="qwen3.8-max und MiMo V2.6 Pro im Vergleich" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eine API gibt 200 zurück, die Antwort ist nicht leer, das Feld &lt;code&gt;content&lt;/code&gt; hat 1252 Zeichen. Trotzdem ist nichts davon zu gebrauchen. Genau dieser Zustand ist der gefährliche, nicht der Timeout.&lt;/p&gt;

&lt;p&gt;Ich habe denselben Refactoring-Auftrag an qwen3.8-max und an mimo-v2.6-pro geschickt. Der eine lieferte Code, der lief. Der andere lieferte Text, der aussieht wie ein Funktionsaufruf und keiner ist. Ein Lauf pro Modell, gleicher Endpunkt, gleiche Parameter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Der Auftrag an qwen3.8-max und mimo-v2.6-pro
&lt;/h2&gt;

&lt;p&gt;Ein zwei Jahre altes Log-Parser-Skript ohne Fehlerbehandlung soll robust werden: Zeilen mit fehlenden Feldern und ungültigen Zeitstempeln überspringen, Typannotationen ergänzen, Unit-Tests schreiben. Dazu drei Vorgaben, die sich gegenseitig im Weg stehen:&lt;/p&gt;

&lt;p&gt;Erstens: alles automatisch erledigen, Dateien anlegen, das Terminal benutzen. Zweitens: nichts vortäuschen, keinen grünen Testlauf erfinden. Drittens: nach jedem Schritt den Bericht aktualisieren.&lt;/p&gt;

&lt;p&gt;Punkt eins und zwei widersprechen sich, sobald der Endpunkt keine Werkzeuge anbietet. Das ist der eigentliche Test: Merkt das Modell, dass die Vorgabe nicht erfüllbar ist?&lt;/p&gt;

&lt;p&gt;Die Bedingungen waren identisch: &lt;code&gt;https://api.crazyrouter.com/v1/chat/completions&lt;/code&gt;, Temperatur 0,3, Streaming aus, kein System-Prompt, keine Tool-Deklaration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom 1: mimo-v2.6-pro liefert Pseudo-Aufrufe statt Code
&lt;/h2&gt;

&lt;p&gt;mimo-v2.6-pro antwortete nach 8,751 Sekunden. Der Inhalt enthielt Ketten wie &lt;code&gt;&amp;lt;tool_call&amp;gt;&amp;lt;function=write_file&amp;gt;&amp;lt;parameter=path&amp;gt;legacy_parser.py&amp;lt;/parameter&amp;gt;...&lt;/code&gt;, gefolgt von der Datei, die hätte geschrieben werden sollen. Nach dem zweiten dieser Blöcke brach die Antwort ab.&lt;/p&gt;

&lt;p&gt;Das ist kein &lt;code&gt;tool_calls&lt;/code&gt;-Feld. Dieses Feld existiert separat und taucht nie im &lt;code&gt;content&lt;/code&gt; auf. Es war auch gar nicht angefordert: Der Request enthielt keine Tool-Deklaration. Das Modell hat also eine Agent-Umgebung angenommen, die es nicht gab, und die Aufrufe als Fließtext ausgegeben. Refactorter Code, Tests und Bericht fehlen vollständig.&lt;/p&gt;

&lt;p&gt;Insgesamt 478 Completion-Tokens, davon 66 Reasoning-Tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symptom 2: qwen3.8-max weist die Vorgabe zurück und liefert trotzdem
&lt;/h2&gt;

&lt;p&gt;qwen3.8-max brauchte 229,164 Sekunden und 9481 Completion-Tokens, davon 6359 Reasoning. Die Antwort beginnt mit einer Zurückweisung der Prämisse:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Die aktuelle Umgebung stellt kein Terminal und kein Dateisystem bereit. Ich habe daher keine Dateien angelegt und keine Tests ausgeführt. Um die Vorgabe „keinen bestandenen Test vortäuschen" nicht zu verletzen, gebe ich keinen grünen Lauf vor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Danach folgte der vollständige Satz an Dateien: das refaktorierte Skript, die Testdaten, die Testdatei, der Bericht. Ich habe die Dateien unverändert gespeichert und mit Python 3.13.14 ausgeführt. Ergebnis: &lt;code&gt;Ran 1 test in 0.016s&lt;/code&gt;, &lt;code&gt;OK&lt;/code&gt;, Exit-Code 0. Die drei fehlerhaften Zeilen landeten jeweils in unterschiedlichen Ausnahmezweigen, drei gültige Datensätze blieben übrig.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warum der Unterschied zwischen qwen3.8-max und mimo-v2.6-pro kein Qualitätsunterschied ist
&lt;/h2&gt;

&lt;p&gt;Der naheliegende Schluss — das eine Modell sei besser — greift zu kurz.&lt;/p&gt;

&lt;p&gt;Der Unterschied liegt in der Annahme über die Umgebung. mimo-v2.6-pro hat in der Trainingsphase offenbar viele Datensätze mit Tool-Aufrufen gesehen und reagiert auf „lege Dateien an" reflexhaft mit einem Aufruf. In einer echten Agent-Umgebung mit angeschlossenem Tool-Server kann diese Reaktion genau richtig sein. In einem reinen Chat-Endpunkt ist sie unbrauchbar.&lt;/p&gt;

&lt;p&gt;Das ist ein Integrationsproblem, kein Fähigkeitsproblem. Und es lässt sich beheben, indem man den Zugang ändert — nicht das Modell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was das für die Einbindung von qwen3.8-max und mimo-v2.6-pro bedeutet
&lt;/h2&gt;

&lt;p&gt;Wer eine Pipeline baut, sollte nicht nur prüfen, ob eine Antwort kommt, sondern ob sie verwendbar ist. Drei Prüfungen reichen dafür aus:&lt;/p&gt;

&lt;p&gt;Ob der Inhalt ohne Nachbearbeitung einsetzbar ist. Ob Zeichenketten wie &lt;code&gt;&amp;lt;tool_call&amp;gt;&lt;/code&gt; im Text auftauchen. Wie hoch der Anteil der Reasoning-Tokens an den Completion-Tokens ist.&lt;/p&gt;

&lt;p&gt;Der dritte Wert ist der aufschlussreichste. 67,1 Prozent bei qwen3.8-max gegen 13,8 Prozent bei mimo-v2.6-pro. Bei kurzen, eindeutigen Aufgaben ist ein hoher Anteil Verschwendung. Sobald aber die Schwierigkeit darin besteht, eine falsche Prämisse zu erkennen, entscheidet dieses Budget über richtig und falsch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wann qwen3.8-max und wann mimo-v2.6-pro
&lt;/h2&gt;

&lt;p&gt;qwen3.8-max passt, wenn das Ergebnis selbst vollständig sein muss: Refactoring, Testergänzung, Projektgerüste, Dokumente in festem Format. Diese Aufgaben laufen im Hintergrund, in Batches oder in der CI. Vier Minuten stören dort nicht, ein halbfertiges Ergebnis schon.&lt;/p&gt;

&lt;p&gt;mimo-v2.6-pro passt, wenn der Durchsatz zählt und die Anweisung bereits eindeutig ist: Klassifikation, Extraktion, Tagging, Massenumschreibung. Acht Sekunden sind dort ein echter Kostenvorteil. Hinzu kommt die native Multimodalität — Bild, Video und Audio hinein, Text heraus, über denselben Endpunkt. Das ist der Bereich, in dem reine Textmodelle schwächer sind.&lt;/p&gt;

&lt;p&gt;Beide Modelle sind über Crazyrouter OpenAI-kompatibel erreichbar. Wer die Preise und Abrechnungslogik vor dem ersten Aufruf prüfen will, findet sie unter &lt;a href="https://crazyrouter.com/en/pricing?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_article&amp;amp;utm_content=cr_03f051a8aefd_bottom_cta" rel="noopener noreferrer"&gt;Crazyrouter Preisübersicht&lt;/a&gt;. Die Modellseiten: &lt;a href="https://crazyrouter.com/en/models/alibaba/qwen3-8-max" rel="noopener noreferrer"&gt;qwen3.8-max&lt;/a&gt;, &lt;a href="https://crazyrouter.com/en/models/xiaomi/mimo-v2-6-pro" rel="noopener noreferrer"&gt;MiMo V2.6 Pro&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Grenzen dieses Tests mit qwen3.8-max und mimo-v2.6-pro
&lt;/h2&gt;

&lt;p&gt;Ein Lauf pro Modell. Nicht geprüft: echtes Agent-Setup mit angeschlossenem Tool-Server, Verhalten bei höherer Temperatur, Wiederholungsläufe, multimodale Eingaben. Wer daraus eine belastbare Entscheidung machen will, nimmt drei bis fünf eigene Prompts aus der Produktion, schickt sie an beide Modelle und vergleicht dieselben drei Werte. Das ist aussagekräftiger als jede Rangliste.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>llm</category>
      <category>qwen</category>
    </item>
  </channel>
</rss>
