<?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: Jemmmm</title>
    <description>The latest articles on DEV Community by Jemmmm (@metaviiii).</description>
    <link>https://dev.to/metaviiii</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%2F4017263%2F0937e671-ead4-4f32-95cb-b1e92fc6e7b3.png</url>
      <title>DEV Community: Jemmmm</title>
      <link>https://dev.to/metaviiii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/metaviiii"/>
    <language>en</language>
    <item>
      <title>GLM-5.2 vs Claude Fable 5: ngân sách đầu ra, reasoning_tokens và mức discount 0.8</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Mon, 06 Jul 2026 16:11:30 +0000</pubDate>
      <link>https://dev.to/metaviiii/glm-52-vs-claude-fable-5-ngan-sach-dau-ra-reasoningtokens-va-muc-discount-08-1i3h</link>
      <guid>https://dev.to/metaviiii/glm-52-vs-claude-fable-5-ngan-sach-dau-ra-reasoningtokens-va-muc-discount-08-1i3h</guid>
      <description>&lt;h1&gt;
  
  
  GLM-5.2 vs Claude Fable 5: khác biệt lớn nằm ở ngân sách đầu ra
&lt;/h1&gt;

&lt;p&gt;Đây không phải là một bảng xếp hạng mô hình chung chung. Trong lần gọi API thực tế này, GLM-5.2 giải đúng các bài suy luận sau khi tăng ngân sách đầu ra, nhưng ở ngân sách thấp phần nội dung nhìn thấy có thể rỗng. Claude Fable 5 ổn định hơn với ngân sách thấp và tốt hơn trong bài tạo HTML animation dài.&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%2F5x6vgkqdlq09ogmnzl4s.webp" 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%2F5x6vgkqdlq09ogmnzl4s.webp" alt="GLM-5.2 vs Claude Fable 5 benchmark" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao bài test này đáng chú ý
&lt;/h2&gt;

&lt;p&gt;The test used the Crazyrouter OpenAI-compatible API rather than a chat UI. That matters because the result was not judged only by prose quality. Each response was checked with operational metadata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Models: glm-5.2, claude-fable-5
temperature: 0.2
Test date: 2026-07-06
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important fields were &lt;code&gt;max_tokens&lt;/code&gt;, &lt;code&gt;completion_tokens&lt;/code&gt;, &lt;code&gt;reasoning_tokens&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt;, visible content length, whether the generated HTML was closed, and whether the animation actually moved in a browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thiết kế bài test
&lt;/h2&gt;

&lt;p&gt;The benchmark deliberately mixed three task types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Reference result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MATH-003&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;State-based expectation reasoning&lt;/td&gt;
&lt;td&gt;Expected flips until HH = &lt;code&gt;6&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PHYS-003&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Momentum plus energy accounting&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;V = 3.0 m/s&lt;/code&gt;, &lt;code&gt;x ≈ 0.148 m&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CODE-003-ANIM&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Long runnable artifact generation&lt;/td&gt;
&lt;td&gt;Complete 800x500 Canvas animation HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first two tasks measured reasoning. The third task measured whether a model can produce a complete artifact, not merely a convincing partial code block.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết quả quan sát
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;&lt;code&gt;glm-5.2&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;claude-fable-5&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Math, original budget&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=length&lt;/code&gt;, &lt;code&gt;completion_tokens=1601&lt;/code&gt;, &lt;code&gt;reasoning_tokens=1600&lt;/code&gt;, visible body empty&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=stop&lt;/code&gt;, complete and correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Math, retest&lt;/td&gt;
&lt;td&gt;Correct after &lt;code&gt;max_tokens=3200&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Retest not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics, original budget&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=length&lt;/code&gt;, visible body empty&lt;/td&gt;
&lt;td&gt;Complete and correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics, retest&lt;/td&gt;
&lt;td&gt;Correct after &lt;code&gt;max_tokens=8000&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Retest not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation, original budget&lt;/td&gt;
&lt;td&gt;Empty visible HTML at &lt;code&gt;max_tokens=3200&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Partial HTML, truncated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation, retest&lt;/td&gt;
&lt;td&gt;Still truncated at &lt;code&gt;max_tokens=8000&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Complete HTML; browser validation passed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most important observation is that GLM-5.2 was not failing the reasoning itself. In the math and physics tasks, it produced correct answers after a larger output budget. The problem was visibility and completion: a request could return HTTP 200 while the user-facing content was empty or incomplete.&lt;/p&gt;

&lt;p&gt;For the long Canvas animation, the difference was sharper. GLM-5.2 produced a visible HTML fragment at &lt;code&gt;max_tokens=8000&lt;/code&gt;, but it stopped inside JavaScript and did not close the file. Claude Fable 5 completed the HTML at &lt;code&gt;max_tokens=8000&lt;/code&gt;; browser validation showed no console errors, an 800x500 canvas, controls, a speed slider, and &lt;code&gt;changedPixels=55090&lt;/code&gt; after 700 ms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Góc nhìn chi phí
&lt;/h2&gt;

&lt;p&gt;Tại thời điểm viết bài, pricing API của Crazyrouter trả về &lt;code&gt;discount: 0.8&lt;/code&gt; cho &lt;code&gt;glm-5.2&lt;/code&gt;. Vì vậy GLM-5.2 có lợi thế chi phí rõ ràng nếu bạn theo dõi kỹ &lt;code&gt;reasoning_tokens&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt; và đặt &lt;code&gt;max_tokens&lt;/code&gt; phù hợp.&lt;/p&gt;

&lt;p&gt;This is the practical tradeoff:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Better fit from this test&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Short reasoning with enough output budget&lt;/td&gt;
&lt;td&gt;GLM-5.2 can be a cost-effective option&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low-budget reasoning responses&lt;/td&gt;
&lt;td&gt;Claude Fable 5 was steadier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long single-file code generation&lt;/td&gt;
&lt;td&gt;Claude Fable 5 was stronger in this run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch evaluations where metadata is logged&lt;/td&gt;
&lt;td&gt;GLM-5.2 becomes easier to operate safely&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do not treat the &lt;code&gt;0.8&lt;/code&gt; multiplier as a permanent universal price. It is a pricing-data snapshot from Crazyrouter at publication time and should be checked again before a large deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghi chú tích hợp
&lt;/h2&gt;

&lt;p&gt;Minimal request:&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://cn.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;$CRAZYROUTER_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": "glm-5.2",
    "messages": [
      {
        "role": "user",
        "content": "Solve the HH expected-flips problem with state equations."
      }
    ],
    "temperature": 0.2,
    "max_tokens": 3200
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To compare Claude Fable 5, keep the same payload and change only the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-fable-5"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For production-style evaluations, log this shape for every request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"glm-5.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"finish_reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"length"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"completion_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3178&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visible_content_chars"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"html_closed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"browser_validation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not_run_incomplete_html"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;API endpoints should stay clean. Do not add UTM parameters to &lt;code&gt;https://cn.crazyrouter.com/v1&lt;/code&gt;. Use tracking only on human-facing article or registration links.&lt;/p&gt;

&lt;p&gt;Bạn có thể chạy cùng kiểu request OpenAI-compatible trên Crazyrouter để so sánh hai mô hình bằng prompt thật của mình.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=glm52_fable5_budget_cost_20260706&amp;amp;utm_content=devto_glm-52-vs-claude-fable-5-output-budget-cost-vi_20260706__bottom&amp;amp;utm_term=glm-5.2+claude+fable+5+benchmark" rel="noopener noreferrer"&gt;https://crazyrouter.com/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=glm52_fable5_budget_cost_20260706&amp;amp;utm_content=devto_glm-52-vs-claude-fable-5-output-budget-cost-vi_20260706__bottom&amp;amp;utm_term=glm-5.2+claude+fable+5+benchmark&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Did GLM-5.2 fail the reasoning tasks?
&lt;/h3&gt;

&lt;p&gt;No. In this run, GLM-5.2 solved the math task after &lt;code&gt;max_tokens=3200&lt;/code&gt; and the physics task after &lt;code&gt;max_tokens=8000&lt;/code&gt;. The issue was that lower budgets were consumed mostly by reasoning tokens before visible content appeared.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why not score HTTP 200 as success?
&lt;/h3&gt;

&lt;p&gt;Because HTTP 200 only means the API call returned. A benchmark answer can still be unusable if &lt;code&gt;finish_reason=length&lt;/code&gt;, visible content is empty, or generated code is incomplete.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why was the animation task included?
&lt;/h3&gt;

&lt;p&gt;Long code generation exposes a different failure mode. A model can write a convincing first half of a file and still fail if the HTML or JavaScript is cut off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is GLM-5.2 still worth testing?
&lt;/h3&gt;

&lt;p&gt;Yes. The current &lt;code&gt;0.8&lt;/code&gt; discount multiplier makes it attractive for workloads where you can allocate enough output budget and monitor response metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should be recorded in future comparisons?
&lt;/h3&gt;

&lt;p&gt;At minimum: &lt;code&gt;max_tokens&lt;/code&gt;, &lt;code&gt;completion_tokens&lt;/code&gt;, &lt;code&gt;reasoning_tokens&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt;, visible output length, artifact completeness, and runtime validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final verdict
&lt;/h2&gt;

&lt;p&gt;Kết luận thực tế: GLM-5.2 hấp dẫn về chi phí và có thể suy luận tốt, nhưng cần kiểm soát ngân sách đầu ra. Claude Fable 5 ổn định hơn cho câu trả lời ngắn và file HTML hoàn chỉnh trong lần thử này.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>GLM-5.2 と Claude Fable 5 を実測比較：出力予算、reasoning_tokens、そして 0.8 価格係数</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Mon, 06 Jul 2026 16:10:52 +0000</pubDate>
      <link>https://dev.to/metaviiii/glm-52-to-claude-fable-5-woshi-ce-bi-jiao-chu-li-yu-suan-reasoningtokens-sosite-08-jia-ge-xi-shu-4nkf</link>
      <guid>https://dev.to/metaviiii/glm-52-to-claude-fable-5-woshi-ce-bi-jiao-chu-li-yu-suan-reasoningtokens-sosite-08-jia-ge-xi-shu-4nkf</guid>
      <description>&lt;h1&gt;
  
  
  GLM-5.2 vs Claude Fable 5：差が出たのは推論力だけではなく出力予算だった
&lt;/h1&gt;

&lt;p&gt;この比較は「どちらが絶対に強いか」を決める記事ではありません。実際の API 呼び出しで、GLM-5.2 は出力予算を増やすと数学・物理の推論を正しく返しました。一方で Claude Fable 5 は低い予算でも短く安定し、長い HTML アニメーションではより確実に完走しました。&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%2Fam9vbhz5j8lod8skqdwv.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%2Fam9vbhz5j8lod8skqdwv.png" alt="GLM-5.2 vs Claude Fable 5 benchmark" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  このテストを見る理由
&lt;/h2&gt;

&lt;p&gt;The test used the Crazyrouter OpenAI-compatible API rather than a chat UI. That matters because the result was not judged only by prose quality. Each response was checked with operational metadata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Models: glm-5.2, claude-fable-5
temperature: 0.2
Test date: 2026-07-06
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important fields were &lt;code&gt;max_tokens&lt;/code&gt;, &lt;code&gt;completion_tokens&lt;/code&gt;, &lt;code&gt;reasoning_tokens&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt;, visible content length, whether the generated HTML was closed, and whether the animation actually moved in a browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  テストした課題
&lt;/h2&gt;

&lt;p&gt;The benchmark deliberately mixed three task types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Reference result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MATH-003&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;State-based expectation reasoning&lt;/td&gt;
&lt;td&gt;Expected flips until HH = &lt;code&gt;6&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PHYS-003&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Momentum plus energy accounting&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;V = 3.0 m/s&lt;/code&gt;, &lt;code&gt;x ≈ 0.148 m&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CODE-003-ANIM&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Long runnable artifact generation&lt;/td&gt;
&lt;td&gt;Complete 800x500 Canvas animation HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first two tasks measured reasoning. The third task measured whether a model can produce a complete artifact, not merely a convincing partial code block.&lt;/p&gt;

&lt;h2&gt;
  
  
  観測結果
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;&lt;code&gt;glm-5.2&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;claude-fable-5&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Math, original budget&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=length&lt;/code&gt;, &lt;code&gt;completion_tokens=1601&lt;/code&gt;, &lt;code&gt;reasoning_tokens=1600&lt;/code&gt;, visible body empty&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=stop&lt;/code&gt;, complete and correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Math, retest&lt;/td&gt;
&lt;td&gt;Correct after &lt;code&gt;max_tokens=3200&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Retest not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics, original budget&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;finish_reason=length&lt;/code&gt;, visible body empty&lt;/td&gt;
&lt;td&gt;Complete and correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics, retest&lt;/td&gt;
&lt;td&gt;Correct after &lt;code&gt;max_tokens=8000&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Retest not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation, original budget&lt;/td&gt;
&lt;td&gt;Empty visible HTML at &lt;code&gt;max_tokens=3200&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Partial HTML, truncated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation, retest&lt;/td&gt;
&lt;td&gt;Still truncated at &lt;code&gt;max_tokens=8000&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Complete HTML; browser validation passed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most important observation is that GLM-5.2 was not failing the reasoning itself. In the math and physics tasks, it produced correct answers after a larger output budget. The problem was visibility and completion: a request could return HTTP 200 while the user-facing content was empty or incomplete.&lt;/p&gt;

&lt;p&gt;For the long Canvas animation, the difference was sharper. GLM-5.2 produced a visible HTML fragment at &lt;code&gt;max_tokens=8000&lt;/code&gt;, but it stopped inside JavaScript and did not close the file. Claude Fable 5 completed the HTML at &lt;code&gt;max_tokens=8000&lt;/code&gt;; browser validation showed no console errors, an 800x500 canvas, controls, a speed slider, and &lt;code&gt;changedPixels=55090&lt;/code&gt; after 700 ms.&lt;/p&gt;

&lt;h2&gt;
  
  
  費用対効果の見方
&lt;/h2&gt;

&lt;p&gt;執筆時点で Crazyrouter の pricing API は &lt;code&gt;glm-5.2&lt;/code&gt; に &lt;code&gt;discount: 0.8&lt;/code&gt; を返しています。つまり、&lt;code&gt;reasoning_tokens&lt;/code&gt; と &lt;code&gt;max_tokens&lt;/code&gt; をきちんと監視できる用途では、GLM-5.2 はかなり費用対効果の高い選択肢になります。&lt;/p&gt;

&lt;p&gt;This is the practical tradeoff:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Better fit from this test&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Short reasoning with enough output budget&lt;/td&gt;
&lt;td&gt;GLM-5.2 can be a cost-effective option&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low-budget reasoning responses&lt;/td&gt;
&lt;td&gt;Claude Fable 5 was steadier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long single-file code generation&lt;/td&gt;
&lt;td&gt;Claude Fable 5 was stronger in this run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch evaluations where metadata is logged&lt;/td&gt;
&lt;td&gt;GLM-5.2 becomes easier to operate safely&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do not treat the &lt;code&gt;0.8&lt;/code&gt; multiplier as a permanent universal price. It is a pricing-data snapshot from Crazyrouter at publication time and should be checked again before a large deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  実装時の注意
&lt;/h2&gt;

&lt;p&gt;Minimal request:&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://cn.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;$CRAZYROUTER_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": "glm-5.2",
    "messages": [
      {
        "role": "user",
        "content": "Solve the HH expected-flips problem with state equations."
      }
    ],
    "temperature": 0.2,
    "max_tokens": 3200
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To compare Claude Fable 5, keep the same payload and change only the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-fable-5"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For production-style evaluations, log this shape for every request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"glm-5.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"max_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"finish_reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"length"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"completion_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3178&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visible_content_chars"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"html_closed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"browser_validation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not_run_incomplete_html"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;API endpoints should stay clean. Do not add UTM parameters to &lt;code&gt;https://cn.crazyrouter.com/v1&lt;/code&gt;. Use tracking only on human-facing article or registration links.&lt;/p&gt;

&lt;p&gt;同じ OpenAI 互換リクエストを Crazyrouter で流し、自分のプロンプトで両モデルを比較できます。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=glm52_fable5_budget_cost_20260706&amp;amp;utm_content=devto_glm-52-vs-claude-fable-5-output-budget-cost-ja_20260706__bottom&amp;amp;utm_term=glm-5.2+claude+fable+5+benchmark" rel="noopener noreferrer"&gt;https://crazyrouter.com/register?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=glm52_fable5_budget_cost_20260706&amp;amp;utm_content=devto_glm-52-vs-claude-fable-5-output-budget-cost-ja_20260706__bottom&amp;amp;utm_term=glm-5.2+claude+fable+5+benchmark&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Did GLM-5.2 fail the reasoning tasks?
&lt;/h3&gt;

&lt;p&gt;No. In this run, GLM-5.2 solved the math task after &lt;code&gt;max_tokens=3200&lt;/code&gt; and the physics task after &lt;code&gt;max_tokens=8000&lt;/code&gt;. The issue was that lower budgets were consumed mostly by reasoning tokens before visible content appeared.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why not score HTTP 200 as success?
&lt;/h3&gt;

&lt;p&gt;Because HTTP 200 only means the API call returned. A benchmark answer can still be unusable if &lt;code&gt;finish_reason=length&lt;/code&gt;, visible content is empty, or generated code is incomplete.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why was the animation task included?
&lt;/h3&gt;

&lt;p&gt;Long code generation exposes a different failure mode. A model can write a convincing first half of a file and still fail if the HTML or JavaScript is cut off.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is GLM-5.2 still worth testing?
&lt;/h3&gt;

&lt;p&gt;Yes. The current &lt;code&gt;0.8&lt;/code&gt; discount multiplier makes it attractive for workloads where you can allocate enough output budget and monitor response metadata.&lt;/p&gt;

&lt;h3&gt;
  
  
  What should be recorded in future comparisons?
&lt;/h3&gt;

&lt;p&gt;At minimum: &lt;code&gt;max_tokens&lt;/code&gt;, &lt;code&gt;completion_tokens&lt;/code&gt;, &lt;code&gt;reasoning_tokens&lt;/code&gt;, &lt;code&gt;finish_reason&lt;/code&gt;, visible output length, artifact completeness, and runtime validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final verdict
&lt;/h2&gt;

&lt;p&gt;結論は単純ではありません。GLM-5.2 はコスト面で魅力があり推論も可能ですが、出力予算の管理が必要です。Claude Fable 5 は短い回答と完成した単一 HTML 生成で安定していました。&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Suno SDK 시리즈 03: generate, extend, cover, 가사, 보컬 분리를 운영 환경에 연결하는 순서</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Mon, 06 Jul 2026 07:59:52 +0000</pubDate>
      <link>https://dev.to/metaviiii/suno-sdk-sirijeu-03-generate-extend-cover-gasa-bokeol-bunrireul-unyeong-hwangyeonge-yeongyeolhaneun-sunseo-1cn1</link>
      <guid>https://dev.to/metaviiii/suno-sdk-sirijeu-03-generate-extend-cover-gasa-bokeol-bunrireul-unyeong-hwangyeonge-yeongyeolhaneun-sunseo-1cn1</guid>
      <description>&lt;h1&gt;
  
  
  Suno SDK 시리즈 03: generate, extend, cover, 가사, 보컬 분리를 운영 환경에 연결하는 순서
&lt;/h1&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%2Fenzj8juoantcmtfbd4zv.webp" 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%2Fenzj8juoantcmtfbd4zv.webp" alt="Suno model family" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Crazyrouter의 Suno SDK는 하나의 모델이 아니라 여러 음악 생성 및 편집 작업을 묶은 모델 패밀리로 보는 것이 자연스럽습니다.&lt;/p&gt;

&lt;p&gt;주요 모델은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;suno/generate
suno/extend
suno/upload-extend
suno/cover
suno/timestamped-lyrics
suno/vocal-separation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;운영 환경에서는 처음부터 모든 기능을 UI에 노출하지 않는 편이 안전합니다. 먼저 &lt;code&gt;suno/generate&lt;/code&gt;를 안정화하고, 그 결과에서 &lt;code&gt;audio_url&lt;/code&gt;과 작업 ID를 안정적으로 얻을 수 있는지 확인한 뒤 파생 기능을 열어야 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  권장 구현 순서
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. suno/generate
2. 생성 결과 audio_url 다운로드 검증
3. audioId / audio_url / task_id 저장
4. suno/extend
5. suno/upload-extend
6. suno/cover
7. timestamped-lyrics / vocal-separation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;후속 기능은 이전 생성 결과에 의존하는 경우가 많습니다. &lt;code&gt;generate&lt;/code&gt; 결과에 안정적인 음원 URL이나 식별자가 없다면 &lt;code&gt;extend&lt;/code&gt;나 &lt;code&gt;cover&lt;/code&gt; 버튼을 보여주는 것은 실패율만 높입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  버전 지정
&lt;/h2&gt;

&lt;p&gt;Suno 통합 작업에서는 버전을 &lt;code&gt;model_version&lt;/code&gt;으로 지정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;V5_5
V5
V4_5PLUS
V4_5ALL
V4_5
V4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;예전 라우트에서 사용하던 &lt;code&gt;mv&lt;/code&gt;와 혼동하지 않아야 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  generate의 역할
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;suno/generate&lt;/code&gt;는 가장 먼저 연결해야 할 기본 기능입니다.&lt;/p&gt;

&lt;p&gt;사용 예:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;가사로 노래 생성
음악 스타일 설명으로 데모곡 생성
광고나 영상용 짧은 음악 생성
제품 내부 샘플 음원 생성
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;최소 테스트에서는 작업 제출과 폴링뿐 아니라 &lt;code&gt;resultJson.data[0].audio_url&lt;/code&gt; 다운로드까지 확인해야 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  extend와 cover의 주의점
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;extend&lt;/code&gt;는 기존 음원을 이어 붙이는 기능, &lt;code&gt;cover&lt;/code&gt;는 기존 음원을 다른 스타일로 변환하는 기능으로 이해하면 쉽습니다.&lt;/p&gt;

&lt;p&gt;두 기능은 보통 다음 정보에 의존합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;원본 audio URL
원본 task_id
상위 서비스가 반환하는 audioId 계열 식별자
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이 정보가 없다면 프론트엔드에서 버튼을 보여주지 않는 편이 낫습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  timestamped-lyrics와 vocal-separation
&lt;/h2&gt;

&lt;p&gt;시간 정보가 있는 가사와 보컬 분리는 생성 본체보다 결과 필드 의존도가 더 높습니다. 첫 릴리스에서는 선택 기능으로 두고, 실제 데이터로 충분히 검증한 뒤 공개하는 것을 권장합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  운영 체크리스트
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;체크&lt;/th&gt;
&lt;th&gt;통과 조건&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;제출&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;task_id&lt;/code&gt; 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;폴링&lt;/td&gt;
&lt;td&gt;종료 상태를 정확히 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;다운로드&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;audio_url&lt;/code&gt;이 HTTP 200 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파일 검증&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;audio/*&lt;/code&gt;이고 충분한 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파생 기능&lt;/td&gt;
&lt;td&gt;필요한 ID와 URL 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;실패 분류&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;task_failed&lt;/code&gt;와 &lt;code&gt;content_unavailable&lt;/code&gt; 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  정리
&lt;/h2&gt;

&lt;p&gt;Suno SDK는 먼저 &lt;code&gt;generate&lt;/code&gt;를 안정화하는 것부터 시작해야 합니다. 작업 성공만으로는 부족하며, &lt;code&gt;audio_url&lt;/code&gt; 획득, 다운로드, 저장까지가 최소 운영 단위입니다.&lt;/p&gt;

&lt;p&gt;그 다음 &lt;code&gt;extend&lt;/code&gt;, &lt;code&gt;cover&lt;/code&gt;, 시간 정보 가사, 보컬 분리를 단계적으로 열어야 사고가 적습니다.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>suno</category>
      <category>korean</category>
    </item>
  </channel>
</rss>
