<?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: Sebastian Petrus</title>
    <description>The latest articles on DEV Community by Sebastian Petrus (@sebbasstian).</description>
    <link>https://dev.to/sebbasstian</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%2F3818120%2F250bf99a-8038-4501-b069-c6b622112b06.png</url>
      <title>DEV Community: Sebastian Petrus</title>
      <link>https://dev.to/sebbasstian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sebbasstian"/>
    <language>en</language>
    <item>
      <title>GLM-5.3-Flash Vision: Gửi Hình Ảnh Đến Mô Hình Ngữ Cảnh 1M</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:35:20 +0000</pubDate>
      <link>https://dev.to/sebbasstian/glm-53-flash-vision-gui-hinh-anh-den-mo-hinh-ngu-canh-1m-5f63</link>
      <guid>https://dev.to/sebbasstian/glm-53-flash-vision-gui-hinh-anh-den-mo-hinh-ngu-canh-1m-5f63</guid>
      <description>&lt;h1&gt;
  
  
  GLM-5.3-Flash: Kết hợp hình ảnh và ngữ cảnh 1M token
&lt;/h1&gt;

&lt;p&gt;Hầu hết mô hình thị giác buộc bạn phải chọn: gửi một hình ảnh hoặc gửi nhiều văn bản. GLM-5.3-Flash không yêu cầu đánh đổi đó: nó nhận hình ảnh dưới dạng khối nội dung trong cùng yêu cầu với văn bản, bên trong cửa sổ ngữ cảnh 1.048.576 token.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Sự kết hợp giữa đầu vào hình ảnh gốc và ngữ cảnh 1M token mở ra các quy trình làm việc mà từng khả năng riêng lẻ không thể đáp ứng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thị giác gốc, không qua bộ điều hợp
&lt;/h2&gt;

&lt;p&gt;Các mô hình thị giác trước đây của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, như GLM-5V-Turbo và GLM-4.6V, dùng điểm cuối và ID mô hình riêng. GLM-5.3 lớn hơn định tuyến thị giác qua bộ điều hợp thay vì xử lý tự nhiên.&lt;/p&gt;

&lt;p&gt;GLM-5.3-Flash là mô hình đầu tiên trong dòng GLM-5 coi hình ảnh là đầu vào hạng nhất: cùng một ID mô hình, dòng thanh toán, giới hạn tỷ lệ và cửa sổ ngữ cảnh cho cả văn bản lẫn hình ảnh.&lt;/p&gt;

&lt;p&gt;Nếu bạn vẫn dùng đường dẫn cũ, hãy xem &lt;a href="https://apidog.com/vi/blog/glm-5v-turbo-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn GLM-5V-Turbo&lt;/a&gt; và &lt;a href="https://apidog.com/vi/blog/glm-4-6v-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn GLM-4.6V&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tạo tải trọng đa phương thức
&lt;/h2&gt;

&lt;p&gt;Thay vì &lt;code&gt;content&lt;/code&gt; là chuỗi, hãy gửi một mảng khối nội dung:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&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="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;REDACTED&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&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.z.ai/api/paas/v4/&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;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3-flash&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="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="p"&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;type&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;text&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;text&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;What is wrong with this layout on mobile?&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&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;https://example.com/mobile-view.png&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="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với ảnh cục bộ hoặc riêng tư, dùng URL dữ liệu base64:&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;read_bytes&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;suffix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lstrip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jpg&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;jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data:image/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;suffix&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;;base64,&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="si"&gt;}&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mỗi ảnh là một khối riêng:&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="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&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;Image 1 is the design. Image 2 is what we built. List the differences.&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;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;design.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nf"&gt;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;built.png&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thứ tự rất quan trọng. Đặt văn bản định khung trước ảnh, và gắn nhãn rõ ràng khi gửi nhiều ảnh để mô hình biết ảnh nào là thiết kế, ảnh nào là kết quả triển khai.&lt;/p&gt;

&lt;p&gt;Thiết lập và xác thực cơ bản có trong &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quy trình làm việc nên triển khai
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gỡ lỗi ảnh chụp màn hình
&lt;/h3&gt;

&lt;p&gt;Gửi ảnh kết xuất lỗi cùng mã nguồn tạo ra nó:&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="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&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;This component renders incorrectly below 400px. Here is the screenshot and the source.&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;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bug-mobile.png&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;text&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;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;```
&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;endraw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
jsx&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;component_source&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;
```&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mô hình có thể suy luận từ kết xuất thực tế thay vì mô tả bằng lời, giảm bước chuyển đổi vấn đề trực quan thành văn bản trong quá trình gỡ lỗi front-end.&lt;/p&gt;

&lt;h3&gt;
  
  
  So sánh thiết kế
&lt;/h3&gt;

&lt;p&gt;Gửi ảnh thiết kế, ảnh triển khai và yêu cầu liệt kê khác biệt. Cách này hữu ích trong CI như một kiểm tra mềm cho hồi quy hình ảnh:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Công cụ so sánh ảnh cho biết pixel nào thay đổi.&lt;/li&gt;
&lt;li&gt;Mô hình đánh giá liệu thay đổi đó có đáng chú ý hay không.&lt;/li&gt;
&lt;li&gt;Con người nên quyết định cuối cùng; không nên chặn triển khai chỉ dựa vào đánh giá của mô hình.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Đối chiếu tài liệu với đặc tả
&lt;/h3&gt;

&lt;p&gt;Đặt đặc tả dài dưới dạng văn bản và tạo phẩm đã kết xuất dưới dạng ảnh:&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="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Specification:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;spec_text&lt;/span&gt;&lt;span class="si"&gt;}&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;text&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;text&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;Below is the generated report. Does it satisfy every requirement above? List gaps.&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;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generated-report.png&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Một đặc tả 40 trang cùng một hình ảnh trong một lời nhắc là trường hợp sử dụng thực tế của cửa sổ ngữ cảnh 1M token. Ghi chú phát hành của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng đề cập đến tài liệu văn phòng và nghiên cứu tài chính như các quy trình tác nhân mục tiêu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trích xuất biểu đồ và bảng điều khiển
&lt;/h3&gt;

&lt;p&gt;Yêu cầu JSON có cấu trúc, rồi xác thực kết quả:&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="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&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;Extract the series in this chart as JSON: [{label, values: [...]}]. Return only JSON.&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;image_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quarterly.png&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Xác thực theo lược đồ giúp bắt lỗi định dạng, nhưng không bảo đảm giá trị đọc từ biểu đồ là chính xác. Nếu số liệu quan trọng, hãy lấy từ dữ liệu nguồn thay vì ảnh. Với trích xuất tài liệu chuyên dụng, &lt;a href="https://apidog.com/vi/blog/glm-ocr-document-understanding?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-OCR để hiểu tài liệu&lt;/a&gt; có thể phù hợp hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video và tệp
&lt;/h2&gt;

&lt;p&gt;Tài liệu của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; liệt kê video và tệp cùng với hình ảnh, sử dụng cơ chế khối nội dung tương tự.&lt;/p&gt;

&lt;p&gt;Tuy nhiên, hỗ trợ video còn mới, ít được sử dụng công khai và mức hỗ trợ có thể khác nhau giữa các nhà cung cấp API. Hãy kiểm thử trực tiếp với phương tiện và nhà cung cấp của bạn trước khi thiết kế ứng dụng dựa trên khả năng này.&lt;/p&gt;

&lt;h2&gt;
  
  
  Các hạn chế cần thiết kế phòng vệ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Số liệu từ biểu đồ.&lt;/strong&gt; Mô hình có thể trả lời trôi chảy, đúng cấu trúc nhưng sai giá trị. Dùng dữ liệu gốc khi độ chính xác là bắt buộc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Văn bản nhỏ.&lt;/strong&gt; Ảnh giao diện dày đặc, bảng độ phân giải thấp và mã trong ảnh nén dễ giảm chất lượng. Hãy cắt vùng cần xem thay vì thu nhỏ toàn ảnh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Độ chính xác không gian.&lt;/strong&gt; Mô hình thường phát hiện được “nút chồng lên ô nhập liệu”, nhưng không đáng tin cậy với nhận định như “nút lệch trái 12 pixel”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nhầm lẫn thứ tự và tham chiếu.&lt;/strong&gt; Khi có nhiều ảnh, mô hình có thể gán chi tiết cho nhầm ảnh. Gắn nhãn ảnh rõ ràng và giữ số lượng ảnh thấp khi cần độ chính xác.&lt;/p&gt;

&lt;p&gt;Đây là các giới hạn phổ biến của mô hình ngôn ngữ thị giác. Điểm Chỉ số Thông minh 57 không loại bỏ chúng. Hãy thiết kế quy trình để câu trả lời sai được phát hiện trước khi bị thực thi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chi phí
&lt;/h2&gt;

&lt;p&gt;Hình ảnh tiêu thụ token đầu vào và không có phụ phí hình ảnh riêng.&lt;/p&gt;

&lt;p&gt;Giá niêm yết là 0,15 USD cho mỗi triệu token đầu vào, hoặc 0,075 USD trong thời gian ưu đãi ra mắt đến ngày 9 tháng 9 năm 2026. Ảnh độ phân giải cao dùng nhiều token hơn, nên hãy giảm kích thước nếu chi tiết nhỏ không phải mục tiêu.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;reasoning_effort&lt;/code&gt; mặc định là &lt;code&gt;max&lt;/code&gt; và được tính phí như token đầu ra. Với tác vụ trích xuất trực tiếp, &lt;code&gt;low&lt;/code&gt; thường đủ và rẻ hơn. Xem thêm &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;bảng phân tích giá GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiểm soát chi phí ảnh
&lt;/h2&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%2Fixyf70kl0ow7x1kbgod6.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%2Fixyf70kl0ow7x1kbgod6.png" width="798" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cắt trước khi đổi kích thước:&lt;/strong&gt; gửi vùng liên quan ở độ phân giải đầy đủ thay vì toàn bộ ảnh ở độ phân giải thấp.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Khớp độ phân giải với câu hỏi:&lt;/strong&gt; kiểm tra bố cục có thể dùng ảnh nhỏ hơn; đọc thông báo lỗi cần ảnh rõ nét.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không gửi lại ảnh không đổi:&lt;/strong&gt; trong cuộc trò chuyện nhiều lượt, ảnh đã nằm trong ngữ cảnh không cần đính kèm lại.&lt;/li&gt;
&lt;li&gt;**Chọn `reasoning_eff đợi cố định.&lt;/li&gt;
&lt;li&gt;Xác thực đầu ra có cấu trúc bằng lược đồ thay vì chỉ kiểm tra bằng mắt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; hỗ trợ lưu tải trọng ảnh trong yêu cầu đã lưu, dùng biến môi trường cho khóa API và thêm assertion cho JSON trả về. Khi đổi mô hình hoặc nhà cung cấp cập nhật dịch vụ, chạy lại bộ kiểm thử sẽ cho biết đường dẫn thị giác còn hoạt động đúng hay không.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GLM-5.3 có hỗ trợ hình ảnh không?&lt;/strong&gt; Không phải gốc. GLM-5.3 định tuyến thị giác qua bộ điều hợp riêng; Flash là mô hình đa phương thức gốc. Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vs-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;so sánh GLM-5.3-Flash và GLM-5.3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mỗi yêu cầu gửi được bao nhiêu ảnh?&lt;/strong&gt; Nhiều ảnh, mỗi ảnh là một khối &lt;code&gt;image_url&lt;/code&gt; riêng. Giới hạn thực tế là ngân sách ngữ cảnh.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dùng URL hay base64?&lt;/strong&gt; Cả hai đều hoạt động. Dùng URL công khai cho ảnh đã lưu trữ và truy cập được; dùng base64 cho ảnh cục bộ hoặc riêng tư.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có chấp nhận video không?&lt;/strong&gt; &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; có tài liệu về đầu vào video, nhưng khả năng này còn mới. Hãy xác minh với phương tiện và nhà cung cấp của bạn trước.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ảnh có bị tính phí riêng không?&lt;/strong&gt; Không. Ảnh tiêu thụ token đầu vào, nên độ phân giải ảnh ảnh hưởng trực tiếp đến chi phí.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Giá GLM-5.3-Flash: Chi Phí Trước và Sau Ưu Đãi Ra Mắt</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:34:17 +0000</pubDate>
      <link>https://dev.to/sebbasstian/gia-glm-53-flash-chi-phi-truoc-va-sau-uu-dai-ra-mat-4igb</link>
      <guid>https://dev.to/sebbasstian/gia-glm-53-flash-chi-phi-truoc-va-sau-uu-dai-ra-mat-4igb</guid>
      <description>&lt;p&gt;GLM-5.3-Flash hiện được giảm giá 50%. Ưu đãi kết thúc vào &lt;strong&gt;ngày 9 tháng 9 năm 2026&lt;/strong&gt;; sau đó, mọi dự báo chi phí dựa trên giá hiện tại sẽ tăng gấp đôi.&lt;/p&gt;

&lt;p&gt;Bài viết này phân tích giá hiện tại, giá niêm yết sau ưu đãi, các lựa chọn thay thế và cách xác định mức chênh lệch có ảnh hưởng thực tế đến khối lượng công việc của bạn hay không. Các số liệu được xác minh ngày 27 tháng 8 năm 2026. Giá nhà cung cấp có thể thay đổi, vì vậy hãy kiểm tra lại trước khi cam kết ngân sách.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Hãy thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Biểu giá
&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;Giá ra mắt (đến hết 9 tháng 9, 2026)&lt;/th&gt;
&lt;th&gt;Giá niêm yết (sau đó)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Đầu vào&lt;/td&gt;
&lt;td&gt;$0.075 / 1M tokens&lt;/td&gt;
&lt;td&gt;$0.15 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Đầu ra&lt;/td&gt;
&lt;td&gt;$0.25 / 1M tokens&lt;/td&gt;
&lt;td&gt;$0.50 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Đầu vào được lưu trữ (cache)&lt;/td&gt;
&lt;td&gt;$0.015 / 1M tokens&lt;/td&gt;
&lt;td&gt;$0.03 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Artificial Analysis công bố mức trung bình &lt;strong&gt;$0.10 cho mỗi triệu token&lt;/strong&gt;, dựa trên tỷ lệ cache-input-output là 7:2:1. Đây là một con số hữu ích để so sánh, nhưng tỷ lệ token thực tế của bạn mới quyết định hóa đơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chi phí thực tế
&lt;/h2&gt;

&lt;p&gt;Giá trên mỗi triệu token khó hình dung, vì vậy dưới đây là ba ví dụ sử dụng &lt;strong&gt;giá niêm yết&lt;/strong&gt;—mức cần dùng để lập kế hoạch sau ngày 9 tháng 9.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bộ phân loại hỗ trợ
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;100.000 yêu cầu mỗi tháng.&lt;/li&gt;
&lt;li&gt;Mỗi yêu cầu: khoảng 800 token đầu vào và 100 token đầu ra.&lt;/li&gt;
&lt;li&gt;Tổng cộng: 80 triệu token đầu vào và 10 triệu token đầu ra.&lt;/li&gt;
&lt;li&gt;Chi phí: $12 đầu vào + $5 đầu ra = &lt;strong&gt;$17 mỗi tháng&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đặt &lt;code&gt;reasoning_effort&lt;/code&gt; thành &lt;code&gt;low&lt;/code&gt; có thể tiếp tục giảm chi phí đầu ra.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trợ lý lập trình
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;500 phiên mỗi ngày.&lt;/li&gt;
&lt;li&gt;Mỗi phiên: khoảng 15.000 token đầu vào, chủ yếu là ngữ cảnh tệp lặp lại, và 2.000 token đầu ra.&lt;/li&gt;
&lt;li&gt;Tổng hàng tháng: 225 triệu token đầu vào và 30 triệu token đầu ra.&lt;/li&gt;
&lt;li&gt;Không dùng cache: $33,75 + $15 = &lt;strong&gt;$48,75 mỗi tháng&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Nếu 70% đầu vào được cache: chi phí đầu vào giảm còn khoảng $14,85, đưa tổng chi phí xuống &lt;strong&gt;khoảng $30 mỗi tháng&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hệ thống xử lý tài liệu có hình ảnh
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;10.000 tài liệu mỗi tháng.&lt;/li&gt;
&lt;li&gt;Mỗi tài liệu: khoảng 40.000 token đầu vào, bao gồm nội dung hình ảnh, và 1.500 token đầu ra.&lt;/li&gt;
&lt;li&gt;Tổng cộng: 400 triệu token đầu vào và 15 triệu token đầu ra.&lt;/li&gt;
&lt;li&gt;Chi phí: $60 + $7,50 = &lt;strong&gt;$67,50 mỗi tháng&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Không có con số nào quá lớn. Đó chính là mục tiêu của mô hình này.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cache là đòn bẩy lớn nhất
&lt;/h2&gt;

&lt;p&gt;Với giá $0,03 cho mỗi triệu token so với $0,15 cho đầu vào mới, token được cache chỉ tốn &lt;strong&gt;một phần năm&lt;/strong&gt; chi phí.&lt;/p&gt;

&lt;p&gt;Các khối lượng công việc có những thành phần ổn định như:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tiền tố lời nhắc.&lt;/li&gt;
&lt;li&gt;System prompt.&lt;/li&gt;
&lt;li&gt;Tài liệu được truy vấn lặp lại.&lt;/li&gt;
&lt;li&gt;Cơ sở mã luôn nằm trong ngữ cảnh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;nên được cấu trúc sao cho phần tiền tố này giữ nguyên giữa các lần gọi.&lt;/p&gt;

&lt;p&gt;Sai lầm phổ biến làm giảm tỷ lệ cache là đặt nội dung thay đổi ở đầu lời nhắc. Một dấu thời gian, request ID hoặc tên người dùng trong system prompt có thể làm mất hiệu lực cache của mọi nội dung phía sau.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quy tắc thực tế:&lt;/strong&gt; đặt nội dung ổn định trước, nội dung thay đổi ở cuối.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng từng niêm yết cache input miễn phí trong một khoảng thời gian giới hạn. Hãy xem đây là chương trình khuyến mãi và xác minh điều khoản hiện tại, thay vì xây dựng kiến trúc phụ thuộc vào nó.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đòn bẩy thứ hai: nỗ lực suy luận
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;reasoning_effort&lt;/code&gt; mặc định trên mô hình này là &lt;strong&gt;&lt;code&gt;max&lt;/code&gt;&lt;/strong&gt;—chế độ tốn kém nhất. Nếu không thiết lập tham số, bạn sẽ dùng mức này.&lt;/p&gt;

&lt;p&gt;Ba chế độ hiện có:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;low&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;high&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Token suy luận được tính phí như token đầu ra. Vì vậy, một tác vụ không cần suy nghĩ nhiều vẫn có thể phát sinh chi phí cho những token mà người dùng không nhìn thấy.&lt;/p&gt;

&lt;p&gt;Đối với phân loại, trích xuất, định tuyến và định dạng, &lt;code&gt;low&lt;/code&gt; thường là lựa chọn đầu tiên nên thử. Đây là thay đổi chỉ cần một dòng code và có thể giảm đáng kể chi phí đầu ra.&lt;/p&gt;

&lt;p&gt;Xem cách thiết lập trong &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API của chúng tôi&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  So sánh với các mô hình khác
&lt;/h2&gt;

&lt;p&gt;So với mô hình “anh em” GLM-5.3, giá niêm yết trung bình là:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mô hình&lt;/th&gt;
&lt;th&gt;Trung bình trên 1 triệu token&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3-Flash&lt;/td&gt;
&lt;td&gt;$0,10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GLM-5.3&lt;/td&gt;
&lt;td&gt;$0,90&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GLM-5.3 đắt hơn khoảng chín lần cho chênh lệch ba điểm trên Chỉ số Trí tuệ của Artificial Analysis: 57 so với 60.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vs-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Bài so sánh đầy đủ của chúng tôi&lt;/a&gt; phân tích khi nào mức đánh đổi này không phù hợp. Tóm lại: GLM-5.3 có thể đáng chọn khi bạn truyền phản hồi dài đến người dùng đang chờ, vì tốc độ tạo token gần như nhanh gấp đôi.&lt;/p&gt;

&lt;p&gt;So với GLM-5.2, &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; tuyên bố GLM-5.3-Flash có chi phí chỉ bằng khoảng &lt;strong&gt;một phần mười&lt;/strong&gt;, với chi phí mỗi tác vụ là $0,045. &lt;a href="https://apidog.com/vi/blog/glm-5-2-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Phân tích giá GLM-5.2 của chúng tôi&lt;/a&gt; cung cấp biểu giá cũ nếu bạn đang lập ngân sách cho việc di chuyển.&lt;/p&gt;

&lt;p&gt;So với các mô hình đa phương thức giá rẻ từ nhà cung cấp khác, GLM-5.3-Flash có giá cạnh tranh và nổi bật nhờ giấy phép MIT, khiến tùy chọn tự host vẫn khả thi. &lt;a href="https://apidog.com/vi/blog/gemini-3-7-flash-pricing-explained?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Bài viết về giá Gemini 3.7 Flash&lt;/a&gt; đề cập đến lựa chọn tương đương gần nhất từ Google.&lt;/p&gt;

&lt;h2&gt;
  
  
  Giá giữa các nhà phân phối có thể khác nhau
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash được cung cấp trực tiếp qua &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, cũng như:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;Cloudflare Workers AI&lt;/li&gt;
&lt;li&gt;Vercel AI Gateway&lt;/li&gt;
&lt;li&gt;DeepInfra&lt;/li&gt;
&lt;li&gt;Novita&lt;/li&gt;
&lt;li&gt;GMICloud&lt;/li&gt;
&lt;li&gt;Baseten&lt;/li&gt;
&lt;li&gt;&lt;a href="http://io.net" rel="noopener noreferrer"&gt;io.net&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Các nhà cung cấp này không áp dụng cùng một mức giá. Ví dụ, AIHubMix niêm yết khoảng $0,113 cho đầu vào và $0,394 cho đầu ra—nằm giữa giá khuyến mãi và giá niêm yết của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;. Một số nhà cung cấp có ưu đãi ra mắt, số khác thì không.&lt;/p&gt;

&lt;p&gt;Nếu định tuyến qua một aggregator, hãy kiểm tra bảng giá của chính aggregator đó thay vì mặc định rằng nó phản ánh giá &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;. Cổng thống nhất có thể đi kèm biên lợi nhuận, và ở mức giá thấp như hiện nay, phần tăng thêm rất dễ bị bỏ qua.&lt;/p&gt;

&lt;h2&gt;
  
  
  Khi nào tự host có lợi?
&lt;/h2&gt;

&lt;p&gt;Weights của mô hình được cấp phép MIT, vì vậy tự chạy mô hình là một lựa chọn thực tế. Tuy nhiên, giá API thấp khiến điểm hòa vốn khó đạt hơn.&lt;/p&gt;

&lt;p&gt;Một ước tính sơ bộ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full-precision serving cần một node lớp H200 với 8 GPU.&lt;/li&gt;
&lt;li&gt;Chi phí thuê cloud khoảng $24–$48 mỗi ngày.&lt;/li&gt;
&lt;li&gt;Tương đương khoảng &lt;strong&gt;$1.000 mỗi tháng&lt;/strong&gt;, bất kể node đang bận hay rảnh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Với giá API niêm yết, $1.000 có thể mua khoảng 6,7 tỷ token đầu vào. Bạn cần khối lượng sử dụng rất lớn và liên tục trước khi chi phí cố định của một node vượt qua mức này.&lt;/p&gt;

&lt;p&gt;Với phần lớn đội nhóm, tự host GLM-5.3-Flash phù hợp hơn vì:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kiểm soát hạ tầng.&lt;/li&gt;
&lt;li&gt;Yêu cầu lưu trú dữ liệu.&lt;/li&gt;
&lt;li&gt;Điều kiện cấp phép.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ngoại lệ là các phiên bản lượng tử hóa. GGUF đã có sẵn, và nếu chạy mô hình lượng tử hóa trên phần cứng bạn sở hữu, chi phí biên chủ yếu chỉ còn tiền điện. &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn chạy cục bộ của chúng tôi&lt;/a&gt; phân tích khả năng của từng cấp phần cứng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lựa chọn khác: gói lập trình
&lt;/h2&gt;

&lt;p&gt;Nếu bạn dùng mô hình với Claude Code hoặc Cline thay vì gọi API từ ứng dụng, định giá theo token có thể không phải mô hình phù hợp.&lt;/p&gt;

&lt;p&gt;GLM Coding Plan bắt đầu từ khoảng $18 mỗi tháng, bao gồm GLM-5.3-Flash và được cho là cung cấp &lt;strong&gt;gấp ba hạn mức sử dụng&lt;/strong&gt; so với GLM-5.3. Tài liệu &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng cho biết các cuộc gọi ngoài giờ cao điểm tiêu thụ một nửa số điểm tiêu chuẩn.&lt;/p&gt;

&lt;p&gt;Với một nhà phát triển sử dụng hàng ngày, gói cố định thường rẻ hơn và dễ dự đoán hơn API tính theo mức sử dụng.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-claude-code-cline?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn kết nối với Claude Code và Cline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/claude-code-vs-codex-vs-cursor-vs-minimax-plan-vs-glm-plan?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;So sánh các gói lập trình&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Theo dõi chi phí đầu ra
&lt;/h2&gt;

&lt;p&gt;Đầu vào thường thu hút nhiều chú ý hơn vì số lượng token lớn, nhưng đầu ra mới là nơi ngân sách dễ vượt dự kiến:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Đầu ra có giá cao hơn ba lần đầu vào: $0,50 so với $0,15 cho mỗi triệu token.&lt;/li&gt;
&lt;li&gt;Token suy luận cũng được tính như đầu ra.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Một mô hình ở chế độ &lt;code&gt;max&lt;/code&gt; có thể tạo ra nhiều token suy luận hơn đáng kể so với phần câu trả lời cuối cùng mà người dùng nhìn thấy. Vì vậy, ứng dụng có prompt ngắn nhưng phản hồi dài có thể phát sinh phần lớn chi phí từ đầu ra.&lt;/p&gt;

&lt;p&gt;Mức trung bình $0,10 cho mỗi triệu token giả định tỷ lệ 7:2:1, nhưng nhiều khối lượng công việc thực tế không tuân theo tỷ lệ này.&lt;/p&gt;

&lt;p&gt;Hãy đo lường thay vì ước tính. Mỗi phản hồi hoàn thành có đối tượng &lt;code&gt;usage&lt;/code&gt; chứa số token của lần gọi đó. Bạn nên:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ghi lại dữ liệu &lt;code&gt;usage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tổng hợp theo ngày hoặc theo khối lượng công việc.&lt;/li&gt;
&lt;li&gt;So sánh tỷ lệ thực tế với giả định ngân sách.&lt;/li&gt;
&lt;li&gt;Điều chỉnh &lt;code&gt;reasoning_effort&lt;/code&gt; và độ dài prompt dựa trên dữ liệu.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nếu đầu ra chiếm khoảng 15% tổng số token, hãy kiểm tra &lt;code&gt;reasoning_effort&lt;/code&gt; trước, sau đó tối ưu độ dài lời nhắc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Việc cần làm trước ngày 9 tháng 9
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Đo hỗn hợp token thực tế
&lt;/h3&gt;

&lt;p&gt;Mức trung bình được giả định là 7:2:1. Nếu khối lượng công việc của bạn nặng về đầu ra, chi phí hiệu dụng sẽ gần $0,50 cho mỗi triệu token hơn là mức trung bình $0,10.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Kiểm tra tỷ lệ cache
&lt;/h3&gt;

&lt;p&gt;Chênh lệch giá giữa input mới và input được cache là 5 lần. Đây là một trong những nơi có tiềm năng tiết kiệm lớn nhất.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tính lại ngân sách theo giá niêm yết
&lt;/h3&gt;

&lt;p&gt;Từ ngày 10 tháng 9, các mức giá sẽ tăng gấp đôi. Nếu một khối lượng công việc chỉ có lợi nhuận ở mức giá khuyến mãi, hãy xử lý vấn đề ngay bây giờ.&lt;/p&gt;

&lt;p&gt;Để thu thập dữ liệu thực tế, hãy chạy các lệnh gọi đại diện dưới dạng collection đã lưu trong &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, sử dụng model ID từ biến môi trường. Đối tượng &lt;code&gt;usage&lt;/code&gt; của mỗi phản hồi sẽ cung cấp số lượng token đầu vào, đầu ra và cache, đồng thời cho phép bạn chạy lại cùng một bộ kiểm thử với GLM-5.3 để so sánh hóa đơn thực tế thay vì chỉ dựa vào thông tin quảng cáo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GLM-5.3-Flash có miễn phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Mô hình từng miễn phí khoảng một tuần khi chạy ẩn danh dưới tên “ox-alpha” trước khi ra mắt, nhưng chương trình đó đã kết thúc. Mức giảm giá 50% hiện tại không đồng nghĩa với miễn phí.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chương trình giảm giá kết thúc chính xác khi nào?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ngày 9 tháng 9 năm 2026. Giá niêm yết sẽ được áp dụng từ thời điểm đó.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vì sao các website niêm yết giá khác nhau?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Một số hiển thị giá khuyến mãi, một số hiển thị giá niêm yết, còn các nhà phân phối tự đặt biên lợi nhuận. Hãy kiểm tra đúng nhà cung cấp mà ứng dụng của bạn thực sự gọi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Đầu vào hình ảnh có tốn thêm phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Hình ảnh tiêu thụ token ngữ cảnh và được tính như đầu vào. Không có phụ phí hình ảnh riêng, nhưng hình ảnh độ phân giải cao có thể tiêu thụ đáng kể token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tự host có rẻ hơn không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Chỉ khi bạn có khối lượng sử dụng rất lớn và liên tục, hoặc chạy phiên bản lượng tử hóa trên phần cứng sẵn có. Với giá $0,15 cho mỗi triệu token đầu vào, việc thuê node H200 8 GPU rất khó biện minh chỉ dựa trên chi phí.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>So sánh GLM-5.3-Flash và GLM-5.3: Bạn nên dùng phiên bản nào?</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:32:56 +0000</pubDate>
      <link>https://dev.to/sebbasstian/so-sanh-glm-53-flash-va-glm-53-ban-nen-dung-phien-ban-nao-5edh</link>
      <guid>https://dev.to/sebbasstian/so-sanh-glm-53-flash-va-glm-53-ban-nen-dung-phien-ban-nao-5edh</guid>
      <description>&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; đang bán hai mô hình gần như cùng tên, đều có cửa sổ ngữ cảnh 1M token nhưng giá chênh lệch gấp chín lần. Đừng chọn theo tên: &lt;strong&gt;GLM-5.3-Flash rẻ hơn, hỗ trợ hình ảnh nguyên bản và có hạn mức Gói Coding gấp 3 lần; GLM-5.3 mạnh hơn một chút về suy luận và tạo đầu ra nhanh gần gấp đôi.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Với đa số khối lượng công việc, hãy chọn Flash trước. Chỉ chọn GLM-5.3 khi bạn cần suy luận ổn định hơn hoặc đang stream đầu ra dài cho người dùng đang chờ.&lt;/p&gt;

&lt;h2&gt;
  
  
  So sánh nhanh
&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;GLM-5.3-Flash&lt;/th&gt;
&lt;th&gt;GLM-5.3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chỉ số thông minh (Artificial Analysis)&lt;/td&gt;
&lt;td&gt;57&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Giá trung bình / 1M token&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$0.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Giá niêm yết input / output / 1M token&lt;/td&gt;
&lt;td&gt;$0.15 / $0.50&lt;/td&gt;
&lt;td&gt;$1.40 / $4.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tốc độ đầu ra&lt;/td&gt;
&lt;td&gt;~49 token/giây&lt;/td&gt;
&lt;td&gt;~86 token/giây&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thời gian đến token đầu tiên&lt;/td&gt;
&lt;td&gt;1,52 giây&lt;/td&gt;
&lt;td&gt;1,57 giây&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cửa sổ ngữ cảnh&lt;/td&gt;
&lt;td&gt;1.048.576 token&lt;/td&gt;
&lt;td&gt;1.048.576 token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Đầu vào hình ảnh nguyên bản&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Không, dùng bộ điều hợp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tham số&lt;/td&gt;
&lt;td&gt;320B tổng / 18B hoạt động&lt;/td&gt;
&lt;td&gt;Lớn hơn, chưa công bố đầy đủ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Giấy phép&lt;/td&gt;
&lt;td&gt;MIT, trọng số mở&lt;/td&gt;
&lt;td&gt;Trọng số mở&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hạn mức Gói Coding&lt;/td&gt;
&lt;td&gt;Gấp 3 lần&lt;/td&gt;
&lt;td&gt;Gấp 1 lần&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Số liệu tốc độ và chỉ số thông minh do Artificial Analysis đo lường. Giá là giá niêm yết của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, chưa tính ưu đãi ra mắt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao Flash rẻ hơn 9 lần?
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash là mô hình mixture-of-experts 320B, chỉ kích hoạt 18B tham số trên mỗi token. Kiến trúc chú ý lai tuyến tính và thưa thớt giúp Flash dùng ít tài nguyên chú ý hơn khoảng 3 lần và có KV cache nhỏ hơn khoảng 4,4 lần so với GLM-5.3, theo &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;KV cache nhỏ hơn đặc biệt quan trọng khi phục vụ ngữ cảnh dài. Đây là lý do Flash vẫn hỗ trợ 1M token nhưng có giá thấp hơn nhiều: chi phí phục vụ mỗi yêu cầu thực sự nhỏ hơn, không phải do cắt ngữ cảnh hoặc đơn giản hóa mô hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chênh 3 điểm chỉ số có ý nghĩa gì?
&lt;/h2&gt;

&lt;p&gt;57 so với 60 là khoảng cách nhỏ, nhất là khi mô hình trọng số mở trung bình cùng quy mô chỉ đạt khoảng 27 điểm. Tuy vậy, chênh lệch thường xuất hiện ở:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chuỗi suy luận nhiều bước.&lt;/li&gt;
&lt;li&gt;Tác vụ tác nhân dài và phức tạp.&lt;/li&gt;
&lt;li&gt;Hướng dẫn mơ hồ hoặc thiếu ngữ cảnh.&lt;/li&gt;
&lt;li&gt;Nội dung cần người đọc đánh giá trực tiếp.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Với trích xuất, phân loại, định tuyến, tóm tắt hoặc chỉnh sửa mã một tệp, sự khác biệt thường không đáng kể.&lt;/p&gt;

&lt;p&gt;Một quy tắc đơn giản:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Có thể kiểm thử đầu ra bằng chương trình:&lt;/strong&gt; ưu tiên Flash. Bạn có thể phát hiện lỗi và thử lại với chi phí thấp hơn nhiều.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Con người phải đánh giá chất lượng đầu ra:&lt;/strong&gt; GLM-5.3 có thể đáng giá hơn nếu chất lượng suy luận ảnh hưởng trực tiếp đến kết quả.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Flash không nhanh hơn
&lt;/h2&gt;

&lt;p&gt;Tên “Flash” dễ gây hiểu nhầm. GLM-5.3 tạo khoảng 86 token/giây, gần gấp đôi Flash với khoảng 49 token/giây. Thời gian đến token đầu tiên gần như giống nhau, nên phản hồi ngắn sẽ có cảm giác nhanh tương đương.&lt;/p&gt;

&lt;p&gt;Tác động phụ thuộc vào độ dài đầu ra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Phản hồi ngắn:&lt;/strong&gt; gần như không khác biệt.&lt;/li&gt;
&lt;li&gt;**Đầu ra 4.000 [REDACTED CREDENTIAL] Flash mất khoảng 82 giây; GLM-5.3 mất khoảng 47 giây.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xử lý theo lô:&lt;/strong&gt; Flash thường vẫn phù hợp hơn vì mức giá thấp cho phép chạy nhiều yêu cầu song song hơn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu đang stream câu trả lời dài cho người dùng, GLM-5.3 mang lại trải nghiệm tốt hơn. Đây là lý do rõ ràng nhất để trả thêm tiền.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đa phương thức: lý do quyết định chọn Flash
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash nhận hình ảnh, video và tệp trực tiếp trong cùng yêu cầu chat completion. GLM-5.3 không hỗ trợ thị giác nguyên bản mà dựa vào bộ điều hợp riêng.&lt;/p&gt;

&lt;p&gt;Nếu ứng dụng cần đọc ảnh, kiểm tra giao diện, phân tích video hoặc đối chiếu tệp đặc tả với ảnh chụp sản phẩm, hãy dùng Flash. Bạn có thể đặt tài liệu dài, ảnh kết quả và yêu cầu kỹ thuật trong cùng một ngữ cảnh 1M token.&lt;/p&gt;

&lt;p&gt;Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vision-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn thị giác GLM-5.3-Flash&lt;/a&gt; để biết cấu trúc tải trọng và quy trình triển khai. Nếu đang duy trì hệ thống cũ, tham khảo &lt;a href="https://apidog.com/vi/blog/glm-5v-turbo-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GLM-5V-Turbo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gói Coding: Flash thường là lựa chọn mặc định
&lt;/h2&gt;

&lt;p&gt;Trong Gói Coding GLM, Flash được báo cáo có &lt;strong&gt;hạn mức sử dụng gấp 3 lần&lt;/strong&gt; GLM-5.3. &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng cho biết yêu cầu ngoài giờ cao điểm chỉ tiêu thụ một nửa số điểm tiêu chuẩn.&lt;/p&gt;

&lt;p&gt;Nếu dùng Claude Code hoặc Cline, hãy phân luồng:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dùng Flash cho tác vụ thường ngày, khối lượng lớn và có thể kiểm thử.&lt;/li&gt;
&lt;li&gt;Leo thang sang GLM-5.3 cho lỗi khó, suy luận dài hoặc đầu ra cần chất lượng cao hơn.&lt;/li&gt;
&lt;li&gt;Xác minh hạn mức hiện tại trên &lt;a href="http://z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; trước khi lập kế hoạch sử dụng.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Xem hướng dẫn thiết lập trong &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-claude-code-cline?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Code và Cline với GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ưu đãi giá đến ngày 09/09/2026
&lt;/h2&gt;

&lt;p&gt;Ưu đãi ra mắt giảm 50% cho GLM-5.3-Flash kéo dài đến hết &lt;strong&gt;ngày 09 tháng 9 năm 2026&lt;/strong&gt;. Trong thời gian này, giá hiệu dụng là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input: $0.075 / 1M token&lt;/li&gt;
&lt;li&gt;Output: $0.25 / 1M token&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Điều này làm Flash rẻ hơn GLM-5.3 khoảng 18 lần. Sau ưu đãi, giá trở về $0.15 input và $0.50 output trên mỗi 1M token, tương đương chênh lệch khoảng 9 lần.&lt;/p&gt;

&lt;p&gt;Ưu đãi quan trọng khi dự báo ngân sách, nhưng không thay đổi khuyến nghị cơ bản: Flash vẫn rẻ hơn đáng kể. Xem các số liệu chi tiết trong &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích giá GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quy tắc chọn mô hình
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dùng GLM-5.3-Flash khi
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Đầu vào có hình ảnh, video hoặc tệp.&lt;/li&gt;
&lt;li&gt;Chi phí mỗi token là yếu tố cần tối ưu.&lt;/li&gt;
&lt;li&gt;Bạn chạy trích xuất, phân loại hoặc định tuyến ở quy mô lớn.&lt;/li&gt;
&lt;li&gt;Bạn muốn kéo dài hạn mức Gói Coding.&lt;/li&gt;
&lt;li&gt;Bạn cần trọng số mở theo giấy phép MIT để tự lưu trữ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hướng dẫn &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chạy GLM-5.3-Flash cục bộ&lt;/a&gt; có yêu cầu phần cứng.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dùng GLM-5.3 khi
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bạn stream đầu ra dài cho người dùng đang chờ.&lt;/li&gt;
&lt;li&gt;Công việc cần suy luận dài hạn qua nhiều bước.&lt;/li&gt;
&lt;li&gt;Chất lượng đầu ra do con người đánh giá thay vì kiểm thử tự động.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dùng cả hai khi
&lt;/h3&gt;

&lt;p&gt;Bạn có thể định tuyến theo loại tác vụ hoặc độ tin cậy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gửi phần lớn lưu lượng sang Flash.&lt;/li&gt;
&lt;li&gt;Chuyển sang GLM-5.3 khi đầu ra lỗi, độ tin cậy thấp hoặc tác vụ thuộc nhóm suy luận khó.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cả hai cùng dùng điểm cuối tương thích OpenAI, nên định tuyến chủ yếu là đổi model ID thay vì xây tích hợp mới.&lt;/p&gt;

&lt;h2&gt;
  
  
  Di chuyển từ GLM-5.3 sang Flash
&lt;/h2&gt;

&lt;p&gt;Phần cơ học rất đơn giản. Điều cần đầu tư là xác thực trên dữ liệu thật.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Không thay đổi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base URL&lt;/li&gt;
&lt;li&gt;Lược đồ xác thực&lt;/li&gt;
&lt;li&gt;Hình dạng request và response&lt;/li&gt;
&lt;li&gt;Streaming&lt;/li&gt;
&lt;li&gt;Tool calling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Thay đổi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chi phí mỗi cuộc gọi giảm khoảng 9 lần.&lt;/li&gt;
&lt;li&gt;Tốc độ tạo đầu ra giảm gần một nửa.&lt;/li&gt;
&lt;li&gt;Chỉ số suy luận thấp hơn 3 điểm.&lt;/li&gt;
&lt;li&gt;Có thêm đầu vào hình ảnh nguyên bản.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trước khi chuyển toàn bộ lưu lượng, chạy prompt thực tế trên cả hai mô hình và so sánh:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tính đúng đắn ở các trường hợp có thể kiểm thử.&lt;/li&gt;
&lt;li&gt;Độ trễ end-to-end, không chỉ thời gian đến token đầu tiên.&lt;/li&gt;
&lt;li&gt;Số token trong đối tượng &lt;code&gt;usage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Hành vi trên ngữ cảnh dài nhất của bạn.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Điểm cuối cùng thường quan trọng nhất. Hai mô hình có thể tương đương với prompt ngắn nhưng khác biệt đáng kể khi ngữ cảnh gần đầy.&lt;/p&gt;

&lt;p&gt;Nếu cần bắt đầu từ mô hình cơ sở, đọc &lt;a href="https://apidog.com/vi/blog/what-is-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-5.3 là gì&lt;/a&gt; và &lt;a href="https://apidog.com/vi/blog/how-to-use-glm-5-3-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GLM-5.3&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiểm thử trên lưu lượng thật
&lt;/h2&gt;

&lt;p&gt;Đừng chỉ tin bảng benchmark. Trỏ client tương thích OpenAI tới:&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.z.ai/api/paas/v4/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sau đó chạy cùng tập prompt qua:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glm-5.3-flash
glm-5.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So sánh đầu ra, độ trễ và lượng token trên chính lưu lượng bạn quan tâm. &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn API GLM-5.3-Flash&lt;/a&gt; có phần thiết lập.&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%2Fjnhjauauoifoey3szik7.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%2Fjnhjauauoifoey3szik7.png" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trong &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, hãy lưu hai request trong cùng một collection, dùng biến môi trường cho model ID, thêm assertion cho các trường ứng dụng thực sự sử dụng, rồi chạy lại bộ kiểm thử khi ưu đãi hết hạn hoặc &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; phát hành bản sửa đổi mới.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GLM-5.3-Flash có phải chỉ là GLM-5.3 nhỏ hơn không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Đây là mô hình cơ sở được huấn luyện riêng với kiến trúc chú ý khác, không phải phiên bản bị rút gọn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hai mô hình có cùng cửa sổ ngữ cảnh không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Cả hai đều hỗ trợ 1.048.576 token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mô hình nào tốt hơn cho lập trình?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Theo &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, Flash đạt 84.3 trên Terminal-Bench 2.1 và 63.4 trên DeepSWE. GLM-5.3 nhỉnh hơn một chút về suy luận tổng quát. Với người dùng Gói Coding, hạn mức gấp 3 lần của Flash thường là yếu tố quyết định.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể chuyển đổi mà không thay đổi mã không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Cả hai dùng cùng điểm cuối tương thích OpenAI; chỉ model ID khác nhau. Đầu vào hình ảnh là tính năng riêng của Flash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flash có giữ giá rẻ lâu dài không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lợi thế giá đến từ KV cache nhỏ hơn và chi phí chú ý thấp hơn, không chỉ từ khuyến mãi. Tuy nhiên, ưu đãi giảm 50% bổ sung sẽ hết hạn vào ngày 09 tháng 9 năm 2026.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách sử dụng API GLM-5.3-Flash (Với đầu vào hình ảnh)</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:31:52 +0000</pubDate>
      <link>https://dev.to/sebbasstian/cach-su-dung-api-glm-53-flash-voi-dau-vao-hinh-anh-119c</link>
      <guid>https://dev.to/sebbasstian/cach-su-dung-api-glm-53-flash-voi-dau-vao-hinh-anh-119c</guid>
      <description>&lt;h1&gt;
  
  
  Cách dùng API GLM-5.3-Flash: văn bản, hình ảnh, streaming và công cụ
&lt;/h1&gt;

&lt;p&gt;GLM-5.3-Flash tương thích với OpenAI: chỉ cần trỏ client hiện có sang URL cơ sở mới và đổi ID mô hình. Điểm khác biệt quan trọng là đầu vào hình ảnh—mô hình GLM-5 đầu tiên nhận hình ảnh và văn bản trong cùng một yêu cầu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bài này hướng dẫn lấy khóa API, gọi văn bản, gửi hình ảnh, điều chỉnh suy luận, streaming, gọi công cụ, xử lý lỗi và kiểm soát chi phí. Mọi ví dụ dùng &lt;code&gt;glm-5.3-flash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Tìm hiểu thêm trước khi tích hợp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-what-is?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-5.3-Flash là gì?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/vi/blog/how-to-use-glm-5-3-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn API GLM-5.3&lt;/a&gt; cho mô hình lớn hơn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F08%2Fimage-133.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%2Fassets.apidog.com%2Fblog-next%2F2026%2F08%2Fimage-133.png" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lấy khóa API
&lt;/h2&gt;

&lt;p&gt;Tạo tài khoản tại &lt;a href="http://z.ai" rel="noopener noreferrer"&gt;z.ai&lt;/a&gt;, mở mục API key trong dashboard và tạo khóa. Đặt khóa trong biến môi trường, không đưa vào mã nguồn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ZAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-key-here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;URL cơ sở của API tiêu chuẩn:&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.z.ai/api/paas/v4/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu kết nối Claude Code hoặc Cline, hãy dùng URL cơ sở dành cho coding plan theo &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-claude-code-cline?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn Claude Code và Cline&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thực hiện cuộc gọi đầu tiên
&lt;/h2&gt;

&lt;p&gt;SDK OpenAI hoạt động trực tiếp với URL cơ sở mới.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&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="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;REDACTED&lt;/span&gt; &lt;span class="n"&gt;CREDENTIAL&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.z.ai/api/paas/v4/&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;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3-flash&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="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;Giải thích KV cache là gì trong hai câu.&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="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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  cURL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.z.ai/api/paas/v4/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"[REDACTED CREDENTIAL] &lt;/span&gt;&lt;span class="nv"&gt;$ZAI_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.3-flash",
    "messages": [
      {"role": "user", "content": "Giải thích KV cache là gì trong hai câu."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Node.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;REDACTED&lt;/span&gt; &lt;span class="nx"&gt;CREDENTIAL&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.z.ai/api/paas/v4/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&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="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;glm-5.3-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Giải thích KV cache là gì trong hai câu.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&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="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&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;Ngoài &lt;code&gt;base_url&lt;/code&gt; và &lt;code&gt;model&lt;/code&gt;, đây là API OpenAI tiêu chuẩn. Vì vậy, bạn có thể thử nghiệm việc chuyển đổi mô hình với chi phí tích hợp thấp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gửi hình ảnh
&lt;/h2&gt;

&lt;p&gt;Khác với GLM-5.3, GLM-5.3-Flash nhận hình ảnh thông qua mảng khối nội dung. &lt;code&gt;content&lt;/code&gt; không còn là một chuỗi đơn lẻ:&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="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3-flash&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="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="p"&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;type&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;text&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;text&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;Ảnh chụp màn hình này cho thấy một lỗi hiển thị. Bố cục có vấn đề gì?&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="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&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;https://example.com/screenshots/broken-layout.png&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="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Quy tắc payload đa phương thức
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dùng URL công khai hoặc URL dữ liệu Base64.&lt;/strong&gt; Với ảnh cục bộ hoặc riêng tư, hãy mã hóa Base64:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;broken-layout.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;encoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;image_block&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;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data:image/png;base64,&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;encoded&lt;/span&gt;&lt;span class="si"&gt;}&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mỗi ảnh là một khối &lt;code&gt;image_url&lt;/code&gt;.&lt;/strong&gt; Để so sánh thiết kế và bản triển khai:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&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;Hình ảnh thứ hai có khớp với thiết kế trong hình ảnh đầu tiên không?&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;design_data_url&lt;/span&gt;&lt;span class="p"&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;type&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;image_url&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;image_url&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;built_data_url&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Thứ tự có ý nghĩa.&lt;/strong&gt; Đặt hướng dẫn văn bản trước ảnh liên quan. Ví dụ, câu hỏi “So sánh hai cái này” nên đứng trước hai khối hình ảnh.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tài liệu của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng hỗ trợ video và tệp theo cơ chế content block. Hãy xác thực bằng dữ liệu thực tế trước khi xây dựng tính năng phụ thuộc vào đầu vào video.&lt;/p&gt;

&lt;p&gt;Để xem quy trình từ ảnh chụp màn hình sang mã và cách kết hợp ảnh với tài liệu dài trong cửa sổ 1 triệu token, hãy đọc &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vision-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn vision API GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Điều chỉnh mức suy luận
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash hỗ trợ ba mức &lt;code&gt;reasoning_effort&lt;/code&gt;: &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt; và &lt;code&gt;max&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3-flash&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;Tái cấu trúc hàm này để dễ hiểu hơn.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;extra_body&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;reasoning_effort&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;low&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mặc định là &lt;code&gt;max&lt;/code&gt;, cũng là chế độ tốn kém nhất. Với phân loại hoặc trích xuất số lượng lớn, đặt rõ &lt;code&gt;low&lt;/code&gt; để giảm đáng kể token đầu ra.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;low&lt;/code&gt; là cấp độ mới so với GLM-5.2, vốn chỉ có &lt;code&gt;high&lt;/code&gt; và &lt;code&gt;max&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Trong OpenAI Python SDK, &lt;code&gt;reasoning_effort&lt;/code&gt; phải nằm trong &lt;code&gt;extra_body&lt;/code&gt; vì đây không phải trường của schema OpenAI chuẩn. Khi gọi cURL, đây là trường cấp cao nhất trong JSON.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tham số lấy mẫu đề xuất
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; đề xuất các giá trị sau:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trường hợp sử dụng&lt;/th&gt;
&lt;th&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;top_p&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chung&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mã hóa&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Khác biệt nhỏ, nhưng cấu hình mã hóa đáng thử nếu đầu ra mã không ổn định.&lt;/p&gt;

&lt;h2&gt;
  
  
  Streaming
&lt;/h2&gt;

&lt;p&gt;Dùng ngữ nghĩa streaming tiêu chuẩn của OpenAI:&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="n"&gt;stream&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;glm-5.3-flash&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;Viết một tập lệnh bash để xoay vòng nhật ký.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;chunk&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;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;delta&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;delta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Theo Artificial Analysis, GLM-5.3-Flash tạo khoảng 49 token/giây, chậm hơn GLM-5.3 ở khoảng 86 token/giây. Token đầu tiên xuất hiện sau khoảng 1,52 giây: phù hợp cho giao diện hội thoại, nhưng cần tính đến khi tạo tài liệu dài theo lô.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gọi công cụ
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash dùng schema tool chuẩn của OpenAI:&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="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;type&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;function&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;function&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&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;get_deployment_status&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;description&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;Trả về trạng thái hiện tại của một triển khai được đặt tên.&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;parameters&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;object&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;properties&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;service&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&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;string&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;description&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;Tên dịch vụ, ví dụ: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;checkout-api&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&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="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;service&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="p"&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;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glm-5.3-flash&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;checkout-api có ổn không?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_calls&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Các benchmark tác nhân do &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; công bố cho thấy AutomationBench đạt 48.8, so với 26.2 ở GLM-5.2. Đây là số liệu của nhà cung cấp, nhưng phù hợp với định hướng tối ưu cho các vòng lặp gọi công cụ hơn là hội thoại một lượt.&lt;/p&gt;

&lt;p&gt;Nếu muốn tạo tool definition từ API hiện có, hãy xem cách &lt;a href="https://apidog.com/vi/blog/openapi-spec-as-agent-tools?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chuyển OpenAPI specification thành công cụ tác nhân&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xử lý lỗi cần có trong production
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Giới hạn tốc độ
&lt;/h3&gt;

&lt;p&gt;Dùng exponential backoff kèm jitter. Tránh khoảng thời gian retry cố định vì nhiều worker có thể retry đồng thời.&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;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;random&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;RateLimitError&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_with_retry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&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="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;RateLimitError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;raise&lt;/span&gt;
            &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Tràn ngữ cảnh
&lt;/h3&gt;

&lt;p&gt;Cửa sổ 1 triệu token rất lớn, nhưng tài liệu dài kết hợp với nhiều hình ảnh độ phân giải cao vẫn có thể vượt giới hạn. Hình ảnh cũng tiêu tốn ngữ cảnh, nên hãy theo dõi token đầu vào trước khi gửi yêu cầu.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Đầu ra bị cắt cụt
&lt;/h3&gt;

&lt;p&gt;Nếu phản hồi dừng giữa câu, hãy kiểm tra &lt;code&gt;finish_reason&lt;/code&gt;. Giá trị &lt;code&gt;length&lt;/code&gt; nghĩa là yêu cầu đã chạm giới hạn đầu ra, không phải mô hình tự dừng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đọc mức sử dụng token
&lt;/h2&gt;

&lt;p&gt;Mỗi phản hồi chứa &lt;code&gt;usage&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đặc biệt theo dõi &lt;code&gt;completion_tokens&lt;/code&gt;. Với &lt;code&gt;reasoning_effort="max"&lt;/code&gt;, token suy luận được tính như token đầu ra, nên phản hồi ngắn vẫn có thể tốn nhiều token hoàn thành.&lt;/p&gt;

&lt;p&gt;Cách nhanh nhất để chọn cấu hình phù hợp là chạy cùng prompt ở các mức &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt; và &lt;code&gt;max&lt;/code&gt;, sau đó so sánh &lt;code&gt;completion_tokens&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chi phí
&lt;/h2&gt;

&lt;p&gt;Giá niêm yết:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đầu vào: &lt;strong&gt;0,15 USD / một triệu token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Đầu ra: &lt;strong&gt;0,50 USD / một triệu token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Đầu vào cache: &lt;strong&gt;0,03 USD / một triệu token&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chương trình giảm giá ra mắt 50% kéo dài đến &lt;strong&gt;ngày 9 tháng 9 năm 2026&lt;/strong&gt;, đưa giá xuống lần lượt còn 0,075 USD, 0,25 USD và 0,015 USD.&lt;/p&gt;

&lt;p&gt;Giá có thể khác giữa OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, DeepInfra và các nhà cung cấp khác. Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích giá GLM-5.3-Flash&lt;/a&gt;, đồng thời luôn xác minh giá trực tiếp với nhà cung cấp trước khi lập ngân sách.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiểm thử tích hợp
&lt;/h2&gt;

&lt;p&gt;Các payload đa phương thức Base64 thường khó tạo lại bằng cURL, và việc đổi model có thể âm thầm thay đổi cấu trúc phản hồi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; giúp lưu riêng các request văn bản, hình ảnh và gọi công cụ trong một collection; thêm assertion cho các trường ứng dụng thực sự dùng; và lưu API key trong biến môi trường thay vì shell history.&lt;/p&gt;

&lt;p&gt;Khi chương trình khuyến mãi kết thúc, bạn có thể đổi ID model tại một nơi và chạy lại toàn bộ test suite với cả Flash và GLM-5.3. Điều này biến việc chuyển đổi model thành khác biệt có thể quan sát, thay vì một giả định.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;ID model chính xác là gì?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;glm-5.3-flash&lt;/code&gt; trên API của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;. Trên OpenRouter là &lt;code&gt;z-ai/glm-5.3-flash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SDK OpenAI có hoạt động mà không cần sửa đổi không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có, với chat completion, streaming và tool calling. Tham số không chuẩn như &lt;code&gt;reasoning_effort&lt;/code&gt; cần &lt;code&gt;extra_body&lt;/code&gt; trong Python SDK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể gửi bao nhiêu hình ảnh trong một request?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có thể gửi nhiều ảnh, mỗi ảnh là một khối &lt;code&gt;image_url&lt;/code&gt;. Giới hạn thực tế là ngân sách ngữ cảnh, không phải số lượng ảnh cố định.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vì sao phản hồi dài và chậm?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;reasoning_effort&lt;/code&gt; mặc định là &lt;code&gt;max&lt;/code&gt;. Đặt &lt;code&gt;low&lt;/code&gt; cho công việc không cần suy luận sâu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Độ dài đầu ra tối đa là bao nhiêu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Các nguồn chưa thống nhất: OpenRouter liệt kê 131.072 token, còn thẻ Hugging Face nêu 163.840 token. Hãy xác minh với nhà cung cấp trước khi phụ thuộc vào thế hệ rất dài.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách dùng GLM-5.3-Flash trong Claude Code và Cline</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:31:11 +0000</pubDate>
      <link>https://dev.to/sebbasstian/cach-dung-glm-53-flash-trong-claude-code-va-cline-3lbf</link>
      <guid>https://dev.to/sebbasstian/cach-dung-glm-53-flash-trong-claude-code-va-cline-3lbf</guid>
      <description>&lt;h1&gt;
  
  
  Tích hợp GLM-5.3-Flash với Claude Code và Cline
&lt;/h1&gt;

&lt;p&gt;Nếu bạn đã đăng ký Gói mã hóa GLM, GLM-5.3-Flash đáng chú ý vì được cho là cung cấp &lt;strong&gt;dung lượng sử dụng gấp ba lần&lt;/strong&gt; GLM-5.3 trên cùng một gói. Đổi lại, mô hình đạt 57 điểm trên Chỉ số Thông minh Artificial Analysis, thay vì 60 điểm của GLM-5.3.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Với công việc mã hóa thông thường, đây thường là đánh đổi hợp lý. Bài viết này hướng dẫn cấu hình GLM-5.3-Flash cho Claude Code và Cline, thời điểm nên dùng GLM-5.3, cùng các lỗi cấu hình phổ biến.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chuẩn bị
&lt;/h2&gt;

&lt;p&gt;Bạn cần:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gói đăng ký mã hóa GLM từ &lt;a href="http://z.ai" rel="noopener noreferrer"&gt;z.ai&lt;/a&gt;, với giá khởi điểm khoảng 18 USD/tháng.&lt;/li&gt;
&lt;li&gt;Khóa API từ bảng điều khiển &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Claude Code hoặc Cline đã được cài đặt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy xác minh hệ số dung lượng và cấp gói trực tiếp trên &lt;a href="http://z.ai" rel="noopener noreferrer"&gt;z.ai&lt;/a&gt; trước khi lập kế hoạch sử dụng. Điều khoản gói có thể thay đổi; con số gấp 3 lần đến từ tài liệu của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cung cấp endpoint tương thích Anthropic, vì vậy Claude Code có thể gọi GLM bằng hai biến môi trường.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thiết lập nhanh
&lt;/h3&gt;

&lt;p&gt;Chạy công cụ hỗ trợ của Z.ai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @z_ai/coding-helper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Công cụ sẽ yêu cầu khóa API và tạo cấu hình. Nếu hoàn tất, chuyển sang phần chọn mô hình.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thiết lập thủ công
&lt;/h3&gt;

&lt;p&gt;Thêm URL cơ sở và mã thông báo vào hồ sơ shell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://api.z.ai/api/anthropic"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-z-ai-key"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Khởi động Claude Code như bình thường. Các yêu cầu sẽ được gửi đến &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; thay vì Anthropic.&lt;/p&gt;

&lt;p&gt;Lưu ý hai lỗi phổ biến:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; khác &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;.&lt;/strong&gt; Nếu bạn còn khóa Anthropic cũ, hãy hủy đặt biến &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;. Đặt cả hai có thể tạo lỗi xác thực giống như dùng sai khóa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Biến môi trường phải đến được tiến trình Claude Code.&lt;/strong&gt; Nếu bạn đặt biến trong &lt;code&gt;.zshrc&lt;/code&gt; nhưng mở Claude Code từ trình chỉnh sửa hoặc launcher không tải cấu hình shell, các biến sẽ không tồn tại. Kiểm tra bằng lệnh sau trong cùng ngữ cảnh khởi chạy:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$ANTHROPIC_BASE_URL&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Chọn mô hình
&lt;/h3&gt;

&lt;p&gt;Chọn &lt;code&gt;glm-5.3-flash&lt;/code&gt;. Nếu công cụ dùng tệp cài đặt, cấu hình là:&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.3-flash"&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;Với tác vụ có ngữ cảnh dài, tăng thời gian chờ:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Giá trị này được kế thừa từ thiết lập GLM-5.2; hãy điều chỉnh theo trải nghiệm thực tế. Xem thêm &lt;a href="https://apidog.com/vi/blog/glm-5-2-claude-code-cline-cursor?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn thiết lập GLM-5.2&lt;/a&gt; nếu bạn đang di chuyển cấu hình cũ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cline
&lt;/h2&gt;

&lt;p&gt;Cline kết nối qua nhà cung cấp tương thích OpenAI, không phải endpoint có định dạng Anthropic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mở &lt;strong&gt;Cline Settings&lt;/strong&gt; và chọn &lt;strong&gt;OpenAI Compatible&lt;/strong&gt; làm nhà cung cấp API.&lt;/li&gt;
&lt;li&gt;Đặt Base URL thành &lt;code&gt;https://api.z.ai/api/coding/paas/v4&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Dán khóa API &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Chọn &lt;strong&gt;Custom Model&lt;/strong&gt; và nhập &lt;code&gt;glm-5.3-flash&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Endpoint Gói mã hóa là &lt;code&gt;/api/coding/paas/v4&lt;/code&gt;, khác với endpoint API chuẩn &lt;code&gt;/api/paas/v4&lt;/code&gt; dùng cho gọi API trực tiếp trong &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API&lt;/a&gt;. Dùng endpoint API chuẩn với khóa Gói mã hóa là nguyên nhân phổ biến gây lỗi ủy quyền. Hãy kiểm tra tài liệu &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; mới nhất vì các đường dẫn này đã từng thay đổi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cài đặt cửa sổ ngữ cảnh
&lt;/h3&gt;

&lt;p&gt;Cline không phải lúc nào cũng suy luận đúng cửa sổ ngữ cảnh cho mô hình tùy chỉnh. Nếu làm việc với codebase lớn hoặc thấy ngữ cảnh bị cắt sớm, hãy đặt thủ công cửa sổ ngữ cảnh thành &lt;strong&gt;1.000.000&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Điều này cũng áp dụng cho GLM-5.2: Cline có thể bỏ qua ngữ cảnh tệp sớm dù mô hình vẫn có khả năng giữ lại.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao Flash phù hợp với mã hóa tác nhân
&lt;/h2&gt;

&lt;p&gt;Theo số liệu ra mắt của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Điểm chuẩn&lt;/th&gt;
&lt;th&gt;GLM-5.3-Flash&lt;/th&gt;
&lt;th&gt;GLM-5.2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench 2.1&lt;/td&gt;
&lt;td&gt;84.3&lt;/td&gt;
&lt;td&gt;Không so sánh trực tiếp được&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE&lt;/td&gt;
&lt;td&gt;63.4&lt;/td&gt;
&lt;td&gt;46.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;48.8&lt;/td&gt;
&lt;td&gt;26.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Terminal-Bench được đánh giá trên Claude Code 2.1.207, nên có liên quan trực tiếp đến thiết lập của nhiều người dùng. Tuy nhiên, hãy xem đây là tuyên bố từ nhà cung cấp cho đến khi có kết quả sao chép độc lập.&lt;/p&gt;

&lt;p&gt;Theo Artificial Analysis, GLM-5.3-Flash có Chỉ số Thông minh là 57, so với 60 của GLM-5.3.&lt;/p&gt;

&lt;p&gt;Một khả năng mới hữu ích cho công cụ mã hóa là &lt;strong&gt;đầu vào hình ảnh gốc&lt;/strong&gt;. Flash có thể nhận ảnh chụp màn hình cùng với mã trong một yêu cầu. Với công việc front-end, bạn có thể gửi ảnh bố cục bị lỗi để mô hình suy luận trực tiếp từ kết quả hiển thị thay vì chỉ dựa vào mô tả. &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vision-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn tính năng thị giác&lt;/a&gt; trình bày chi tiết khả năng này.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đánh đổi về tốc độ
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash tạo khoảng 49 token/giây, trong khi GLM-5.3 đạt khoảng 86 token/giây. Với các yêu cầu cần tạo đầu ra dài, sự khác biệt này sẽ rõ rệt.&lt;/p&gt;

&lt;p&gt;Thời gian đến token đầu tiên gần như tương đương: 1,52 giây so với 1,57 giây. Flash bắt đầu phản hồi nhanh, nhưng chậm hơn khi phải tạo nhiều nội dung.&lt;/p&gt;

&lt;p&gt;Tóm lại:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chỉnh sửa nhỏ, gọi công cụ, đọc mã, tác vụ lặp lại:&lt;/strong&gt; Flash thường có lợi hơn nhờ dung lượng gấp 3 lần.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tái cấu trúc lớn hoặc viết lại tệp dài:&lt;/strong&gt; GLM-5.3 có thể đáng dùng hơn nhờ tốc độ tạo đầu ra cao hơn.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Chiến lược định tuyến thực tế
&lt;/h2&gt;

&lt;p&gt;Không cần chỉ chọn một mô hình:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dùng &lt;strong&gt;Flash mặc định&lt;/strong&gt; cho khám phá, đọc mã, chạy lệnh, chỉnh sửa nhỏ và tác vụ liên quan đến hình ảnh.&lt;/li&gt;
&lt;li&gt;Dùng &lt;strong&gt;GLM-5.3&lt;/strong&gt; cho vấn đề kiến trúc khó, tái cấu trúc lớn hoặc khi Flash đã thất bại một lần.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Việc chuyển đổi chỉ yêu cầu thay đổi ID mô hình trong cài đặt công cụ. Cách này giữ phần lớn khối lượng công việc trên mô hình có dung lượng gấp 3 lần, đồng thời dành dung lượng GLM-5.3 cho những tác vụ thực sự cần thiết.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng cho biết các lệnh gọi ngoài giờ cao điểm chỉ tiêu thụ một nửa số điểm tiêu chuẩn. Lập lịch tác vụ tác nhân theo lô hoặc chạy nền ngoài giờ cao điểm có thể giúp kéo dài gói dịch vụ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Khắc phục sự cố
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lỗi 401 hoặc 403 trên mọi yêu cầu
&lt;/h3&gt;

&lt;p&gt;Nguyên nhân thường là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base URL không phù hợp với khóa đang dùng.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; cũ che khuất &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy xác nhận bằng lệnh gọi trực tiếp ở phần cuối bài viết trước khi thay đổi cấu hình công cụ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Không tìm thấy mô hình
&lt;/h3&gt;

&lt;p&gt;Kiểm tra chính xác ID:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glm-5.3-flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ID này dùng dấu chấm trong phiên bản và dấu gạch nối trước &lt;code&gt;flash&lt;/code&gt;. Trên OpenRouter, tên là &lt;code&gt;z-ai/glm-5.3-flash&lt;/code&gt;, không thể thay thế trực tiếp cho ID gốc của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ngữ cảnh bị cắt ngắn sớm
&lt;/h3&gt;

&lt;p&gt;Trong Cline, đặt thủ công cửa sổ ngữ cảnh thành &lt;strong&gt;1.000.000&lt;/strong&gt;. Cline không luôn suy luận chính xác giá trị này cho mô hình tùy chỉnh.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hết thời gian chờ với yêu cầu lớn
&lt;/h3&gt;

&lt;p&gt;Tăng &lt;code&gt;API_TIMEOUT_MS&lt;/code&gt;. Yêu cầu có ngữ cảnh rất dài có thể vượt quá thời gian chờ mặc định của máy khách.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dung lượng cạn nhanh hơn dự kiến
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;reasoning_effort&lt;/code&gt; mặc định là &lt;code&gt;max&lt;/code&gt;, và token suy luận cũng được tính. Nếu công cụ hỗ trợ cấu hình này, hãy giảm xuống &lt;code&gt;low&lt;/code&gt; cho công việc thông thường để kéo dài gói dịch vụ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lệnh gọi công cụ lỗi hoặc sai định dạng
&lt;/h3&gt;

&lt;p&gt;Xác nhận công cụ và endpoint sử dụng cùng định dạng gọi công cụ. Đây thường là phần nhạy cảm nhất với phiên bản và dễ hỏng sau khi một bên cập nhật.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dùng với các công cụ khác
&lt;/h2&gt;

&lt;p&gt;Hai kiểu kết nối này bao phủ phần lớn công cụ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Công cụ tương thích Anthropic — như Claude Code và một số framework tác nhân — dùng &lt;code&gt;https://api.z.ai/api/anthropic&lt;/code&gt; với &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Công cụ tương thích OpenAI — như Cline, Roo, Kilo, OpenCode, Codex và tùy chọn mô hình tùy chỉnh của Cursor — dùng &lt;code&gt;https://api.z.ai/api/coding/paas/v4&lt;/code&gt;, khóa API tiêu chuẩn và ID &lt;code&gt;glm-5.3-flash&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Các hướng dẫn cho phiên bản trước:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/glm-5-1-claude-code?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-5.1 với Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/claude-code-cursor-glm-4-7?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Code và Cursor với GLM-4.7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Xác minh kết nối
&lt;/h2&gt;

&lt;p&gt;Trước khi tin vào cấu hình công cụ, hãy kiểm tra endpoint độc lập:&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.z.ai/api/coding/paas/v4/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"[REDACTED CREDENTIAL] &lt;/span&gt;&lt;span class="nv"&gt;$ZAI_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.3-flash",
    "messages": [{"role": "user", "content": "reply with OK"}]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu lệnh trả về phản hồi hoàn chỉnh nhưng công cụ vẫn thất bại, vấn đề nằm ở cấu hình công cụ chứ không phải thông tin đăng nhập.&lt;/p&gt;

&lt;p&gt;Với nhiều hơn một lần kiểm tra, &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; thuận tiện hơn lịch sử shell. Lưu endpoint mã hóa và endpoint chuẩn cạnh nhau, dùng biến môi trường để lưu khóa, rồi kiểm tra nhanh liệu lỗi ủy quyền đến từ endpoint hay công cụ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tôi có cần Gói mã hóa không, hay API credits cũng hoạt động?&lt;/strong&gt; Cả hai đều hoạt động. Gói mã hóa thường phù hợp hơn với lập trình viên dùng hằng ngày; API credits phù hợp cho ứng dụng. Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;bài viết về giá&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flash có thực sự có dung lượng gấp 3 lần GLM-5.3 không?&lt;/strong&gt; Đây là con số do &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; công bố. Hãy xác minh tại &lt;a href="http://z.ai/subscribe" rel="noopener noreferrer"&gt;z.ai/subscribe&lt;/a&gt; trước khi lập kế hoạch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vì sao Cline cắt ngắn ngữ cảnh?&lt;/strong&gt; Đặt thủ công cửa sổ ngữ cảnh thành 1.000.000; Cline không luôn suy luận đúng cho mô hình tùy chỉnh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dùng Base URL nào?&lt;/strong&gt; Dùng &lt;code&gt;https://api.z.ai/api/anthropic&lt;/code&gt; cho Claude Code, &lt;code&gt;https://api.z.ai/api/coding/paas/v4&lt;/code&gt; cho công cụ tương thích OpenAI trong Gói mã hóa, và &lt;code&gt;https://api.z.ai/api/paas/v4&lt;/code&gt; cho lệnh gọi API trực tiếp.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tôi có thể dán ảnh chụp màn hình vào Claude Code với Flash không?&lt;/strong&gt; Mô hình hỗ trợ đầu vào hình ảnh gốc. Việc phiên bản công cụ của bạn có hiển thị khả năng này hay không là vấn đề riêng, vì vậy hãy kiểm tra trước khi phụ thuộc vào nó.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Cách kiểm tra API GLM-5.3-Flash trong Apidog</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:28:29 +0000</pubDate>
      <link>https://dev.to/sebbasstian/cach-kiem-tra-api-glm-53-flash-trong-apidog-dd5</link>
      <guid>https://dev.to/sebbasstian/cach-kiem-tra-api-glm-53-flash-trong-apidog-dd5</guid>
      <description>&lt;h1&gt;
  
  
  Kiểm tra GLM-5.3-Flash bằng Apidog: văn bản, hình ảnh, gọi công cụ và CI
&lt;/h1&gt;

&lt;p&gt;Thay đổi ID LLM chỉ là một dòng code, nhưng có thể làm đổi độ trễ, chi phí token, định dạng đầu ra, hành vi gọi công cụ và khả năng xử lý ảnh. GLM-5.3-Flash rẻ hơn GLM-5.3 khoảng chín lần, hỗ trợ hình ảnh nguyên bản trong khi GLM-5.3 không hỗ trợ, nhưng tốc độ tạo văn bản chỉ bằng khoảng một nửa. Cách đáng tin cậy để chọn mô hình là chạy cùng các yêu cầu thực tế trên cả hai.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Hướng dẫn này tạo một bộ sưu tập kiểm thử có thể tái sử dụng trong &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; cho GLM-5.3-Flash: chat văn bản, thị giác, function calling, xác nhận phản hồi và so sánh mô hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao không chỉ dùng curl?
&lt;/h2&gt;

&lt;p&gt;Bạn có thể bắt đầu bằng curl; &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API&lt;/a&gt; của chúng tôi có ví dụ đầy đủ. Nhưng khi cần chạy lại nhiều lần, hai vấn đề nhanh chóng xuất hiện:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ảnh Base64 khó quản lý.&lt;/strong&gt; URL dữ liệu có thể dài hàng nghìn ký tự, khiến lệnh terminal khó đọc, khó sửa và không phù hợp để tái sử dụng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không có xác nhận tự động.&lt;/strong&gt; Curl chỉ cho biết request thành công; không đảm bảo phản hồi vẫn chứa các trường mà ứng dụng phụ thuộc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một collection đã lưu giải quyết cả hai: payload có thể chỉnh sửa và các assertion được chạy ở mỗi lần gửi yêu cầu.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Thiết lập môi trường
&lt;/h2&gt;

&lt;p&gt;Tạo environment với các biến sau:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Biến&lt;/th&gt;
&lt;th&gt;Giá trị&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;base_url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.z.ai/api/paas/v4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;api_key&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;khóa &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; của bạn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;glm-5.3-flash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Giữ model ID dưới dạng biến để bạn có thể chạy lại toàn bộ collection với mô hình khác. Lưu API key trong environment thay vì dán vào header để tránh vô tình xuất hoặc chia sẻ khóa.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Kiểm tra hoàn thành văn bản
&lt;/h2&gt;

&lt;p&gt;Tạo request &lt;code&gt;POST&lt;/code&gt; tới:&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}}/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;[REDACTED CREDENTIAL] {{api_key}}
Content-Type: application/json
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Body:&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;"{{model}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Reply with exactly: OK"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning_effort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&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;Đặt &lt;code&gt;reasoning_effort&lt;/code&gt; thành &lt;code&gt;low&lt;/code&gt;. Mặc định của mô hình là &lt;code&gt;max&lt;/code&gt;, và token lý luận được tính phí như token đầu ra. Với kiểm tra kết nối cơ bản, chi phí đó không cần thiết.&lt;/p&gt;

&lt;p&gt;Thêm các assertion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status code là &lt;code&gt;200&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;choices[0].message.content&lt;/code&gt; tồn tại&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;choices[0].finish_reason&lt;/code&gt; là &lt;code&gt;stop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usage.total_tokens&lt;/code&gt; tồn tại&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiểm tra &lt;code&gt;finish_reason&lt;/code&gt; rất quan trọng. Giá trị &lt;code&gt;length&lt;/code&gt; cho biết đầu ra đã bị cắt ở giới hạn token, không phải hoàn thành bình thường. Đây là cách rõ ràng để phát hiện phản hồi bị truncation.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Kiểm tra đầu vào hình ảnh
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash hỗ trợ hình ảnh nguyên bản; GLM-5.3 thì không. Dùng cùng endpoint nhưng thay &lt;code&gt;content&lt;/code&gt; bằng mảng block:&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;"{{model}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What color is the dominant shape in this image? Answer with one word."&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"image_url"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"image_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{test_image_url}}"&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning_effort"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&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;Thêm &lt;code&gt;test_image_url&lt;/code&gt; vào environment. Hãy dùng ảnh công khai, ổn định và có đáp án rõ ràng để biến request này thành regression test thay vì demo.&lt;/p&gt;

&lt;p&gt;Với ảnh cục bộ, lưu URL dữ liệu Base64 vào biến môi trường:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data:image/png;base64,iVBORw0go...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Các assertion nên có:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status code là &lt;code&gt;200&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;choices[0].message.content&lt;/code&gt; chứa đáp án mong đợi&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usage.prompt_tokens&lt;/code&gt; lớn hơn request chỉ có văn bản&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assertion token đặc biệt hữu ích: ảnh tiêu thụ token đầu vào. Nếu &lt;code&gt;prompt_tokens&lt;/code&gt; không tăng, ảnh có thể đã bị bỏ qua dù API vẫn trả về &lt;code&gt;200&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Xem thêm &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vision-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn thị giác GLM-5.3-Flash&lt;/a&gt; để biết luồng xử lý ảnh và các chế độ lỗi.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Kiểm tra function calling
&lt;/h2&gt;

&lt;p&gt;Nếu ứng dụng dùng function calling, hãy kiểm tra trực tiếp định dạng tool call. Đây là phần dễ bị ảnh hưởng nhất khi nhà cung cấp hoặc phiên bản mô hình thay đổi.&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;"{{model}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Is the checkout-api service healthy?"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_deployment_status"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Returns the current status of a named deployment."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"parameters"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The service name."&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thêm các assertion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;choices[0].message.tool_calls&lt;/code&gt; tồn tại và không rỗng&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;choices[0].message.tool_calls[0].function.name&lt;/code&gt; là &lt;code&gt;get_deployment_status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;choices[0].finish_reason&lt;/code&gt; là &lt;code&gt;tool_calls&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đừng chỉ kiểm tra sự tồn tại của tool call. Kiểm tra tên hàm giúp phát hiện mô hình gọi sai tool khi bạn có nhiều công cụ.&lt;/p&gt;

&lt;p&gt;Nếu đã có API, bạn có thể &lt;a href="https://apidog.com/vi/blog/openapi-spec-as-agent-tools?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;biến đổi spec OpenAPI thành công cụ tác tử&lt;/a&gt; thay vì viết schema thủ công.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. So sánh với GLM-5.3
&lt;/h2&gt;

&lt;p&gt;Nhân đôi environment, rồi đổi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model = glm-5.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chạy lại cùng collection và so sánh ba điểm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tính đúng đắn:&lt;/strong&gt; Các assertion có còn qua không? Request hình ảnh sẽ không qua vì GLM-5.3 không hỗ trợ ảnh nguyên bản. Đây là một phát hiện hợp lệ, không phải lỗi test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Độ trễ:&lt;/strong&gt; Apidog hiển thị response time cho từng request. Với đầu ra dài, GLM-5.3 có thể nhanh hơn: khoảng 86 token/giây so với 49 token/giây của Flash.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chi phí:&lt;/strong&gt; Dùng &lt;code&gt;usage.prompt_tokens&lt;/code&gt; và &lt;code&gt;usage.completion_tokens&lt;/code&gt;, sau đó nhân với đơn giá của từng model. Bạn sẽ có chi phí thực tế theo request thay vì con số marketing tổng quát.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích giá GLM-5.3-Flash&lt;/a&gt; và &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vs-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;so sánh GLM-5.3-Flash với GLM-5.3&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Theo dõi kỹ &lt;code&gt;completion_tokens&lt;/code&gt; ở các mức &lt;code&gt;reasoning_effort&lt;/code&gt;. Chạy cùng prompt với &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt; và &lt;code&gt;max&lt;/code&gt; để xác định mức suy luận mà workload thực sự cần.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Kiểm tra triển khai cục bộ
&lt;/h2&gt;

&lt;p&gt;Nếu tự host trọng số, vLLM và SGLang đều có endpoint tương thích OpenAI. Chỉ cần thay &lt;code&gt;base_url&lt;/code&gt; bằng URL máy chủ của bạn rồi chạy lại collection.&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%2Fzlw2mcwp0i4zbjy2qxhv.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%2Fzlw2mcwp0i4zbjy2qxhv.png" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Đây là cách phát hiện các lỗi mà smoke test không thấy: bản lượng tử hóa có thể trả lời chat cơ bản bình thường nhưng xử lý sai tool schema hoặc giảm chất lượng đầu vào hình ảnh. &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn chạy GLM-5.3-Flash cục bộ&lt;/a&gt; bao gồm phần triển khai.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Đưa collection vào CI
&lt;/h2&gt;

&lt;p&gt;Khi collection ổn định, chạy nó trong CI hoặc theo lịch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trước khi chuyển model, làm tín hiệu chấp thuận hoặc từ chối.&lt;/li&gt;
&lt;li&gt;Theo lịch, để phát hiện thay đổi phía nhà cung cấp.&lt;/li&gt;
&lt;li&gt;Sau khi cập nhật SDK hoặc dependency, để phát hiện thay đổi trong serialization request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nhà cung cấp có thể cập nhật mô hình phía sau một model ID ổn định. Kiểm tra định kỳ giúp bạn biết hành vi đã thay đổi trước khi người dùng phát hiện.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Kiểm tra ngoài happy path
&lt;/h2&gt;

&lt;p&gt;Sau khi các request cơ bản hoạt động, bổ sung:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context dài bằng đúng độ dài ứng dụng thực tế sử dụng; hành vi ở 500K token không thể suy ra từ 5K token.&lt;/li&gt;
&lt;li&gt;Đầu vào lỗi để xác nhận xử lý lỗi.&lt;/li&gt;
&lt;li&gt;Phản hồi rate limit để kiểm tra retry logic.&lt;/li&gt;
&lt;li&gt;Nhiều ảnh trong một request; mỗi ảnh cần block &lt;code&gt;image_url&lt;/code&gt; riêng.&lt;/li&gt;
&lt;li&gt;Streaming nếu ứng dụng dùng stream, vì cấu trúc phản hồi khác completion thông thường.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kết luận
&lt;/h2&gt;

&lt;p&gt;Giá trị của collection không nằm ở từng request mà ở khả năng lặp lại. Khi giá thay đổi, &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; phát hành bản sửa đổi mới, hoặc đội ngũ cân nhắc đổi nhà cung cấp, bạn có thể đánh giá lại quyết định model trong khoảng ba mươi giây.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; miễn phí để bắt đầu. Nhập schema tương thích OpenAI để thiết lập nhanh phần lớn request, sau đó giữ collection như một regression suite cho mọi lần thay đổi mô hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Tôi có cần gói Apidog trả phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Collection có environment variables và assertion hoạt động trên gói miễn phí.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Làm cách nào để kiểm tra ảnh Base64 mà không làm body khó đọc?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lưu data URL trong environment và dùng &lt;code&gt;{{test_image_url}}&lt;/code&gt; trong request body.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tôi có thể kiểm tra endpoint coding-plan tương tự không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Đổi &lt;code&gt;base_url&lt;/code&gt; thành:&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.z.ai/api/coding/paas/v4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endpoint này khác API tiêu chuẩn; xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-claude-code-cline?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn Claude Code và Cline&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Các test này có dùng được với nhà cung cấp khác không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Phần lớn có. OpenRouter, Cloudflare Workers AI và Vercel AI Gateway đều có giao diện tương thích OpenAI. Thay &lt;code&gt;base_url&lt;/code&gt; và model ID namespace phù hợp.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Làm sao xác nhận phản hồi không xác định trước?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Xác nhận cấu trúc và ràng buộc thay vì toàn bộ văn bản: sự tồn tại trường, kiểu dữ liệu, số token, &lt;code&gt;finish_reason&lt;/code&gt; và chuỗi con cho câu hỏi có đáp án đã biết.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách chạy GLM-5.3-Flash trên máy tính</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:27:04 +0000</pubDate>
      <link>https://dev.to/sebbasstian/cach-chay-glm-53-flash-tren-may-tinh-552a</link>
      <guid>https://dev.to/sebbasstian/cach-chay-glm-53-flash-tren-may-tinh-552a</guid>
      <description>&lt;p&gt;GLM-5.3-Flash là một mô hình 320 tỷ tham số được phát hành theo giấy phép MIT. Hai sự thật này có vẻ mâu thuẫn: giấy phép cho phép bạn chạy nó theo bất kỳ cách nào bạn muốn, nhưng số lượng tham số lại đòi hỏi phần cứng nghiêm túc để làm được điều đó.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Hãy dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Điểm quan trọng là chỉ 18 tỷ trong 320 tỷ tham số hoạt động trên mỗi token. Cùng với các bản dựng lượng tử hóa đã có, điều này đưa mô hình vào tầm với của những thiết lập nhỏ hơn đáng kể so với nút 8× H200 thường được giả định.&lt;/p&gt;

&lt;p&gt;Bài viết này giúp bạn chọn cấu hình phù hợp: từ nút sản xuất độ chính xác đầy đủ đến bản dựng lượng tử hóa trên máy trạm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bạn thực sự đang tải gì?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Thuộc tính&lt;/th&gt;
&lt;th&gt;Giá trị&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tổng tham số&lt;/td&gt;
&lt;td&gt;320B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hoạt động trên mỗi token&lt;/td&gt;
&lt;td&gt;18B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kiến trúc&lt;/td&gt;
&lt;td&gt;MoE, hybrid linear và sparse attention&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ngữ cảnh&lt;/td&gt;
&lt;td&gt;1.048.576 token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Giấy phép&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trọng số&lt;/td&gt;
&lt;td&gt;&lt;code&gt;zai-org/GLM-5.3-Flash&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lượng tử hóa GGUF&lt;/td&gt;
&lt;td&gt;&lt;code&gt;unsloth/GLM-5.3-Flash-GGUF&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Kiến trúc mixture-of-experts (MoE) khiến mô hình khả thi: toàn bộ 320B tham số phải nằm trong bộ nhớ, nhưng chỉ 18B tham gia khi tạo mỗi token. Vì vậy, giới hạn chính là &lt;strong&gt;bộ nhớ&lt;/strong&gt;, không phải FLOPs.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng báo cáo KV cache nhỏ hơn khoảng 4,4 lần so với GLM-5.3. Điều này đặc biệt quan trọng cho ngữ cảnh dài, vì KV cache tăng theo số token và thường là nguyên nhân gây hết bộ nhớ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cấp 1: Độ chính xác đầy đủ cho môi trường sản xuất
&lt;/h2&gt;

&lt;p&gt;Để phục vụ đầy đủ chất lượng và đồng thời thực sự, cấu hình tham chiếu là &lt;strong&gt;8× H200&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;141 GB mỗi GPU&lt;/li&gt;
&lt;li&gt;Khoảng 1.128 GB VRAM tổng cộng&lt;/li&gt;
&lt;li&gt;8× H20 cũng hoạt động tốt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chỉ riêng trọng số cần khoảng 700–800 GB tùy độ chính xác; bạn vẫn cần bộ nhớ cho KV cache và overhead runtime. Giá thuê đám mây cho cấu hình này vào khoảng 24–48 USD/ngày.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chạy bằng vLLM
&lt;/h3&gt;

&lt;p&gt;vLLM có hệ sinh thái rộng và là lựa chọn mặc định phổ biến. Dùng tensor parallel với kích thước là lũy thừa của hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve zai-org/GLM-5.3-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 1048576 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--trust-remote-code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đừng bắt đầu ngay với cửa sổ ngữ cảnh 1 triệu token. Hãy xác thực thiết lập với &lt;code&gt;--max-model-len&lt;/code&gt; nhỏ hơn trước, vì yêu cầu ngữ cảnh tối đa sẽ buộc runtime cấp phát KV cache tương ứng và dễ dẫn đến lỗi hết bộ nhớ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chạy bằng SGLang
&lt;/h3&gt;

&lt;p&gt;SGLang hỗ trợ mô hình này ngay từ ngày đầu, với công thức triển khai cho H100, H200, B200, B300, GB200 và GB300, bao gồm cả phục vụ đa phương thức. &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; đã dùng một stack dựa trên SGLang trước khi ra mắt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; sglang.launch_server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model-path&lt;/span&gt; zai-org/GLM-5.3-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tp&lt;/span&gt; 8 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--context-length&lt;/span&gt; 1048576
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SGLang thường mạnh về đầu ra có cấu trúc và các tác vụ agentic đồng thời cao. Nếu bạn phục vụ coding agent thay vì giao diện trò chuyện, hãy benchmark cả SGLang và vLLM trên tải thực tế.&lt;/p&gt;

&lt;p&gt;Cả hai runtime cần cấu hình tool-call parser nếu bạn dùng function calling. Kiểm tra tài liệu phiên bản hiện tại, vì tên parser có thể thay đổi giữa các bản phát hành.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cấp 2: Lượng tử hóa trên phần cứng nhỏ hơn
&lt;/h2&gt;

&lt;p&gt;Các bản dựng GGUF lượng tử hóa có tại &lt;code&gt;unsloth/GLM-5.3-Flash-GGUF&lt;/code&gt;, gồm các định dạng mạnh như IQ1_S và IQ2_XXS.&lt;/p&gt;

&lt;p&gt;Lượng tử hóa 2-bit có thể giảm dung lượng trọng số của mô hình 320B xuống mức phù hợp với:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Máy trạm có RAM lớn&lt;/li&gt;
&lt;li&gt;Hệ thống nhiều GPU tiêu dùng&lt;/li&gt;
&lt;li&gt;Thiết lập dùng CPU offload&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tuy nhiên, cần lưu ý hai điều.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Lượng tử hóa mạnh làm giảm chất lượng
&lt;/h3&gt;

&lt;p&gt;IQ1_S vẫn cách xa chất lượng độ chính xác đầy đủ. Với MoE 320B, mức suy giảm có thể ít nghiêm trọng hơn mô hình dense tương đương vì có nhiều dư thừa hơn, nhưng “chạy được” không đồng nghĩa với “chạy tốt”.&lt;/p&gt;

&lt;p&gt;Hãy kiểm tra bằng workload, prompt, tool schema và dữ liệu thực tế của bạn trước khi triển khai.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bản hướng dẫn của Unsloth vẫn đang phát triển
&lt;/h3&gt;

&lt;p&gt;Các định dạng lượng tử hóa và cấu hình khuyến nghị có thể thay đổi. Hãy kiểm tra những bản dựng thực sự đã được phát hành trước khi lên kế hoạch phần cứng quanh một định dạng cụ thể.&lt;/p&gt;

&lt;p&gt;Với hệ thống CPU-heavy hoặc hybrid, &lt;strong&gt;KTransformers&lt;/strong&gt; phù hợp với kiến trúc MoE: giữ các expert trong RAM hệ thống và chỉ chuyển phần cần thiết lên GPU. &lt;strong&gt;TokenSpeed&lt;/strong&gt; cũng nằm trong danh sách runtime được hỗ trợ.&lt;/p&gt;

&lt;p&gt;Bạn có thể tham khảo thêm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/glm-4-7-flash-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Chạy GLM-4.7-Flash cục bộ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/run-glm-5-locally-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Chạy GLM-5 cục bộ miễn phí&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tính ngân sách bộ nhớ
&lt;/h2&gt;

&lt;p&gt;Hai yếu tố quyết định cấu hình có khả thi hay không.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trọng số
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Định dạng&lt;/th&gt;
&lt;th&gt;Ước tính dung lượng trọng số&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BF16&lt;/td&gt;
&lt;td&gt;Khoảng 640 GB trước overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP8&lt;/td&gt;
&lt;td&gt;Khoảng một nửa BF16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-bit&lt;/td&gt;
&lt;td&gt;Gần 160 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2-bit mạnh&lt;/td&gt;
&lt;td&gt;Thấp hơn nữa, đổi lại chất lượng giảm&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  KV cache
&lt;/h3&gt;

&lt;p&gt;KV cache tăng theo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Độ dài ngữ cảnh&lt;/li&gt;
&lt;li&gt;Số lượng yêu cầu đồng thời&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một cấu hình chạy tốt ở 8K token vẫn có thể thất bại ở 128K token do KV cache, không phải do trọng số. Việc &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; giảm KV cache khoảng 4,4 lần so với GLM-5.3 là rất hữu ích, nhưng mức sử dụng vẫn tăng tuyến tính theo token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cách làm thực tế:&lt;/strong&gt; đặt giới hạn ngữ cảnh theo nhu cầu thật. Rất ít ứng dụng cần một triệu token; cấp phát bộ nhớ cho cửa sổ không dùng đến là cách nhanh nhất khiến mô hình trông quá đắt đỏ.&lt;/p&gt;

&lt;p&gt;Nếu bạn từng theo dõi hướng dẫn trước khi trọng số được phát hành, hãy lưu ý rằng &lt;a href="https://apidog.com/vi/blog/self-host-glm-5-3-open-weights?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;bài viết tự host GLM-5.3&lt;/a&gt; được viết trước thời điểm đó. Trọng số Flash hiện đã được phát hành theo giấy phép MIT, nên hướng dẫn này thay thế bối cảnh cũ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tinh chỉnh
&lt;/h2&gt;

&lt;p&gt;Giấy phép MIT cho phép tinh chỉnh và phân phối lại, một lợi thế hiếm có ở mức năng lực này.&lt;/p&gt;

&lt;p&gt;Tuy nhiên, tinh chỉnh đầy đủ mô hình 320B nằm ngoài khả năng của hầu hết đội ngũ. Con đường thực tế là các phương pháp hiệu quả tham số như LoRA.&lt;/p&gt;

&lt;p&gt;Với MoE, bạn còn phải quyết định điều chỉnh:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Router&lt;/li&gt;
&lt;li&gt;Các expert&lt;/li&gt;
&lt;li&gt;Các lớp attention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đây vẫn là một lĩnh vực đang phát triển, với ít hướng dẫn rõ ràng hơn so với mô hình dense.&lt;/p&gt;

&lt;p&gt;Nếu mục tiêu là thích nghi miền thay vì bổ sung năng lực mới, hãy thử prompting và retrieval trước. Với cửa sổ ngữ cảnh 1 triệu token, đưa tri thức miền vào prompt thường rẻ hơn và hiệu quả hơn việc huấn luyện nó vào mô hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cài đặt lấy mẫu
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; khuyến nghị các cấu hình sau:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Trường hợp sử dụng&lt;/th&gt;
&lt;th&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;&lt;code&gt;top_p&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chung&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lập trình&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mô hình cũng hỗ trợ &lt;code&gt;reasoning_effort&lt;/code&gt; với ba mức:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;low&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;high&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;max&lt;/code&gt; là mặc định. Trên phần cứng cục bộ, điều này ảnh hưởng trực tiếp đến thời gian tạo phản hồi. Nếu tốc độ token thấp, &lt;code&gt;low&lt;/code&gt; có thể là khác biệt giữa một trải nghiệm khả dụng và không khả dụng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tự host có hợp lý về chi phí không?
&lt;/h2&gt;

&lt;p&gt;Thường là không, chủ yếu vì giá API.&lt;/p&gt;

&lt;p&gt;GLM-5.3-Flash có giá niêm yết 0,15 USD cho mỗi triệu token đầu vào. Một nút 8× H200 giá khoảng 1.000 USD/tháng tương đương với khoảng 6,7 tỷ token đầu vào qua API.&lt;/p&gt;

&lt;p&gt;Nút tự host có chi phí cố định dù nhàn rỗi, trong khi API chỉ tính theo mức sử dụng. Trừ khi tải của bạn rất cao và liên tục, API thường rẻ hơn.&lt;/p&gt;

&lt;p&gt;Lý do tự host thường không phải là giá:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dữ liệu và quyền riêng tư:&lt;/strong&gt; dữ liệu không rời hạ tầng của bạn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không giới hạn tốc độ:&lt;/strong&gt; năng lực phụ thuộc vào phần cứng của bạn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Khả dụng:&lt;/strong&gt; không phụ thuộc uptime hay quyết định giá của nhà cung cấp.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giấy phép MIT:&lt;/strong&gt; có thể sửa đổi, tinh chỉnh và phân phối lại.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phần cứng sẵn có:&lt;/strong&gt; nếu GPU đã mua và đang nhàn rỗi, chi phí biên chủ yếu là điện.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Xem thêm &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích giá GLM-5.3-Flash&lt;/a&gt; để so sánh chi tiết hơn với API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xác minh triển khai
&lt;/h2&gt;

&lt;p&gt;vLLM và SGLang đều cung cấp endpoint tương thích OpenAI. Bạn có thể kiểm tra nhanh máy chủ cục bộ như sau:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:8000/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;"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": "zai-org/GLM-5.3-Flash",
    "messages": [{"role": "user", "content": "reply with OK"}]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ngoài smoke test, hãy kiểm tra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ngữ cảnh dài ở độ dài bạn thực sự cần&lt;/li&gt;
&lt;li&gt;Đầu vào ảnh nếu dùng đa phương thức&lt;/li&gt;
&lt;li&gt;Tool calling với schema thực tế&lt;/li&gt;
&lt;li&gt;Throughput dưới tải đồng thời, không chỉ độ trễ một yêu cầu&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dùng &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; để lưu bộ kiểm thử, chuyển URL cơ sở thành biến môi trường, rồi chạy cùng một collection với máy chủ cục bộ và endpoint &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;. Cách này giúp bạn sớm phát hiện liệu bản dựng lượng tử hóa có còn xử lý đúng các schema công cụ mà ứng dụng phụ thuộc hay không.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Phần cứng tối thiểu là gì?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Độ chính xác đầy đủ cần nút 8× H200. Bản GGUF lượng tử hóa cần ít hơn đáng kể, nhưng chất lượng giảm theo mức độ lượng tử hóa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tôi có cần giữ đủ 320B tham số trong bộ nhớ không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Chỉ 18B tham số hoạt động trên mỗi token, nhưng toàn bộ trọng số vẫn phải nằm trong bộ nhớ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nên chọn vLLM hay SGLang?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
SGLang hỗ trợ sớm, có công thức đa phương thức và thường mạnh về đồng thời cũng như đầu ra có cấu trúc. vLLM có hệ sinh thái rộng hơn. Hãy benchmark cả hai với workload của bạn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tôi có thể chạy trên một GPU không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không ở độ chính xác đầy đủ. Với lượng tử hóa mạnh và CPU offload qua KTransformers, một GPU có VRAM cao cùng nhiều RAM hệ thống là khả thi, nhưng tốc độ tạo sẽ chậm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Giấy phép có thực sự là MIT không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Trọng số được phát hành theo MIT, cho phép sử dụng thương mại, sửa đổi và phân phối lại.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GLM-5.3-Flash là gì? Mô hình đa phương thức tự nhiên trọng số mở đầu tiên của Z.ai</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:26:29 +0000</pubDate>
      <link>https://dev.to/sebbasstian/glm-53-flash-la-gi-mo-hinh-da-phuong-thuc-tu-nhien-trong-so-mo-dau-tien-cua-zai-23b1</link>
      <guid>https://dev.to/sebbasstian/glm-53-flash-la-gi-mo-hinh-da-phuong-thuc-tu-nhien-trong-so-mo-dau-tien-cua-zai-23b1</guid>
      <description>&lt;h1&gt;
  
  
  GLM-5.3-Flash: mô hình đa phương thức 320B với chi phí thấp
&lt;/h1&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; phát hành GLM-5.3-Flash vào ngày 26 tháng 8 năm 2026. Đây là mô hình mixture-of-experts 320 tỷ tham số, trong đó 18 tỷ tham số được kích hoạt, phát hành theo giấy phép MIT. Đây cũng là mô hình đầu tiên trong dòng GLM-5 xử lý hình ảnh tự nhiên thay vì dùng bộ chuyển đổi thị giác gắn thêm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Nhiều nhà phát triển đã sử dụng mô hình này trong một tuần mà không biết danh tính thật của nó. Tuy nhiên, “Flash” trong tên gọi không có nghĩa là mô hình tạo token nhanh.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tóm tắt nhanh
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mô hình:&lt;/strong&gt; mixture-of-experts 320B-A18B, trọng số mở, giấy phép MIT.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nhà phát hành:&lt;/strong&gt; &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, ngày 26 tháng 8 năm 2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Đa phương thức:&lt;/strong&gt; nhận văn bản, hình ảnh, video và tệp trong cùng một yêu cầu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ngữ cảnh:&lt;/strong&gt; 1.048.576 token, tương đương GLM-5.3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giá niêm yết:&lt;/strong&gt; 0,15 USD cho mỗi triệu token đầu vào và 0,50 USD cho mỗi triệu token đầu ra, xấp xỉ một phần mười GLM-5.2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tốc độ:&lt;/strong&gt; 48,7 token đầu ra mỗi giây; không nhanh so với kích thước mô hình.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thời gian tạo token đầu tiên:&lt;/strong&gt; 1,52 giây, tốt hơn mức trung bình 2,14 giây của các mô hình mã nguồn mở.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API:&lt;/strong&gt; &lt;code&gt;glm-5.3-flash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nhà cung cấp:&lt;/strong&gt; &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, OpenRouter, Cloudflare Workers AI, Vercel AI Gateway và các nền tảng khác.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tự lưu trữ:&lt;/strong&gt; trọng số có trên Hugging Face.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thông số kỹ thuật
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Thuộc tính&lt;/th&gt;
      &lt;th&gt;Giá trị&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Tổng tham số&lt;/td&gt;
      &lt;td&gt;320B&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tham số hoạt động&lt;/td&gt;
      &lt;td&gt;18B&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Kiến trúc&lt;/td&gt;
      &lt;td&gt;Mixture of experts, chú ý tuyến tính và chú ý thưa lai&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Giấy phép&lt;/td&gt;
      &lt;td&gt;MIT&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cửa sổ ngữ cảnh&lt;/td&gt;
      &lt;td&gt;1.048.576 token&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Đầu vào&lt;/td&gt;
      &lt;td&gt;Văn bản, hình ảnh, video, tệp&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Đầu ra&lt;/td&gt;
      &lt;td&gt;Văn bản&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Chế độ suy luận&lt;/td&gt;
      &lt;td&gt;
&lt;code&gt;thấp&lt;/code&gt;, &lt;code&gt;cao&lt;/code&gt;, &lt;code&gt;tối đa&lt;/code&gt; (mặc định &lt;code&gt;tối đa&lt;/code&gt;)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;ID mô hình API&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;glm-5.3-flash&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hugging Face&lt;/td&gt;
      &lt;td&gt;&lt;code&gt;zai-org/GLM-5.3-Flash&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Giới hạn token đầu ra chưa thống nhất
&lt;/h3&gt;

&lt;p&gt;OpenRouter liệt kê tối đa 131.072 token, trong khi thẻ mô hình Hugging Face chỉ ra 163.840 token. &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; chưa công bố con số chính thức để giải quyết khác biệt này.&lt;/p&gt;

&lt;p&gt;Nếu ứng dụng cần các lần sinh văn bản rất dài, hãy kiểm tra giới hạn với nhà cung cấp thực tế trước khi triển khai.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đa phương thức tự nhiên là thay đổi quan trọng nhất
&lt;/h2&gt;

&lt;p&gt;Trước đây, khả năng thị giác trong dòng GLM nằm ở các mô hình hoặc điểm cuối riêng biệt. &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; phát hành GLM-5V-Turbo và GLM-4.6V như các mô hình thị giác chuyên dụng. GLM-5.2 chỉ xử lý văn bản, còn GLM-5.3 dùng bộ chuyển đổi riêng cho thị giác.&lt;/p&gt;

&lt;p&gt;GLM-5.3-Flash đưa hình ảnh, video và tệp vào cùng một yêu cầu chat với văn bản. Điều này tạo ra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Một ID mô hình duy nhất.&lt;/li&gt;
&lt;li&gt;Một dòng thanh toán duy nhất.&lt;/li&gt;
&lt;li&gt;Một cửa sổ ngữ cảnh có thể chứa cả hình ảnh và hàng triệu token văn bản.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bạn có thể gửi một tài liệu đặc tả dài cùng ảnh chụp màn hình giao diện đã render, sau đó yêu cầu mô hình đối chiếu hai nguồn này trong cùng một prompt. &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; mô tả mô hình có thể quan sát “giao diện, kết quả hiển thị và phản hồi tương tác”, phù hợp với tác nhân lập trình hơn là chỉ chú thích ảnh.&lt;/p&gt;

&lt;p&gt;Nếu cần mô hình thị giác chuyên dụng, hãy xem &lt;a href="https://apidog.com/vi/blog/glm-5v-turbo-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GLM-5V-Turbo&lt;/a&gt; hoặc &lt;a href="https://apidog.com/vi/blog/glm-ocr-document-understanding?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-OCR cho việc hiểu tài liệu&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiến trúc và hiệu quả phục vụ
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; xây dựng GLM-5.3-Flash trên một mô hình cơ sở mới thay vì hậu huấn luyện GLM-5.2. Hai lựa chọn kiến trúc chính là:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chú ý lai (Hybrid attention).&lt;/strong&gt; Mô hình kết hợp chú ý tuyến tính và chú ý thưa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chú ý tuyến tính xử lý các phụ thuộc cục bộ với chi phí thấp.&lt;/li&gt;
&lt;li&gt;Chú ý thưa tập trung vào các token có liên quan trên toàn cục.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Theo công bố, chi phí tính toán cho attention thấp hơn khoảng ba lần so với GLM-5.3, còn bộ nhớ đệm KV nhỏ hơn khoảng 4,4 lần.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Siêu kết nối ràng buộc đa tạp (Manifold-Constrained Hyper-Connections).&lt;/strong&gt; Đây là thuật ngữ &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; dùng cho các kỹ thuật tối ưu hiệu quả mở rộng. Hiện chưa có đủ chi tiết công khai để đánh giá độc lập, vì vậy nên xem đây là đặc điểm kiến trúc do nhà cung cấp mô tả, chưa phải lợi thế đã được chứng minh.&lt;/p&gt;

&lt;p&gt;Bộ nhớ đệm KV là một trong những nguyên nhân chính khiến suy luận ngữ cảnh dài tốn nhiều bộ nhớ. Việc giảm kích thước bộ nhớ đệm 4,4 lần giúp giải thích cách mô hình duy trì cửa sổ 1M token với mức giá thấp hơn đáng kể.&lt;/p&gt;

&lt;p&gt;Quá trình huấn luyện sử dụng kho ngữ liệu đa phương thức mà &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; mô tả là khoảng 30 nghìn tỷ token.&lt;/p&gt;

&lt;h2&gt;
  
  
  “Flash” không có nghĩa là nhanh hơn
&lt;/h2&gt;

&lt;p&gt;Artificial Analysis đo được GLM-5.3-Flash ở mức &lt;strong&gt;48,7 token đầu ra mỗi giây&lt;/strong&gt;. GLM-5.3 đạt khoảng 86 token mỗi giây trong cùng phép đo, tức phiên bản Flash chỉ có tốc độ gần bằng một nửa.&lt;/p&gt;

&lt;p&gt;Điểm mạnh của Flash là &lt;strong&gt;thời gian tạo token đầu tiên&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GLM-5.3-Flash: 1,52 giây.&lt;/li&gt;
&lt;li&gt;Trung bình các mô hình mã nguồn mở: 2,14 giây.&lt;/li&gt;
&lt;li&gt;GLM-5.3: tốc độ tạo token cao hơn đáng kể.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vì vậy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chọn Flash cho các tác vụ gồm nhiều lượt tương tác ngắn, nơi phản hồi ban đầu quan trọng.&lt;/li&gt;
&lt;li&gt;Chọn GLM-5.3 nếu cần sinh tài liệu dài với tốc độ streaming cao.&lt;/li&gt;
&lt;li&gt;Đừng chọn Flash chỉ vì tên gọi “Flash”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lợi thế thực tế của mô hình nằm ở &lt;strong&gt;chi phí và bộ nhớ&lt;/strong&gt;, không phải thông lượng sinh token. Bộ nhớ đệm KV nhỏ hơn và chi phí attention thấp hơn giúp giảm giá mỗi token cùng dấu chân phục vụ, nhưng không khiến mô hình truyền phát nhanh hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Điểm chuẩn
&lt;/h2&gt;

&lt;p&gt;Các số liệu dưới đây do &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; công bố khi ra mắt, nên được xem là tuyên bố của nhà cung cấp cho đến khi có bên thứ ba tái tạo.&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%2Fassets.apidog.com%2Fblog-next%2F2026%2F08%2Fimage-129.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%2Fassets.apidog.com%2Fblog-next%2F2026%2F08%2Fimage-129.png" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Artificial Analysis xếp GLM-5.3-Flash ở mức &lt;strong&gt;57 trên Chỉ số thông minh v4.1.1&lt;/strong&gt;. GLM-5.3 đạt 60 điểm, còn mức trung bình của các mô hình mã nguồn mở có kích thước tương tự là 27.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; định vị mô hình này gần Claude Opus 4.8 trong các tác vụ lập trình và tác nhân. Đây là đặc tính hóa dựa trên đánh giá nội bộ của nhà cung cấp, không phải kết quả đo lường độc lập. Khoảng cách ba điểm so với GLM-5.3 cũng cho thấy cần thận trọng khi diễn giải tuyên bố này.&lt;/p&gt;

&lt;p&gt;Để xem các tiêu chuẩn GLM thay đổi như thế nào qua từng phiên bản, hãy đọc &lt;a href="https://apidog.com/vi/blog/glm-5-2-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích điểm chuẩn GLM-5.2&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tuần lễ Ox Alpha
&lt;/h2&gt;

&lt;p&gt;Ngày 20 tháng 8, mô hình ẩn danh &lt;code&gt;ox-alpha&lt;/code&gt; xuất hiện trên các nền tảng suy luận bên thứ ba với cửa sổ ngữ cảnh 1M token và giá bằng không. Trong vài ngày, đây là một trong những mô hình được sử dụng nhiều nhất trên các nền tảng đó.&lt;/p&gt;

&lt;p&gt;Cộng đồng xác định mô hình thuộc Zhipu trong khoảng 48 giờ dựa trên đặc điểm đầu ra.&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%2Fs27kvdvvabskderqk85c.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%2Fs27kvdvvabskderqk85c.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ngày 26 tháng 8, &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; xác nhận Ox Alpha chính là GLM-5.3-Flash, còn tuần lễ miễn phí là một thử nghiệm tải có chủ đích.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng cho biết toàn bộ lưu lượng trong tuần đó được phục vụ trên các bộ tăng tốc nội địa Trung Quốc sử dụng ngăn xếp dựa trên SGLang. Nhà cung cấp tuyên bố chi phí phục vụ mỗi token có thể so sánh với phần cứng NVIDIA thông thường, nhưng chưa có xác minh độc lập.&lt;/p&gt;

&lt;p&gt;Mẫu hình này từng xuất hiện với &lt;a href="https://apidog.com/vi/blog/pony-alpha-deepseek-or-glm-model?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Pony Alpha, sau đó được xác định là mô hình DeepSeek hoặc GLM&lt;/a&gt;. Một mô hình ẩn danh có năng lực đặc biệt, cửa sổ ngữ cảnh “tròn trịa” và giá bất thường thường là phiên bản chưa phát hành đang được dùng để thu thập dữ liệu đánh giá.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách sử dụng GLM-5.3-Flash
&lt;/h2&gt;

&lt;h3&gt;
  
  
  API tương thích OpenAI
&lt;/h3&gt;

&lt;p&gt;Điểm cuối của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; tương thích với OpenAI. Bạn chỉ cần đổi base URL và model ID trong ứng dụng hiện có:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base URL:&lt;/strong&gt; &lt;code&gt;https://api.z.ai/api/paas/v4/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; &lt;code&gt;glm-5.3-flash&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Để triển khai đầu vào hình ảnh và tham số nỗ lực suy luận, xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nhà cung cấp bên thứ ba
&lt;/h3&gt;

&lt;p&gt;OpenRouter cung cấp mô hình với tên &lt;code&gt;z-ai/glm-5.3-flash&lt;/code&gt;. Mô hình cũng có mặt trên:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloudflare Workers AI&lt;/li&gt;
&lt;li&gt;Vercel AI Gateway&lt;/li&gt;
&lt;li&gt;DeepInfra&lt;/li&gt;
&lt;li&gt;Novita&lt;/li&gt;
&lt;li&gt;GMICloud&lt;/li&gt;
&lt;li&gt;Baseten&lt;/li&gt;
&lt;li&gt;&lt;a href="http://io.net" rel="noopener noreferrer"&gt;io.net&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Giá và giới hạn có thể khác nhau đáng kể giữa các nhà phân phối.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding agents
&lt;/h3&gt;

&lt;p&gt;GLM-5.3-Flash nằm trong Gói Lập trình GLM và được báo cáo có hạn mức sử dụng gấp ba lần GLM-5.3. Đây có thể là lý do thực tế để người đăng ký chuyển sang Flash.&lt;/p&gt;

&lt;p&gt;Tài liệu &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cũng cho biết các cuộc gọi ngoài giờ cao điểm tiêu thụ một nửa số điểm tiêu chuẩn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tự lưu trữ
&lt;/h3&gt;

&lt;p&gt;Trọng số được cấp phép MIT và có trên Hugging Face tại &lt;code&gt;zai-org/GLM-5.3-Flash&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Các công cụ hỗ trợ gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vLLM&lt;/li&gt;
&lt;li&gt;SGLang&lt;/li&gt;
&lt;li&gt;TokenSpeed&lt;/li&gt;
&lt;li&gt;KTransformers&lt;/li&gt;
&lt;li&gt;Các bản lượng tử hóa GGUF cho hệ thống nhỏ hơn&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Có nên sử dụng GLM-5.3-Flash?
&lt;/h2&gt;

&lt;p&gt;Hãy chọn GLM-5.3-Flash nếu bạn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cần xử lý hình ảnh hoặc video cùng văn bản trong một yêu cầu.&lt;/li&gt;
&lt;li&gt;Tối ưu chi phí trên mỗi token.&lt;/li&gt;
&lt;li&gt;Muốn tự lưu trữ trọng số theo giấy phép MIT.&lt;/li&gt;
&lt;li&gt;Xây dựng tác nhân lập trình cần phản hồi ban đầu nhanh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy chọn GLM-5.3 nếu bạn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cần chất lượng suy luận cao hơn một chút.&lt;/li&gt;
&lt;li&gt;Cần thông lượng sinh token cao hơn.&lt;/li&gt;
&lt;li&gt;Không bị giới hạn nghiêm ngặt bởi chi phí.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vs-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Xem so sánh trực tiếp GLM-5.3-Flash và GLM-5.3&lt;/a&gt; để phân tích chi tiết hơn. Bài viết &lt;a href="https://apidog.com/vi/blog/what-is-glm-5-3?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GLM-5.3 là gì&lt;/a&gt; trình bày riêng về mô hình cơ sở.&lt;/p&gt;

&lt;p&gt;Với API tương thích OpenAI, việc thử nghiệm chỉ yêu cầu thay đổi một dòng model ID. Hãy kiểm tra cả hai mô hình trên khối lượng công việc thực tế thay vì chỉ dựa vào bảng điểm chuẩn.&lt;/p&gt;

&lt;p&gt;Khi đánh giá thay đổi mô hình, nên gửi các yêu cầu thật và kiểm tra phản hồi thật, bao gồm cả các yêu cầu đa phương thức khó mô phỏng bằng &lt;code&gt;curl&lt;/code&gt;. &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; cho phép lưu các lệnh gọi thành collection có thể tái sử dụng kèm assertion. Nhờ đó, bạn có thể xác nhận cấu trúc phản hồi vẫn tương thích trước khi chuyển từ GLM-5.3 sang Flash trong môi trường production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GLM-5.3-Flash còn miễn phí không?
&lt;/h3&gt;

&lt;p&gt;Không. Tuần lễ Ox Alpha miễn phí đã kết thúc khi mô hình được công bố chính thức. Chương trình giảm giá ra mắt 50% kéo dài đến hết ngày 9 tháng 9 năm 2026; sau đó áp dụng giá niêm yết.&lt;/p&gt;

&lt;h3&gt;
  
  
  GLM-5.3-Flash có nhanh hơn GLM-5.3 không?
&lt;/h3&gt;

&lt;p&gt;Không. Flash tạo khoảng 49 token mỗi giây, so với 86 token mỗi giây của GLM-5.3. Tuy nhiên, Flash bắt đầu phản hồi nhanh hơn với thời gian tạo token đầu tiên 1,52 giây.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mô hình có thực sự hỗ trợ một triệu token không?
&lt;/h3&gt;

&lt;p&gt;Cửa sổ được cấu hình là 1.048.576 token, được xác nhận trong cấu hình mô hình và bởi Artificial Analysis. OpenRouter liệt kê 1.310.720 token, nhưng nên xem đây là thông tin từ nhà cung cấp chứ không phải thông số kỹ thuật chuẩn của mô hình.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mô hình có nhận video không?
&lt;/h3&gt;

&lt;p&gt;Tài liệu &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; liệt kê văn bản, hình ảnh, video và tệp là các loại đầu vào. Vì hỗ trợ video mới hơn và ít được sử dụng rộng rãi, hãy kiểm thử với dữ liệu thực tế trước khi phụ thuộc vào tính năng này.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trọng số sử dụng giấy phép nào?
&lt;/h3&gt;

&lt;p&gt;MIT. Trọng số được công bố trên Hugging Face tại &lt;code&gt;zai-org/GLM-5.3-Flash&lt;/code&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ox Alpha Chính Là GLM-5.3-Flash: Giải Mã Chiến Lược Ra Mắt Mô Hình Thầm Lặng</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Thu, 27 Aug 2026 03:26:17 +0000</pubDate>
      <link>https://dev.to/sebbasstian/ox-alpha-chinh-la-glm-53-flash-giai-ma-chien-luoc-ra-mat-mo-hinh-tham-lang-4489</link>
      <guid>https://dev.to/sebbasstian/ox-alpha-chinh-la-glm-53-flash-giai-ma-chien-luoc-ra-mat-mo-hinh-tham-lang-4489</guid>
      <description>&lt;h1&gt;
  
  
  Ox Alpha là ai? Cách một mô hình ẩn danh trở thành GLM-5.3-Flash
&lt;/h1&gt;

&lt;p&gt;Ngày 20/8/2026, một mô hình tên &lt;code&gt;ox-alpha&lt;/code&gt; xuất hiện trên các nền tảng suy luận bên thứ ba: không nhà cung cấp, không thông báo, không thẻ mô hình, nhưng có cửa sổ ngữ cảnh 1 triệu token và miễn phí hoàn toàn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Hãy dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Chỉ trong vài ngày, nó trở thành một trong các mô hình được dùng nhiều nhất. Khoảng 48 giờ sau, cộng đồng xác định nó có khả năng thuộc Zhipu. Ngày 26/8, &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; xác nhận: Ox Alpha chính là &lt;strong&gt;GLM-5.3-Flash&lt;/strong&gt;, còn tuần miễn phí là một thử nghiệm có chủ đích.&lt;/p&gt;

&lt;p&gt;Đây là cách nhận diện mô hình ẩn danh, lý do nhà cung cấp thực hiện chiến lược này, và cách sử dụng chúng an toàn trong quy trình đánh giá.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dòng thời gian
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;20/8:&lt;/strong&gt; &lt;code&gt;ox-alpha&lt;/code&gt; xuất hiện trên OpenRouter và OpenCode dưới dạng mô hình ẩn danh, với ngữ cảnh 1M token và giá bằng 0.&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%2Fxpn6ox90fa4fenz20ayj.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%2Fxpn6ox90fa4fenz20ayj.png" alt="Mô hình ox-alpha trên nền tảng suy luận" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;20–22/8:&lt;/strong&gt; Lượng sử dụng tăng nhanh. Nhà phát triển bắt đầu định tuyến các tác vụ thực tế qua mô hình và phân tích đầu ra để truy tìm nguồn gốc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Khoảng 48 giờ sau:&lt;/strong&gt; Đồng thuận của cộng đồng nghiêng về Zhipu, dựa trên hành vi mô hình thay vì bất kỳ tiết lộ chính thức nào.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;26/8:&lt;/strong&gt; &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; công bố GLM-5.3-Flash và xác nhận Ox Alpha là mô hình này.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách nhận diện một mô hình ẩn danh
&lt;/h2&gt;

&lt;p&gt;Bạn không cần quyền truy cập nội bộ. Hãy so sánh hành vi của mô hình với các họ mô hình đã biết.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Kiểm tra hành vi tokenizer
&lt;/h3&gt;

&lt;p&gt;Mỗi họ mô hình chia văn bản thành token theo cách khác nhau. Hãy thử:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chuỗi ký tự bất thường&lt;/li&gt;
&lt;li&gt;Emoji liên tiếp&lt;/li&gt;
&lt;li&gt;Văn bản pha trộn nhiều hệ chữ&lt;/li&gt;
&lt;li&gt;Khoảng trắng dài&lt;/li&gt;
&lt;li&gt;Mã có thụt lề lạ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quan sát số token, lỗi xử lý hoặc vị trí mô hình gặp khó khăn. Tokenizer thường được kế thừa giữa các bản phát hành trong cùng một họ và khó che giấu.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Đặt câu hỏi gián tiếp về danh tính
&lt;/h3&gt;

&lt;p&gt;Câu hỏi trực tiếp thường bị né tránh hoặc trả lời sai. Thay vào đó, dùng các lời nhắc gián tiếp để tìm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cách diễn đạt đặc trưng&lt;/li&gt;
&lt;li&gt;Giới hạn kiến thức&lt;/li&gt;
&lt;li&gt;Phong cách từ chối&lt;/li&gt;
&lt;li&gt;Dấu vết dữ liệu huấn luyện mô tả chính mô hình&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. So sánh phong cách đầu ra
&lt;/h3&gt;

&lt;p&gt;Theo dõi cách mô hình:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Từ chối một yêu cầu&lt;/li&gt;
&lt;li&gt;Mở đầu câu trả lời&lt;/li&gt;
&lt;li&gt;Cấu trúc danh sách&lt;/li&gt;
&lt;li&gt;Dùng tiêu đề và định dạng&lt;/li&gt;
&lt;li&gt;Phản hồi bằng nhiều ngôn ngữ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Những đặc điểm này thường phản ánh quá trình hậu huấn luyện của từng phòng thí nghiệm.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Kiểm tra hành vi đa ngôn ngữ
&lt;/h3&gt;

&lt;p&gt;Mô hình được huấn luyện mạnh bằng tiếng Trung và tiếng Anh sẽ phản hồi khác với mô hình coi tiếng Trung là ngôn ngữ ít phổ biến. Đây là một tín hiệu đáng chú ý đối với các mô hình của Zhipu.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. So sánh “hình dạng” benchmark
&lt;/h3&gt;

&lt;p&gt;Chạy một bộ đánh giá ngắn và so sánh điểm mạnh, điểm yếu với các mô hình đã biết. Đừng chỉ nhìn điểm tuyệt đối; hãy quan sát danh mục nào nổi trội hoặc yếu hơn tương đối.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Quan sát đặc điểm phục vụ
&lt;/h3&gt;

&lt;p&gt;Độ trễ, thông lượng, giới hạn ngữ cảnh và tham số endpoint hỗ trợ đều có thể tiết lộ thông tin về hạ tầng phía sau.&lt;/p&gt;

&lt;p&gt;Quy trình tương tự từng xuất hiện khi &lt;a href="https://apidog.com/vi/blog/pony-alpha-deepseek-or-glm-model?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Pony Alpha được suy đoán là mô hình DeepSeek hoặc GLM&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao nhà cung cấp phát hành ẩn danh?
&lt;/h2&gt;

&lt;p&gt;Một đợt ra mắt âm thầm đem lại dữ liệu mà beta kín khó tạo ra.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lưu lượng thực ở quy mô thực
&lt;/h3&gt;

&lt;p&gt;Người thử nghiệm nội bộ không thể tái hiện tất cả tình huống ngoài đời. Lưu lượng công khai giúp phát hiện:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt kỳ lạ hoặc lạm dụng&lt;/li&gt;
&lt;li&gt;Ngữ cảnh cực lớn&lt;/li&gt;
&lt;li&gt;Vòng lặp gọi công cụ&lt;/li&gt;
&lt;li&gt;Các lỗi hiếm chỉ xuất hiện dưới tải thực&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Kiểm tra tải trung thực
&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cho biết tuần Ox Alpha chạy hoàn toàn trên bộ tăng tốc nội địa Trung Quốc, dùng hạ tầng dựa trên SGLang. Họ tuyên bố chi phí phục vụ mỗi token tương đương phần cứng NVIDIA thông thường.&lt;/p&gt;

&lt;p&gt;Đây là tuyên bố từ nhà cung cấp, chưa có xác minh độc lập. Tuy nhiên, loại tuyên bố này chỉ đáng tin cậy hơn sau khi hệ thống đã phục vụ lưu lượng thực.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phản hồi không bị ảnh hưởng bởi thương hiệu
&lt;/h3&gt;

&lt;p&gt;Người dùng đánh giá một “mô hình ẩn danh tốt” khác với một mô hình có logo. Sự ẩn danh giúp loại bỏ cả thiên kiến tích cực lẫn tiêu cực về thương hiệu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tiếp thị sau khi tiết lộ
&lt;/h3&gt;

&lt;p&gt;Khi công bố chính thức, nhiều nhà phát triển đã có trải nghiệm thực tế và đánh giá tích cực. Điều này thường thuyết phục hơn một bảng benchmark do nhà cung cấp tự công bố.&lt;/p&gt;

&lt;p&gt;Rủi ro là thiện chí người dùng: ai đã xây dựng giải pháp trong tuần miễn phí sẽ phải trả phí sau đó. Với Ox Alpha, ưu đãi giảm giá 50% khi ra mắt kéo dài đến 9/9/2026 để giảm tác động này.&lt;/p&gt;

&lt;h2&gt;
  
  
  GLM-5.3-Flash thực chất là gì?
&lt;/h2&gt;

&lt;p&gt;GLM-5.3-Flash là mô hình &lt;strong&gt;mixture-of-experts (MoE)&lt;/strong&gt; với:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;320B tham số&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18B tham số hoạt động trên mỗi token&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Cửa sổ ngữ cảnh &lt;strong&gt;1.048.576 token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Cơ chế chú ý tuyến tính và thưa thớt kết hợp&lt;/li&gt;
&lt;li&gt;Khả năng đa phương thức bản địa đầu tiên trong dòng GLM-5&lt;/li&gt;
&lt;li&gt;Trọng số phát hành trên Hugging Face theo &lt;strong&gt;giấy phép MIT&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Theo Artificial Analysis, mô hình đạt 57 điểm trên Chỉ số Thông minh, so với 60 của GLM-5.3 lớn hơn và mức trung bình 27 của các mô hình mã nguồn mở cùng kích thước.&lt;/p&gt;

&lt;p&gt;Xem thêm &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-what-is?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích chi tiết về GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Một yếu tố quan trọng giải thích tuần miễn phí: &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt; cho biết GLM-5.3-Flash dùng lượng tính toán attention ít hơn khoảng ba lần và KV cache nhỏ hơn khoảng 4,4 lần so với GLM-5.3. Chi phí suy luận thấp hơn khiến việc tặng quyền truy cập miễn phí ít rủi ro hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Điều này có ý nghĩa gì với bạn?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mô hình ẩn danh thường là bản phát hành sắp ra mắt
&lt;/h3&gt;

&lt;p&gt;Một mô hình không thương hiệu, có ngữ cảnh lớn bất thường và miễn phí thường không phải dự án thử nghiệm cá nhân. Có nhà cung cấp đang tài trợ chi phí suy luận.&lt;/p&gt;

&lt;h3&gt;
  
  
  Miễn phí chỉ là tạm thời
&lt;/h3&gt;

&lt;p&gt;Ox Alpha chuyển từ miễn phí sang 0,15 USD cho mỗi triệu token đầu vào trong sáu ngày. Giá rẻ không đồng nghĩa với miễn phí.&lt;/p&gt;

&lt;h3&gt;
  
  
  Không đưa mô hình ẩn danh vào production
&lt;/h3&gt;

&lt;p&gt;Mô hình ẩn danh không có:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cam kết phiên bản&lt;/li&gt;
&lt;li&gt;Thông báo ngừng hỗ trợ&lt;/li&gt;
&lt;li&gt;Thẻ mô hình&lt;/li&gt;
&lt;li&gt;Hỗ trợ kỹ thuật&lt;/li&gt;
&lt;li&gt;Đảm bảo mô hình không bị thay thế đột ngột&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dùng để đánh giá thì hợp lý. Dùng làm phụ thuộc production thì không.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lưu kết quả đánh giá thay vì chỉ thử ngẫu nhiên
&lt;/h3&gt;

&lt;p&gt;Một tuần dùng thực tế tạo ra dữ liệu giá trị hơn benchmark của nhà cung cấp — nếu bạn lưu dữ liệu đó.&lt;/p&gt;

&lt;p&gt;Hãy lưu prompt đánh giá dưới dạng collection trong &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, dùng biến môi trường cho model ID và base URL. Khi có một mô hình ẩn danh mới, bạn có thể chạy lại cùng bộ thử nghiệm và so sánh kết quả thay vì dựa vào cảm giác.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ba tín hiệu quan trọng từ tuần miễn phí
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Chi phí phục vụ thấp là lợi thế kiến trúc
&lt;/h3&gt;

&lt;p&gt;Attention ít hơn khoảng ba lần và KV cache nhỏ hơn khoảng 4,4 lần không phải chỉ là quyết định định giá. Đây là lựa chọn kiến trúc, khiến giá niêm yết thấp có khả năng bền vững hơn mức khuyến mãi ngắn hạn.&lt;/p&gt;

&lt;p&gt;Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân tích giá GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Trọng số mở không đồng nghĩa chỉ dùng qua API
&lt;/h3&gt;

&lt;p&gt;Mô hình được phát hành trên Hugging Face theo giấy phép MIT. Nếu có đủ phần cứng, bạn có thể chạy mô hình cục bộ vô thời hạn.&lt;/p&gt;

&lt;p&gt;Xem hướng dẫn &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-locally?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chạy GLM-5.3-Flash cục bộ&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Khả năng đa phương thức có thể bị bỏ sót
&lt;/h3&gt;

&lt;p&gt;Trong tuần ẩn danh, phần lớn người dùng chỉ dùng Ox Alpha như mô hình văn bản vì không có thẻ mô hình cho biết nó hỗ trợ hình ảnh. Điều này cho thấy điểm yếu của việc ra mắt không thương hiệu: lưu lượng lớn có thể chỉ tập trung vào những khả năng mà người dùng giả định mô hình sở hữu.&lt;/p&gt;

&lt;p&gt;Xem &lt;a href="https://apidog.com/vi/blog/glm-5-3-flash-vision-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn Vision API của GLM-5.3-Flash&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết luận
&lt;/h2&gt;

&lt;p&gt;Ox Alpha không phải trường hợp cuối cùng. Việc triển khai ẩn danh trên router bên thứ ba đang trở thành giai đoạn tiền phát hành, nằm giữa đánh giá nội bộ và ra mắt công khai.&lt;/p&gt;

&lt;p&gt;Cách tiếp cận thực tế là:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thử nghiệm mô hình ẩn danh.&lt;/li&gt;
&lt;li&gt;Chạy bộ đánh giá đã lưu.&lt;/li&gt;
&lt;li&gt;Ghi lại độ trễ, chi phí và chất lượng đầu ra.&lt;/li&gt;
&lt;li&gt;Không xây dựng production trên mô hình chưa có danh tính và cam kết hỗ trợ.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tuần miễn phí là cơ hội nghiên cứu, không phải chuỗi cung ứng đáng tin cậy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ox-alpha là gì?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Đó là GLM-5.3-Flash, mô hình đa phương thức 320B-A18B với trọng số mở của &lt;a href="http://Z.ai" rel="noopener noreferrer"&gt;Z.ai&lt;/a&gt;, được triển khai ẩn danh từ 20/8/2026 và tiết lộ ngày 26/8.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mô hình còn miễn phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Thời gian miễn phí đã kết thúc khi có thông báo. Ưu đãi giảm giá 50% kéo dài đến 9/9/2026, sau đó giá niêm yết là 0,15 USD cho đầu vào và 0,50 USD cho đầu ra trên mỗi triệu token.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mọi người xác định đó là mô hình của Zhipu như thế nào?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Bằng cách so sánh tokenizer, phong cách đầu ra, hành vi đa ngôn ngữ, mẫu từ chối và hình dạng benchmark với các bản phát hành GLM đã biết.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tại sao nhà cung cấp tặng mô hình miễn phí?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Để thu thập lưu lượng thực, kiểm tra tải, nhận phản hồi không bị ảnh hưởng bởi thương hiệu và tạo cộng đồng người dùng trước ngày ra mắt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có nên dùng mô hình ẩn danh trên OpenRouter trong production không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Hãy dùng chúng để đánh giá, không phải làm phụ thuộc production.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Truy vết Cuộc gọi Công cụ AI Agent: Nên ghi gì trên mỗi Yêu cầu</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Wed, 26 Aug 2026 10:58:10 +0000</pubDate>
      <link>https://dev.to/sebbasstian/truy-vet-cuoc-goi-cong-cu-ai-agent-nen-ghi-gi-tren-moi-yeu-cau-1953</link>
      <guid>https://dev.to/sebbasstian/truy-vet-cuoc-goi-cong-cu-ai-agent-nen-ghi-gi-tren-moi-yeu-cau-1953</guid>
      <description>&lt;h1&gt;
  
  
  Khả năng quan sát cho tác nhân AI: Ghi lại quyết định, không chỉ mã HTTP 200
&lt;/h1&gt;

&lt;p&gt;Một người dùng báo cáo rằng tác nhân (agent) “đã làm điều gì đó lạ” vào chiều hôm qua. Bạn mở nhật ký và thấy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO  agent run started
INFO  calling tool: updateOrder
INFO  tool returned 200
INFO  agent run completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tác nhân đã gọi &lt;code&gt;updateOrder&lt;/code&gt;, nhưng bạn không biết với đối số nào, dựa trên lệnh nào, vì sao chọn công cụ đó hay API đã trả về dữ liệu gì. Lần chạy được xem là thành công theo mọi chỉ số hiện có, nhưng bạn không thể tái tạo bất kỳ quyết định nào.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Các hệ thống tác nhân thường thất bại theo những cách chỉ trở nên rõ ràng khi nhìn lại. Vì vậy, nhật ký không phải phần phụ; nó là một sản phẩm của hệ thống.&lt;/p&gt;

&lt;p&gt;Bài viết về &lt;a href="https://apidog.com/vi/blog/api-observability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;khả năng quan sát API&lt;/a&gt; tập trung vào phía dịch vụ. Bài này tập trung vào lớp tác nhân nằm trên dịch vụ đó: cần ghi gì trong mỗi lần gọi công cụ, cách liên kết quyết định của mô hình với yêu cầu HTTP, dữ liệu nào phải biên tập và cách biến dấu vết thành bài kiểm thử.&lt;/p&gt;

&lt;p&gt;Apidog đặc biệt hữu ích khi bạn đã có một dấu vết: cách nhanh nhất để hiểu một cuộc gọi sai thường là phát lại nó với cùng điểm cuối và quan sát kết quả.&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%2Fjsqiuvov84dnrsh7v06l.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%2Fjsqiuvov84dnrsh7v06l.png" alt="Agent observability" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ba lớp cần có trong một dấu vết
&lt;/h2&gt;

&lt;p&gt;Một tác nhân tạo ra sự kiện ở ba cấp độ. Hầu hết nhóm chỉ ghi lại lớp ở giữa.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Lớp suy luận
&lt;/h3&gt;

&lt;p&gt;Đây là nơi mô hình đưa ra quyết định:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nó nhìn thấy gì trong ngữ cảnh?&lt;/li&gt;
&lt;li&gt;Những công cụ nào được cung cấp?&lt;/li&gt;
&lt;li&gt;Nó chọn công cụ nào?&lt;/li&gt;
&lt;li&gt;Các đối số được tạo ra là gì?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Lớp công cụ
&lt;/h3&gt;

&lt;p&gt;Đây là trình thực thi của ứng dụng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xác thực đối số.&lt;/li&gt;
&lt;li&gt;Áp dụng chính sách.&lt;/li&gt;
&lt;li&gt;Ánh xạ lời gọi công cụ thành yêu cầu HTTP.&lt;/li&gt;
&lt;li&gt;Xử lý kết quả và lỗi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Lớp HTTP
&lt;/h3&gt;

&lt;p&gt;Đây là đường truyền thực tế:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phương thức và URL.&lt;/li&gt;
&lt;li&gt;Tiêu đề và nội dung.&lt;/li&gt;
&lt;li&gt;Mã trạng thái.&lt;/li&gt;
&lt;li&gt;Độ trễ, số lần thử lại và khóa idempotency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gỡ lỗi gần như luôn liên quan đến nhiều lớp.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Tác nhân gửi sai ID khách hàng” là lỗi suy luận, nhưng chỉ hiển thị ở lớp HTTP.&lt;br&gt;&lt;br&gt;
“API trả về mã 200 với nội dung trống” là lỗi HTTP, sau đó có thể xuất hiện dưới dạng một chuỗi suy luận kỳ lạ.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nếu ba lớp không được liên kết bằng định danh chung, bạn sẽ phải tương quan theo thời gian. Cách này nhanh chóng thất bại khi hai lần chạy chồng lấn.&lt;/p&gt;

&lt;p&gt;Quy tắc nền tảng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Một &lt;code&gt;trace_id&lt;/code&gt; cho mỗi lần chạy tác nhân.&lt;/li&gt;
&lt;li&gt;Một &lt;code&gt;span_id&lt;/code&gt; cho mỗi lần gọi công cụ.&lt;/li&gt;
&lt;li&gt;Cả hai xuất hiện trong mọi bản ghi ở cả ba lớp.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://opentelemetry.io/docs/concepts/signals/traces/" rel="noopener noreferrer"&gt;Dấu vết OpenTelemetry&lt;/a&gt; đã mô hình hóa chính xác cấu trúc này. Các &lt;a href="https://opentelemetry.io/docs/specs/semconv/gen-ai/" rel="noopener noreferrer"&gt;quy ước ngữ nghĩa GenAI&lt;/a&gt; cũng đang bổ sung cách đặt tên thuộc tính để dữ liệu có thể di chuyển giữa các công cụ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghi lại gì trong mỗi lần gọi công cụ?
&lt;/h2&gt;

&lt;p&gt;Một bản ghi hữu ích có thể trông như sau:&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;"trace_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"run_01J8ZK3M2Q"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"span_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"call_004"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"parent_span_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"call_003"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-26T14:03:11.482Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"billing"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"step"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="nl"&gt;"tool_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refundOrder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool_args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ord_92"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"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;"duplicate"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tools_available"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"getOrder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"listOrders"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refundOrder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"voidInvoice"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="nl"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/v1/orders/ord_92/refund"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"request_body_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sha256:1f4c..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"duration_ms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;412&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"retry_count"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"idempotency_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"9f2b7c14-6d3a-4b18"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

  &lt;/span&gt;&lt;span class="nl"&gt;"outcome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8420&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"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;96&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"approval_required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"approved_by"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user_31"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"dry_run"&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="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Năm trường sau thường quyết định việc điều tra có thành công hay không.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;tool_args&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Đây là trường bị thiếu nhiều nhất và cũng là trường cần có nhất.&lt;/p&gt;

&lt;p&gt;Ghi lại đối số do mô hình tạo ra &lt;strong&gt;trước khi&lt;/strong&gt; trình thực thi chuẩn hóa hoặc biến đổi chúng. Nếu tác nhân gửi sai ID, lỗi sẽ xuất hiện ở đây.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;tools_available&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Trường này giải thích lựa chọn của mô hình. Nếu mô hình chọn một công cụ bất thường, câu hỏi đầu tiên là: nó còn những lựa chọn nào khác?&lt;/p&gt;

&lt;p&gt;Chi phí lưu trữ rất nhỏ nhưng giá trị chẩn đoán lớn.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;retry_count&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Trường này phân biệt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API chậm nhưng thành công ngay lần đầu.&lt;/li&gt;
&lt;li&gt;API thất bại hai lần rồi mới thành công.&lt;/li&gt;
&lt;li&gt;Trình thực thi đã gửi cùng một yêu cầu nhiều lần.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu không ghi lại, ba lần thử có thể trông giống như một cuộc gọi duy nhất.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;outcome&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Dùng một enum rõ ràng thay vì suy ra kết quả từ mã trạng thái:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;success
failed
timed_out
blocked_by_policy
rejected_by_human
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hai trạng thái cuối rất quan trọng. Một cuộc gọi bị chính sách chặn là hàng rào bảo vệ đang hoạt động, không nhất thiết là lỗi. Trộn chúng với lỗi kỹ thuật sẽ làm sai tỷ lệ thất bại.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;policy&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Đây là dấu vết kiểm toán. Khi có người hỏi một hành động mang tính phá hủy có được phê duyệt hay không, trường này phải trả lời được:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Có cần phê duyệt không?&lt;/li&gt;
&lt;li&gt;Ai đã phê duyệt?&lt;/li&gt;
&lt;li&gt;Phê duyệt lúc nào?&lt;/li&gt;
&lt;li&gt;Có đang chạy ở chế độ &lt;code&gt;dry_run&lt;/code&gt; không?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;policy&lt;/code&gt; nên được kết hợp với cơ chế thực thi trong bài viết về &lt;a href="https://apidog.com/vi/blog/ai-agent-guardrails?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hàng rào bảo vệ tác nhân AI&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghi lại quyết định, không chỉ hành động
&lt;/h2&gt;

&lt;p&gt;Các lỗi khó nhất của tác nhân thường là lỗi lựa chọn. Để tái tạo chúng, hãy ghi lại đủ ngữ cảnh quyết định.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lưu định nghĩa công cụ hoặc mã băm
&lt;/h3&gt;

&lt;p&gt;Lưu phiên bản định nghĩa công cụ được sử dụng trong lần chạy, hoặc ít nhất là mã băm của chúng.&lt;/p&gt;

&lt;p&gt;Khi độ chính xác lựa chọn thay đổi, nghi phạm đầu tiên thường là phần mô tả công cụ. Một mã băm cho biết ngay liệu bộ công cụ có thay đổi giữa lần chạy tốt và lần chạy lỗi hay không.&lt;/p&gt;

&lt;p&gt;Văn bản trong schema có thể ảnh hưởng đáng kể đến hành vi mô hình. Xem thêm về &lt;a href="https://apidog.com/vi/blog/designing-api-tool-schemas-for-agents?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;thiết kế lược đồ công cụ cho tác nhân&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ghi lại mô hình và cấu hình
&lt;/h3&gt;

&lt;p&gt;Bản ghi lần chạy nên chứa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID mô hình.&lt;/li&gt;
&lt;li&gt;Nhiệt độ (&lt;code&gt;temperature&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Phiên bản lời nhắc (&lt;code&gt;prompt_version&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Phiên bản ứng dụng hoặc agent runtime.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hành vi có thể thay đổi giữa các phiên bản mô hình. Nếu thiếu những trường này, bạn có thể mất nhiều thời gian điều tra code trong khi nguyên nhân nằm ở cấu hình.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ghi lại những gì mô hình đã thấy
&lt;/h3&gt;

&lt;p&gt;Không phải lúc nào cũng nên lưu toàn bộ prompt vì chi phí và dữ liệu nhạy cảm. Một phương án cân bằng là lưu:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Số lượng token.&lt;/li&gt;
&lt;li&gt;Kích thước prompt.&lt;/li&gt;
&lt;li&gt;Mã băm prompt.&lt;/li&gt;
&lt;li&gt;Phiên bản prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một lần chạy có prompt lớn gấp đôi bình thường là tín hiệu cho thấy dữ liệu ngoài dự kiến đã được thêm vào ngữ cảnh.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lưu kết quả công cụ thô
&lt;/h3&gt;

&lt;p&gt;Nếu trình thực thi cắt gọn phản hồi trước khi gửi cho mô hình, hãy lưu toàn bộ payload trong dấu vết.&lt;/p&gt;

&lt;p&gt;Bài viết về &lt;a href="https://apidog.com/vi/blog/agent-tool-response-context-window?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;giữ phản hồi công cụ khỏi cửa sổ ngữ cảnh&lt;/a&gt; đề cập cách kiểm soát dữ liệu đưa vào prompt. Tuy nhiên, bản ghi quan sát vẫn nên giữ phiên bản thô, nếu chính sách dữ liệu cho phép. Nếu không, bạn sẽ không biết dữ liệu bị thiếu từ API hay bị cắt trong runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  Biên tập dữ liệu trước khi lưu trữ
&lt;/h2&gt;

&lt;p&gt;Dấu vết tác nhân đặc biệt nhạy cảm vì nó chứa cả yêu cầu lẫn lý do xung quanh yêu cầu đó. Prompt cũng thường thu thập dữ liệu cá nhân ngoài dự kiến.&lt;/p&gt;

&lt;p&gt;Bốn quy tắc sau giúp giảm rủi ro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Không lưu thông tin xác thực
&lt;/h3&gt;

&lt;p&gt;Loại bỏ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Authorization&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;API key.&lt;/li&gt;
&lt;li&gt;Cookie.&lt;/li&gt;
&lt;li&gt;URL đã ký.&lt;/li&gt;
&lt;li&gt;Token trong query string hoặc request body.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thay vì lưu giá trị, hãy lưu định danh của credential, chẳng hạn &lt;code&gt;credential_id&lt;/code&gt; hoặc &lt;code&gt;key_id&lt;/code&gt;. Bài viết về &lt;a href="https://apidog.com/vi/blog/ai-agent-api-key-least-privilege?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API key đặc quyền tối thiểu cho tác nhân&lt;/a&gt; giải thích vì sao việc định danh credential vẫn hữu ích: bạn biết tác nhân nào đã thực hiện hành động mà không làm lộ bí mật.&lt;/p&gt;

&lt;h3&gt;
  
  
  Biên tập tại ranh giới ghi nhật ký
&lt;/h3&gt;

&lt;p&gt;Không nên đợi đến lúc truy vấn dữ liệu mới lọc bí mật. Khi đó bí mật đã có thể được ghi vào đĩa, sao chép hoặc đưa vào bản sao lưu.&lt;/p&gt;

&lt;p&gt;Hãy biên tập trong middleware ghi nhật ký, trước khi bản ghi rời khỏi tiến trình.&lt;/p&gt;

&lt;h3&gt;
  
  
  Băm payload không thể lưu
&lt;/h3&gt;

&lt;p&gt;Mã băm nội dung yêu cầu cho phép chứng minh hai cuộc gọi giống hệt nhau, phục vụ phần lớn điều tra về trùng lặp mà không cần giữ payload.&lt;/p&gt;

&lt;p&gt;Ví dụ:&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;"request_body_hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sha256:1f4c..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"payload_stored"&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="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;h3&gt;
  
  
  Phân cấp thời gian lưu trữ
&lt;/h3&gt;

&lt;p&gt;Một chính sách thực tế có thể là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dấu vết đầy đủ: giữ trong một tuần.&lt;/li&gt;
&lt;li&gt;Dấu vết đã biên tập, không có payload: giữ trong một năm.&lt;/li&gt;
&lt;li&gt;Chỉ số tổng hợp: giữ lâu hơn nếu cần.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Phần lớn việc gỡ lỗi diễn ra trong vài ngày, còn câu hỏi kiểm toán thường xuất hiện trong vài tháng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Biến dấu vết thành bài kiểm thử
&lt;/h2&gt;

&lt;p&gt;Theo dõi tốt không chỉ giúp gỡ lỗi nhanh hơn. Nó còn tạo ra các trường hợp kiểm thử thực tế.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phát lại mọi lần chạy thất bại
&lt;/h3&gt;

&lt;p&gt;Mỗi lần chạy thất bại là một kịch bản:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lấy các lệnh gọi công cụ từ dấu vết.&lt;/li&gt;
&lt;li&gt;Phát lại chúng với API.&lt;/li&gt;
&lt;li&gt;Xác nhận lỗi.&lt;/li&gt;
&lt;li&gt;Sửa nguyên nhân.&lt;/li&gt;
&lt;li&gt;Giữ bản phát lại làm bài kiểm thử hồi quy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Trong Apidog, bạn có thể dựng lại yêu cầu lỗi dưới dạng một trường hợp đã lưu, xác nhận hành vi sau khi sửa và chạy nó trong CI. Một sự cố đơn lẻ từ đó trở thành phạm vi kiểm thử lâu dài.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dùng dấu vết để chọn mock
&lt;/h3&gt;

&lt;p&gt;Dấu vết cho biết trực tiếp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Điểm cuối nào được gọi nhiều nhất.&lt;/li&gt;
&lt;li&gt;Trạng thái lỗi nào thực sự xảy ra.&lt;/li&gt;
&lt;li&gt;Dữ liệu nào thường xuất hiện trong phản hồi.&lt;/li&gt;
&lt;li&gt;Công cụ nào có ảnh hưởng lớn nhất đến luồng chạy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy xây dựng mock quanh các trường hợp này thay vì đoán. Xem thêm bài viết về &lt;a href="https://apidog.com/vi/blog/ai-agents-mock-apis-not-production?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chạy tác nhân với API mock thay vì production&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phát hiện thay đổi chậm
&lt;/h3&gt;

&lt;p&gt;Theo dõi hàng tuần:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Phân phối lựa chọn công cụ.&lt;/li&gt;
&lt;li&gt;Tỷ lệ thử lại theo điểm cuối.&lt;/li&gt;
&lt;li&gt;Số lần gọi trên mỗi tác vụ hoàn thành.&lt;/li&gt;
&lt;li&gt;Tỷ lệ lần chạy bị chính sách chặn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một thay đổi nhỏ trong các chỉ số này có thể là tín hiệu sớm trước khi trở thành sự cố. Các kiểm thử cấp hợp đồng, như trong &lt;a href="https://apidog.com/vi/blog/api-contract-testing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn kiểm thử hợp đồng API&lt;/a&gt;, có thể phát hiện thay đổi ở thượng nguồn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ba câu hỏi mà dấu vết phải trả lời được
&lt;/h2&gt;

&lt;h3&gt;
  
  
  “Tác nhân đã tính phí sai khách hàng như thế nào?”
&lt;/h3&gt;

&lt;p&gt;Bạn cần:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đối số mô hình tạo ra.&lt;/li&gt;
&lt;li&gt;URL cuối cùng sau khi resolve.&lt;/li&gt;
&lt;li&gt;Bước ngay trước đó.&lt;/li&gt;
&lt;li&gt;Kết quả của các công cụ trước đó.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trong nhiều trường hợp, ID bắt nguồn từ một kết quả công cụ có nhiều bản ghi khớp, rồi mô hình chọn bản ghi đầu tiên. Dấu vết phải cho thấy kết quả, sự mơ hồ và lựa chọn cuối cùng.&lt;/p&gt;

&lt;p&gt;Nếu không có &lt;code&gt;tool_args&lt;/code&gt;, bạn chỉ còn mã HTTP 200 và một khách hàng không hài lòng.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Tác nhân ngừng hoạt động từ thứ Ba vì sao?”
&lt;/h3&gt;

&lt;p&gt;So sánh lần chạy tốt và lần chạy lỗi theo từng trường:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID mô hình.&lt;/li&gt;
&lt;li&gt;Mã băm bộ công cụ.&lt;/li&gt;
&lt;li&gt;Phiên bản prompt.&lt;/li&gt;
&lt;li&gt;Kích thước phản hồi trung bình.&lt;/li&gt;
&lt;li&gt;Số token.&lt;/li&gt;
&lt;li&gt;Số lần thử lại.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một trong các trường này thường cho biết điều gì đã thay đổi. Đây là lý do bản ghi lần chạy phải chứa cấu hình, không chỉ danh sách sự kiện.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Có ai phê duyệt hành động này không?”
&lt;/h3&gt;

&lt;p&gt;Khối &lt;code&gt;policy&lt;/code&gt; phải trả lời trực tiếp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;approval_required&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;approved_by&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Thời điểm phê duyệt.&lt;/li&gt;
&lt;li&gt;Trạng thái thực thi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hãy ghi lại tại thời điểm quyết định được đưa ra, không cố tái tạo sau này.&lt;/p&gt;

&lt;p&gt;Điểm chung của cả ba câu hỏi: không câu nào được trả lời bằng “công cụ trả về 200”. Chúng cần các trường nhỏ, rẻ để lưu nhưng không thể khôi phục sau khi sự việc xảy ra.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lấy mẫu có chọn lọc
&lt;/h2&gt;

&lt;p&gt;Theo dõi đầy đủ mọi lần chạy có thể tốn kém khi khối lượng lớn. Tuy nhiên, lưu lượng tác nhân không đồng nhất nên không nên lấy mẫu ngẫu nhiên theo tỷ lệ cố định.&lt;/p&gt;

&lt;h3&gt;
  
  
  Luôn giữ lại
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Mọi lần chạy thất bại.&lt;/li&gt;
&lt;li&gt;Mọi lần chạy bị chính sách chặn.&lt;/li&gt;
&lt;li&gt;Mọi lần chạy chứa thao tác ghi.&lt;/li&gt;
&lt;li&gt;Mọi lần chạy vượt ngưỡng độ trễ.&lt;/li&gt;
&lt;li&gt;Mọi lần chạy có retry hoặc timeout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đây là những lần chạy người dùng và đội vận hành có khả năng cần điều tra nhất.&lt;/p&gt;

&lt;h3&gt;
  
  
  Có thể lấy mẫu
&lt;/h3&gt;

&lt;p&gt;Các lần chạy chỉ đọc thành công thường chiếm phần lớn khối lượng và ít thú vị khi xem riêng lẻ. Bạn vẫn cần giữ đủ mẫu để tính đường cơ sở.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&gt;Chương về giám sát hệ thống phân tán trong SRE của Google&lt;/a&gt; giải thích rõ vì sao nên lấy mẫu theo tín hiệu thay vì theo khối lượng. Nguyên tắc này áp dụng trực tiếp cho tác nhân.&lt;/p&gt;

&lt;p&gt;Ngay cả khi loại bỏ payload, hãy giữ bản ghi khung gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tên công cụ.&lt;/li&gt;
&lt;li&gt;Kết quả.&lt;/li&gt;
&lt;li&gt;Thời lượng.&lt;/li&gt;
&lt;li&gt;Trạng thái.&lt;/li&gt;
&lt;li&gt;Retry count.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bản ghi khung rất nhỏ nhưng vẫn hỗ trợ các chỉ số quan trọng. Payload và prompt là phần tốn kém nhất, nên loại bỏ chúng trước.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cẩn thận với tail sampling
&lt;/h3&gt;

&lt;p&gt;Nếu quyết định giữ hay bỏ dấu vết sau khi lần chạy kết thúc, quyết định đó phải xảy ra sau khi biết kết quả cuối cùng.&lt;/p&gt;

&lt;p&gt;Một lần chạy có thể trông bình thường ở bước 3 nhưng thất bại ở bước 9. Vì vậy, cần đệm dữ liệu trong khi chạy thay vì loại bỏ ngay từng span.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nên lưu dấu vết ở đâu?
&lt;/h2&gt;

&lt;p&gt;Các nguyên tắc trên giả định bạn sở hữu hệ thống lưu trữ. Điều này phù hợp khi tác nhân là dịch vụ của bạn gọi API của bạn, nhưng không phù hợp khi tác nhân chạy trên máy của nhà phát triển hoặc khách hàng.&lt;/p&gt;

&lt;p&gt;Khi đó, dấu vết có thể nằm ở bất kỳ thiết bị đầu cuối nào đã chạy tác nhân.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sharkly.ai" rel="noopener noreferrer"&gt;Sharkly&lt;/a&gt; áp dụng cách tiếp cận khác: gắn dấu vết thực thi vào nhiệm vụ mà tác nhân được giao. Lịch sử chạy, nhật ký thực thi và kết quả nằm cạnh mục tiêu, trạng thái và chuỗi bình luận nơi con người xem xét công việc.&lt;/p&gt;

&lt;p&gt;Lợi ích thực tế nằm ở khả năng truy xuất. Câu hỏi “Tại sao tác nhân làm điều đó?” trở thành việc mở nhiệm vụ thay vì tìm đúng máy, phiên làm việc và lịch sử terminal.&lt;/p&gt;

&lt;p&gt;Cách này không thay thế OpenTelemetry, hệ thống quan sát hay môi trường runtime. Claude Code và Codex vẫn thực hiện công việc. Nó chỉ thay đổi nơi bản ghi kết thúc khi tác nhân không phải là một dịch vụ do bạn triển khai.&lt;/p&gt;

&lt;h2&gt;
  
  
  Theo dõi bốn chỉ số quan trọng
&lt;/h2&gt;

&lt;p&gt;Dấu vết chỉ có giá trị khi được sử dụng. Bốn chỉ số sau nên có trên dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Số lần gọi trên mỗi tác vụ hoàn thành
&lt;/h3&gt;

&lt;p&gt;Đây là thước đo hiệu quả trực tiếp nhất.&lt;/p&gt;

&lt;p&gt;Nếu chỉ số tăng, tác nhân có thể đang khám phá quá nhiều, thường do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mô tả công cụ kém.&lt;/li&gt;
&lt;li&gt;Prompt phình to.&lt;/li&gt;
&lt;li&gt;Một điểm cuối bắt đầu lỗi.&lt;/li&gt;
&lt;li&gt;Kết quả API không đủ rõ ràng.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Tỷ lệ retry theo điểm cuối
&lt;/h3&gt;

&lt;p&gt;Chỉ số này xếp hạng các phụ thuộc kém tin cậy nhất và cho thấy khi nào một điểm cuối suy giảm.&lt;/p&gt;

&lt;p&gt;Bài viết về &lt;a href="https://apidog.com/vi/blog/ai-agent-error-recovery?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phục hồi lỗi tác nhân&lt;/a&gt; trình bày cách xử lý các điểm cuối đứng đầu danh sách.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tỷ lệ bị chính sách chặn
&lt;/h3&gt;

&lt;p&gt;Chỉ số này nên thấp và ổn định.&lt;/p&gt;

&lt;p&gt;Một mức tăng đột biến có thể cho thấy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tác nhân đang cố thực hiện hành động không được phép.&lt;/li&gt;
&lt;li&gt;Chính sách quá chặt và trở thành nút cổ chai.&lt;/li&gt;
&lt;li&gt;Prompt hoặc mô tả công cụ đã thay đổi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Thời gian đến lần gọi công cụ đầu tiên
&lt;/h3&gt;

&lt;p&gt;Khởi đầu chậm thường liên quan đến prompt quá lớn. Kích thước prompt là một dạng “phình to âm thầm”: nó có thể tăng dần mà không ai chủ động quyết định tăng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist triển khai
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Một &lt;code&gt;trace_id&lt;/code&gt; cho mỗi lần chạy và một &lt;code&gt;span_id&lt;/code&gt; cho mỗi lần gọi công cụ.&lt;/li&gt;
&lt;li&gt;[ ] ID được ghi ở cả lớp suy luận, lớp công cụ và lớp HTTP.&lt;/li&gt;
&lt;li&gt;[ ] Đối số mô hình được ghi trước khi chuẩn hóa.&lt;/li&gt;
&lt;li&gt;[ ] Danh sách công cụ có sẵn được lưu trong mỗi lần gọi.&lt;/li&gt;
&lt;li&gt;[ ] Kết quả dùng enum rõ ràng, bao gồm cả trạng thái bị chính sách chặn.&lt;/li&gt;
&lt;li&gt;[ ] Số lần retry được tách khỏi số lần gọi.&lt;/li&gt;
&lt;li&gt;[ ] Model, temperature, phiên bản prompt và mã băm bộ công cụ nằm trong bản ghi lần chạy.&lt;/li&gt;
&lt;li&gt;[ ] Kết quả công cụ thô được lưu, không chỉ phiên bản đã cắt gọn gửi cho mô hình.&lt;/li&gt;
&lt;li&gt;[ ] Credential được loại bỏ trong middleware.&lt;/li&gt;
&lt;li&gt;[ ] Payload không thể lưu được thay bằng mã băm.&lt;/li&gt;
&lt;li&gt;[ ] Thời gian lưu trữ được phân cấp theo độ nhạy cảm.&lt;/li&gt;
&lt;li&gt;[ ] Dấu vết lỗi có thể chuyển thành trường hợp kiểm thử và phát lại.&lt;/li&gt;
&lt;li&gt;[ ] Tail sampling chỉ quyết định sau khi biết kết quả cuối cùng.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mục tiêu rất đơn giản: khi có người hỏi vì sao tác nhân làm điều gì đó, bạn trả lời được từ bản ghi thay vì phỏng đoán.&lt;/p&gt;

&lt;p&gt;Bạn có thể &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;tải Apidog&lt;/a&gt; để phát lại các cuộc gọi trong dấu vết và lưu các bản tái tạo thành bài kiểm thử.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nên dùng OpenTelemetry hay công cụ quan sát tác nhân chuyên dụng?
&lt;/h3&gt;

&lt;p&gt;Dùng OpenTelemetry cho việc vận chuyển và mô hình hóa dấu vết. Nó đã xử lý tương quan, đồng thời hạ tầng hiện có của bạn có thể hiểu dữ liệu này.&lt;/p&gt;

&lt;p&gt;Công cụ chuyên dụng cho tác nhân có thể bổ sung các chế độ xem hữu ích, nhưng dữ liệu nền vẫn nên có thể di chuyển được.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chi phí lưu trữ đầy đủ dấu vết là bao nhiêu?
&lt;/h3&gt;

&lt;p&gt;Thường thấp hơn dự kiến nếu áp dụng lưu trữ phân cấp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Payload đầy đủ trong vài ngày.&lt;/li&gt;
&lt;li&gt;Bản ghi có cấu trúc, không chứa nội dung, trong thời gian dài hơn.&lt;/li&gt;
&lt;li&gt;Mã băm và kích thước prompt thay vì lưu prompt mặc định.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prompt thường là phần tốn kém nhất.&lt;/p&gt;

&lt;h3&gt;
  
  
  Có cần ghi lại văn bản suy luận của mô hình không?
&lt;/h3&gt;

&lt;p&gt;Thông thường là không.&lt;/p&gt;

&lt;p&gt;Công cụ được chọn, các đối số được tạo ra và những lựa chọn có sẵn đã giải thích phần lớn quyết định. Nếu nhà cung cấp cho phép truy cập nội dung suy luận, chỉ nên lưu cho các lần chạy thất bại và xem đó là dữ liệu nhạy cảm.&lt;/p&gt;

&lt;h3&gt;
  
  
  Làm sao theo dõi nhiều tác nhân?
&lt;/h3&gt;

&lt;p&gt;Giữ một &lt;code&gt;trace_id&lt;/code&gt; cho toàn bộ tác vụ và cấp một span riêng cho mỗi tác nhân. Ghi việc chuyển giao giữa các tác nhân thành một sự kiện.&lt;/p&gt;

&lt;p&gt;Xem thêm về &lt;a href="https://apidog.com/vi/blog/agent-handoff-context-passing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chuyển giao đa tác nhân và truyền ngữ cảnh&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nếu tác nhân chạy trên máy khách hàng thì sao?
&lt;/h3&gt;

&lt;p&gt;Ghi nhật ký cục bộ, biên tập tích cực và chỉ gửi số liệu tổng hợp, trừ khi người dùng đồng ý chia sẻ thêm.&lt;/p&gt;

&lt;p&gt;Tên công cụ, kết quả và thời lượng thường đủ cho giám sát cấp đội ngũ mà không cần payload rời khỏi thiết bị.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mã băm nội dung yêu cầu có thực sự hữu ích không?
&lt;/h3&gt;

&lt;p&gt;Có, đối với phần lớn câu hỏi phổ biến.&lt;/p&gt;

&lt;p&gt;Mã băm chứng minh hai cuộc gọi giống hệt nhau, hỗ trợ điều tra các lần ghi trùng lặp mà không cần lưu payload. Kết hợp mã băm với &lt;a href="https://apidog.com/vi/blog/ai-agent-idempotency-keys?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;idempotency key&lt;/a&gt; còn giúp ngăn chặn nhiều trường hợp trùng lặp ngay từ đầu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tài liệu tham khảo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/api-observability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Khả năng quan sát API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opentelemetry.io/docs/concepts/signals/traces/" rel="noopener noreferrer"&gt;Dấu vết OpenTelemetry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opentelemetry.io/docs/specs/semconv/gen-ai/" rel="noopener noreferrer"&gt;Quy ước ngữ nghĩa GenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/ai-agent-guardrails?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hàng rào bảo vệ tác nhân AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/designing-api-tool-schemas-for-agents?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Thiết kế lược đồ công cụ cho tác nhân&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/agent-tool-response-context-window?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Giữ phản hồi công cụ khỏi cửa sổ ngữ cảnh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/ai-agent-api-key-least-privilege?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API key đặc quyền tối thiểu cho tác nhân&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/ai-agents-mock-apis-not-production?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Chạy tác nhân với mock API thay vì production&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/api-contract-testing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Kiểm thử hợp đồng API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/" rel="noopener noreferrer"&gt;Giám sát hệ thống phân tán trong SRE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sharkly.ai" rel="noopener noreferrer"&gt;Sharkly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/ai-agent-error-recovery?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Phục hồi lỗi tác nhân&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Tải Apidog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/agent-handoff-context-passing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Chuyển giao đa tác nhân&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apidog.com/vi/blog/ai-agent-idempotency-keys?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Idempotency key cho tác nhân&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Cửa sổ ngữ cảnh Agent AI: Tối ưu hóa phản hồi API cồng kềnh</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Wed, 26 Aug 2026 10:57:25 +0000</pubDate>
      <link>https://dev.to/sebbasstian/cua-so-ngu-canh-agent-ai-toi-uu-hoa-phan-hoi-api-cong-kenh-355f</link>
      <guid>https://dev.to/sebbasstian/cua-so-ngu-canh-agent-ai-toi-uu-hoa-phan-hoi-api-cong-kenh-355f</guid>
      <description>&lt;h1&gt;
  
  
  Thiết kế phản hồi API gọn nhẹ cho tác nhân AI
&lt;/h1&gt;

&lt;p&gt;Tác nhân yêu cầu hồ sơ khách hàng. API trả về thông tin khách hàng, 200 đơn hàng gần nhất, từng mặt hàng, dấu thời gian ở ba định dạng và &lt;code&gt;_links&lt;/code&gt; cho mỗi mục. Bốn mươi nghìn token rơi vào cửa sổ ngữ cảnh, trong khi tác nhân chỉ cần địa chỉ email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Lặp lại điều đó bốn lần trong một lượt chạy, tác nhân sẽ dùng gần hết ngân sách chỉ để đọc JSON không cần thiết. Sau đó nó quên hướng dẫn ban đầu, tóm tắt thay vì hoàn thành nhiệm vụ, và chi phí tăng trong khi chất lượng giảm.&lt;/p&gt;

&lt;p&gt;Đây là vấn đề thiết kế API, không phải vấn đề prompt. Mọi trường trong phản hồi đều cạnh tranh với hướng dẫn, lịch sử hội thoại và kế hoạch của tác nhân trong một cửa sổ ngữ cảnh cố định. &lt;a href="https://apidog.com/vi/blog/production-ai-agent-reliability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Việc cạn kiệt ngữ cảnh là một nguyên nhân khiến tác nhân AI thất bại trong môi trường sản xuất&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; giúp bạn đo kích thước phản hồi thực tế của từng endpoint và mô phỏng phản hồi đã được cắt giảm trước khi API được triển khai.&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%2Fdmxr1nj0gig9ntqnocr9.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%2Fdmxr1nj0gig9ntqnocr9.png" alt="Minh họa phản hồi API dư thừa làm đầy ngữ cảnh tác nhân AI" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Token đi đâu?
&lt;/h2&gt;

&lt;p&gt;Các phản hồi dành cho trình duyệt và dashboard thường chứa dữ liệu không cần thiết cho tác nhân:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Envelope rườm rà:&lt;/strong&gt; &lt;code&gt;data&lt;/code&gt;, &lt;code&gt;meta&lt;/code&gt;, &lt;code&gt;links&lt;/code&gt;, &lt;code&gt;included&lt;/code&gt; có thể làm tăng gấp đôi tải trọng. Hypermedia hữu ích cho client theo liên kết, nhưng URL là token mà tác nhân hiếm khi cần.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Khóa lặp lại:&lt;/strong&gt; Danh sách 200 mục, mỗi mục 15 trường, phải lặp lại khoảng 3.000 chuỗi khóa JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mở rộng lồng nhau mặc định:&lt;/strong&gt; Khách hàng → đơn hàng → mặt hàng là một cây dữ liệu tăng kích thước rất nhanh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Định dạng dư thừa:&lt;/strong&gt; &lt;code&gt;created_at&lt;/code&gt;, &lt;code&gt;created_at_unix&lt;/code&gt; và &lt;code&gt;created_at_human&lt;/code&gt; trả ba lần cùng một thông tin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giá trị &lt;code&gt;null&lt;/code&gt; hoặc rỗng:&lt;/strong&gt; Phát mọi trường chưa được đặt là lãng phí hoàn toàn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chi phí token phụ thuộc vào kích thước văn bản đã tuần tự hóa, không phải số bản ghi. Hai trăm bản ghi phẳng với năm trường có thể rẻ hơn một đối tượng lồng nhau sâu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quy tắc 1: Trả về trường, không phải toàn bộ tài nguyên
&lt;/h2&gt;

&lt;p&gt;Cho phép người gọi chọn đúng trường cần dùng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /v1/customers/8812?fields=id,email,plan,status
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"8812"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dana@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"plan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&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;Thay đổi này thường giảm khoảng 90% kích thước của một bản ghi đầy đủ. &lt;a href="https://cloud.google.com/apis/design/design_patterns" rel="noopener noreferrer"&gt;Hướng dẫn thiết kế API của Google&lt;/a&gt; mô tả mẫu field mask; GraphQL cũng giải quyết vấn đề này bằng cách bắt buộc chọn trường.&lt;/p&gt;

&lt;p&gt;Khi triển khai:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Xác thực danh sách trường bằng schema và từ chối tên không tồn tại. Đừng âm thầm bỏ qua một trường bị mô hình “ảo giác”.&lt;/li&gt;
&lt;li&gt;Dùng một tập trường mặc định nhỏ cho client không gửi &lt;code&gt;fields&lt;/code&gt;; đừng mặc định trả về mọi thứ.&lt;/li&gt;
&lt;li&gt;Đặt &lt;code&gt;fields&lt;/code&gt; là bắt buộc trong schema công cụ:
&lt;/li&gt;
&lt;/ol&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;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"getCustomer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Lấy thông tin khách hàng bằng ID. Luôn truyền `fields` với chỉ những gì bạn cần. Các trường có sẵn: id, email, name, plan, status, created_at, billing_address, order_count."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input_schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"customerId"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"customerId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"fields"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"array"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"items"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Tên các trường cần trả về. Giữ danh sách này ở mức tối thiểu."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mô tả công cụ là nơi mô hình học các quy tắc gọi API. Cả &lt;a href="https://platform.openai.com/docs/guides/function-calling" rel="noopener noreferrer"&gt;hướng dẫn gọi hàm của OpenAI&lt;/a&gt; và &lt;a href="https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview" rel="noopener noreferrer"&gt;tài liệu sử dụng công cụ của Anthropic&lt;/a&gt; đều nhấn mạnh điều này. Một tham số tùy chọn dễ bị bỏ qua; tham số bắt buộc khiến mô hình phải chọn dữ liệu cần thiết.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quy tắc 2: Luôn giới hạn danh sách
&lt;/h2&gt;

&lt;p&gt;Endpoint danh sách không giới hạn là nguồn phổ biến gây tràn ngữ cảnh. Một yêu cầu “các đơn hàng gần đây” không nên trả về mọi đơn hàng từ năm 2019.&lt;/p&gt;

&lt;p&gt;Đặt giới hạn cứng ở phía máy chủ. Nếu tác nhân gửi &lt;code&gt;limit=5000&lt;/code&gt;, hãy trả tối đa 100 mục và cho biết phản hồi đã bị giới hạn.&lt;/p&gt;

&lt;p&gt;Kết hợp các nguyên tắc trong bài viết về &lt;a href="https://apidog.com/vi/blog/rest-api-pagination?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;phân trang REST API&lt;/a&gt; và &lt;a href="https://apidog.com/vi/blog/how-to-design-api-pagination-millions-of-records?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;thiết kế phân trang cho hàng triệu bản ghi&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giới hạn mỗi trang khoảng 20–50 mục với bản ghi thông thường.&lt;/li&gt;
&lt;li&gt;Trả &lt;code&gt;total&lt;/code&gt; để tác nhân biết có bao nhiêu dữ liệu mà không phải phân trang chỉ để đếm.&lt;/li&gt;
&lt;li&gt;Dùng cursor pagination thay vì offset, vì offset lệch khi dữ liệu thay đổi giữa các lần gọi.&lt;/li&gt;
&lt;li&gt;Trả tín hiệu rõ ràng như &lt;code&gt;"truncated": true&lt;/code&gt; để mô hình biết còn dữ liệu chưa xem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ngoài ra, hãy cung cấp cách tránh phân trang hoàn toàn: endpoint &lt;code&gt;count&lt;/code&gt;, tìm kiếm có bộ lọc hẹp, hoặc endpoint tóm tắt. Phản hồi rẻ nhất là phản hồi không trả dữ liệu thừa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quy tắc 3: Cắt giảm ở lớp công cụ khi không sở hữu API
&lt;/h2&gt;

&lt;p&gt;API bên thứ ba có thể không hỗ trợ chọn trường. Khi đó, cắt giảm phản hồi giữa HTTP client và mô hình:&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="n"&gt;KEEP&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;getCustomer&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&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;email&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;plan&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;status&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;listOrders&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&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;total&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;status&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;created_at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;project&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;KEEP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tool_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Để cách này vận hành tốt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lưu toàn bộ phản hồi trong nhật ký chạy, nhưng chỉ gửi phần đã chiếu cho mô hình. Xem thêm cách &lt;a href="https://apidog.com/vi/blog/ai-agent-tool-call-tracing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;truy vết các lệnh gọi công cụ của tác nhân&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Báo rõ trường đã bỏ qua, ví dụ: &lt;code&gt;"_omitted": ["billing_address", "notes", "metadata"]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Với dữ liệu dạng bảng, chuyển JSON sang CSV hoặc bảng Markdown để tên cột chỉ xuất hiện một lần.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id,total,status,created_at
ord_91,4900,paid,2026-08-21
ord_92,1200,refunded,2026-08-22
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quy tắc 4: Tóm tắt trên máy chủ cho trường hợp nặng
&lt;/h2&gt;

&lt;p&gt;Nhiều câu hỏi không cần bản ghi chi tiết. Ví dụ: “Khách hàng này có khoản thanh toán thất bại nào trong tháng này không?” là câu hỏi boolean. Trả 40 đối tượng thanh toán để mô hình tự suy luận là tốn kém.&lt;/p&gt;

&lt;p&gt;Với câu hỏi lặp lại, hãy thêm endpoint trả lời trực tiếp: tóm tắt trạng thái tài khoản, tổng hợp theo trạng thái hoặc một tập dữ liệu nhỏ. Đây là cải tiến giá trị nhất: thay vì cắt giảm phản hồi lớn, bạn tránh tạo nó.&lt;/p&gt;

&lt;p&gt;Giữ các phản hồi tóm tắt ổn định về hình dạng và có version. Prompt của tác nhân phụ thuộc vào shape phản hồi; thay đổi âm thầm có thể làm nó hỏng. Tham khảo &lt;a href="https://apidog.com/vi/blog/api-changes-break-ai-agents?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;điều gì xảy ra khi API thay đổi bên dưới tác nhân&lt;/a&gt; và &lt;a href="https://apidog.com/vi/blog/best-api-versioning-strategy?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chiến lược tạo phiên bản API&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đo lường trước và sau
&lt;/h2&gt;

&lt;p&gt;Đừng tối ưu mù quáng. Đo ba chỉ số:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Byte mỗi phản hồi, theo endpoint:&lt;/strong&gt; Gửi yêu cầu thực tế đến mọi công cụ tác nhân có thể gọi. Endpoint vượt vài kilobyte là ứng viên cần tối ưu. Trong &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;, bạn có thể chạy endpoint, xem trực tiếp kích thước phản hồi và lưu request để kiểm tra lại sau này.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token mỗi lần gọi công cụ:&lt;/strong&gt; Byte chỉ là đại diện; token mới là hóa đơn. Đưa tải trọng qua tokenizer của nhà cung cấp, chẳng hạn &lt;a href="https://github.com/openai/tiktoken" rel="noopener noreferrer"&gt;tiktoken&lt;/a&gt;, rồi xếp hạng endpoint theo chi phí.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ngữ cảnh dùng cho mỗi lượt chạy:&lt;/strong&gt; Theo dõi tổng token trong toàn bộ tác vụ. Nếu lượt chạy chạm giới hạn ngữ cảnh, cắt giảm sẽ giúp tác vụ hoàn thành thay vì chỉ rẻ hơn.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sau đó, mô phỏng phản hồi mục tiêu bằng mock server trước khi đội API triển khai. Điều quan trọng là xác minh tác nhân vẫn thành công với ít dữ liệu hơn. Xem quy trình &lt;a href="https://apidog.com/vi/blog/ai-agents-mock-apis-not-production?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;chạy tác nhân với API giả lập thay vì môi trường production&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%2Fiyvqzuqtilzgdxj734qt.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%2Fiyvqzuqtilzgdxj734qt.png" alt="Đo lường kích thước phản hồi API trước khi đưa vào tác nhân AI" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Một phản hồi tốt trông như thế nào?
&lt;/h2&gt;

&lt;p&gt;Phản hồi thân thiện với tác nhân nên nhỏ gọn, phẳng và trung thực về dữ liệu bị bỏ qua:&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;"customer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"8812"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dana@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"plan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pro"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recent_orders"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ord_91"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"total_cents"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4900&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"paid"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ord_92"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"total_cents"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"refunded"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"recent_orders_total"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;47&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"truncated"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"_omitted"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"billing_address"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"order_line_items"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Phản hồi này dưới 200 token, trả lời câu hỏi phổ biến, cho biết có 47 đơn hàng thay vì ngụ ý chỉ có hai, và giúp mô hình biết dữ liệu nào có thể yêu cầu tiếp theo.&lt;/p&gt;

&lt;p&gt;Bắt đầu với endpoint đắt nhất: đo lường, thêm chọn trường, giới hạn danh sách, rồi chạy lại tác nhân. Chênh lệch thường đủ lớn để biện minh cho phần còn lại của công việc. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Tải xuống Apidog&lt;/a&gt; để đo lường và mô phỏng trong cùng một dự án.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ba tình huống thực tế
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Phân loại hỗ trợ
&lt;/h3&gt;

&lt;p&gt;Một tác nhân đọc ticket, lấy thông tin khách hàng và quyết định có cần leo thang không. Phiên bản ngây thơ lấy toàn bộ hồ sơ khách hàng cùng 50 ticket gần nhất, tiêu tốn 30.000 token trước khi đọc được khiếu nại hiện tại.&lt;/p&gt;

&lt;p&gt;Phiên bản tốt hơn gọi endpoint tóm tắt trả về gói dịch vụ, trạng thái, số ticket đang mở và ngày liên hệ gần nhất. Khoảng 80 token, nhưng quyết định tốt hơn vì tín hiệu liên quan không bị chôn vùi.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tác nhân vận hành nội bộ
&lt;/h3&gt;

&lt;p&gt;Một tác nhân triển khai kiểm tra tình trạng của 40 dịch vụ. Đối tượng trạng thái đầy đủ có thể làm tràn cửa sổ ở dịch vụ thứ 12.&lt;/p&gt;

&lt;p&gt;Hãy trả một dòng cho mỗi dịch vụ: tên, trạng thái và tỷ lệ lỗi. Toàn bộ 40 dịch vụ sẽ vừa trong vài trăm token, cho phép tác nhân suy luận trên cả hệ thống thay vì quên nửa đầu danh sách.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Nhập liệu và đối chiếu dữ liệu
&lt;/h3&gt;

&lt;p&gt;Một tác nhân đối chiếu hóa đơn với thanh toán. Trả toàn bộ tài liệu hóa đơn khiến nó thất bại sau vài chục bản ghi.&lt;/p&gt;

&lt;p&gt;Trả &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;amount_cents&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt; và &lt;code&gt;reference&lt;/code&gt; dưới dạng CSV cho phép nó xử lý vài trăm bản ghi trong một lần gọi, vì phép so sánh chỉ dùng bốn trường này.&lt;/p&gt;

&lt;p&gt;Mẫu chung: tác nhân cần &lt;strong&gt;bề mặt ra quyết định&lt;/strong&gt;, nhưng API thường trả về &lt;strong&gt;một tài liệu đầy đủ&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bạn cần lịch sử chạy để thấy mô hình
&lt;/h2&gt;

&lt;p&gt;Một lượt chạy chỉ cho biết có một phản hồi lớn. Xu hướng thực sự—endpoint nào vượt ngân sách và tần suất ra sao—chỉ xuất hiện sau nhiều lượt chạy.&lt;/p&gt;

&lt;p&gt;Với dịch vụ tự triển khai, đó là telemetry của bạn. Với tác nhân lập trình thực hiện công việc được giao, nền tảng chạy tác nhân cần lưu dấu vết và kết quả. &lt;a href="https://sharkly.ai" rel="noopener noreferrer"&gt;Sharkly&lt;/a&gt; lưu lịch sử thực thi theo Task, giúp so sánh giữa các lần chạy mà không cần tái tạo phiên terminal.&lt;/p&gt;

&lt;p&gt;Thực thi ngân sách mà không có lịch sử chỉ cho bạn biết “có thứ gì đó quá lớn”, chứ không cho biết nên sửa endpoint nào trước.&lt;/p&gt;

&lt;h2&gt;
  
  
  Đặt ngân sách cho từng công cụ
&lt;/h2&gt;

&lt;p&gt;Đừng chỉ giới hạn tổng ngữ cảnh của toàn bộ lượt chạy. Hãy đặt ngân sách cho mỗi công cụ, ví dụ &lt;strong&gt;1.500 token&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Khi phản hồi vượt giới hạn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cắt giảm theo phần trường đã chọn.&lt;/li&gt;
&lt;li&gt;Thêm dấu chỉ trường bị bỏ qua.&lt;/li&gt;
&lt;li&gt;Ghi nhận sự kiện vượt ngân sách.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bạn sẽ có danh sách endpoint thường xuyên vượt ngưỡng, được xếp hạng theo tần suất gọi—đó chính là hàng đợi tối ưu hóa.&lt;/p&gt;

&lt;p&gt;Ngân sách theo công cụ cũng bảo vệ khỏi các trường hợp đuôi dài: endpoint nhỏ trong môi trường thử nghiệm có thể trở nên khổng lồ với khách hàng có 4.000 đơn hàng. Giới hạn cứng biến tình huống đó thành phản hồi đã cắt giảm thay vì một tác vụ thất bại lúc 2 giờ sáng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cắt bớt phản hồi có rủi ro nếu tác nhân cần dữ liệu bị thiếu?
&lt;/h3&gt;

&lt;p&gt;Chỉ rủi ro khi bạn che giấu việc cắt bớt. Hãy trả tín hiệu rõ ràng và danh sách trường bị bỏ qua để mô hình có thể yêu cầu thêm. Cắt giảm âm thầm mới là nguyên nhân gây câu trả lời sai.&lt;/p&gt;

&lt;h3&gt;
  
  
  Có nên dùng GraphQL thay REST cho tác nhân?
&lt;/h3&gt;

&lt;p&gt;GraphQL buộc chọn trường, nên giải quyết vấn đề này gọn gàng. Tuy nhiên, nó chuyển độ phức tạp sang việc tạo truy vấn, và mô hình thường viết truy vấn không hợp lệ. Thêm &lt;code&gt;fields&lt;/code&gt; vào REST thường là thay đổi nhỏ hơn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phản hồi công cụ nên nhỏ đến mức nào?
&lt;/h3&gt;

&lt;p&gt;Mục tiêu thực tế:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dưới &lt;strong&gt;1.000 token&lt;/strong&gt; cho một lần đọc bản ghi.&lt;/li&gt;
&lt;li&gt;Dưới &lt;strong&gt;2.000 token&lt;/strong&gt; cho một danh sách.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vượt các mức này, hãy hỏi liệu tác nhân cần bản ghi hay chỉ cần câu trả lời.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt caching có giải quyết vấn đề không?
&lt;/h3&gt;

&lt;p&gt;Không hoàn toàn. Caching giảm chi phí của ngữ cảnh lặp lại, nhưng không giải phóng không gian cửa sổ ngữ cảnh. Phản hồi 40.000 token được cache vẫn chiếm 40.000 token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Còn phản hồi nhị phân và tệp?
&lt;/h3&gt;

&lt;p&gt;Không đưa trực tiếp vào ngữ cảnh. Lưu trữ tệp, cung cấp tham chiếu cùng mô tả ngắn, và cho tác nhân một công cụ riêng để trích xuất đúng phần cần thiết.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nên cắt giảm trong API hay wrapper công cụ?
&lt;/h3&gt;

&lt;p&gt;Cắt trong API khi bạn sở hữu nó, vì mọi client đều hưởng lợi và dữ liệu thừa không phải truyền qua mạng. Cắt trong wrapper khi đó là API bên thứ ba. Làm cả hai là tốt nhất.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tính Lũy Đẳng Tác nhân AI: Ngăn Chặn Tính Phí Kép Khi Thử Lại</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Wed, 26 Aug 2026 10:57:19 +0000</pubDate>
      <link>https://dev.to/sebbasstian/tinh-luy-dang-tac-nhan-ai-ngan-chan-tinh-phi-kep-khi-thu-lai-do7</link>
      <guid>https://dev.to/sebbasstian/tinh-luy-dang-tac-nhan-ai-ngan-chan-tinh-phi-kep-khi-thu-lai-do7</guid>
      <description>&lt;h1&gt;
  
  
  Tính bất biến cho tác nhân AI: ngăn thử lại tạo giao dịch trùng lặp
&lt;/h1&gt;

&lt;p&gt;Tác nhân của bạn gọi endpoint thanh toán, máy chủ đã ghi nhận giao dịch nhưng phản hồi bị timeout trên đường về. Không thấy mã &lt;code&gt;200&lt;/code&gt;, tác nhân thử lại — và khách hàng bị tính phí hai lần dù log không báo lỗi rõ ràng.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Đây là khác biệt quan trọng giữa tác nhân và API client thông thường: người dùng thường chờ hoặc kiểm tra trước khi bấm lại; tác nhân có thể thử lại 3–4 lần trong vài giây. Chính sách retry giúp tác nhân bền bỉ hơn, nhưng cũng làm tăng nguy cơ ghi dữ liệu trùng lặp.&lt;/p&gt;

&lt;p&gt;Giải pháp là &lt;strong&gt;tính bất biến&lt;/strong&gt; (&lt;em&gt;idempotency&lt;/em&gt;): một yêu cầu lặp lại phải tạo ra cùng kết quả với một yêu cầu duy nhất.&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%2Fup3cij2pnlzw8wq9fkye.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%2Fup3cij2pnlzw8wq9fkye.png" alt="Minh họa về tính bất biến cho tác nhân AI" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bài viết này tập trung vào cách:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tạo khóa bất biến mà tác nhân có thể tái sử dụng khi retry.&lt;/li&gt;
&lt;li&gt;Lưu và xử lý khóa đúng ở phía máy chủ.&lt;/li&gt;
&lt;li&gt;Kiểm thử để chứng minh lần gọi thứ hai không tạo hiệu ứng mới.&lt;/li&gt;
&lt;li&gt;Theo dõi lần chạy đã thực hiện thao tác nào.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Để hiểu rộng hơn về các lỗi tác nhân trong môi trường thực tế, xem bài viết về &lt;a href="https://apidog.com/vi/blog/production-ai-agent-reliability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;độ tin cậy của tác nhân AI trong production&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; hữu ích ở giai đoạn kiểm thử: bạn có thể gửi cùng một request nhiều lần, lưu kịch bản và chạy nó trong CI để phát hiện hồi quy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao tác nhân dễ tạo bản sao hơn con người?
&lt;/h2&gt;

&lt;p&gt;Ba đặc điểm khiến lưu lượng từ tác nhân dễ sinh thao tác trùng lặp:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retry mạnh mẽ&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Framework tác nhân thường retry khi gặp lỗi mạng tạm thời. Backoff và circuit breaker là cần thiết, nhưng chúng cũng làm tăng số lần một request đến máy chủ. Xem thêm hướng dẫn về &lt;a href="https://apidog.com/vi/blog/ai-agent-error-recovery?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;khôi phục lỗi cho tác nhân&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Timeout mang tính mơ hồ&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Một &lt;code&gt;504&lt;/code&gt; từ proxy có thể nghĩa là máy chủ chưa xử lý request, hoặc đã xử lý xong nhưng phản hồi bị mất. Tác nhân thường retry thay vì gọi API để kiểm tra trạng thái trước.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retry toàn bộ workflow&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Nếu bước 1 tạo đơn hàng và bước 4 thất bại, việc khởi động lại workflow có thể tạo đơn hàng thứ hai. Với tác nhân đa bước, ranh giới retry không luôn rõ ràng vì mô hình có thể quyết định bắt đầu lại từ đâu.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vấn đề không phải tác nhân gửi request sai. Chúng gửi request đúng — nhiều hơn một lần.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tính bất biến thực sự đảm bảo điều gì?
&lt;/h2&gt;

&lt;p&gt;Một thao tác là bất biến khi gọi nhiều lần có cùng tác động với gọi một lần.&lt;/p&gt;

&lt;p&gt;Theo &lt;a href="https://datatracker.ietf.org/doc/html/rfc9110#section-9.2.2" rel="noopener noreferrer"&gt;RFC 9110&lt;/a&gt;, &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt; và &lt;code&gt;DELETE&lt;/code&gt; là các phương thức bất biến. &lt;code&gt;POST&lt;/code&gt; không bất biến, nên thường được dùng cho các thao tác rủi ro như tạo đơn hàng, gửi email hoặc bắt đầu chuyển khoản.&lt;/p&gt;

&lt;p&gt;Phân biệt hai khái niệm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bất biến không đồng nghĩa với an toàn.&lt;/strong&gt; &lt;code&gt;DELETE&lt;/code&gt; là bất biến: gọi năm lần vẫn chỉ xóa một tài nguyên. Nhưng nó vẫn là thao tác phá hủy. Với tác nhân, quyền đọc và quyền ghi cần được tách riêng bằng &lt;a href="https://apidog.com/vi/blog/ai-agent-api-key-least-privilege?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API key có đặc quyền tối thiểu&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bất biến không yêu cầu phản hồi giống byte-for-byte.&lt;/strong&gt; Lần gọi lại có thể trả về phản hồi đã lưu hoặc mã trạng thái khác. Điều quan trọng là trạng thái máy chủ không đổi: một giao dịch, một đơn hàng, một email.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dùng &lt;code&gt;Idempotency-Key&lt;/code&gt; cho các thao tác &lt;code&gt;POST&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Mô hình phổ biến là client tạo khóa và gửi kèm request. Máy chủ lưu khóa cùng kết quả xử lý; request sau dùng cùng khóa sẽ nhận lại kết quả đó thay vì thực hiện công việc lần nữa.&lt;/p&gt;

&lt;p&gt;Stripe đã phổ biến cách tiếp cận này trong &lt;a href="https://docs.stripe.com/api/idempotent_requests" rel="noopener noreferrer"&gt;tài liệu về idempotent request&lt;/a&gt;. IETF cũng đang chuẩn hóa header &lt;a href="https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/" rel="noopener noreferrer"&gt;&lt;code&gt;Idempotency-Key&lt;/code&gt;&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="nf"&gt;POST&lt;/span&gt; &lt;span class="nn"&gt;/v1/payments&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;
&lt;span class="na"&gt;Host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;api.yourservice.com&lt;/span&gt;
&lt;span class="s"&gt;[REDACTED CREDENTIAL] [REDACTED]...&lt;/span&gt;
&lt;span class="na"&gt;Idempotency-Key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;9f2b7c14-6d3a-4b18-9d55-1e2a7c0b4f31&lt;/span&gt;
&lt;span class="na"&gt;Content-Type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;application/json&lt;/span&gt;

&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4900&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"usd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customer_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cus_8812"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Pro plan, August"&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;Khóa thường là UUID. Máy chủ cần lưu:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Khóa.&lt;/li&gt;
&lt;li&gt;Dấu vân tay của payload.&lt;/li&gt;
&lt;li&gt;Trạng thái xử lý.&lt;/li&gt;
&lt;li&gt;Mã trạng thái và response body.&lt;/li&gt;
&lt;li&gt;Thời điểm hết hạn.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tạo khóa mà tác nhân thực sự tái sử dụng
&lt;/h2&gt;

&lt;p&gt;Sai lầm phổ biến là để tool wrapper tạo UUID mới cho từng HTTP attempt. Khi đó retry dùng khóa khác và hoàn toàn mất tác dụng.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quy tắc:&lt;/strong&gt; tạo khóa khi tác nhân quyết định thực hiện một thao tác logic, rồi tái sử dụng khóa đó cho mọi lần thử lại của thao tác ấy.&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;uuid&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;PaymentTool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&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;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_keys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;charge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;step_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# One key per (task, step). Retries of the same step reuse it.
&lt;/span&gt;        &lt;span class="n"&gt;op&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;step_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;op&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_keys&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_keys&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid4&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/v1/payments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;headers&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;Idempotency-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;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_keys&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
            &lt;span class="n"&gt;json&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;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Để khóa tồn tại qua lần khởi động lại tiến trình, dùng khóa xác định từ ID tác vụ, ID bước và payload:&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;hashlib&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;step_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;task_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;step_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;|&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sha256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()[:&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Không tạo khóa từ timestamp hoặc giá trị ngẫu nhiên được sinh lại khi retry. Nếu tác nhân khởi động một tác vụ mới thực sự, &lt;code&gt;task_id&lt;/code&gt; mới sẽ tạo ra khóa mới — đúng với ý nghĩa nghiệp vụ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Máy chủ cần làm gì?
&lt;/h2&gt;

&lt;p&gt;Máy chủ không chỉ tra cứu khóa; nó phải xử lý cả tính nhất quán và cạnh tranh đồng thời.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Claim khóa trước khi làm việc&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Chèn khóa vào bảng có unique constraint trước khi thực hiện thao tác ghi.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Từ chối cùng khóa nhưng payload khác&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Nếu request hash khác, trả về &lt;code&gt;422&lt;/code&gt;. Không âm thầm trả response cũ vì điều đó che giấu lỗi client.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Xử lý request đang chạy&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Nếu request đầu tiên với cùng khóa chưa hoàn thành, trả &lt;code&gt;409&lt;/code&gt; để client back off thay vì cạnh tranh.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lưu kết quả hoàn tất&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Lưu status code và response body, sau đó trả lại đúng kết quả đã lưu cho các request sau.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;idempotency_records&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;key&lt;/span&gt;             &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;request_hash&lt;/span&gt;    &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;state&lt;/span&gt;           &lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="c1"&gt;-- in_progress | completed&lt;/span&gt;
  &lt;span class="n"&gt;response_status&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;response_body&lt;/span&gt;   &lt;span class="n"&gt;JSONB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;created_at&lt;/span&gt;      &lt;span class="n"&gt;TIMESTAMPTZ&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="n"&gt;expires_at&lt;/span&gt;      &lt;span class="n"&gt;TIMESTAMPTZ&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đặt TTL cho khóa. &lt;strong&gt;24 giờ&lt;/strong&gt; thường đủ cho hầu hết retry window thực tế và cũng là mặc định Stripe sử dụng. Giữ khóa vĩnh viễn chỉ làm bảng dữ liệu phình to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiểm thử: lần gọi thứ hai không được thay đổi gì
&lt;/h2&gt;

&lt;p&gt;Happy path không đủ để chứng minh idempotency hoạt động, vì hai giao dịch thành công đều có thể trả &lt;code&gt;200&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Thay vào đó, hãy kiểm thử dựa trên &lt;strong&gt;trạng thái&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Response body lần hai phải chứa cùng ID tài nguyên như lần đầu.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET&lt;/code&gt; danh sách tài nguyên sau đó chỉ trả về một bản ghi.&lt;/li&gt;
&lt;li&gt;Số dư, bộ đếm hoặc side effect chỉ thay đổi một lần.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3asu04d5vnuw8xol3rsh.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%2F3asu04d5vnuw8xol3rsh.png" alt="Kịch bản kiểm thử request lặp lại" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trong Apidog, tạo một kịch bản gồm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gửi &lt;code&gt;POST&lt;/code&gt; với &lt;code&gt;Idempotency-Key&lt;/code&gt; cố định.&lt;/li&gt;
&lt;li&gt;Gửi lại request hoàn toàn giống hệt.&lt;/li&gt;
&lt;li&gt;Lưu ID từ response đầu tiên và xác minh response thứ hai trả lại cùng ID.&lt;/li&gt;
&lt;li&gt;Gọi endpoint liệt kê tài nguyên và xác minh chỉ có một bản ghi.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lưu kịch bản này và chạy trong CI khi thay đổi payment flow. Cách làm này cũng phù hợp với &lt;a href="https://apidog.com/vi/blog/api-contract-testing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;kiểm thử hợp đồng API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Đừng bỏ qua hai trường hợp sau:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cùng khóa, payload khác:&lt;/strong&gt; phải nhận &lt;code&gt;422&lt;/code&gt;, không phải success âm thầm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request trùng lặp đồng thời:&lt;/strong&gt; gửi hai request cùng lúc và xác minh chỉ một request thực hiện thao tác. Kiểm thử tuần tự sẽ không phát hiện unique constraint bị thiếu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu payment API chưa tồn tại, hãy tạo mock có ngữ nghĩa idempotency ngay từ đầu, bao gồm &lt;code&gt;422&lt;/code&gt; khi payload không khớp. Điều này cho phép bạn luyện retry logic của tác nhân trước khi chạm vào production. Xem thêm lý do &lt;a href="https://apidog.com/vi/blog/ai-agents-mock-apis-not-production?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;tác nhân nên dùng mock API thay vì môi trường production&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Khi không thể thêm khóa bất biến
&lt;/h2&gt;

&lt;p&gt;Nếu API bên thứ ba không hỗ trợ idempotency, ưu tiên các phương án sau:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Thiết kế thao tác vốn đã bất biến&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Dùng &lt;code&gt;PUT /orders/{client_order_id}&lt;/code&gt; thay vì &lt;code&gt;POST /orders&lt;/code&gt; nếu bạn kiểm soát API. Client chọn resource ID, nên retry cùng request không tạo đơn hàng mới.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kiểm tra trước khi ghi&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Cho tác nhân tìm bản ghi có natural key tương ứng trước khi tạo. Cách này yếu hơn do vẫn có race condition, nhưng giảm rủi ro timeout-retry phổ biến.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Khử trùng lặp ở downstream&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Với event hoặc message, gắn message ID ổn định và yêu cầu consumer bỏ qua bản sao. Đây là thực hành chuẩn trong event-driven system; xem hướng dẫn &lt;a href="https://apidog.com/vi/blog/how-to-design-reliable-webhooks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;thiết kế webhook đáng tin cậy&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Yêu cầu phê duyệt của con người&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Với thao tác không thể đảo ngược và không thể làm bất biến, dùng approval gate. Đây là mô hình phù hợp khi chi phí của thao tác trùng lặp quá cao; xem thêm về &lt;a href="https://apidog.com/vi/blog/ai-agent-guardrails?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hàng rào bảo vệ cho tác nhân AI&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Theo dõi lần chạy nào đã tạo dữ liệu
&lt;/h2&gt;

&lt;p&gt;Idempotency ngăn bản sao nhưng không cho biết attempt nào đã tạo bản ghi. Vì vậy, hãy log &lt;code&gt;task_id&lt;/code&gt;, &lt;code&gt;step_id&lt;/code&gt;, idempotency key và kết quả của từng attempt.&lt;/p&gt;

&lt;p&gt;Nếu tác nhân chạy trong coding runtime, nền tảng cũng nên liên kết thao tác ghi với task và execution run tương ứng. Ví dụ, &lt;a href="https://sharkly.ai" rel="noopener noreferrer"&gt;Sharkly&lt;/a&gt; gắn từng lần chạy với Tác vụ nguồn, trạng thái thực thi và kết quả, giúp truy ngược thao tác lặp lại về một run cụ thể thay vì một retry ẩn danh.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist trước khi triển khai
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Mọi tool ghi dữ liệu mà tác nhân gọi đều yêu cầu &lt;code&gt;Idempotency-Key&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;[ ] Tool wrapper tạo khóa từ task và step, không phải từ từng retry.&lt;/li&gt;
&lt;li&gt;[ ] Máy chủ claim khóa trước khi thực hiện công việc.&lt;/li&gt;
&lt;li&gt;[ ] Cùng khóa nhưng payload khác trả về lỗi.&lt;/li&gt;
&lt;li&gt;[ ] Request trùng lặp đồng thời được xử lý bằng unique constraint ở database.&lt;/li&gt;
&lt;li&gt;[ ] Có kịch bản kiểm thử xác minh request thứ hai không tạo side effect.&lt;/li&gt;
&lt;li&gt;[ ] Kịch bản được chạy trong CI.&lt;/li&gt;
&lt;li&gt;[ ] Khóa có TTL và dữ liệu hết hạn được dọn dẹp.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Có cần khóa bất biến cho tool chỉ đọc không?
&lt;/h3&gt;

&lt;p&gt;Không. &lt;code&gt;GET&lt;/code&gt; đã an toàn và bất biến. Retry chỉ làm tăng độ trễ, không tạo side effect. Chỉ dùng khóa cho thao tác tạo, tính phí, gửi hoặc thay đổi trạng thái.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nên tạo khóa trong tác nhân hay tool wrapper?
&lt;/h3&gt;

&lt;p&gt;Trong tool wrapper, dựa trên ID tác vụ và ID bước. Không để mô hình tự tạo khóa: mô hình có thể tạo giá trị mới khi retry hoặc tạo va chạm giữa các tác vụ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Request lặp lại nên trả status code nào?
&lt;/h3&gt;

&lt;p&gt;Trả lại status code đã lưu từ request gốc. Nếu request đầu trả &lt;code&gt;201&lt;/code&gt;, request lặp lại cũng nên trả &lt;code&gt;201&lt;/code&gt; cùng response body. Có thể thêm header &lt;code&gt;Idempotent-Replay: true&lt;/code&gt; để hỗ trợ gỡ lỗi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nên giữ khóa bao lâu?
&lt;/h3&gt;

&lt;p&gt;24 giờ bao phủ gần như mọi retry window. Giữ lâu hơn hiếm khi hữu ích và làm tăng kích thước bảng không giới hạn. Retry sau TTL nên được coi là thao tác mới.&lt;/p&gt;

&lt;h3&gt;
  
  
  Idempotency có thay thế transaction không?
&lt;/h3&gt;

&lt;p&gt;Không. Idempotency ngăn request trùng lặp tạo side effect trùng lặp; transaction đảm bảo một request đơn lẻ là atomic. Bạn cần cả hai, và nên claim idempotency key trong cùng transaction với thao tác nghiệp vụ khi có thể.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiểm thử mà không có nhà cung cấp thanh toán thật như thế nào?
&lt;/h3&gt;

&lt;p&gt;Trỏ tác nhân tới mock triển khai &lt;code&gt;Idempotency-Key&lt;/code&gt;, bao gồm cả &lt;code&gt;422&lt;/code&gt; khi payload không khớp. Bạn có thể &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;tải Apidog&lt;/a&gt; để đặt mock và kịch bản kiểm thử retry trong cùng một dự án.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
