<?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>Forem: Sebastian Petrus</title>
    <description>The latest articles on Forem by Sebastian Petrus (@sebbasstian).</description>
    <link>https://forem.com/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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818120%2F250bf99a-8038-4501-b069-c6b622112b06.png</url>
      <title>Forem: Sebastian Petrus</title>
      <link>https://forem.com/sebbasstian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sebbasstian"/>
    <language>en</language>
    <item>
      <title>Cập Nhật APIDOG Tháng 4: Gỡ Lỗi AI Agent, Gỡ Lỗi A2A, Dễ Dàng Chuyển Đổi Postman</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Wed, 29 Apr 2026 08:49:23 +0000</pubDate>
      <link>https://forem.com/sebbasstian/cap-nhat-apidog-thang-4-go-loi-ai-agent-go-loi-a2a-de-dang-chuyen-doi-postman-3fop</link>
      <guid>https://forem.com/sebbasstian/cap-nhat-apidog-thang-4-go-loi-ai-agent-go-loi-a2a-de-dang-chuyen-doi-postman-3fop</guid>
      <description>&lt;p&gt;Bản phát hành tháng 4 tập trung vào một mục tiêu chính: giúp việc kiểm tra và gỡ lỗi quá trình phát triển AI Agent dễ thực hiện hơn trong các dự án thực tế.&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;Nếu bạn đang xây dựng agent, vấn đề khó không chỉ là câu trả lời cuối cùng. Phần cần kiểm tra thường nằm ở toàn bộ chuỗi xử lý trước đó:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent hiểu yêu cầu người dùng như thế nào?&lt;/li&gt;
&lt;li&gt;Agent đã gọi công cụ nào?&lt;/li&gt;
&lt;li&gt;Công cụ trả về dữ liệu gì?&lt;/li&gt;
&lt;li&gt;Lỗi đến từ prompt, cấu hình model, tham số tool hay logic nghiệp vụ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trong bản cập nhật này, Apidog bổ sung một số công cụ để xử lý các tình huống đó: AI Agent Debugger, A2A Debugger, nhập API Postman cho các đợt di chuyển lớn, trải nghiệm Ask AI tốt hơn trong tài liệu đã xuất bản và hỗ trợ nhà cung cấp mô hình tùy chỉnh.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐ Cập Nhật Mới
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔥 AI Agent Debugger: Kiểm Tra Toàn Bộ Quá Trình Hoạt Động Của Agent
&lt;/h2&gt;

&lt;p&gt;Apidog đã hỗ trợ gỡ lỗi trực quan cho các endpoint SSE trong một thời gian. Tính năng này hữu ích khi bạn cần kiểm tra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;phản hồi streaming từ model,&lt;/li&gt;
&lt;li&gt;cập nhật tiến độ,&lt;/li&gt;
&lt;li&gt;thông báo thời gian thực,&lt;/li&gt;
&lt;li&gt;các API dựa trên event.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tuy nhiên, gỡ lỗi agent cần nhiều hơn một trình xem stream.&lt;/p&gt;

&lt;p&gt;Một phản hồi cuối cùng chỉ cho bạn biết agent đã kết thúc ở đâu. Nó không cho biết agent đã đi qua những bước nào để tạo ra phản hồi đó.&lt;/p&gt;

&lt;p&gt;Trong một workflow agent thực tế, bạn thường cần kiểm tra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;các lượt hội thoại,&lt;/li&gt;
&lt;li&gt;các lần gọi model,&lt;/li&gt;
&lt;li&gt;các lần gọi công cụ MCP,&lt;/li&gt;
&lt;li&gt;quá trình chạy Skill tùy chỉnh,&lt;/li&gt;
&lt;li&gt;kết quả trả về từ tool,&lt;/li&gt;
&lt;li&gt;đầu ra cuối cùng.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI Agent Debugger được xây dựng cho mục đích này.&lt;/p&gt;

&lt;p&gt;Thay vì chỉ kiểm tra response cuối cùng, bạn có thể theo dõi đường dẫn thực thi của agent trong Apidog. Mỗi vòng hội thoại, model call, MCP tool call, Skill run và kết quả cuối cùng đều được ghi lại ở một nơi.&lt;/p&gt;

&lt;p&gt;Một quy trình kiểm tra thực tế có thể như sau:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chạy agent với input cần debug.&lt;/li&gt;
&lt;li&gt;Mở trace thực thi trong AI Agent Debugger.&lt;/li&gt;
&lt;li&gt;Kiểm tra từng bước agent đã thực hiện.&lt;/li&gt;
&lt;li&gt;Xác minh prompt có đủ ngữ cảnh hay không.&lt;/li&gt;
&lt;li&gt;Kiểm tra tool được chọn có đúng với ý định người dùng không.&lt;/li&gt;
&lt;li&gt;Xem dữ liệu tool trả về trước khi agent tạo câu trả lời cuối cùng.&lt;/li&gt;
&lt;li&gt;Khoanh vùng lỗi ở prompt, model config, tool params hoặc business logic.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Các câu hỏi bạn có thể trả lời nhanh hơn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt có cung cấp đủ ngữ cảnh cho model không?&lt;/li&gt;
&lt;li&gt;Agent có chọn đúng tool không?&lt;/li&gt;
&lt;li&gt;Công cụ MCP có trả về kết quả mong đợi không?&lt;/li&gt;
&lt;li&gt;Vấn đề đến từ cấu hình model, tham số tool hay logic nghiệp vụ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Với các hệ thống agent phức tạp, trace thực thi giúp nhóm phát triển nhìn rõ điều gì thực sự đã xảy ra, thay vì chỉ đoán dựa trên output cuối cùng.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 A2A Debugger: Kiểm Tra Giao Tiếp Giữa Các Agent
&lt;/h2&gt;

&lt;p&gt;Các hệ thống multi-agent đang xuất hiện nhiều hơn. Khi nhiều agent phối hợp với nhau, bạn cần kiểm tra luồng giao tiếp giữa chúng một cách đáng tin cậy.&lt;/p&gt;

&lt;p&gt;Apidog hiện hỗ trợ gỡ lỗi cho giao thức A2A của Google, tức Agent-to-Agent.&lt;/p&gt;

&lt;p&gt;Bạn có thể dùng A2A Debugger để:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gửi request A2A trực tiếp,&lt;/li&gt;
&lt;li&gt;kiểm tra request parameters,&lt;/li&gt;
&lt;li&gt;xem response,&lt;/li&gt;
&lt;li&gt;xác minh kết quả của tương tác giữa các agent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quy trình kiểm tra cơ bản:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chuẩn bị request A2A.&lt;/li&gt;
&lt;li&gt;Gửi request trong Apidog.&lt;/li&gt;
&lt;li&gt;Kiểm tra payload và tham số.&lt;/li&gt;
&lt;li&gt;Xem response từ agent nhận.&lt;/li&gt;
&lt;li&gt;Xác minh kết quả có đúng với nhiệm vụ được chuyển giao không.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Điểm khác nhau giữa hai công cụ gỡ lỗi mới:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Agent Debugger&lt;/strong&gt;: kiểm tra những gì xảy ra bên trong một agent khi nó thực hiện một tác vụ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A Debugger&lt;/strong&gt;: kiểm tra một agent có thể giao tiếp với agent khác hay không.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu bạn đang xây dựng hệ thống multi-agent, bạn sẽ thường cần cả hai: một công cụ để debug nội bộ từng agent, và một công cụ để debug giao tiếp giữa các agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 Nhập Dữ Liệu Postman Thông Qua Postman API
&lt;/h2&gt;

&lt;p&gt;Tính năng di chuyển từ Postman hiện có thêm lựa chọn phù hợp hơn cho các nhóm lớn.&lt;/p&gt;

&lt;p&gt;Trước đây, Apidog đã hỗ trợ nhập file Postman cục bộ. Bây giờ, bạn cũng có thể nhập:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workspaces,&lt;/li&gt;
&lt;li&gt;Collections,&lt;/li&gt;
&lt;li&gt;Environments,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;thông qua Postman API.&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.amazonaws.com%2Fuploads%2Farticles%2Fmwid60ncw5f2a04al02x.gif" 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.amazonaws.com%2Fuploads%2Farticles%2Fmwid60ncw5f2a04al02x.gif" alt="Apidog-02.gif" width="600" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cách tiếp cận này phù hợp với các đợt di chuyển hàng loạt khi tạo dự án mới trong Apidog.&lt;/p&gt;

&lt;p&gt;Về mặt thực tế, nó gần giống như di chuyển toàn bộ Postman Workspace vào Apidog. Nếu tài khoản Postman của bạn có nhiều Workspace, Apidog sẽ tạo các dự án tương ứng sau khi nhập.&lt;/p&gt;

&lt;p&gt;Khi nào nên dùng từng cách:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tình huống&lt;/th&gt;
&lt;th&gt;Cách nhập phù hợp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chỉ có một vài collection nhỏ&lt;/td&gt;
&lt;td&gt;Nhập file Postman cục bộ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Có nhiều workspace, collection và environment&lt;/td&gt;
&lt;td&gt;Nhập thông qua Postman API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cần giảm thao tác export/upload thủ công&lt;/td&gt;
&lt;td&gt;Nhập thông qua Postman API&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Lợi ích chính là giảm các bước xuất file, tải lên và dọn dẹp thủ công. Với các lần nhập nhỏ, file cục bộ vẫn hoạt động tốt. Với workspace lớn hơn, tuyến API sẽ ít tốn công hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  📄 Hỏi AI Trong Tài Liệu Đã Xuất Bản Giờ Đây Mở Ở Thanh Bên
&lt;/h2&gt;

&lt;p&gt;Tính năng Ask AI trong tài liệu đã xuất bản giờ hoạt động trong một thanh bên.&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.amazonaws.com%2Fuploads%2Farticles%2Fv62vgvv4f1t4vyq6year.gif" 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.amazonaws.com%2Fuploads%2Farticles%2Fv62vgvv4f1t4vyq6year.gif" alt="Apidog-01.gif" width="560" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Điều này giúp người đọc giữ nguyên tài liệu hiện tại trong khi đặt câu hỏi về nội dung trên trang.&lt;/p&gt;

&lt;p&gt;Một luồng sử dụng thực tế:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mở tài liệu API đã xuất bản.&lt;/li&gt;
&lt;li&gt;Đọc endpoint hoặc phần mô tả đang cần tìm hiểu.&lt;/li&gt;
&lt;li&gt;Mở Ask AI ở thanh bên.&lt;/li&gt;
&lt;li&gt;Đặt câu hỏi về tài liệu hiện tại.&lt;/li&gt;
&lt;li&gt;Tiếp tục đọc mà không mất vị trí trên trang.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thay đổi này đặc biệt hữu ích với tài liệu dài, nơi câu trả lời có thể đã nằm trong trang nhưng không dễ tìm nhanh.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Các Nhà Cung Cấp Mô Hình AI Tùy Chỉnh
&lt;/h2&gt;

&lt;p&gt;Các nhóm hiện có thể kết nối nhà cung cấp model tùy chỉnh bằng Base URL tùy chỉnh.&lt;/p&gt;

&lt;p&gt;Điều này hữu ích nếu công ty bạn đang dùng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dịch vụ model tự lưu trữ,&lt;/li&gt;
&lt;li&gt;model gateway nội bộ,&lt;/li&gt;
&lt;li&gt;hạ tầng AI riêng của tổ chức.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thay vì chuyển đổi giữa nhiều công cụ khi cần debug workflow liên quan đến AI, bạn có thể đưa thiết lập model đó vào Apidog và kiểm tra trong cùng một môi trường làm việc.&lt;/p&gt;

&lt;h2&gt;
  
  
  🐞 Sửa Lỗi và Các Cải Thiện Nhỏ Hơn
&lt;/h2&gt;

&lt;p&gt;Bản phát hành tháng này cũng bao gồm một số bản sửa lỗi và cập nhật tiện ích:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đã khắc phục sự cố khi tính năng hợp nhất thông minh OpenAPI không giữ lại các ví dụ phản hồi endpoint.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi hợp nhất từ một nhánh con vào một nhánh chính được bảo vệ có thể bao gồm các endpoint không được chọn.&lt;/li&gt;
&lt;li&gt;Đã khắc phục hiển thị dropdown không chính xác khi tạo các phiên bản endpoint từ các nhánh.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi TestData và TestCases không hoạt động khi chạy thử nghiệm thông qua CLI.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi xuất OpenAPI bao gồm các thành phần response từ các module không liên quan.&lt;/li&gt;
&lt;li&gt;Đã khắc phục định dạng xuất Markdown cho JSON có nhận xét.&lt;/li&gt;
&lt;li&gt;Đã khắc phục lỗi xuất Word do &lt;code&gt;crypto is not defined&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi nhập Knife4j với Basic Auth được bật không hiển thị các trường tên người dùng và mật khẩu.&lt;/li&gt;
&lt;li&gt;Đã khắc phục lỗi lọc endpoint khi các tag là số.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi &lt;code&gt;apidog endpoint list --branch&lt;/code&gt; không trả về dữ liệu cho nhánh được chỉ định.&lt;/li&gt;
&lt;li&gt;Đã khắc phục một số vấn đề về tham số, lọc và thông báo lỗi của công cụ MCP.&lt;/li&gt;
&lt;li&gt;Đã khắc phục sự cố khi mã được tạo thiếu tùy chọn cấu hình &lt;code&gt;typescriptThreePlus&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🌟 Ý Nghĩa Của Bản Cập Nhật Này
&lt;/h2&gt;

&lt;p&gt;Bản phát hành tháng 4 tập trung vào các nhu cầu thực tế của nhóm đang xây dựng sản phẩm AI Agent.&lt;/p&gt;

&lt;p&gt;Tóm tắt cách dùng từng tính năng:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tính năng&lt;/th&gt;
&lt;th&gt;Dùng khi nào&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI Agent Debugger&lt;/td&gt;
&lt;td&gt;Cần xem toàn bộ quá trình thực thi bên trong một agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A2A Debugger&lt;/td&gt;
&lt;td&gt;Cần kiểm tra giao tiếp giữa các agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nhập Postman qua API&lt;/td&gt;
&lt;td&gt;Cần di chuyển nhiều workspace, collection hoặc environment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ask AI trong thanh bên&lt;/td&gt;
&lt;td&gt;Cần đọc tài liệu và hỏi AI mà không rời trang&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nhà cung cấp model tùy chỉnh&lt;/td&gt;
&lt;td&gt;Cần dùng model tự lưu trữ hoặc gateway nội bộ trong Apidog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Các cập nhật này không chỉ phục vụ demo. Chúng giải quyết những vấn đề thường xuất hiện khi agent workflow chuyển từ thử nghiệm sang triển khai thực tế: trace khó đọc, tool call khó kiểm tra, giao tiếp giữa agent khó xác minh và di chuyển dữ liệu API tốn thời gian.&lt;/p&gt;

&lt;h2&gt;
  
  
  💬 Tham Gia Cuộc Trò Chuyện
&lt;/h2&gt;

&lt;p&gt;Kết nối với các kỹ sư API khác và nhóm Apidog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tham gia cộng đồng &lt;a href="https://discord.com/invite/ZBxrzyXfbJ" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; của chúng tôi để thảo luận và hỗ trợ theo thời gian thực.&lt;/li&gt;
&lt;li&gt;Tham gia cộng đồng &lt;a href="https://join.slack.com/t/apidogcommunity/shared_invite/zt-2neie4nh2-4_zhufuNBmCq4EtI6fZUwA" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; của chúng tôi để trao đổi kỹ thuật.&lt;/li&gt;
&lt;li&gt;Theo dõi chúng tôi trên &lt;a href="https://x.com/ApidogHQ" rel="noopener noreferrer"&gt;X (Twitter)&lt;/a&gt; để nhận các cập nhật mới nhất.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tái bút: Để biết đầy đủ chi tiết về tất cả các cập nhật, hãy xem &lt;a href="https://apidog.canny.io/changelog/" rel="noopener noreferrer"&gt;Apidog Changelog&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Trân trọng,&lt;br&gt;&lt;br&gt;
Đội ngũ Apidog&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Giá GitHub Copilot: Những Điều Đội API Cần Biết</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Wed, 29 Apr 2026 07:10:19 +0000</pubDate>
      <link>https://forem.com/sebbasstian/gia-github-copilot-nhung-dieu-doi-api-can-biet-3c2l</link>
      <guid>https://forem.com/sebbasstian/gia-github-copilot-nhung-dieu-doi-api-can-biet-3c2l</guid>
      <description>&lt;p&gt;Mô hình thanh toán của GitHub Copilot đã thay đổi nhiều lần trong năm qua. Từ tháng này, tính năng Copilot code review trên pull request bắt đầu tiêu thụ GitHub Actions minutes từ tài khoản thanh toán sở hữu repository. Với các nhóm API, điều này có nghĩa là bạn cần theo dõi đồng thời ba chỉ số: Copilot seats, premium requests và Actions minutes.&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;Bài viết này tập trung vào cách ước tính chi phí, cấu hình workflow để giảm lãng phí và tổ chức lại quy trình API để các bước spec, contract test và AI review không nằm rải rác trên nhiều dashboard thanh toán.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Copilot hiện có ba nhóm chi phí chính:

&lt;ul&gt;
&lt;li&gt;License theo seat&lt;/li&gt;
&lt;li&gt;Premium requests&lt;/li&gt;
&lt;li&gt;GitHub Actions minutes cho Copilot code review&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Copilot code review trên PR chạy như một GitHub Action ẩn và tiêu thụ Actions minutes của tổ chức.&lt;/li&gt;

&lt;li&gt;Repository API thường tốn nhiều hơn vì PR lớn hơn: &lt;code&gt;openapi.yaml&lt;/code&gt;, generated client, handler và contract test.&lt;/li&gt;

&lt;li&gt;Premium requests áp dụng cho các tác vụ agentic như Workspace, agent mode và Copilot Spaces.&lt;/li&gt;

&lt;li&gt;Hãy đặt spending limit trước chu kỳ thanh toán tiếp theo.&lt;/li&gt;

&lt;li&gt;Với repository API đang hoạt động, nên dự trù khoảng &lt;strong&gt;400–800 Actions minutes/tháng/repository&lt;/strong&gt; cho Copilot review, sau đó đo lại sau 30 ngày.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Ba chỉ số Copilot cần theo dõi
&lt;/h2&gt;

&lt;p&gt;Trước đây Copilot chủ yếu là chi phí theo seat. Hiện tại bạn cần tách thành ba phần.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chỉ số 1: License theo seat
&lt;/h2&gt;

&lt;p&gt;Đây là khoản phí cố định:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gói&lt;/th&gt;
&lt;th&gt;Giá&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Business&lt;/td&gt;
&lt;td&gt;$10/user/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Enterprise&lt;/td&gt;
&lt;td&gt;$19/user/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Khoản này bao gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat&lt;/li&gt;
&lt;li&gt;Inline autocomplete&lt;/li&gt;
&lt;li&gt;Multi-line suggestions&lt;/li&gt;
&lt;li&gt;IDE integration&lt;/li&gt;
&lt;li&gt;Truy cập nhóm model tiêu chuẩn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seat là phần dễ dự báo nhất, nhưng cũng dễ bị cấp phát thừa nhất.&lt;/p&gt;

&lt;p&gt;Việc nên làm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Xuất danh sách người dùng Copilot mỗi quý.&lt;/li&gt;
&lt;li&gt;Kiểm tra người dùng không hoạt động.&lt;/li&gt;
&lt;li&gt;Thu hồi seat khỏi tài khoản không còn dùng.&lt;/li&gt;
&lt;li&gt;So sánh số seat với số developer thực sự viết code hằng tuần.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Công thức đơn giản:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;seat_cost = active_users × seat_price
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Copilot Business:   active_users × $10
Copilot Enterprise: active_users × $19
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Chỉ số 2: Premium requests
&lt;/h2&gt;

&lt;p&gt;Premium request là đơn vị GitHub dùng cho các tính năng tốn tài nguyên hơn.&lt;/p&gt;

&lt;p&gt;Các tác vụ thường bị tính premium request gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent mode&lt;/li&gt;
&lt;li&gt;Workspace&lt;/li&gt;
&lt;li&gt;Copilot Spaces&lt;/li&gt;
&lt;li&gt;Chọn model ngoài mặc định&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bảng tham chiếu hiện tại:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tính năng&lt;/th&gt;
&lt;th&gt;Chi phí theo premium request&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chat với model mặc định&lt;/td&gt;
&lt;td&gt;Miễn phí cho gói trả phí&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inline autocomplete&lt;/td&gt;
&lt;td&gt;Miễn phí cho gói trả phí&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent mode với model mặc định&lt;/td&gt;
&lt;td&gt;1 request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace với model mặc định&lt;/td&gt;
&lt;td&gt;1 request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chọn Claude Sonnet 4.5&lt;/td&gt;
&lt;td&gt;Hệ số 1.5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chọn GPT-5.5&lt;/td&gt;
&lt;td&gt;Hệ số 2x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chọn GPT-5.5 Pro&lt;/td&gt;
&lt;td&gt;Hệ số 6x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Truy vấn Copilot Spaces&lt;/td&gt;
&lt;td&gt;1 request/truy vấn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hạn mức bao gồm:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gói&lt;/th&gt;
&lt;th&gt;Premium requests bao gồm&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Business&lt;/td&gt;
&lt;td&gt;300 requests/seat/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot Enterprise&lt;/td&gt;
&lt;td&gt;1.000 requests/seat/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Phần vượt mức hiện được tính:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$0.04 / premium request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Công thức ước tính:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;premium_overage = max(0, requests_used - included_requests) × $0.04
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với nhóm API, các prompt dễ tạo premium usage cao thường là:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tạo lại OpenAPI client từ spec mới
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Viết contract test cho endpoint này
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Refactor handler và cập nhật test tương ứng
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Một prompt duy nhất có thể tạo ra nhiều bước nội bộ, nên một yêu cầu của người dùng có thể dẫn đến nhiều premium requests.&lt;/p&gt;




&lt;h2&gt;
  
  
  Chỉ số 3: GitHub Actions minutes cho Copilot code review
&lt;/h2&gt;

&lt;p&gt;Đây là thay đổi mới dễ gây bất ngờ nhất.&lt;/p&gt;

&lt;p&gt;Khi Copilot tự động review một pull request, quá trình review chạy trên hạ tầng GitHub Actions. Vì vậy, thời gian chạy của review bị trừ vào Actions minutes của tổ chức.&lt;/p&gt;

&lt;p&gt;Cần lưu ý:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Số phút này dùng chung với quota GitHub Actions hiện có.&lt;/li&gt;
&lt;li&gt;Đây không phải quota riêng cho Copilot.&lt;/li&gt;
&lt;li&gt;Repository private tiêu thụ Actions minutes.&lt;/li&gt;
&lt;li&gt;Repository public thường không làm phát sinh chi phí Actions minutes tương tự.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hạn mức tham chiếu:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gói GitHub&lt;/th&gt;
&lt;th&gt;Actions minutes Linux&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Team&lt;/td&gt;
&lt;td&gt;3.000 minutes/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;50.000 minutes/month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Một Copilot review trên PR API thường tiêu thụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2–6 minutes/review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với PR lớn, nhiều file hoặc cần nhiều ngữ cảnh repository hơn, con số có thể lên đến:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~15 minutes/review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Công thức ước tính:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review_minutes = prs_per_month × average_review_minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 PRs/month × 4 minutes = 200 Actions minutes/month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu bạn có ba repository API tương tự:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;200 × 3 = 600 Actions minutes/month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Vì sao repository API thường tốn nhiều hơn?
&lt;/h2&gt;

&lt;p&gt;Repository API thường tiêu thụ nhiều Copilot và Actions hơn repository frontend nhỏ vì ba lý do.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Pull request lớn hơn
&lt;/h3&gt;

&lt;p&gt;Một thay đổi API thường đụng đến nhiều loại file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;openapi.yaml
generated clients
server handlers
contract tests
integration tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copilot review phải đọc diff lớn hơn, nên thời gian chạy lâu hơn.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Generated code làm tăng kích thước diff
&lt;/h3&gt;

&lt;p&gt;Nhiều nhóm vẫn commit generated clients vào repository.&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 plaintext"&gt;&lt;code&gt;clients/typescript/**
clients/python/**
clients/java/**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu PR cập nhật spec và regenerate toàn bộ client, Copilot review sẽ đọc cả phần generated diff đó, dù giá trị review ở phần này thường thấp.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Nhiều scanner cùng chạy trên một PR
&lt;/h3&gt;

&lt;p&gt;Một PR có thể đồng thời kích hoạt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot review&lt;/li&gt;
&lt;li&gt;CodeQL&lt;/li&gt;
&lt;li&gt;Snyk&lt;/li&gt;
&lt;li&gt;Custom security scanner&lt;/li&gt;
&lt;li&gt;Contract test&lt;/li&gt;
&lt;li&gt;Integration test&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Copilot review là phần mới được thêm vào bill, nhưng nó chạy cùng nhóm Actions minutes với các bước còn lại.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Cách ước tính chi phí Copilot hằng tháng
&lt;/h2&gt;

&lt;p&gt;Hãy tính theo ba lớp: seat, premium request và Actions minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 1: Tính seat cost
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;seat_cost = active_users × seat_price
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ví dụ với 10 developer dùng Copilot Enterprise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 × $19 = $190/month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Bước 2: Tính premium request overage
&lt;/h2&gt;

&lt;p&gt;Ước lượng usage theo nhóm người dùng:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kiểu người dùng&lt;/th&gt;
&lt;th&gt;Premium requests/tháng ước tính&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chủ yếu chat và autocomplete&lt;/td&gt;
&lt;td&gt;~150&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dùng Workspace/agent mode thường xuyên&lt;/td&gt;
&lt;td&gt;~600–800&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Với Copilot Business:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;included_requests = seats × 300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với Copilot Enterprise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;included_requests = seats × 1.000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Công thức:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;premium_overage = max(0, requests_used - included_requests) × $0.04
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ví dụ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requests_used = 4.000
included_requests = 3.000
overage = (4.000 - 3.000) × $0.04
        = $40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Việc nên làm ngay:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đặt spending limit ở cấp organization.&lt;/li&gt;
&lt;li&gt;Không để mặc định không giới hạn.&lt;/li&gt;
&lt;li&gt;Theo dõi nhóm dùng agent mode nhiều nhất.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Bước 3: Tính Actions minutes cho Copilot review
&lt;/h2&gt;

&lt;p&gt;Dùng mức trung bình 4 phút cho mỗi PR API cỡ vừa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review_minutes = prs_per_month × 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu vượt quota Actions còn lại:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review_overage = max(0, review_minutes - actions_quota_remaining) × $0.008
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Áp dụng cho Linux private repositories theo mức được nêu trong bài gốc.&lt;/p&gt;

&lt;p&gt;Ví dụ nhóm 10 developer, 200 PRs/tháng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review_minutes = 200 × 4
               = 800 minutes/month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu vẫn nằm trong quota Enterprise thì chi phí review phát sinh có thể là:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tổng ước tính:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;seat_cost       = $190
premium_overage = $40
review_overage  = $0
total           = ~$230/month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Với nhóm nhỏ hơn trên Copilot Business và GitHub Team, quota thấp hơn nên nguy cơ vượt mức sẽ cao hơn.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Tối ưu workflow CI để giảm Actions minutes
&lt;/h2&gt;

&lt;p&gt;Ba thay đổi dưới đây thường giúp giảm chi phí ngay mà không làm mất giá trị review.&lt;/p&gt;

&lt;h2&gt;
  
  
  4.1. Bỏ qua Copilot review cho bot PRs
&lt;/h2&gt;

&lt;p&gt;Các PR từ Dependabot hoặc Renovate thường là update dependency tự động. Không phải lúc nào cũng cần Copilot review.&lt;/p&gt;

&lt;p&gt;Ví dụ workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;synchronize&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;copilot-review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github.actor != 'dependabot[bot]' &amp;amp;&amp;amp; github.actor != 'renovate[bot]'&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/copilot-review@v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nếu tổ chức có bot nội bộ, thêm vào điều kiện:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="s"&gt;github.actor != 'dependabot[bot]' &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;github.actor != 'renovate[bot]' &amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="s"&gt;github.actor != 'internal-release-bot'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4.2. Không review generated clients
&lt;/h2&gt;

&lt;p&gt;Nếu repository commit generated clients, hãy loại chúng khỏi trigger review.&lt;/p&gt;

&lt;p&gt;Ví dụ cấu trúc repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apis/openapi.yaml
internal/handlers/**
tests/contract/**
clients/typescript/**
clients/python/**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bạn thường muốn review:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apis/**
internal/**
tests/**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Và bỏ qua:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clients/**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4.3. Giới hạn Copilot review bằng path filter
&lt;/h2&gt;

&lt;p&gt;Chỉ chạy review khi PR thay đổi các file quan trọng với API behavior.&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 yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;apis/**/*.yaml'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cmd/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;internal/**'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tests/**'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cách này giúp Copilot tập trung vào:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API spec&lt;/li&gt;
&lt;li&gt;Handler logic&lt;/li&gt;
&lt;li&gt;Test coverage&lt;/li&gt;
&lt;li&gt;Contract behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thay vì tốn phút cho generated code hoặc file không liên quan.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Bốn kiểm soát governance nên bật
&lt;/h2&gt;

&lt;p&gt;Những thiết lập này thường mất ít thời gian nhưng giúp tránh bill bất ngờ.&lt;/p&gt;

&lt;h2&gt;
  
  
  5.1. Đặt spending limit ở cấp organization
&lt;/h2&gt;

&lt;p&gt;Không nên để mặc định không giới hạn.&lt;/p&gt;

&lt;p&gt;Quy trình đề xuất:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Xem chi phí Copilot và Actions tháng trước.&lt;/li&gt;
&lt;li&gt;Chọn mức ngân sách chấp nhận được.&lt;/li&gt;
&lt;li&gt;Đặt limit thấp hơn khoảng 20%.&lt;/li&gt;
&lt;li&gt;Kiểm tra lại sau 30 ngày.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  5.2. Bật cảnh báo premium request
&lt;/h2&gt;

&lt;p&gt;GitHub gửi cảnh báo ở các mốc:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50%
75%
90%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Không nên chỉ để email trong inbox cá nhân.&lt;/p&gt;

&lt;p&gt;Nên route cảnh báo vào:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Microsoft Teams&lt;/li&gt;
&lt;li&gt;Incident tool&lt;/li&gt;
&lt;li&gt;FinOps channel&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5.3. Dùng label để kích hoạt review có chọn lọc
&lt;/h2&gt;

&lt;p&gt;Thay vì chạy Copilot review trên mọi PR, có thể chỉ chạy khi PR có label:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;review-please
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mô hình này phù hợp với:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR thay đổi API behavior&lt;/li&gt;
&lt;li&gt;PR có logic phức tạp&lt;/li&gt;
&lt;li&gt;PR đụng đến security-sensitive handler&lt;/li&gt;
&lt;li&gt;PR có migration hoặc breaking change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cách này có thể giảm đáng kể số lượt review không cần thiết.&lt;/p&gt;




&lt;h2&gt;
  
  
  5.4. Rollout theo team
&lt;/h2&gt;

&lt;p&gt;Không nên bật toàn bộ tính năng Copilot Enterprise cho cả organization cùng lúc.&lt;/p&gt;

&lt;p&gt;Cách an toàn hơn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chọn một team API nhỏ.&lt;/li&gt;
&lt;li&gt;Bật tính năng mới.&lt;/li&gt;
&lt;li&gt;Theo dõi 30 ngày.&lt;/li&gt;
&lt;li&gt;Đo premium requests và Actions minutes.&lt;/li&gt;
&lt;li&gt;Mở rộng nếu chi phí và chất lượng review hợp lý.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  6. Đặt Apidog vào workflow API như thế nào?
&lt;/h2&gt;

&lt;p&gt;Apidog không thay thế Copilot. Vai trò phù hợp hơn là giữ spec, mock và contract test trong cùng một workflow để Copilot chỉ review những PR đã vượt qua kiểm tra rẻ hơn.&lt;/p&gt;

&lt;p&gt;Một workflow thực tế:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developer cập nhật API spec.&lt;/li&gt;
&lt;li&gt;Request examples và collection được lưu cùng repository.&lt;/li&gt;
&lt;li&gt;Contract test chạy với Apidog mock server.&lt;/li&gt;
&lt;li&gt;CI chạy &lt;code&gt;apidog-cli&lt;/code&gt; để validate contract.&lt;/li&gt;
&lt;li&gt;Chỉ khi contract validation pass, Copilot review mới chạy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Luồng đề xuất:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenAPI spec change
        ↓
Apidog mock + contract validation
        ↓
apidog-cli in CI
        ↓
Copilot code review
        ↓
Merge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lý do nên đặt contract validation trước Copilot review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contract test thường nhanh hơn.&lt;/li&gt;
&lt;li&gt;Lỗi spec nên fail sớm.&lt;/li&gt;
&lt;li&gt;Copilot review là bước tốn Actions minutes hơn.&lt;/li&gt;
&lt;li&gt;AI review nên tập trung vào handler logic và test coverage, không phải lỗi contract cơ bản.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ví dụ logic CI ở mức khái niệm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;contract-test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run API contract validation&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apidog-cli validate&lt;/span&gt;

  &lt;span class="na"&gt;copilot-review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;needs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;contract-test&lt;/span&gt;
    &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;success()&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github/copilot-review@v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mục tiêu là fail nhanh ở bước rẻ hơn, rồi mới dùng Copilot review cho phần đáng review.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Theo dõi gì trong chu kỳ billing tiếp theo?
&lt;/h2&gt;

&lt;p&gt;Nên kiểm tra theo ba giai đoạn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ngày 1–7
&lt;/h2&gt;

&lt;p&gt;Premium request usage thường vẫn thấp.&lt;/p&gt;

&lt;p&gt;Việc cần làm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ghi baseline usage.&lt;/li&gt;
&lt;li&gt;Kiểm tra số seat active.&lt;/li&gt;
&lt;li&gt;Xác nhận spending limit đã bật.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ngày 14–21
&lt;/h2&gt;

&lt;p&gt;Người dùng nặng bắt đầu vượt hạn mức included requests.&lt;/p&gt;

&lt;p&gt;Việc cần làm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kiểm tra ai dùng agent mode nhiều.&lt;/li&gt;
&lt;li&gt;Xem premium request overage.&lt;/li&gt;
&lt;li&gt;Điều chỉnh model hoặc workflow nếu cần.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ngày 28–30
&lt;/h2&gt;

&lt;p&gt;Actions minutes từ Copilot review bắt đầu rõ hơn trên bill.&lt;/p&gt;

&lt;p&gt;Việc cần làm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;So sánh với tháng trước.&lt;/li&gt;
&lt;li&gt;Tính minutes/PR.&lt;/li&gt;
&lt;li&gt;Lọc bot PRs nếu chưa làm.&lt;/li&gt;
&lt;li&gt;Loại generated clients khỏi review.&lt;/li&gt;
&lt;li&gt;Tắt review ở repository không cần thiết.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Các lỗi phổ biến
&lt;/h2&gt;

&lt;p&gt;Sau khi kiểm toán nhiều nhóm API, các lỗi lặp lại thường là:&lt;/p&gt;

&lt;h2&gt;
  
  
  8.1. Không đặt spending limit
&lt;/h2&gt;

&lt;p&gt;Một vòng lặp agent có thể chạy lâu hơn dự kiến.&lt;/p&gt;

&lt;p&gt;Luôn đặt limit.&lt;/p&gt;




&lt;h2&gt;
  
  
  8.2. Bật review trên mọi repository
&lt;/h2&gt;

&lt;p&gt;Không phải repository nào cũng cần Copilot review.&lt;/p&gt;

&lt;p&gt;Nên phân loại:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Loại repository&lt;/th&gt;
&lt;th&gt;Có nên bật review?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core API&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public SDK generated&lt;/td&gt;
&lt;td&gt;Tùy trường hợp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docs-only repo&lt;/td&gt;
&lt;td&gt;Thường không&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox/prototype&lt;/td&gt;
&lt;td&gt;Thường không&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal tooling nhỏ&lt;/td&gt;
&lt;td&gt;Tùy mức độ rủi ro&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  8.3. Review generated clients
&lt;/h2&gt;

&lt;p&gt;Generated code thường tạo diff lớn nhưng giá trị review thấp.&lt;/p&gt;

&lt;p&gt;Hãy lọc bằng path.&lt;/p&gt;




&lt;h2&gt;
  
  
  8.4. Review PR của bot
&lt;/h2&gt;

&lt;p&gt;Dependabot, Renovate và bot update nội bộ có thể tạo nhiều PR nhỏ.&lt;/p&gt;

&lt;p&gt;Hãy loại khỏi Copilot review mặc định.&lt;/p&gt;




&lt;h2&gt;
  
  
  8.5. Không có baseline
&lt;/h2&gt;

&lt;p&gt;Nếu không có số liệu trước khi thay đổi workflow, bạn không biết mình có tiết kiệm được chi phí hay không.&lt;/p&gt;

&lt;p&gt;Nên tải CSV billing của GitHub hằng tháng và lưu lại:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;billing/YYYY-MM.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Theo dõi tối thiểu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Copilot seats
Premium requests
Actions minutes
Actions overage
PR count
Average review minutes per PR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;h2&gt;
  
  
  Giá seat vẫn là $10/user?
&lt;/h2&gt;

&lt;p&gt;Copilot Business là $10/user/month. Copilot Enterprise là $19/user/month. Copilot Pro cho cá nhân là $10/month. Gói seat cũng quyết định hạn mức premium requests được bao gồm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inline autocomplete có bị tính phí không?
&lt;/h2&gt;

&lt;p&gt;Không. Chat với model mặc định và inline autocomplete không bị tính phí premium request trên các gói trả phí. Premium requests áp dụng cho các tính năng tốn tài nguyên hơn và lựa chọn model ngoài mặc định.&lt;/p&gt;

&lt;h2&gt;
  
  
  Điều gì xảy ra khi hết premium request?
&lt;/h2&gt;

&lt;p&gt;Theo mặc định, request có thể bắt đầu thất bại do vượt hạn mức. Bạn có thể đặt spending limit để cho phép overage ở mức $0.04/request cho đến giới hạn đã cấu hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Actions minutes cho Copilot review có được thanh toán riêng không?
&lt;/h2&gt;

&lt;p&gt;Không. Chúng dùng cùng pool GitHub Actions minutes với CI/CD còn lại. Vì vậy, cần theo dõi tổng Actions usage và điều chỉnh workflow trigger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Có thể tắt hoàn toàn Copilot code review không?
&lt;/h2&gt;

&lt;p&gt;Có. Organization admin có thể kiểm soát repository nào được bật Copilot review thông qua policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copilot review có hoạt động với private API spec không?
&lt;/h2&gt;

&lt;p&gt;Có. Với private repository, review tiêu thụ Actions minutes. Copilot đọc spec, handler và test như các file source khác.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copilot review có dùng premium requests không?
&lt;/h2&gt;

&lt;p&gt;Theo nội dung hiện tại, Copilot review tiêu thụ Actions minutes. Nó không được tính riêng như premium request. Tuy nhiên, đây là phần nên tiếp tục theo dõi trong các changelog của GitHub.&lt;/p&gt;




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

&lt;p&gt;Nếu bạn chỉ có 30 phút, hãy làm theo thứ tự này:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Đặt organization spending limit.&lt;/li&gt;
&lt;li&gt;Xuất danh sách Copilot seats và thu hồi user không hoạt động.&lt;/li&gt;
&lt;li&gt;Lọc Dependabot/Renovate khỏi Copilot review.&lt;/li&gt;
&lt;li&gt;Thêm &lt;code&gt;paths&lt;/code&gt; filter để bỏ qua generated clients.&lt;/li&gt;
&lt;li&gt;Đặt contract validation trước Copilot review.&lt;/li&gt;
&lt;li&gt;Tải CSV billing cuối tháng.&lt;/li&gt;
&lt;li&gt;Tính &lt;code&gt;average_review_minutes_per_pr&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Điều chỉnh lại sau 30 ngày.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Với nhóm API, mục tiêu không phải là tắt AI review. Mục tiêu là để AI review chạy đúng nơi: sau khi contract test đã pass, trên các file có giá trị review cao, và trong giới hạn chi phí mà nhóm kiểm soát được.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách sử dụng API Zuplo</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Mon, 27 Apr 2026 08:44:57 +0000</pubDate>
      <link>https://forem.com/sebbasstian/cach-su-dung-api-zuplo-1h82</link>
      <guid>https://forem.com/sebbasstian/cach-su-dung-api-zuplo-1h82</guid>
      <description>&lt;p&gt;Nếu bạn đã tìm hiểu về Zuplo và muốn triển khai một sản phẩm thực tế, đây là hướng dẫn từng bước tập trung vào triển khai: tạo dự án, cấu hình route, thêm xác thực API key, limit rate, viết chính sách TypeScript tùy chỉnh, deploy ra edge, và kiểm thử toàn bộ với Apidog.&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;Đến cuối hướng dẫn, bạn sẽ có một API gateway thực tế trước backend, có xác thực, giới hạn tốc độ, cổng thông tin dev tự động, CI-friendly Git workflow. Thực hiện tất cả trong khoảng 30 phút.&lt;/p&gt;

&lt;p&gt;Nếu bạn chưa chắc về Zuplo, hãy đọc bài gốc: &lt;a href="http://apidog.com/blog/what-is-zuplo-api-gateway?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Zuplo API gateway là gì&lt;/a&gt;. Các trường hợp chi tiết khác xem tại &lt;a href="https://zuplo.com/docs" rel="noopener noreferrer"&gt;tài liệu Zuplo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tóm tắt (TL;DR)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Đăng ký tại &lt;a href="https://portal.zuplo.com" rel="noopener noreferrer"&gt;portal.zuplo.com&lt;/a&gt; hoặc tạo local project với &lt;code&gt;npm create zuplo&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Định nghĩa route trong &lt;code&gt;config/routes.oas.json&lt;/code&gt;, dùng URL Forward Handler để proxy đến backend.&lt;/li&gt;
&lt;li&gt;Thêm policies (API key, limit rate, schema validation) trong file route hoặc Route Designer.&lt;/li&gt;
&lt;li&gt;Code logic custom bằng TypeScript ở &lt;code&gt;modules/&lt;/code&gt;; runtime cung cấp kiểu cho request, context, env.&lt;/li&gt;
&lt;li&gt;Git push lên nhánh liên kết để deploy preview; merge để production rollout trên hơn 300 PoP.&lt;/li&gt;
&lt;li&gt;Kiểm thử routes bằ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; trước production.&lt;/li&gt;
&lt;li&gt;Miễn phí 100K requests/tháng; Builder $25/tháng.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Điều kiện tiên quyết
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;Tài khoản Zuplo&lt;/li&gt;
&lt;li&gt;Một backend API (hoặc dùng &lt;code&gt;https://echo.zuplo.io&lt;/code&gt; để test)&lt;/li&gt;
&lt;li&gt;Node.js 18+ nếu dùng CLI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu phát triển local, dùng VS Code &amp;amp; extension TypeScript là tiện nhất, có thể kết hợp &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;tiện ích mở rộng Apidog VS Code&lt;/a&gt; để gửi request trực tiếp từ editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 1: Tạo dự án Zuplo
&lt;/h2&gt;

&lt;p&gt;Có hai cách: qua web portal hoặc CLI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tùy chọn A: Bắt đầu từ portal
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Đăng nhập &lt;a href="https://portal.zuplo.com" rel="noopener noreferrer"&gt;portal.zuplo.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Chọn "New Project", đặt tên (ví dụ: &lt;code&gt;acme-gateway&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Chọn "Empty Project" để bắt đầu trống.&lt;/li&gt;
&lt;li&gt;Tab Code sẽ hiển thị cây file dự án.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr81khlfl02v9c67utmp.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.amazonaws.com%2Fuploads%2Farticles%2Fdr81khlfl02v9c67utmp.png" alt="init tree" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Portal sẽ liên kết project với kho Git (GitHub, GitLab, Bitbucket, Azure DevOps). Có thể đổi kho trong Settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tùy chọn B: Bắt đầu từ CLI
&lt;/h3&gt;

&lt;p&gt;Tạo local project để thao tác trên IDE, push/pull Git từ đầu.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create zuplo@latest &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; acme-gateway
&lt;span class="nb"&gt;cd &lt;/span&gt;acme-gateway
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dev server chạy trên port 9000, mở Route Designer local tại &lt;code&gt;http://localhost:9100&lt;/code&gt;. Mọi thay đổi tự reload.&lt;/p&gt;

&lt;p&gt;Liên kết dự án local với tài khoản Zuplo để deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx zuplo &lt;span class="nb"&gt;link&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chọn tài khoản/môi trường. Sau đó, &lt;code&gt;npx zuplo deploy&lt;/code&gt; để deploy nhánh Git hiện tại.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 2: Định nghĩa route đầu tiên
&lt;/h2&gt;

&lt;p&gt;Mở &lt;code&gt;config/routes.oas.json&lt;/code&gt; – file OpenAPI 3 mở rộng cho Zuplo.&lt;/p&gt;

&lt;p&gt;Ví dụ, thêm route GET &lt;code&gt;/v1/products&lt;/code&gt; proxy về backend:&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;"openapi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3.1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"info"&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;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Acme Gateway"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&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;"paths"&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;"/v1/products"&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;"get"&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;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Liệt kê sản phẩm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"operationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"list-products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-zuplo-route"&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;"corsPolicy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"anything-goes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"handler"&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;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"urlForwardHandler"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${env.ORIGIN_URL}"&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;"policies"&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;"inbound"&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;"responses"&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;"200"&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;"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;"Thành công"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;x-zuplo-route&lt;/code&gt;: mở rộng cho Zuplo nằm trong OpenAPI.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;handler&lt;/code&gt;: định nghĩa proxy (urlForwardHandler), target từ biến env.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cấu hình biến &lt;code&gt;ORIGIN_URL&lt;/code&gt; trong Settings &amp;gt; Environment Variables (portal) hoặc &lt;code&gt;config/.env&lt;/code&gt; (local). Chưa có backend? Dùng &lt;code&gt;https://echo.zuplo.io&lt;/code&gt; để test.&lt;/p&gt;

&lt;p&gt;Sau khi lưu, dev server reload. Truy cập &lt;code&gt;http://localhost:9000/v1/products&lt;/code&gt; sẽ thấy response từ backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 3: Thêm xác thực API key
&lt;/h2&gt;

&lt;p&gt;Sửa route để thêm policy:&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="nl"&gt;"policies"&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;"inbound"&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;"api-key-auth"&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;Khai báo policy ở &lt;code&gt;config/policies.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"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;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"api-key-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&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;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ApiKeyInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"allowUnauthenticatedRequests"&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;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ạo consumer (chủ sở hữu API key):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vào Services &amp;gt; API Key Service.&lt;/li&gt;
&lt;li&gt;Chọn "Create Consumer".&lt;/li&gt;
&lt;li&gt;Đặt subject (ví dụ: &lt;code&gt;acme-customer-1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Thêm email quản lý key.&lt;/li&gt;
&lt;li&gt;Copy API key.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kiểm thử:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Không gửi header: trả về 401.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; https://YOUR-PROJECT.zuplo.app/v1/products
&lt;span class="c"&gt;# HTTP/2 401&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Có API key:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-i&lt;/span&gt; https://YOUR-PROJECT.zuplo.app/v1/products &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt;
&lt;span class="c"&gt;# HTTP/2 200&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Để test qua client, import OpenAPI spec vào &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;, set header mặc định &lt;code&gt;Authorization: Bearer {{api_key}}&lt;/code&gt;, link &lt;code&gt;api_key&lt;/code&gt; vào biến môi trường – kiểm thử nhanh mọi route.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 4: Giới hạn tốc độ (rate limit) route
&lt;/h2&gt;

&lt;p&gt;Không nên public API mà thiếu rate limit. Thêm policy:&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="nl"&gt;"policies"&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;"inbound"&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;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&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 policy vào &lt;code&gt;config/policies.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"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;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&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;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RateLimitInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"rateLimitBy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sub"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"requestsAllowed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"timeWindowMinutes"&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="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;ul&gt;
&lt;li&gt;
&lt;code&gt;"rateLimitBy": "sub"&lt;/code&gt;: rate limit theo subject (API key).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"ip"&lt;/code&gt;: limit theo địa chỉ IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiểm tra bằng bash:&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="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..70&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s2"&gt;"%{http_code}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    https://YOUR-PROJECT.zuplo.app/v1/products &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer YOUR_API_KEY"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bạn sẽ thấy 60 dòng 200 và 10 dòng 429.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 5: Xác thực payload request (schema validation)
&lt;/h2&gt;

&lt;p&gt;Với route POST nhận JSON body, policy xác thực sẽ reject payload sai format tại gateway.&lt;/p&gt;

&lt;p&gt;Thêm route POST:&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="nl"&gt;"/v1/products"&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;"post"&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;"summary"&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ạo sản phẩm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"operationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"create-product"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestBody"&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="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;"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="nl"&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="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="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;"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;"priceCents"&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;"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;"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;"minLength"&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="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;"priceCents"&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;"integer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"minimum"&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="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;"category"&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="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"enum"&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;"food"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"drink"&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;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"x-zuplo-route"&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;"handler"&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="err"&gt;/*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&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;"policies"&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;"inbound"&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="s2"&gt;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-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;"validate-request"&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 policy:&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;"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;"validate-request"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"open-api-request-validation-inbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&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;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"OpenApiRequestValidationInboundPolicy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(@zuplo/runtime)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"validateBody"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reject"&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;Gửi POST thiếu trường sẽ bị reject 400 trước khi tới backend. Test với &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;: tạo các request "thành công", "thiếu trường", "enum sai" thành nhóm, chạy batch chỉ với 1 click.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 6: Viết policy TypeScript custom
&lt;/h2&gt;

&lt;p&gt;Nếu cần logic đặc biệt, chỉ cần viết hàm TypeScript.&lt;/p&gt;

&lt;p&gt;Ví dụ: Policy outbound set header &lt;code&gt;Cache-Control&lt;/code&gt; khác nhau cho khách trả phí/miễn phí.&lt;/p&gt;

&lt;p&gt;Tạo &lt;code&gt;modules/tiered-cache.ts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;HttpProblems&lt;/span&gt; &lt;span class="p"&gt;}&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;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;PolicyOptions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;paidPlanHeader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;paidMaxAge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &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;Response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;PolicyOptions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="o"&gt;&amp;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;plan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&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="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cache-Control&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no-store&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="k"&gt;else&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;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cache-Control&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="s2"&gt;`public, max-age=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;paidMaxAge&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Cache header set for plan=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&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;Khai báo policy trong &lt;code&gt;config/policies.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"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;"tiered-cache"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"policyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"custom-code-outbound"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"handler"&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;"export"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"default"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$import(./modules/tiered-cache)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"paidPlanHeader"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"x-plan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"paidMaxAge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;300&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;Tham chiếu ở route:&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="nl"&gt;"policies"&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;"inbound"&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;"api-key-auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"rate-limit-by-key"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"outbound"&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;"tiered-cache"&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;Policy chỉ là hàm TypeScript, có thể unit test độc lập (dùng Vitest/Jest) mà không cần deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 7: Triển khai ra edge
&lt;/h2&gt;

&lt;p&gt;Deploy = git push:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Thêm gateway sản phẩm với xác thực, giới hạn tỷ lệ và bộ nhớ đệm phân cấp"&lt;/span&gt;
git push origin feature/products-gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mỗi branch đều có môi trường preview, URL riêng dạng &lt;code&gt;https://acme-gateway-feature-products-gateway-abc123.zuplo.app&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Kiểm thử preview URL qua &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ằng cách set làm env mới. Nếu pass, merge branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
git merge feature/products-gateway
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sau merge, production deploy trên 300+ PoP global trong ~60s. Rollback chỉ cần &lt;code&gt;git revert&lt;/code&gt; và push.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 8: Tạo cổng thông tin developer
&lt;/h2&gt;

&lt;p&gt;Cổng thông tin ở &lt;code&gt;https://YOUR-PROJECT.developers.zuplo.com&lt;/code&gt;, rebuild mỗi lần deploy. Bao gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trang docs cho từng route, schema, mô tả, try console&lt;/li&gt;
&lt;li&gt;Code sample (cURL, JS, Python, Go, ...)&lt;/li&gt;
&lt;li&gt;API key self-service cho user đăng ký&lt;/li&gt;
&lt;li&gt;Branding chỉnh ở Developer Portal &amp;gt; Settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Spec OpenAPI tốt = docs auto hoàn chỉnh. Tuỳ biến? Fork source portal (Next.js) tại &lt;a href="https://github.com/zuplo/zudoku" rel="noopener noreferrer"&gt;GitHub Zuplo/zudoku&lt;/a&gt;, nhưng phần lớn dùng bản hosted là đủ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bước 9: Kiểm thử toàn bộ với Apidog
&lt;/h2&gt;

&lt;p&gt;Kiểm thử mọi route, policy, error path trước khi production bằ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;:&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.amazonaws.com%2Fuploads%2Farticles%2Fogdwuct2qhdh0f7n983r.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.amazonaws.com%2Fuploads%2Farticles%2Fogdwuct2qhdh0f7n983r.png" alt="apidog test" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Workflow đề xuất:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Import OpenAPI spec từ &lt;code&gt;https://YOUR-PROJECT.zuplo.app/openapi&lt;/code&gt; vào Apidog.&lt;/li&gt;
&lt;li&gt;Tạo env cho &lt;code&gt;local&lt;/code&gt;, &lt;code&gt;preview&lt;/code&gt;, &lt;code&gt;production&lt;/code&gt; (mỗi env có &lt;code&gt;base_url&lt;/code&gt;, &lt;code&gt;api_key&lt;/code&gt; riêng).&lt;/li&gt;
&lt;li&gt;Lưu ít nhất 3 request cho mỗi route: success, validation error, rate limit. Batch run trước mỗi deploy.&lt;/li&gt;
&lt;li&gt;Dùng test script nối các call (create, list, delete) và kiểm tra response shape.&lt;/li&gt;
&lt;li&gt;Gen code sample (ngôn ngữ chính của team) để dán vào runbook.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chuyển từ Postman? Xem &lt;a href="http://apidog.com/blog/api-testing-without-postman-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn kiểm thử API không dùng Postman&lt;/a&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; nếu chưa có.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ: Sử dụng Zuplo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Làm sao chuyển route giữa các môi trường mà không sửa spec?
&lt;/h3&gt;

&lt;p&gt;Dùng biến môi trường. Định nghĩa &lt;code&gt;ORIGIN_URL&lt;/code&gt; cho từng env (portal hoặc local &lt;code&gt;.env&lt;/code&gt;), dùng &lt;code&gt;${env.ORIGIN_URL}&lt;/code&gt; trong handler option.&lt;/p&gt;

&lt;h3&gt;
  
  
  Có chạy Zuplo offline được không?
&lt;/h3&gt;

&lt;p&gt;Được. &lt;code&gt;npm run dev&lt;/code&gt; chạy local gateway port 9000, Route Designer port 9100. Policy, xác thực, rate limit vẫn chạy local; chỉ API Key Service cần mạng (có thể dùng &lt;code&gt;npx zuplo link&lt;/code&gt; để sync cloud key).&lt;/p&gt;

&lt;h3&gt;
  
  
  Làm sao rollback deploy lỗi?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git revert&lt;/code&gt; commit merge, push lên remote. Zuplo redeploy trạng thái trước. Không cần UI rollback – Git là nguồn sự thật.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy có downtime không?
&lt;/h3&gt;

&lt;p&gt;Không. Deploy atomic tại edge; request đang chạy hoàn thành trên phiên bản cũ, request mới lên version mới.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo hỗ trợ gRPC/WebSocket không?
&lt;/h3&gt;

&lt;p&gt;Có. &lt;code&gt;urlForwardHandler&lt;/code&gt; proxy WebSocket upgrade, có hỗ trợ gRPC handler. REST &amp;amp; GraphQL là phổ biến nhất.&lt;/p&gt;

&lt;h3&gt;
  
  
  Làm sao public API Zuplo cho AI agent?
&lt;/h3&gt;

&lt;p&gt;Thêm MCP Server Handler vào route, trỏ vào OpenAPI spec, chọn operation public. Auth &amp;amp; rate limit vẫn áp dụng. Xem &lt;a href="https://zuplo.com/docs/mcp-server/introduction" rel="noopener noreferrer"&gt;docs Zuplo MCP Server&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chi phí gateway Zuplo?
&lt;/h3&gt;

&lt;p&gt;Miễn phí 100K request/tháng. Builder: $25/tháng + 1M request. Thêm request: $100/100K. Enterprise: từ $1,000/tháng. Xem chi tiết tại &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;Zuplo pricing&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Bạn đã có gateway Zuplo có xác thực API key, rate limit, validate request, policy TypeScript custom, cổng dev portal – tất cả deploy qua Git lên edge toàn cầu. Quản lý preview, production, AI agent với cùng một cấu hình.&lt;/p&gt;

&lt;p&gt;Vòng lặp kiểm thử giữ mọi thứ ổn định. 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; để test preview trước khi merge, tránh lỗi header, thiếu field, rate limit... &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; và tích hợp ngay với gateway của bạn.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zuplo API Gateway là gì?</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Mon, 27 Apr 2026 06:31:19 +0000</pubDate>
      <link>https://forem.com/sebbasstian/zuplo-api-gateway-la-gi-hil</link>
      <guid>https://forem.com/sebbasstian/zuplo-api-gateway-la-gi-hil</guid>
      <description>&lt;p&gt;Hầu hết các cổng API hiện nay vẫn mang cảm giác lỗi thời: phải viết YAML, thao tác thủ công trên bảng điều khiển và phụ thuộc vào đội ngũ vận hành để đẩy thay đổi. Zuplo thay đổi hoàn toàn mô hình này: một cổng API có thể lập trình, edge-native, mọi tuyến đường lưu trữ trên Git, chính sách là TypeScript, và mỗi lần commit được triển khai trên hơn 300 địa điểm chỉ trong và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" 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 viết này hướng dẫn từng bước cách Zuplo hoạt động, so sánh với Kong và AWS API Gateway, chi phí, và cách triển khai cổng đầu tiên chỉ trong 30 phút. Bạn sẽ thấy các ví dụ code thực tế về routing, xác thực, giới hạn tốc độ, cùng hướng dẫn kiểm thử mọi endpoint bằ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; trước khi đưa lên production.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Zuplo là cổng API edge-native, managed, chạy trên hơn 300 data center Cloudflare, độ trễ &amp;lt;50ms, không cold start.&lt;/li&gt;
&lt;li&gt;Cấu hình hoàn toàn GitOps; mọi thay đổi đều thông qua CI/CD và pull request.&lt;/li&gt;
&lt;li&gt;Chính sách là TypeScript, hỗ trợ IDE đầy đủ, không YAML hay Lua.&lt;/li&gt;
&lt;li&gt;Gói miễn phí: 100K request/tháng, unlimited environment, API key, developer portal.&lt;/li&gt;
&lt;li&gt;Tích hợp sẵn: xác thực API key, JWT, OAuth2, rate limit, request validation, developer portal tự động, kiếm tiền qua Stripe.&lt;/li&gt;
&lt;li&gt;MCP Server Handler: mọi route có thể công khai cho Claude, Codex, Cursor hoặc bất kỳ client MCP nào.&lt;/li&gt;
&lt;li&gt;Kiểm thử mọi endpoint Zuplo với &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; trước production.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Zuplo là gì?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://zuplo.com/docs/api-management/introduction" rel="noopener noreferrer"&gt;Zuplo là nền tảng quản lý API&lt;/a&gt; dựa trên 3 nguyên tắc: code hơn config, edge hơn region, Git hơn GUI. Mọi thứ là TypeScript và deploy thẳng lên biên Cloudflare, không cần tự quản lý hạ tầng.&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.amazonaws.com%2Fuploads%2Farticles%2F06t6wd5qu6bick3ihqgi.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.amazonaws.com%2Fuploads%2Farticles%2F06t6wd5qu6bick3ihqgi.png" alt="Zuplo Architecture" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thay vì YAML lưu ở control plane DB như Kong, Zuplo coi cổng của bạn là dự án TypeScript: file &lt;code&gt;routes.oas.json&lt;/code&gt; mô tả endpoint, thư mục module TS cho code tuỳ chỉnh, file config cho policy. Push lên GitHub là tự động build, validate, deploy.&lt;/p&gt;

&lt;p&gt;Hỗ trợ REST, GraphQL, gRPC, WebSocket, SOAP. Đạt SOC2 Type II, backend trên AWS/Azure/GCP, có tuỳ chọn self-hosted Kubernetes. Giá tính theo request, không tính theo user. &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;Xem chi tiết giá tại đây&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.amazonaws.com%2Fuploads%2Farticles%2Fchc3a093df7p7muegdtm.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.amazonaws.com%2Fuploads%2Farticles%2Fchc3a093df7p7muegdtm.png" alt="Zuplo pricing" width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao chọn Zuplo thay vì Kong, Apigee, AWS API Gateway?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kong&lt;/strong&gt;: open source mạnh mẽ, cần hiểu sâu Lua, plugin nhiều nhưng developer portal chỉ có ở bản enterprise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apigee&lt;/strong&gt;: enterprise, analytics mạnh, học khó, build developer portal phức tạp.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS API Gateway&lt;/strong&gt;: native AWS, thiếu developer portal, cold start Lambda tốn thời gian.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Zuplo&lt;/strong&gt; nhắm đến team nhỏ cần tính năng enterprise mà không tốn công vận hành.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Khác biệt nổi bật:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code, không YAML&lt;/strong&gt;: Policy rate limit Zuplo chỉ 3 dòng TypeScript (Kong: 15 dòng YAML).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Portal có sẵn&lt;/strong&gt;: Tự động tạo từ OpenAPI, mọi gói đều có, kể cả free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitOps&lt;/strong&gt;: Mọi thay đổi là pull request, rollback dễ dàng, không cần click UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge-native, không cold start&lt;/strong&gt;: Cloudflare Workers, latency cực thấp.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu bạn chưa đầu tư sâu vào Kong, Apigee, hoặc backend đang gặp bottleneck, nên thử workflow của Zuplo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Các tính năng cốt lõi của Zuplo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lập trình bằng TypeScript
&lt;/h3&gt;

&lt;p&gt;Mọi policy là file TypeScript. Viết hàm async nhận request/response, tuỳ biến logic, trả về kết quả. Ví dụ: xoá header nội bộ khỏi response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt; &lt;span class="p"&gt;}&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;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &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;Response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-internal-trace-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&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;Chỉ cần đặt vào &lt;code&gt;modules/strip-internal-header.ts&lt;/code&gt;, tham chiếu trong route, push lên Git là deploy.&lt;/p&gt;

&lt;h3&gt;
  
  
  60+ policy dựng sẵn
&lt;/h3&gt;

&lt;p&gt;Hầu hết tính năng phổ biến đã có sẵn policy: API key, JWT, OAuth 2.0, rate limiting (fixed/sliding window, token bucket), request/response validation, CORS, IP allowlist, request transformation... Chỉ cần chỉnh định nghĩa route, không phải viết code cho case phổ thông.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer portal tự động
&lt;/h3&gt;

&lt;p&gt;Chỉ cần trỏ portal đến OpenAPI spec, Zuplo tạo ngay docs, playground, code mẫu cURL/JS/Python/Go, user có thể tự đăng ký, lấy API key, gọi thử API. Phù hợp cho SaaS, giảm công sức vận hành.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiếm tiền API tích hợp Stripe
&lt;/h3&gt;

&lt;p&gt;Định nghĩa plan (free/pro/enterprise), kết nối Stripe, portal lo phần thanh toán/subscription/billing theo usage. Kong, AWS API Gateway không hỗ trợ built-in như vậy.&lt;/p&gt;

&lt;h3&gt;
  
  
  MCP Server Handler cho AI agent
&lt;/h3&gt;

&lt;p&gt;Chỉ định MCP handler vào OpenAPI, chọn operation cần công khai, API của bạn có thể gọi từ Claude, OpenAI Codex, Cursor... Policy xác thực và rate limit vẫn giữ nguyên cho agent. &lt;a href="https://zuplo.com/docs/mcp-server/introduction" rel="noopener noreferrer"&gt;Xem hướng dẫn cấu hình MCP tại đây&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edge deploy, latency &amp;lt;50ms
&lt;/h3&gt;

&lt;p&gt;Mặc định deploy lên 300+ location của Cloudflare, user ở đâu cũng nhận response từ biên gần nhất, không phải tự cấu hình.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiến trúc hoạt động của Zuplo
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Match route&lt;/strong&gt;: URL/method khớp trong &lt;code&gt;routes.oas.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy inbound&lt;/strong&gt;: Policy như auth/rate limit/validation chạy theo thứ tự. Nếu fail, trả kết quả luôn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handler&lt;/strong&gt;: Uỷ quyền upstream backend/trả static/run code/call MCP handler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy outbound&lt;/strong&gt;: Biến đổi response, xoá header, logic tuỳ chỉnh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response&lt;/strong&gt;: Trả về client, gửi log &amp;amp; metric sang hệ observability.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tất cả chạy trong Cloudflare Worker, đảm bảo latency thấp, không trả phí idle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hướng dẫn triển khai Zuplo đầu tiên
&lt;/h2&gt;

&lt;p&gt;Bạn có thể có cổng Zuplo hoạt động trong ~30 phút:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Đăng ký &lt;a href="https://zuplo.com" rel="noopener noreferrer"&gt;zuplo.com&lt;/a&gt;&lt;/strong&gt;, tạo project mới, tích hợp GitHub để project sync với repo của bạn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nhập spec OpenAPI&lt;/strong&gt;: Nếu có sẵn, import vào. Zuplo tạo route từ operation. Nếu chưa có thì phác route UI, export spec sau.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thêm policy xác thực API key&lt;/strong&gt;: Trong route editor, thêm &lt;code&gt;api-key-inbound&lt;/code&gt;. Zuplo tự tạo DB consumer và UI cấp key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thêm rate limit&lt;/strong&gt;: Thêm &lt;code&gt;rate-limit-inbound&lt;/code&gt;, ví dụ 100 request/phút/key, chỉnh JSON trong file route.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy&lt;/strong&gt;: Push lên branch, Zuplo build môi trường preview với URL riêng. Merge là lên production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiểm thử end-to-end&lt;/strong&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; gửi request với API key đúng/sai, vượt rate, payload lỗi... Xác nhận policy hoạt động đúng.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bạn đã có cổng Zuplo sẵn sàng. Việc khó chỉ là đặt tên route hợp lý và quyết định logic tuỳ chỉnh nằm đâu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Viết policy tuỳ chỉnh bằng TypeScript
&lt;/h2&gt;

&lt;p&gt;Nếu policy dựng sẵn không đủ, bạn tự viết TypeScript. Ví dụ enrich request bằng user info nội bộ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt; &lt;span class="p"&gt;}&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;@zuplo/runtime&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;UserContext&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;enterprise&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ZuploContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ZuploRequest&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="o"&gt;&amp;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;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Unauthorized&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="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;401&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;lookupUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`https://internal.example.com/users/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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;userResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lookupUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;authorization&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INTERNAL_TOKEN&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;userResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&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 lookup failed&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="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;502&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;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;userResponse&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;UserContext&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-user-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-user-plan&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;request&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;ul&gt;
&lt;li&gt;Policy là hàm async bình thường, unit test dễ dàng.&lt;/li&gt;
&lt;li&gt;Biến môi trường lấy từ &lt;code&gt;context.environment&lt;/code&gt;, type-safe.&lt;/li&gt;
&lt;li&gt;Trả về &lt;code&gt;Response&lt;/code&gt; để ngắt quy trình khi gặp lỗi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Giá Zuplo năm 2026
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free&lt;/strong&gt;: 0 USD/tháng. 100K request/tháng, unlimited environment, API key, developer portal, 1GB egress, deploy edge, tối đa 2 developer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Builder&lt;/strong&gt;: 25 USD/tháng. 1M request/tháng, 2 custom domain, thêm egress, 100 USD/100K request vượt mức, support cộng đồng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise&lt;/strong&gt;: Từ 1.000 USD/tháng (contract năm). Unlimited request/domain, SLA 99.5–99.999%, SSO, RBAC, add-on observability...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI Gateway và Developer Portal có tier riêng; portal open source self-hosted dùng miễn phí. &lt;a href="https://zuplo.com/pricing" rel="noopener noreferrer"&gt;Xem giá mới nhất&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So sánh:&lt;/strong&gt; AWS API Gateway: 3.5 USD/million REST request + egress + Lambda. Kong Enterprise thường đắt hơn Zuplo. Gói free Zuplo đủ dùng cho production giai đoạn đầu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Khi nào nên chọn Zuplo (và khi nào không)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nên chọn khi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Muốn cổng managed, không tự vận hành Kong.&lt;/li&gt;
&lt;li&gt;Team thành thạo TypeScript/Javascript.&lt;/li&gt;
&lt;li&gt;Cần developer portal không phải tự build.&lt;/li&gt;
&lt;li&gt;Muốn kiếm tiền API, cần Stripe tích hợp.&lt;/li&gt;
&lt;li&gt;Muốn publish API cho AI agent (Claude, Codex...) qua MCP.&lt;/li&gt;
&lt;li&gt;Lưu lượng global, latency biên là cần thiết.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Không nên chọn khi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cần kiểm soát hoàn toàn mã nguồn mở (Kong).&lt;/li&gt;
&lt;li&gt;Hạ tầng on-prem không ra internet (Kong/Tyk self-hosted).&lt;/li&gt;
&lt;li&gt;Yêu cầu customize sâu trên NGINX.&lt;/li&gt;
&lt;li&gt;Đã đầu tư lớn vào Apigee/MuleSoft, migration cost cao.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kiểm thử Zuplo gateway với Apidog
&lt;/h2&gt;

&lt;p&gt;Sau khi deploy môi trường preview, cần test từng route, policy, edge case trước production. Dùng client API chuyên dụng là tối ưu nhất.&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; import trực tiếp OpenAPI spec — cùng spec dùng cho Zuplo cũng là spec dùng cho test.&lt;/p&gt;

&lt;p&gt;Bạn có thể:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gọi từng route với API key đúng/sai, test policy auth.&lt;/li&gt;
&lt;li&gt;Gửi payload lỗi để check request validation.&lt;/li&gt;
&lt;li&gt;Tấn công rate limit để xác nhận policy hoạt động đúng.&lt;/li&gt;
&lt;li&gt;Lưu variable cho URL Zuplo preview, production, API key — chuyển môi trường chỉ 1 click.&lt;/li&gt;
&lt;li&gt;Sinh code mẫu (cURL, JS, Python, Go) cho tài liệu/devops.&lt;/li&gt;
&lt;li&gt;Chạy test script tự động của Apidog, nhanh hơn viết script thủ công.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu bạn chưa dùng Apidog, thử &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;extension VS Code&lt;/a&gt; hoặc &lt;a href="http://apidog.com/blog/api-testing-without-postman-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn chuyển đổi từ Postman&lt;/a&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 tại đây&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ về Zuplo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Zuplo có open source không?
&lt;/h3&gt;

&lt;p&gt;Core gateway runtime là closed source, nhưng developer portal và một số thư viện phụ đã open source trên GitHub. Enterprise có tuỳ chọn self-hosted Kubernetes và open source portal đáp ứng hầu hết nhu cầu. Phần lớn team sẽ dùng managed service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo có chạy được on-prem/private cloud không?
&lt;/h3&gt;

&lt;p&gt;Có, bản Enterprise hỗ trợ Kubernetes self-hosted. Đổi lại, bạn tự vận hành, không còn deploy edge toàn cầu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo khác gì Cloudflare API Shield?
&lt;/h3&gt;

&lt;p&gt;API Shield chỉ tập trung security (schema validation, abuse protection, mTLS). Zuplo là platform quản lý API: routing, policy, portal, monetization, MCP... Có thể dùng song song. Nếu chỉ cần security, dùng API Shield; nếu cần toàn bộ vòng đời, chọn Zuplo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zuplo có dùng được với OpenAPI spec cũ của tôi không?
&lt;/h3&gt;

&lt;p&gt;Có, OpenAPI là nguồn chân lý của Zuplo. Nhập spec, tự tạo route, portal, policy validation. Spec bẩn sẽ phát hiện lỗi khi import.&lt;/p&gt;

&lt;h3&gt;
  
  
  Có thể publish Zuplo cho AI agent (Claude, Codex...) không?
&lt;/h3&gt;

&lt;p&gt;Có, dùng MCP Server Handler. Trỏ handler vào OpenAPI, chọn operation, cổng sẽ gọi được từ mọi client MCP. Policy auth/rate limit tự động áp dụng cho agent.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy Zuplo mất bao lâu?
&lt;/h3&gt;

&lt;p&gt;Chạy build preview trong ~60 giây, lên production còn nhanh hơn. Triển khai atomic, không downtime.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nếu Cloudflare gặp sự cố thì sao?
&lt;/h3&gt;

&lt;p&gt;Zuplo chạy trên edge Cloudflare, sự cố khu vực Cloudflare sẽ ảnh hưởng cục bộ. Gói Enterprise có tuỳ chọn multi-cloud failover cho SLA 99.999%. Phần lớn team chấp nhận trade-off này vì Cloudflare rất ổn định.&lt;/p&gt;

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

&lt;p&gt;Zuplo phù hợp cho team cần tính năng enterprise mà không muốn vận hành cồng kềnh. TypeScript-first, GitOps, developer portal tự động, kiếm tiền Stripe, hỗ trợ AI MCP — đây là platform API hoàn chỉnh, không chỉ là routing layer. Gói free đủ mạnh cho production nhỏ; gói Enterprise đáp ứng mọi nhu cầu lớn.&lt;/p&gt;

&lt;p&gt;Hãy thử setup 30 phút với API thực, test kỹ mọi policy bằ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;, rồi quyết định dựa trên trải nghiệm thực tế. Sự kết hợp giữa API gateway edge-managed và client kiểm thử mạnh là con đường nhanh nhất từ “có API” thành “có sản phẩm”. &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 tại đây&lt;/a&gt; và bắt đầu kiểm thử.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách Sử Dụng DeepSeek V4 Miễn Phí</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 05:20:42 +0000</pubDate>
      <link>https://forem.com/sebbasstian/cach-su-dung-deepseek-v4-mien-phi-1gmm</link>
      <guid>https://forem.com/sebbasstian/cach-su-dung-deepseek-v4-mien-phi-1gmm</guid>
      <description>&lt;p&gt;DeepSeek V4 ra mắt ngày 23/4/2026 với lựa chọn miễn phí thực sự: trò chuyện web chính thức chạy V4-Pro mà không cần thẻ tín dụng, trọng số cấp phép MIT có thể tải về ngay, và các aggregator như OpenRouter, Chutes thường mở tầng miễn phí chỉ sau vài ngày. Bạn có thể bắt đầu ngay các tác vụ nghiêm túc mà không tốn chi phí trước khi quyết định trả tiề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;Dùng thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Bài viết này trình bày chi tiết các phương pháp miễn phí đã được xác minh, phù hợp từng trường hợp sử dụng, và hướng dẫn thiết lập bộ sưu tập sẵn sàng cho sản xuất 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; để việc chuyển đổi trả phí diễn ra mượt mà khi cần.&lt;/p&gt;

&lt;p&gt;Tham khảo tổng quan sản phẩm tại &lt;a href="http://apidog.com/blog/what-is-deepseek-v4" rel="noopener noreferrer"&gt;DeepSeek V4 là gì&lt;/a&gt; và hướng dẫn API đầy đủ tại &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api" rel="noopener noreferrer"&gt;Cách sử dụng API DeepSeek V4&lt;/a&gt;.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;&lt;/strong&gt; — Giao diện chat web miễn phí trên V4-Pro, hỗ trợ Think High/Think Max. Không cần thẻ, hoạt động ngay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trọng số Hugging Face + GPU cá nhân&lt;/strong&gt; — MIT license, V4-Flash chạy trên 2-4 H100, V4-Pro cần cụm lớn hơn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tầng miễn phí OpenRouter, Chutes&lt;/strong&gt; — Cổng bên thứ ba thường có quota miễn phí cho DeepSeek sau 1 tuần ra mắt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference provider Hugging Face&lt;/strong&gt; — Điểm cuối dùng chung, giới hạn tốc độ, phù hợp thử nghiệm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tín dụng thử Kaggle, Colab, RunPod&lt;/strong&gt; — Miễn phí cho các lần chạy thử nghiệm tự lưu trữ.&lt;/li&gt;
&lt;li&gt;Mọi phương pháp miễn phí đều có hạn mức sử dụng. Với tác vụ production, chuyển sang trả phí trước khi chạm ngưỡng.&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.amazonaws.com%2Fuploads%2Farticles%2F1pwj8dblm7dbxk7xooey.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.amazonaws.com%2Fuploads%2Farticles%2F1pwj8dblm7dbxk7xooey.png" alt="ảnh" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phương pháp 1: chat.deepseek.com (cách nhanh nhất và mặc định)
&lt;/h2&gt;

&lt;p&gt;Giao diện trò chuyện chính thức là cách miễn phí, nhanh, đáng tin cậy nhất để trải nghiệm V4-Pro. Chọn chế độ Non-Think, Think High hoặc Think Max ngay trên editor.&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.amazonaws.com%2Fuploads%2Farticles%2Fod1zc2ye1qsto7o0xxbc.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.amazonaws.com%2Fuploads%2Farticles%2Fod1zc2ye1qsto7o0xxbc.png" alt="ảnh" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Truy cập &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Đăng nhập bằng email, Google hoặc WeChat.&lt;/li&gt;
&lt;li&gt;Xác nhận đang dùng model V4-Pro.&lt;/li&gt;
&lt;li&gt;Bắt đầu trò chuyện.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Tính năng
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ngữ cảnh 1M token đầy đủ.&lt;/li&gt;
&lt;li&gt;Hỗ trợ upload PDF, ảnh, gói mã.&lt;/li&gt;
&lt;li&gt;Tìm kiếm web theo yêu cầu.&lt;/li&gt;
&lt;li&gt;Đầy đủ ba chế độ lập luận.&lt;/li&gt;
&lt;li&gt;Lưu lịch sử chat và tổ chức thư mục.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Giới hạn
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Không công bố số lượng tin nhắn/ngày, nhưng có giảm tốc độ nhẹ khi tải cao.&lt;/li&gt;
&lt;li&gt;Sử dụng nhiều có thể khiến phản hồi bị chậm hoặc hàng đợi, nhưng hiếm khi bị chặn cứng.&lt;/li&gt;
&lt;li&gt;Khi bị giới hạn tốc độ liên tục, cân nhắc giảm tần suất hoặc chuyển sang API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Nên dùng webchat cho:&lt;/strong&gt; kiểm tra khả năng V4, dán repo, review hợp đồng lớn, thử Think Max.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Không nên dùng:&lt;/strong&gt; automation, yêu cầu tái lập.&lt;/p&gt;
&lt;h2&gt;
  
  
  Phương pháp 2: Tự lưu trữ V4-Flash trên GPU riêng
&lt;/h2&gt;

&lt;p&gt;V4-Flash là biến thể MIT, phù hợp tự lưu trữ thực tế. Tổng 284B, 13B hoạt động; chạy trên 2 H100 FP8 hoặc 1 H100 80GB INT4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ưu điểm:&lt;/strong&gt; Không phụ thuộc vào quota/tốc độ, không bị revoke.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Chi phí:&lt;/strong&gt; Chỉ tốn phần cứng.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tải trọng số
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"huggingface_hub[cli]"&lt;/span&gt;
huggingface-cli login
huggingface-cli download deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir&lt;/span&gt; ./models/deepseek-v4-flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Khoảng 500GB FP8, cần chuẩn bị ổ đĩa đủ lớn.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Phục vụ với vLLM
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"vllm&amp;gt;=0.9.0"&lt;/span&gt;

vllm serve deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 4 &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;--dtype&lt;/span&gt; auto &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;Khi chạy, trỏ client OpenAI về &lt;code&gt;http://localhost:8000/v1&lt;/code&gt;. Định dạng API giống DeepSeek trả phí; &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; coi như một base URL mới, không cần sửa lại request.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Kiểm tra phần cứng thực tế
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Biến thể&lt;/th&gt;
&lt;th&gt;Card tối thiểu (FP8)&lt;/th&gt;
&lt;th&gt;Card tối thiểu (INT4)&lt;/th&gt;
&lt;th&gt;Thông lượng thực tế&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash&lt;/td&gt;
&lt;td&gt;2 × H100 80GB&lt;/td&gt;
&lt;td&gt;1 × H100 80GB&lt;/td&gt;
&lt;td&gt;50 – 150 tok/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro&lt;/td&gt;
&lt;td&gt;16 × H100 80GB&lt;/td&gt;
&lt;td&gt;8 × H100 80GB&lt;/td&gt;
&lt;td&gt;Phụ thuộc cụm&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nếu không có GPU dư, dùng API rẻ hơn thuê GPU. Tự lưu trữ phù hợp với nhóm đã sẵn hạ tầng hoặc yêu cầu compliance.&lt;/p&gt;
&lt;h2&gt;
  
  
  Phương pháp 3: Tầng miễn phí OpenRouter
&lt;/h2&gt;

&lt;p&gt;OpenRouter tổng hợp nhiều model (open source, closed) qua một API. Tầng miễn phí thường mở cho DeepSeek chỉ sau 1 tuần ra mắ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.amazonaws.com%2Fuploads%2Farticles%2Fbir19t7193o5qk1c978b.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.amazonaws.com%2Fuploads%2Farticles%2Fbir19t7193o5qk1c978b.png" alt="ảnh" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Thiết lập
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Đăng ký tại &lt;a href="https://openrouter.ai/" rel="noopener noreferrer"&gt;openrouter.ai&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Sinh API key.&lt;/li&gt;
&lt;li&gt;Xem danh mục model: &lt;code&gt;deepseek/deepseek-v4-pro&lt;/code&gt; hoặc &lt;code&gt;deepseek/deepseek-v4-flash&lt;/code&gt;. Model miễn phí có hậu tố &lt;code&gt;:free&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Gọi API bằng SDK OpenAI.
&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;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;OPENROUTER_KEY&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://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;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;deepseek/deepseek-v4-flash:free&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;Write a Python CLI for semver bumping.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;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;
  
  
  Giới hạn
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Thường ~vài trăm request/ngày/key, giảm ưu tiên khi tải cao.&lt;/li&gt;
&lt;li&gt;Phù hợp tạo mẫu, không đảm bảo production.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Phương pháp 4: Nhà cung cấp suy luận Hugging Face
&lt;/h2&gt;

&lt;p&gt;Hugging Face host endpoint inference cho các checkpoint V4. Miễn phí, nhưng tốc độ thấp, rate limit chặt.&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;huggingface_hub&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;InferenceClient&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;InferenceClient&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;deepseek-ai/DeepSeek-V4-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;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="nf"&gt;chat_completion&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;Summarize the V4 technical report in 5 bullets.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;512&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;ul&gt;
&lt;li&gt;Miễn phí token HF, vượt quota thì upgrade lên HF Pro (giá vẫn rẻ hơn API chính thức).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Phương pháp 5: Tín dụng thử Colab, Kaggle, RunPod, Lambda
&lt;/h2&gt;

&lt;p&gt;Các provider GPU lớn đều cho tín dụng thử miễn phí. Sử dụng hợp lý có thể đủ chạy vài lần V4-Flash.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Colab:&lt;/strong&gt; Tầng T4 miễn phí quá nhỏ. Colab Pro+ có 500 compute units/tháng, chạy thử V4-Flash trên A100.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kaggle:&lt;/strong&gt; Giờ GPU miễn phí T4/P100, chỉ đủ cho V4-Flash lượng tử hóa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RunPod:&lt;/strong&gt; $10 tín dụng thử, chạy H100 vài giờ (benchmark, test).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lambda:&lt;/strong&gt; Thỉnh thoảng có giờ miễn phí H100/H200 (theo dõi đăng ký).&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Không dài hạn. Chỉ phù hợp một vài lần thử nghiệm.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Xây dựng bộ sưu tập Apidog không phụ thuộc provider
&lt;/h2&gt;

&lt;p&gt;Bạn có thể kiểm thử cùng prompt trên mọi backend miễn phí/trả phí mà không cần lặp lại request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quy trình:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tải &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;Tạo collection với 4 môi trường: &lt;code&gt;chat&lt;/code&gt; (placeholder), &lt;code&gt;deepseek&lt;/code&gt; (&lt;code&gt;https://api.deepseek.com/v1&lt;/code&gt;), &lt;code&gt;openrouter&lt;/code&gt; (&lt;code&gt;https://openrouter.ai/api/v1&lt;/code&gt;), &lt;code&gt;self-hosted&lt;/code&gt; (&lt;code&gt;http://localhost:8000/v1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Lưu một request POST đến &lt;code&gt;{{BASE_URL}}/chat/completions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Lưu API key từng provider bằng biến secret, phần body giữ nguyên.&lt;/li&gt;
&lt;li&gt;Chuyển môi trường để A/B prompt trên mọi backend.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Mẫu tương tự &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api-for-free" rel="noopener noreferrer"&gt;bộ sưu tập tầng miễn phí GPT-5.5&lt;/a&gt;: một công cụ, nhiều provider, không lặp lại thao tác.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Nên chọn phương pháp miễn phí nào?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Muốn thử nhanh 5 phút:&lt;/strong&gt; Dùng &lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Muốn tạo mẫu sản phẩm:&lt;/strong&gt; Dùng tầng miễn phí OpenRouter tới khi hết quota, sau đó nạp tiền DeepSeek.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có GPU, cần compliance:&lt;/strong&gt; Tự lưu trữ V4-Flash với vLLM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cần xài miễn phí dài hạn:&lt;/strong&gt; Không có. Tất cả tầng miễn phí đều giới hạn. Kết hợp &lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt; cho tác vụ tương tác + nạp tiền nhỏ cho automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Khi nào nên ngừng dùng miễn phí?
&lt;/h2&gt;

&lt;p&gt;Ba dấu hiệu bạn nên chuyển sang trả phí:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Bị rate limit nhiều lần/ngày&lt;/strong&gt; → Khối lượng đủ lớn để lên kế hoạch ngân sách.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cần SLA&lt;/strong&gt; → Miễn phí không có SLA, API chính thức thì có.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cần logging/audit/compliance&lt;/strong&gt; → API trả phí có hóa đơn, bản ghi rõ ràng; tầng miễn phí thường không.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Khi gặp bất kỳ dấu hiệu nào, hãy chuyển sang &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api" rel="noopener noreferrer"&gt;API chính thức&lt;/a&gt;. Nạp tiền tối thiểu $2, giá/token thấp nhất trong các pioneer tier.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt; có thực sự miễn phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Không cần thẻ tín dụng, không có trial. Có thể giảm tốc độ, nhưng không bị paywall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cần tài khoản Hugging Face để tải trọng số không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Về kỹ thuật là không (repo public), thực tế nên có tài khoản để tăng giới hạn tải xuống.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phương pháp miễn phí nào chạy full V4-Pro?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt; chạy V4-Pro đầy đủ. OpenRouter miễn phí thường chỉ V4-Flash. Muốn đầu ra V4-Pro miễn phí, chỉ nên dùng webchat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể đặt tầng miễn phí phía sau sản phẩm không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không nên. Tầng miễn phí bị rate limit, thay đổi điều khoản hoặc biến mất. Nếu build cho khách hàng, hãy dùng API trả phí hoặc tự host.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tự lưu trữ có thực sự miễn phí không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Giấy phép miễn phí, phần cứng thì không. Nếu đã có GPU trống, chỉ tốn điện. Thuê GPU thường không kinh tế bằng API trả phí.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apidog có tầng miễn phí thử nghiệm không?&lt;/strong&gt;&lt;br&gt;&lt;br&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í cho thiết kế, test API; chỉ mất phí khi gọi API trả phí qua nó. Bạn có thể dùng workspace Apidog miễn phí kết hợp &lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt; hoặc OpenRouter để có workflow hoàn toàn miễn phí.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hướng Dẫn Chạy DeepSeek V4 Tại Nhà</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:37:28 +0000</pubDate>
      <link>https://forem.com/sebbasstian/huong-dan-chay-deepseek-v4-tai-nha-5gd7</link>
      <guid>https://forem.com/sebbasstian/huong-dan-chay-deepseek-v4-tai-nha-5gd7</guid>
      <description>&lt;p&gt;DeepSeek V4 ra mắt ngày 23/4/2026 với trọng số (weights) MIT trên Hugging Face. Giấy phép mở này giúp mọi đội nhóm có thể triển khai AI mạnh mẽ trên hạ tầng riêng. V4-Flash (284B, 13B hoạt động) chạy trên 2 × H100 FP8; V4-Pro (1.6T, 49B hoạt động) cần cụm và cạnh tranh với GPT-5.5/Claude Opus 4.6 về code/suy luận. Bài này hướng dẫn từng bước triển khai cục bộ: chuẩn bị phần cứng, lượng tử hóa, thiết lập vLLM/SGLang, cấu hình sử dụng công cụ, và kiểm thử qua Apidog trước khi đưa vào sản xuất. Xem tổng quan sản phẩm tại &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 là gì&lt;/a&gt;, API hosted tại &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cách sử dụng API DeepSeek V4&lt;/a&gt;, so sánh giá tại &lt;a href="http://apidog.com/blog/deepseek-v4-api-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;giá API DeepSeek V4&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" class="crayons-btn crayons-btn--primary"&gt;Hãy thử Apidog ngay hôm nay&lt;/a&gt;
&lt;/p&gt;

&lt;h2 id="tldr-tóm-tắt"&gt;TL;DR (Tóm tắt)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash&lt;/strong&gt; chạy trên 2 × H100 80GB (FP8), hoặc 1 × H100 (INT4). Trọng số ~500GB FP8.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro&lt;/strong&gt; cần 16+ H100 FP8 để đạt thông lượng sản xuất; không dành cho laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vLLM&lt;/strong&gt; là lựa chọn nhanh nhất cho server tương thích OpenAI. &lt;code&gt;vllm&amp;gt;=0.9.0&lt;/code&gt; hỗ trợ V4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGLang&lt;/strong&gt; phù hợp nếu cần sử dụng công cụ, đầu ra cấu trúc tốt.&lt;/li&gt;
&lt;li&gt;Lượng tử hóa &lt;strong&gt;AWQ INT4&lt;/strong&gt; hoặc &lt;strong&gt;GPTQ INT4&lt;/strong&gt; giúp V4-Flash chạy trên 1 card 80GB, giảm ~5% chất lượng.&lt;/li&gt;
&lt;li&gt;Dùng &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; trỏ vào &lt;code&gt;http://localhost:8000/v1&lt;/code&gt; để kiểm thử, dùng lại collection với API hosted.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="ai-nên-tự-lưu-trữ"&gt;Ai nên tự lưu trữ&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Đội nhóm ràng buộc quy định:&lt;/strong&gt; Y tế, tài chính, pháp lý, quốc phòng – dữ liệu không được rời mạng. MIT license, không thỏa thuận sử dụng, không có luồng dữ liệu qua biên giới.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workload lớn, ổn định:&lt;/strong&gt; API V4-Pro giá 1.74$/triệu token vào, 3.48$/triệu token ra. Nếu &amp;gt;200B token/tháng, tự mua phần cứng sẽ rẻ hơn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tinh chỉnh &amp;amp; nghiên cứu:&lt;/strong&gt; Có checkpoint Base cho pretraining, SFT, MIT license cho phép phân phối lại bản tinh chỉnh thương mại.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Không nên tự lưu trữ&lt;/strong&gt;: Prototyper, đội thiếu kinh nghiệm vận hành GPU, workload &amp;lt; 200$/tháng với API hosted. Chi phí vận hành sẽ vượt lợi ích ở quy mô nhỏ.&lt;/p&gt;

&lt;h2 id="yêu-cầu-phần-cứng"&gt;Yêu cầu phần cứng&lt;/h2&gt;

&lt;p&gt;DeepSeek V4: FP4 + FP8 mixed precision. Cần đủ VRAM cho tổng số experts (MoE), không chỉ active params.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Biến thể&lt;/th&gt;
&lt;th&gt;Tổng tham số&lt;/th&gt;
&lt;th&gt;Tham số hoạt động&lt;/th&gt;
&lt;th&gt;VRAM FP8&lt;/th&gt;
&lt;th&gt;VRAM INT4&lt;/th&gt;
&lt;th&gt;Card tối thiểu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash&lt;/td&gt;
&lt;td&gt;284B&lt;/td&gt;
&lt;td&gt;13B&lt;/td&gt;
&lt;td&gt;~500GB&lt;/td&gt;
&lt;td&gt;~140GB&lt;/td&gt;
&lt;td&gt;2 × H100 80GB (FP8) hoặc 1 × H100 (INT4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro&lt;/td&gt;
&lt;td&gt;1.6T&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;td&gt;~2.4TB&lt;/td&gt;
&lt;td&gt;~700GB&lt;/td&gt;
&lt;td&gt;16 × H100 80GB (FP8) hoặc 8 × H100 (INT4)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VRAM cần cho toàn bộ MoE, không chỉ active.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;H200, MI300X thay thế tốt.&lt;/strong&gt; Card 141GB/192GB giảm số card cần.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU consumer không chạy nổi.&lt;/strong&gt; 24GB RTX không đủ, kể cả INT4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple Silicon:&lt;/strong&gt; M3/M4 Max 128GB unified memory chỉ phù hợp dev/test, tốc độ chậm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="bước-1-tải-xuống-trọng-số"&gt;Bước 1: Tải xuống trọng số (weights)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash" rel="noopener noreferrer"&gt;&lt;code&gt;deepseek-ai/DeepSeek-V4-Flash&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro" rel="noopener noreferrer"&gt;&lt;code&gt;deepseek-ai/DeepSeek-V4-Pro&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dùng &lt;code&gt;deepseek-ai/DeepSeek-V4-Flash-Base&lt;/code&gt; / &lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt; để tinh chỉnh.&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-U&lt;/span&gt; &lt;span class="s2"&gt;"huggingface_hub[cli]"&lt;/span&gt;
huggingface-cli login

huggingface-cli download deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir&lt;/span&gt; ./models/deepseek-v4-flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--local-dir-use-symlinks&lt;/span&gt; False
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cần ~500GB ổ cho V4-Flash, vài TB cho V4-Pro. Nếu ở TQ, có thể dùng &lt;a href="https://modelscope.cn/models/deepseek-ai/DeepSeek-V4-Flash" rel="noopener noreferrer"&gt;modelscope.cn&lt;/a&gt; để tải nhanh hơn.&lt;/p&gt;

&lt;h2 id="bước-2-chọn-serving-engine"&gt;Bước 2: Chọn serving engine&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;vLLM:&lt;/strong&gt; Thông lượng cao, tương thích OpenAI, cộng đồng lớn. Nên dùng mặc định.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SGLang:&lt;/strong&gt; Phù hợp workload dùng tool-calling, đầu ra JSON/primitives tốt hơn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cả hai đều hỗ trợ DeepSeek V4 (tuần phát hành V4).&lt;/p&gt;

&lt;h2 id="bước-3-phục-vụ-v4-flash-vllm"&gt;Bước 3: Phục vụ V4-Flash với vLLM&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"vllm&amp;gt;=0.9.0"&lt;/span&gt;

vllm serve deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 2 &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;--dtype&lt;/span&gt; auto &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-prefix-caching&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chú thích:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--tensor-parallel-size 2&lt;/code&gt;: Chạy trên 2 H100. Tăng lên nếu nhiều card.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--max-model-len 1048576&lt;/code&gt;: Cửa sổ ngữ cảnh 1M-token. Giảm xuống nếu cần tiết kiệm VRAM.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--enable-prefix-caching&lt;/code&gt;: Tối ưu cache-hit, tăng throughput.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--dtype auto&lt;/code&gt;: Tự động FP8.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sau khi chạy, client kiểu OpenAI trỏ &lt;code&gt;http://localhost:8000/v1&lt;/code&gt; là hoạt động.&lt;/p&gt;

&lt;h2 id="bước-4-phục-vụ-v4-pro-vllm"&gt;Bước 4: Phục vụ V4-Pro với vLLM&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vllm serve deepseek-ai/DeepSeek-V4-Pro &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;--pipeline-parallel-size&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 524288 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--enable-prefix-caching&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chạy cụm 16 × H100 (8 tensor × 2 pipeline). Có thể tăng context nếu còn VRAM. Hình thức này phù hợp cluster đa node.&lt;/p&gt;

&lt;h2 id="bước-5-phục-vụ-với-sglang"&gt;Bước 5: Phục vụ với SGLang (tool-calling)&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"sglang[all]&amp;gt;=0.4.0"&lt;/span&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; deepseek-ai/DeepSeek-V4-Flash &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tp&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--context-length&lt;/span&gt; 1048576 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 30000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SGLang cho API OpenAI tại &lt;code&gt;http://localhost:30000/v1&lt;/code&gt;. Có DSL &lt;code&gt;lang&lt;/code&gt; cho tool-calling, đầu ra JSON tốt hơn vLLM.&lt;/p&gt;

&lt;h2 id="bước-6-lượng-tử-hóa-gpu-đơn"&gt;Bước 6: Lượng tử hóa cho GPU đơn&lt;/h2&gt;

&lt;p&gt;INT4 giúp V4-Flash chạy 1 × 80GB, giảm chất lượng nhẹ. Hai lựa chọn:&lt;/p&gt;

&lt;h3 id="awq"&gt;AWQ (khuyến nghị)&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;autoawq

python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_path = './models/deepseek-v4-flash'
out_path = './models/deepseek-v4-flash-awq'
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.quantize(tokenizer, quant_config={'w_bit': 4, 'q_group_size': 128})
model.save_quantized(out_path)
tokenizer.save_pretrained(out_path)
"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3 id="gptq"&gt;GPTQ&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;auto-gptq
&lt;span class="c"&gt;# Làm theo mẫu lượng tử hóa GPTQ, tương tự AWQ.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Phục vụ checkpoint lượng tử hóa bằng &lt;code&gt;--quantization awq&lt;/code&gt; hoặc &lt;code&gt;--quantization gptq&lt;/code&gt; khi chạy vLLM.&lt;/p&gt;

&lt;h2 id="bước-7-kiểm-thử-apidog"&gt;Bước 7: Kiểm thử với Apidog&lt;/h2&gt;

&lt;p&gt;Không đưa vào production ngay, cần kiểm thử qua Apidog:&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%2F04%2Fimage-228.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%2F04%2Fimage-228.png" alt="Cách chạy cục bộ DeepSeek V4 trên các máy chủ vLLM hoặc SGLang" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tải và cài đặt Apidog.&lt;/li&gt;
&lt;li&gt;Tạo collection trỏ &lt;code&gt;http://localhost:8000/v1/chat/completions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Dán prompt test đã dùng với API hosted. So sánh phản hồi.&lt;/li&gt;
&lt;li&gt;Test endpoint với context 500K-token để kiểm tra KV cache.&lt;/li&gt;
&lt;li&gt;Chạy quy trình tool-calling end-to-end trước khi kết nối agent.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Collection bạn dùng với &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API hosted&lt;/a&gt; dùng lại được cho server cục bộ, chỉ cần đổi URL base.&lt;/p&gt;

&lt;h2 id="khả-năng-quan-sát-giám-sát"&gt;Khả năng quan sát &amp;amp; giám sát&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Token/s:&lt;/strong&gt; Cả prompt và generate. vLLM: &lt;code&gt;/metrics&lt;/code&gt; Prometheus.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU utilization:&lt;/strong&gt; &lt;code&gt;nvidia-smi&lt;/code&gt; hoặc DCGM. Dưới 70% nghĩa là batch chưa tối ưu.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KV cache-hit rate:&lt;/strong&gt; &lt;code&gt;--enable-prefix-caching&lt;/code&gt; giúp đo. Tỉ lệ hit giảm thì prompt đa dạng quá mức.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request latency p50/p95/p99:&lt;/strong&gt; Nếu p99 tăng, p50 ổn định =&amp;gt; queue nghẽn do request shape.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đẩy 4 metric này lên Grafana hoặc hệ thống monitoring của bạn.&lt;/p&gt;

&lt;h2 id="tinh-chỉnh-v4-base"&gt;Tinh chỉnh checkpoint V4 Base&lt;/h2&gt;

&lt;p&gt;Dùng checkpoint Base cho pretraining/SFT. Ví dụ SFT với LoRA:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"torch&amp;gt;=2.6"&lt;/span&gt; transformers accelerate peft trl

python &lt;span class="nt"&gt;-m&lt;/span&gt; trl sft &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model_name_or_path&lt;/span&gt; deepseek-ai/DeepSeek-V4-Flash-Base &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--dataset_name&lt;/span&gt; your-org/your-sft-set &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output_dir&lt;/span&gt; ./models/v4-flash-custom &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--per_device_train_batch_size&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--gradient_accumulation_steps&lt;/span&gt; 16 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--learning_rate&lt;/span&gt; 2e-5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--bf16&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--use_peft&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--lora_r&lt;/span&gt; 64 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--lora_alpha&lt;/span&gt; 128
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tinh chỉnh toàn bộ tham số V4-Pro là bài toán lớn. Với đội nhỏ, chỉ nên dùng LoRA trên V4-Flash-Base.&lt;/p&gt;

&lt;h2 id="lỗi-thường-gặp"&gt;Lỗi thường gặp&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;OOM khi khởi động:&lt;/strong&gt; &lt;code&gt;--max-model-len&lt;/code&gt; cao quá, hoặc &lt;code&gt;--tensor-parallel-size&lt;/code&gt; thấp. Giảm context/batch hoặc tăng song song.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request đầu chậm:&lt;/strong&gt; vLLM compile kernel lần đầu. Gửi request dummy để khởi động.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lỗi tool-calling:&lt;/strong&gt; DeepSeek encoding hơi khác OpenAI. Dùng SDK support V4 rõ ràng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lỗi FP8 trên card cũ:&lt;/strong&gt; A100 không hỗ trợ FP8. Chạy BF16 (tốn gấp đôi VRAM).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="khi-nào-nên-tự-lưu-trữ"&gt;Khi nào nên tự lưu trữ?&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash, 200B token vào/tháng + 20B ra:&lt;/strong&gt; ~33.6K$ API hosted vs ~20K$/tháng thuê 8 × H100. Tự lưu trữ rẻ hơn ~40%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro, 500B in + 50B out/tháng:&lt;/strong&gt; ~1.04M$ API hosted vs ~35K$/tháng thuê 16 × H100. Tiết kiệm &amp;gt;95%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Break-even V4-Flash khoảng 100B token/tháng. Dưới mức này nên dùng API hosted.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Chạy V4-Flash trên A100 đơn được không?&lt;/strong&gt; Có, nếu lượng tử hóa nặng + context ngắn. INT4 trên A100 80GB chạy 5-15 token/s. Tốt nhất vẫn là H100.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hỗ trợ LoRA?&lt;/strong&gt; Có. Dùng checkpoint Base + pipeline TRL/Axolotl.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server cục bộ tương thích OpenAI không?&lt;/strong&gt; Có. vLLM, SGLang đều có &lt;code&gt;/v1/chat/completions&lt;/code&gt;, &lt;code&gt;/v1/completions&lt;/code&gt;. &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn API hosted&lt;/a&gt; dùng được cho local.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bật thinking mode thế nào?&lt;/strong&gt; Truyền &lt;code&gt;thinking_mode: "thinking"&lt;/code&gt; hoặc &lt;code&gt;"thinking_max"&lt;/code&gt; vào request body. vLLM/SGLang đều hỗ trợ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stream từ server cục bộ được không?&lt;/strong&gt; Được. Đặt &lt;code&gt;stream: true&lt;/code&gt; như API OpenAI/DeepSeek hosted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cách thử nhanh/hợp lý trước khi mua phần cứng?&lt;/strong&gt; Thuê H100 trên RunPod/Lambda vài giờ, chạy V4-Flash INT4, đo throughput với prompt thực tế. Test 10-30$ giúp quyết định nhanh hơn lên kế hoạch 1 tuần.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hướng Dẫn Sử Dụng API DeepSeek V4 Chi Tiết</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:17:40 +0000</pubDate>
      <link>https://forem.com/sebbasstian/huong-dan-su-dung-api-deepseek-v4-chi-tiet-17b3</link>
      <guid>https://forem.com/sebbasstian/huong-dan-su-dung-api-deepseek-v4-chi-tiet-17b3</guid>
      <description>&lt;p&gt;DeepSeek V4 đã ra mắt với API có thể sử dụng ngay từ ngày đầu. Bạn có thể chọn các model &lt;code&gt;deepseek-v4-pro&lt;/code&gt; và &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, sử dụng endpoint tương thích với OpenAI tại &lt;code&gt;https://api.deepseek.com&lt;/code&gt;. Bất kỳ client nào đang dùng GPT-5.5 hoặc API dạng OpenAI đều có thể chuyển sang V4 chỉ bằng việc đổi URL cơ sở.&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;&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%2F04%2Fimage-222.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%2F04%2Fimage-222.png" alt="" width="1200" height="825"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bài viết này hướng dẫn từng bước xác thực, các tham số quan trọng, ví dụ Python &amp;amp; Node, cách dùng thinking mode, gọi hàm, truyền phát (streaming), và quy trình workflow với &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; để kiểm soát chi phí khi phát triển, thử nghiệm API.&lt;/p&gt;

&lt;p&gt;Xem tổng quan sản phẩm tại &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 là gì&lt;/a&gt;, hoặc hướng dẫn dùng miễn phí ở &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cách sử dụng DeepSeek V4 miễn phí&lt;/a&gt;.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;DeepSeek V4 có endpoint &lt;strong&gt;tương thích OpenAI&lt;/strong&gt;:
&lt;code&gt;&lt;a href="https://api.deepseek.com/v1/chat/completions" rel="noopener noreferrer"&gt;https://api.deepseek.com/v1/chat/completions&lt;/a&gt;&lt;/code&gt;
và endpoint &lt;strong&gt;tương thích Anthropic&lt;/strong&gt;:
&lt;code&gt;&lt;a href="https://api.deepseek.com/anthropic" rel="noopener noreferrer"&gt;https://api.deepseek.com/anthropic&lt;/a&gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Model: &lt;code&gt;deepseek-v4-pro&lt;/code&gt; (1.6T, 49B active) và &lt;code&gt;deepseek-v4-flash&lt;/code&gt; (284B, 13B active)&lt;/li&gt;
&lt;li&gt;Hỗ trợ &lt;strong&gt;ngữ cảnh 1M token&lt;/strong&gt; và 3 chế độ thinking: &lt;code&gt;non-thinking&lt;/code&gt;, &lt;code&gt;thinking&lt;/code&gt;, &lt;code&gt;thinking_max&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Nên dùng &lt;code&gt;temperature=1.0, top_p=1.0&lt;/code&gt; theo khuyến nghị của DeepSeek; không dùng mặc định GPT-5.5/Claude&lt;/li&gt;
&lt;li&gt;Các model cũ &lt;code&gt;deepseek-chat&lt;/code&gt;, &lt;code&gt;deepseek-reasoner&lt;/code&gt; sẽ dừng vào &lt;strong&gt;24/07/2026&lt;/strong&gt;; hãy chuyển đổi sớm&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; để phát lại request, so sánh thinking mode và bảo vệ API key&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%2F04%2Fimage-223.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%2F04%2Fimage-223.png" alt="" width="1200" height="887"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Điều kiện tiên quyết
&lt;/h2&gt;

&lt;p&gt;Trước khi bắt đầu, chuẩn bị:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tài khoản developer DeepSeek tại &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt; với số dư ≥ $2 (nếu không sẽ gặp lỗi &lt;code&gt;402 Insufficient Balance&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;API key giới hạn theo project (không dùng key toàn account cho sản xuất)&lt;/li&gt;
&lt;li&gt;SDK truy cập URL dạng OpenAI: Python &lt;code&gt;openai&amp;gt;=1.30.0&lt;/code&gt;, Node &lt;code&gt;&lt;a href="mailto:openai@4.x"&gt;openai@4.x&lt;/a&gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;API client để phát lại request mà không làm đầy terminal. 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; cho workflow thực tế.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Xuất khóa API một lần 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;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Điểm cuối và xác thực
&lt;/h2&gt;

&lt;p&gt;Có hai định dạng endpoint:&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;POST https://api.deepseek.com/v1/chat/completions    # OpenAI format
POST https://api.deepseek.com/anthropic/v1/messages  # Anthropic format
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hầu hết trường hợp nên chọn dạng OpenAI. Xác thực qua Bearer Token trong header &lt;code&gt;Authorization&lt;/code&gt;:&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.deepseek.com/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "user", "content": "Giải thích định tuyến MoE trong hai câu."}
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Phản hồi thành công trả về JSON có &lt;code&gt;choices&lt;/code&gt;, &lt;code&gt;usage&lt;/code&gt; (đếm token đầu vào/ra và &lt;code&gt;reasoning_tokens&lt;/code&gt; nếu bật thinking), cùng &lt;code&gt;id&lt;/code&gt; để theo dõi. Lỗi trả về theo chuẩn OpenAI với &lt;code&gt;error.code&lt;/code&gt; và &lt;code&gt;error.message&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tham số yêu cầu
&lt;/h2&gt;

&lt;p&gt;Mỗi trường đều ảnh hưởng đến chi phí/hành vi. Dưới đây là bảng tham số chính cho &lt;code&gt;deepseek-v4-pro&lt;/code&gt;/&lt;code&gt;deepseek-v4-flash&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tham số&lt;/th&gt;
&lt;th&gt;Loại&lt;/th&gt;
&lt;th&gt;Giá trị&lt;/th&gt;
&lt;th&gt;Lưu ý&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;deepseek-v4-pro&lt;/code&gt;, &lt;code&gt;deepseek-v4-flash&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Bắt buộc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;messages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;cặp vai trò/nội dung&lt;/td&gt;
&lt;td&gt;Bắt buộc. Cùng schema với OpenAI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;thinking_mode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;non-thinking&lt;/code&gt;, &lt;code&gt;thinking&lt;/code&gt;, &lt;code&gt;thinking_max&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Mặc định là &lt;code&gt;non-thinking&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;temperature&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;0 đến 2&lt;/td&gt;
&lt;td&gt;DeepSeek khuyến nghị 1.0.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;top_p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;0 đến 1&lt;/td&gt;
&lt;td&gt;DeepSeek khuyến nghị 1.0.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;max_tokens&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;1 đến 131.072&lt;/td&gt;
&lt;td&gt;Giới hạn độ dài đầu ra.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;stream&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;bool&lt;/td&gt;
&lt;td&gt;true hoặc false&lt;/td&gt;
&lt;td&gt;Bật truyền phát SSE.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tools&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;đặc tả công cụ OpenAI&lt;/td&gt;
&lt;td&gt;Để gọi hàm.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tool_choice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string hoặc object&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;required&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;, hoặc công cụ cụ thể&lt;/td&gt;
&lt;td&gt;Kiểm soát việc sử dụng công cụ.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;response_format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;object&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{"type": "json_object"}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Đầu ra chế độ JSON.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;seed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;int&lt;/td&gt;
&lt;td&gt;bất kỳ số nguyên nào&lt;/td&gt;
&lt;td&gt;Để tái tạo kết quả.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;presence_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;-2 đến 2&lt;/td&gt;
&lt;td&gt;Phạt các chủ đề lặp lại.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;frequency_penalty&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;float&lt;/td&gt;
&lt;td&gt;-2 đến 2&lt;/td&gt;
&lt;td&gt;Phạt các token lặp lại.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;thinking_mode&lt;/code&gt; quyết định chi phí nhiều nhất:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;non-thinking&lt;/code&gt;: không suy luận, trả về rất nhanh như V3.2&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;thinking&lt;/code&gt;: bật block suy luận, tốn thêm token, tăng chính xác ở code/toán&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;thinking_max&lt;/code&gt;: max quality, tốn nhiều token nhất, chỉ dùng khi thực sự cần và với context ≥384K&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Client Python
&lt;/h2&gt;

&lt;p&gt;SDK &lt;code&gt;openai&lt;/code&gt; dùng được bằng cách chỉ định &lt;code&gt;base_url&lt;/code&gt;. Wrapper như LangChain, LlamaIndex, DSPy đều tương thích.&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.deepseek.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;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;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="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;system&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;Trả lời chỉ bằng mã.&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;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 hàm Rust để làm mượt các sự kiện.&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;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;thinking_mode&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;thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;choice&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nội dung:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&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;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Token suy luậ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;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;reasoning_tokens&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tổng số token:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="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;total_tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dùng &lt;code&gt;extra_body&lt;/code&gt; để truyền tham số đặc biệt như &lt;code&gt;thinking_mode&lt;/code&gt; qua SDK OpenAI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client Node
&lt;/h2&gt;

&lt;p&gt;Cách gọi với NodeJS:&lt;br&gt;
&lt;/p&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="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DEEPSEEK_API_KEY&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.deepseek.com/v1&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;deepseek-v4-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 trình tối ưu hóa Muon bằng tiếng Anh đơn giản.&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="na"&gt;thinking_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;thinking&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;top_p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&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;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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cách sử dụng:&lt;/span&gt;&lt;span class="dl"&gt;"&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;usage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SDK Node nhận các trường lạ như &lt;code&gt;thinking_mode&lt;/code&gt; trực tiếp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phản hồi truyền phát (Streaming)
&lt;/h2&gt;

&lt;p&gt;Để nhận phản hồi dạng stream, truyền &lt;code&gt;stream=True&lt;/code&gt; và lặp qua từng chunk SSE:&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;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="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;Truyền phát một bài luận 300 từ về MoE.&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="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;thinking_mode&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;non-thinking&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;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="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&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;Nếu bật thinking mode, &lt;code&gt;delta.reasoning_content&lt;/code&gt; sẽ chứa trace suy luận. Bạn có thể hiển thị trace này hoặc bỏ qua.&lt;/p&gt;

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

&lt;p&gt;DeepSeek V4 hỗ trợ schema gọi hàm 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="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_weather&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ề thời tiết hiện tại cho một thành phố.&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;city&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;unit&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;enum&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;c&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;f&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;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;city&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="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;deepseek-v4-pro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="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;Thời tiết ở Lagos theo độ C?&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="n"&gt;tool_choice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&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;thinking_mode&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;thinking&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;tool_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;tool_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;tool_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;Sau đó, bạn gọi hàm thật, trả kết quả về &lt;code&gt;role: "tool"&lt;/code&gt; rồi tiếp tục gọi API. Cách này giống hệt với loop sử dụng function calling của OpenAI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chế độ JSON
&lt;/h2&gt;

&lt;p&gt;Để nhận output JSON chuẩn, truyền &lt;code&gt;response_format&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;deepseek-v4-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;system&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;Trả lời bằng một đối tượng JSON duy nhất.&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;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óm tắt ghi chú phát hành này dưới dạng {tiêu đề, ngày, gạch đầu dò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="n"&gt;response_format&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;json_object&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;thinking_mode&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;non-thinking&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;Chế độ JSON buộc output hợp lệ JSON nhưng không enforce schema. Để xác thực schema, dùng Pydantic hoặc Zod ở phía client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xây dựng bộ sưu tập trong Apidog
&lt;/h2&gt;

&lt;p&gt;Việc phát lại request trực tiếp từ terminal dễ lãng phí credit &amp;amp; khó so sánh. Quy trình hiệu quả:&lt;/p&gt;

&lt;ol&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; và tạo project mới&lt;/li&gt;
&lt;li&gt;Khai báo môi trường với biến bí mật &lt;code&gt;{{DEEPSEEK_API_KEY}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Lưu request POST đến &lt;code&gt;{{BASE_URL}}/chat/completions&lt;/code&gt;, header &lt;code&gt;Authorization: Bearer {{DEEPSEEK_API_KEY}}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Tham số hóa &lt;code&gt;model&lt;/code&gt; và &lt;code&gt;thinking_mode&lt;/code&gt; để test A/B giữa các biến thể&lt;/li&gt;
&lt;li&gt;Dùng viewer để kiểm tra &lt;code&gt;usage.reasoning_tokens&lt;/code&gt; và xác định chi phí thực tế từng lần chạy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nếu bạn đã có &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;bộ sưu tập API GPT-5.5&lt;/a&gt; trong Apidog, chỉ cần đổi base URL thành &lt;code&gt;&lt;a href="https://api.deepseek.com/v1" rel="noopener noreferrer"&gt;https://api.deepseek.com/v1&lt;/a&gt;&lt;/code&gt; và model ID để so sánh giữa hai provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xử lý lỗi
&lt;/h2&gt;

&lt;p&gt;DeepSeek trả lỗi theo chuẩn OpenAI. Một số mã lỗi thường gặp:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mã&lt;/th&gt;
&lt;th&gt;Ý nghĩa&lt;/th&gt;
&lt;th&gt;Khắc phục&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;400&lt;/td&gt;
&lt;td&gt;Yêu cầu không hợp lệ&lt;/td&gt;
&lt;td&gt;Kiểm tra schema JSON, đặc biệt &lt;code&gt;messages&lt;/code&gt; và &lt;code&gt;tools&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401&lt;/td&gt;
&lt;td&gt;Khóa không hợp lệ&lt;/td&gt;
&lt;td&gt;Tạo lại tại &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;402&lt;/td&gt;
&lt;td&gt;Số dư không đủ&lt;/td&gt;
&lt;td&gt;Nạp tiền vào tài khoản.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;403&lt;/td&gt;
&lt;td&gt;Mô hình không được phép&lt;/td&gt;
&lt;td&gt;Kiểm tra phạm vi key và chính tả model ID.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;422&lt;/td&gt;
&lt;td&gt;Tham số ngoài phạm vi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;max_tokens&lt;/code&gt; hoặc &lt;code&gt;thinking_mode&lt;/code&gt; có thể sai.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;429&lt;/td&gt;
&lt;td&gt;Giới hạn tốc độ&lt;/td&gt;
&lt;td&gt;Tạm dừng, thử lại với exponential backoff.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Lỗi máy chủ&lt;/td&gt;
&lt;td&gt;Thử lại 1 lần. Nếu lặp lại, kiểm tra trang trạng thái.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503&lt;/td&gt;
&lt;td&gt;Quá tải&lt;/td&gt;
&lt;td&gt;Dùng V4-Flash hoặc thử lại sau 30s.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nên wrap mọi API call trong hàm retry, xử lý lỗi 429, 5xx với backoff lũy thừa. Không tự động retry lỗi 4xx.&lt;/p&gt;

&lt;h2&gt;
  
  
  Các mẫu kiểm soát chi phí
&lt;/h2&gt;

&lt;p&gt;Áp dụng 4 mẫu sau để tối ưu chi phí:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mặc định dùng V4-Flash&lt;/strong&gt;. Chỉ dùng V4-Pro khi đã đo được improvement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giới hạn &lt;code&gt;thinking_max&lt;/code&gt; bằng flag&lt;/strong&gt;. Chỉ bật khi cần chất lượng cao, vì đây là mode đắt nhất.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giới hạn &lt;code&gt;max_tokens&lt;/code&gt;&lt;/strong&gt;. Hầu hết câu trả lời nằm trong 2000 token output. 1M context dành cho input.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ghi log &lt;code&gt;usage&lt;/code&gt; mỗi lần gọi&lt;/strong&gt;. Theo dõi input, output, reasoning token để phát hiện bất thường.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Di chuyển từ các mô hình DeepSeek cũ hơn
&lt;/h2&gt;

&lt;p&gt;Các model ID cũ &lt;code&gt;deepseek-chat&lt;/code&gt;, &lt;code&gt;deepseek-reasoner&lt;/code&gt; sẽ dừng vào 24/07/2026. Di chuyển chỉ cần đổi giá trị model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-  model="deepseek-chat"
&lt;/span&gt;&lt;span class="gi"&gt;+  model="deepseek-v4-pro"
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nên so sánh A/B trong Apidog trước khi triển khai production để đảm bảo chất lượng cải thiện, đồng thời chuẩn bị cho việc ngừng hỗ trợ model cũ.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;API DeepSeek V4 đã sẵn sàng cho production chưa?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. API vận hành từ 23/04/2026, nền tảng ổn định.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4 có hỗ trợ format Anthropic không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Chỉ cần trỏ sang &lt;code&gt;&lt;a href="https://api.deepseek.com/anthropic/v1/messages" rel="noopener noreferrer"&gt;https://api.deepseek.com/anthropic/v1/messages&lt;/a&gt;&lt;/code&gt;, gửi payload dạng Anthropic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context window bao nhiêu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
1 triệu token trên cả V4-Pro và V4-Flash. &lt;code&gt;thinking_max&lt;/code&gt; nên dùng context tối thiểu 384K.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Đếm token đầu vào thế nào?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Dùng tokenizer OpenAI để ước lượng trước khi gửi. Số chính xác trả về trong trường &lt;code&gt;usage&lt;/code&gt; của response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có hỗ trợ fine-tuning qua API không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Chưa. Hiện chỉ fine-tune qua checkpoint base trên Hugging Face.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API có miễn phí dùng thử không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không có free tier, nhưng tài khoản mới đôi khi nhận được credit dùng thử.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Hướng Dẫn Sử Dụng DeepSeek V4: Web Chat, API và Tự Lưu Trữ</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:16:46 +0000</pubDate>
      <link>https://forem.com/sebbasstian/huong-dan-su-dung-deepseek-v4-web-chat-api-va-tu-luu-tru-5og</link>
      <guid>https://forem.com/sebbasstian/huong-dan-su-dung-deepseek-v4-web-chat-api-va-tu-luu-tru-5og</guid>
      <description>&lt;p&gt;DeepSeek V4 được phát hành ngày 23/4/2026 với 4 checkpoint, API trực tiếp và trọng số MIT trên Hugging Face. Bạn có thể dùng ngay qua web, gọi API sản xuất hoặc tự triển khai tại chỗ. Bài này hướng dẫn chi tiết từng cách, các bước thực hiện, ưu nhược điểm và quy trình sẵn sàng cho sản xuất.&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;Nếu bạn cần tổng quan sản phẩm, xem &lt;a href="http://apidog.com/blog/what-is-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DeepSeek V4 là gì&lt;/a&gt;. Cần hướng dẫn API, xem &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API DeepSeek V4&lt;/a&gt;. Muốn dùng miễn phí, đọc &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cách sử dụng DeepSeek V4 miễn phí&lt;/a&gt;. Khi sẵn sàng test thực tế, tải &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; để chuẩn bị bộ sưu tập.&lt;/p&gt;

&lt;h2 id="tldr-tóm-tắt"&gt;TL;DR (Tóm tắt)&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Truy cập nhanh nhất: &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;. Chat web miễn phí, mặc định V4-Pro, ba chế độ suy luận.&lt;/li&gt;
&lt;li&gt;API sản xuất: &lt;code&gt;https://api.deepseek.com/v1/chat/completions&lt;/code&gt;, model &lt;code&gt;deepseek-v4-pro&lt;/code&gt; hoặc &lt;code&gt;deepseek-v4-flash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tự host: tải trọng số từ &lt;a href="https://huggingface.co/collections/deepseek-ai/deepseek-v4" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;, chạy script &lt;code&gt;/inference&lt;/code&gt; trong repo.&lt;/li&gt;
&lt;li&gt;Chọn **Non-Think** cho định tuyến/phân loại, **Think High** cho code/phân tích, **Think Max** khi cần độ chính xác tối đa.&lt;/li&gt;
&lt;li&gt;Sampling khuyến nghị: &lt;code&gt;temperature=1.0, top_p=1.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Dùng &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; làm client API; format OpenAI nên có thể dùng lại request với DeepSeek, OpenAI, Anthropic.&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%2F04%2Fimage-220.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%2F04%2Fimage-220.png" alt="" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="chọn-đường-dẫn-phù-hợp-cho-khối-lượng-công-việc-của-bạn"&gt;Chọn đường dẫn phù hợp cho khối lượng công việc của bạn&lt;/h2&gt;

&lt;p&gt;Bốn đường dẫn thực tế, mỗi loại phù hợp từng use case:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Đường dẫn&lt;/th&gt;
&lt;th&gt;Chi phí&lt;/th&gt;
&lt;th&gt;Thời gian thiết lập&lt;/th&gt;
&lt;th&gt;Tốt nhất cho&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://chat.deepseek.com" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Miễn phí&lt;/td&gt;
&lt;td&gt;30 giây&lt;/td&gt;
&lt;td&gt;Kiểm tra nhanh, công việc tạm thời&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API DeepSeek&lt;/td&gt;
&lt;td&gt;Thanh toán theo token&lt;/td&gt;
&lt;td&gt;5 phút&lt;/td&gt;
&lt;td&gt;Sản xuất, tác nhân, công việc hàng loạt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash tự host&lt;/td&gt;
&lt;td&gt;Chỉ chi phí phần cứng&lt;/td&gt;
&lt;td&gt;Vài giờ&lt;/td&gt;
&lt;td&gt;Tuân thủ tại chỗ, suy luận offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro tự host&lt;/td&gt;
&lt;td&gt;Chỉ chi phí cụm&lt;/td&gt;
&lt;td&gt;Một ngày&lt;/td&gt;
&lt;td&gt;Nghiên cứu, tinh chỉnh tùy chỉnh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter / aggregator&lt;/td&gt;
&lt;td&gt;Thanh toán theo token&lt;/td&gt;
&lt;td&gt;2 phút&lt;/td&gt;
&lt;td&gt;Dự phòng đa nhà cung cấp&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2 id="đường-dẫn-1-sử-dụng-v4-trong-trò-chuyện-web"&gt;Đường dẫn 1: Sử dụng V4 qua giao diện chat web&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Truy cập &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Đăng nhập bằng email, Google hoặc WeChat.&lt;/li&gt;
&lt;li&gt;Chọn model ở đầu editor: V4-Pro mặc định, chuyển Non-Think / Think High / Think Max tùy tác vụ.&lt;/li&gt;
&lt;li&gt;Bắt đầu chat, upload file nếu cần.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Chat web hỗ trợ upload file, tìm kiếm web, ngữ cảnh 1 triệu token. Tốt cho: debug, tóm tắt file PDF lớn, so sánh với GPT-5.5/Claude. Không phù hợp cho tự động hóa hoặc phát lại lặp đi lặp lại.&lt;/p&gt;

&lt;h2 id="đường-dẫn-2-sử-dụng-api-deepseek"&gt;Đường dẫn 2: Sử dụng API DeepSeek&lt;/h2&gt;

&lt;p&gt;API DeepSeek tương thích OpenAI, giữ ID model &lt;code&gt;deepseek-v4-pro&lt;/code&gt; và &lt;code&gt;deepseek-v4-flash&lt;/code&gt; sau 24/7/2026.&lt;/p&gt;

&lt;h3 id="lấy-khóa-api"&gt;Lấy khóa API&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Đăng ký tại &lt;a href="https://platform.deepseek.com/" rel="noopener noreferrer"&gt;platform.deepseek.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Thêm phương thức thanh toán (tối thiểu $2).&lt;/li&gt;
&lt;li&gt;Tạo API Key tại mục &lt;strong&gt;API Keys&lt;/strong&gt;, copy ngay vì chỉ hiển thị một lần.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Xuất khóa cho client:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;export DEEPSEEK_API_KEY="sk-..."
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="yêu-cầu-tối-thiểu-khả-thi"&gt;Yêu cầu tối thiểu khả thi&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;curl https://api.deepseek.com/v1/chat/completions \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "user", "content": "Refactor this Python function to async. Reply with code only."}
    ],
    "thinking_mode": "thinking"
  }'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Thay &lt;code&gt;deepseek-v4-pro&lt;/code&gt; bằng &lt;code&gt;deepseek-v4-flash&lt;/code&gt; nếu muốn tiết kiệm chi phí. Đổi &lt;code&gt;thinking&lt;/code&gt; thành &lt;code&gt;non-thinking&lt;/code&gt; nếu cần tốc độ.&lt;/p&gt;

&lt;h3 id="client-python"&gt;Client Python&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/v1",
)

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {"role": "system", "content": "You are a concise senior engineer."},
        {"role": "user", "content": "Explain the CSA+HCA hybrid attention stack."},
    ],
    extra_body={"thinking_mode": "thinking_max"},
    temperature=1.0,
    top_p=1.0,
)

print(response.choices[0].message.content)
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="client-node"&gt;Client Node&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: "https://api.deepseek.com/v1",
});

const response = await client.chat.completions.create({
  model: "deepseek-v4-flash",
  messages: [{ role: "user", content: "Write a fizzbuzz in Rust." }],
  temperature: 1.0,
  top_p: 1.0,
});

console.log(response.choices[0].message.content);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Xem chi tiết tham số, xử lý lỗi trong &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API DeepSeek V4&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="đường-dẫn-3-lặp-lại-với-apidog"&gt;Đường dẫn 3: Lặp lại với Apidog&lt;/h2&gt;

&lt;p&gt;Curl tốt cho một lần test, nhưng chạy lại nhiều lần sẽ lãng phí và khó kiểm soát. Apidog giúp bạn lưu, phát lại, so sánh kết quả dễ dàng.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tải Apidog cho Mac/Win/Linux từ &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;apidog.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tạo project API mới, thêm request POST tới &lt;code&gt;https://api.deepseek.com/v1/chat/completions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Thêm header &lt;code&gt;Authorization: Bearer {{DEEPSEEK_API_KEY}}&lt;/code&gt;, lưu biến môi trường.&lt;/li&gt;
&lt;li&gt;Dán body JSON, lưu lại. Từ đây chỉ cần nhấp để chạy lại, đổi prompt, đổi mode nhanh chóng.&lt;/li&gt;
&lt;li&gt;Dùng viewer tích hợp để so sánh trace giữa Non-Think vs Think Max trên cùng prompt.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cùng bộ sưu tập có thể chứa request GPT-5.5, Claude, DeepSeek V4 – tiện cho A/B testing, theo dõi chi phí, logs token. Nếu đã dùng Apidog cho API AI khác, chỉ cần đổi base URL là xong.&lt;/p&gt;

&lt;h2 id="đường-dẫn-4-tự-host-v4-flash"&gt;Đường dẫn 4: Tự host V4-Flash&lt;/h2&gt;

&lt;p&gt;Yêu cầu compliance, airgap hoặc chi phí khiến bạn phải tự host? MIT license cho phép bạn làm chủ giải pháp này.&lt;/p&gt;

&lt;h3 id="phần-cứng"&gt;Phần cứng&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;V4-Flash (13B, tổng 284B):&lt;/strong&gt; 2-4 card H100/H200/MI300X FP8. INT4 có thể chạy trên 1 card 80GB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro (49B, tổng 1.6T):&lt;/strong&gt; Cần cụm 16-32 H100 cho inference sản xuất.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id="lấy-trọng-số"&gt;Lấy trọng số&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;pip install -U "huggingface_hub[cli]"
huggingface-cli login
huggingface-cli download deepseek-ai/DeepSeek-V4-Flash \
  --local-dir ./models/deepseek-v4-flash \
  --local-dir-use-symlinks False
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Tải V4-Flash nặng khoảng 500GB (FP8), V4-Pro vài TB.&lt;/p&gt;

&lt;h3 id="chạy-suy-luận"&gt;Chạy suy luận&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;pip install "vllm&amp;gt;=0.9.0"

vllm serve deepseek-ai/DeepSeek-V4-Flash \
  --tensor-parallel-size 4 \
  --max-model-len 1048576 \
  --dtype auto
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Khi vLLM đã chạy, trỏ client OpenAI đến &lt;code&gt;http://localhost:8000/v1&lt;/code&gt;. Có thể dùng lại collection Apidog, chỉ thay base URL.&lt;/p&gt;

&lt;h2 id="thúc-đẩy-v4-hiệu-quả"&gt;Thúc đẩy V4 hiệu quả&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Luôn chỉ định &lt;code&gt;thinking_mode&lt;/code&gt; (non-thinking/thinking/thinking_max) rõ ràng.&lt;/li&gt;
&lt;li&gt;Lời nhắc hệ thống dùng để định hình tính cách, không nhồi task logic vào system prompt – đặt logic vào user message.&lt;/li&gt;
&lt;li&gt;Bài mã nên kèm test case rõ ràng. Paste đầu ra kiểm thử fail, model sẽ sửa code cho pass dễ hơn.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Với context dài, đặt tài liệu quan trọng ở đầu/cuối input. V4 vẫn có bias về tính gần đây và ưu tiên context đầu/cuối.&lt;/p&gt;

&lt;h2 id="kiểm-soát-chi-phí"&gt;Kiểm soát chi phí&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mặc định dùng V4-Flash. Chỉ chuyển V4-Pro khi thật sự cần.&lt;/li&gt;
&lt;li&gt;Mặc định Non-Think. Chỉ tăng lên Think High/Max khi cần độ chính xác cao.&lt;/li&gt;
&lt;li&gt;Giới hạn &lt;code&gt;max_tokens&lt;/code&gt;. Output thực tế thường 2.000 tokens, không cần context 1M trong mọi case.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trong Apidog, dùng biến môi trường cho &lt;code&gt;DEEPSEEK_API_KEY&lt;/code&gt; để tách tài khoản test và production. &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; tự động log số token mỗi response – giúp phát hiện prompt quá dài.&lt;/p&gt;

&lt;h2 id="di-chuyển-từ-deepseek-v3-hoặc-các-mô-hình-khác"&gt;Di chuyển từ DeepSeek V3 hoặc model khác&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Từ &lt;code&gt;deepseek-chat&lt;/code&gt;/&lt;code&gt;deepseek-reasoner&lt;/code&gt;:&lt;/strong&gt; Đổi model thành &lt;code&gt;deepseek-v4-pro&lt;/code&gt; hoặc &lt;code&gt;deepseek-v4-flash&lt;/code&gt; trước 24/7/2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Từ OpenAI GPT-5.x:&lt;/strong&gt; Đổi base URL thành &lt;code&gt;https://api.deepseek.com/v1&lt;/code&gt;, giữ format request. Xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GPT-5.5&lt;/a&gt; để song song.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Từ Anthropic Claude:&lt;/strong&gt; Đổi endpoint &lt;code&gt;https://api.deepseek.com/anthropic&lt;/code&gt; hoặc chuyển sang format OpenAI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="câu-hỏi-thường-gặp"&gt;Câu hỏi thường gặp&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cần tài khoản trả phí không?&lt;/strong&gt; Chat web miễn phí. API cần nạp tối thiểu $2. Xem &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cách dùng miễn phí&lt;/a&gt; nếu muốn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nên mặc định dùng model nào?&lt;/strong&gt; Bắt đầu với V4-Flash Non-Think, đo chất lượng và chỉ đổi khi cần.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có thể chạy V4 trên MacBook không?&lt;/strong&gt; V4-Flash chạy trên M3 Max/M4 Max 128GB RAM (INT4) nhưng chậm. V4-Pro không chạy được. Nên dùng API hoặc chat web cho laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4 hỗ trợ tool/function call không?&lt;/strong&gt; Có. Endpoint OpenAI chấp nhận array &lt;code&gt;tools&lt;/code&gt; và trả về &lt;code&gt;tool_calls&lt;/code&gt; chuẩn. Endpoint Anthropic dùng schema tool gốc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Làm sao truyền tải phản hồi?&lt;/strong&gt; Đặt &lt;code&gt;stream: true&lt;/code&gt; trong body. SSE stream chuẩn OpenAI. Dùng lại lib OpenAI là đủ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Có rate limit không?&lt;/strong&gt; API host công bố tại &lt;a href="https://api-docs.deepseek.com/" rel="noopener noreferrer"&gt;api-docs.deepseek.com&lt;/a&gt;. Tự host chỉ giới hạn bởi phần cứng.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>DeepSeek V4 Là Gì?</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 04:14:15 +0000</pubDate>
      <link>https://forem.com/sebbasstian/deepseek-v4-la-gi-a1e</link>
      <guid>https://forem.com/sebbasstian/deepseek-v4-la-gi-a1e</guid>
      <description>&lt;p&gt;DeepSeek đã phát hành V4 vào ngày 23 tháng 4 năm 2026, và đây là một bản nâng cấp lớn. Phòng thí nghiệm Hàng Châu công bố đồng thời bốn checkpoint, dẫn đầu là DeepSeek-V4-Pro với 1,6 nghìn tỷ tham số, giấy phép MIT, và cửa sổ ngữ cảnh 1 triệu token. Phiên bản nhỏ hơn, DeepSeek-V4-Flash, có 284 tỷ tham số và ngữ cảnh tương tự. Các điểm chuẩn cho thấy Pro vượt Claude Opus 4.6 trên LiveCodeBench/Codeforces, xấp xỉ GPT-5.4 xHigh trên MMLU-Pro.&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;Nếu bạn đang cân nhắc chuyển từ Claude, GPT-5.5 hoặc Qwen sang DeepSeek V4, bài viết này sẽ cung cấp tổng quan về mô hình, so sánh với V3.2, chi tiết kiến trúc, các điểm benchmark quan trọng và hướng dẫn thực tiễn triển khai.&lt;/p&gt;

&lt;p&gt;Xem thêm &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API DeepSeek V4&lt;/a&gt;, &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn truy cập miễn phí&lt;/a&gt; và &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn sử dụng DeepSeek V4&lt;/a&gt;. Định dạng request tương thích OpenAI, bạn có thể tạo collection trước 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; mà không cần API key.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V4&lt;/strong&gt; là họ mô hình Mixture-of-Experts phát hành 23/4/2026, giấy phép &lt;strong&gt;MIT&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ra mắt 4 checkpoint: &lt;strong&gt;V4-Pro&lt;/strong&gt;, &lt;strong&gt;V4-Pro-Base&lt;/strong&gt;, &lt;strong&gt;V4-Flash&lt;/strong&gt;, &lt;strong&gt;V4-Flash-Base&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V4-Pro:&lt;/strong&gt; 1,6T tham số, 49B hoạt động. &lt;strong&gt;V4-Flash:&lt;/strong&gt; 284B, 13B hoạt động.&lt;/li&gt;
&lt;li&gt;Cửa sổ ngữ cảnh &lt;strong&gt;1M token&lt;/strong&gt;, 3 chế độ suy luận: Non-Think, Think High, Think Max.&lt;/li&gt;
&lt;li&gt;Benchmark nổi bật: &lt;strong&gt;LiveCodeBench 93.5&lt;/strong&gt;, &lt;strong&gt;Codeforces 3206&lt;/strong&gt;, &lt;strong&gt;MMLU-Pro 87.5&lt;/strong&gt; (Pro).&lt;/li&gt;
&lt;li&gt;API tại &lt;code&gt;api.deepseek.com&lt;/code&gt;, model ID: &lt;code&gt;deepseek-v4-pro&lt;/code&gt; và &lt;code&gt;deepseek-v4-flash&lt;/code&gt;; trọng số trên Hugging Face, ModelScope.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DeepSeek V4 là gì?
&lt;/h2&gt;

&lt;p&gt;DeepSeek V4 kế nhiệm V3/V3.2 với kiến trúc Mixture-of-Experts (MoE) nâng cấp. V4-Pro chỉ kích hoạt 49B/1,6T tham số mỗi token, nên chi phí tính toán tương đương mô hình dense 50B. Tham khảo &lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro" rel="noopener noreferrer"&gt;DeepSeek V4 trên Hugging Face&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.amazonaws.com%2Fuploads%2Farticles%2Fpejjjliky55psxexo3l2.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.amazonaws.com%2Fuploads%2Farticles%2Fpejjjliky55psxexo3l2.png" alt="DeepSeek V4 architecture" width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bốn checkpoint:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek-V4-Pro&lt;/strong&gt;: 1.6T, 49B hoạt động, ngữ cảnh 1M. Gọi qua API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek-V4-Pro-Base&lt;/strong&gt;: Pretrain, chưa finetune. Dành cho nghiên cứu/tinh chỉnh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek-V4-Flash&lt;/strong&gt;: 284B, 13B hoạt động, ngữ cảnh 1M. Tối ưu độ trễ, chạy được trên 2-3 H100.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek-V4-Flash-Base&lt;/strong&gt;: Pretrain cho Flash.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tất cả đều MIT license. Khác biệt lớn: V4-Pro trọng số mở, bạn có thể tải về, tùy biến, triển khai không phí bản quyền.&lt;/p&gt;

&lt;h2&gt;
  
  
  Những thay đổi so với V3.2
&lt;/h2&gt;

&lt;p&gt;V4 cải tiến vượt trội về kiến trúc attention và pipeline huấn luyện.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Khả năng&lt;/th&gt;
&lt;th&gt;V3.2&lt;/th&gt;
&lt;th&gt;V4-Pro&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;685B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.6T&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tham số hoạt động&lt;/td&gt;
&lt;td&gt;37B&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49B&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cửa sổ ngữ cảnh&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1M&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLOPs suy luận (1M)&lt;/td&gt;
&lt;td&gt;Cơ sở&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;27%&lt;/strong&gt; của V3.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KV-cache (1M)&lt;/td&gt;
&lt;td&gt;Cơ sở&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;10%&lt;/strong&gt; của V3.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Độ chính xác&lt;/td&gt;
&lt;td&gt;FP8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;FP4 + FP8 hỗn hợp&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Giấy phép&lt;/td&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;MIT&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chế độ suy luận&lt;/td&gt;
&lt;td&gt;Đơn lẻ&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Ba&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ba cải tiến chính:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Attention lai&lt;/strong&gt;: Kết hợp Compressed Sparse Attention &amp;amp; Heavily Compressed Attention giúp giảm KV-cache chỉ còn 10%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifold-Constrained Hyper-Connections&lt;/strong&gt;: Ổn định gradient khi tăng chiều sâu mô hình.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tối ưu hóa Muon&lt;/strong&gt;: Tăng tốc hội tụ so với AdamW.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tập dữ liệu huấn luyện vượt 32 nghìn tỷ token, huấn luyện sau chia 2 giai đoạn: pretrain chuyên gia, rồi policy distillation.&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.amazonaws.com%2Fuploads%2Farticles%2F0ohkm6y7q9i5q2swecu2.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.amazonaws.com%2Fuploads%2Farticles%2F0ohkm6y7q9i5q2swecu2.png" alt="DeepSeek V4 training improvements" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Điểm chuẩn quan trọng
&lt;/h2&gt;

&lt;p&gt;V4-Pro dẫn đầu về code và kiến thức, còn hạn chế ở truy xuất ngữ cảnh dài.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqn2q9hlfiouvipu8z13b.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.amazonaws.com%2Fuploads%2Farticles%2Fqn2q9hlfiouvipu8z13b.png" alt="DeepSeek V4 benchmark" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;V4-Flash: MMLU-Pro 86.2, GPQA Diamond 88.1, LiveCodeBench 91.6, Codeforces 3052, SWE Verified 79.0.&lt;/li&gt;
&lt;li&gt;V4-Pro mạnh nhất cho lập trình tự động, suy luận phức tạp.&lt;/li&gt;
&lt;li&gt;Claude vẫn nhỉnh hơn ở truy xuất 1M token.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ba chế độ suy luận
&lt;/h2&gt;

&lt;p&gt;Chọn mode phù hợp giúp tối ưu chi phí và chất lượng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non-Think&lt;/strong&gt;: Phản hồi nhanh, không sinh chuỗi suy nghĩ. Dùng cho phân loại, định tuyến, tóm tắt ngắn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Think High&lt;/strong&gt;: Mặc định cho task khó, sinh token suy luận trước khi trả lời, lập kế hoạch tool-call, kiểm tra output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Think Max&lt;/strong&gt;: Dấu vết suy luận dài, tự phê bình mạnh, khuyến nghị ngữ cảnh ≥ 384K token. Đạt điểm LiveCodeBench cao nhất nhưng tốn token.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Chuyển đổi qua tham số API &lt;code&gt;thinking_mode&lt;/code&gt;. Đề xuất sampling: &lt;code&gt;temperature=1.0, top_p=1.0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiến trúc đơn giản hoá
&lt;/h2&gt;

&lt;p&gt;Ba yếu tố then chốt:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Attention lai&lt;/strong&gt;: Hầu hết layer dùng Compressed Sparse Attention, một số ít layer dùng Heavily Compressed Attention để tối ưu chi phí ở 1M token.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manifold-Constrained Hyper-Connections&lt;/strong&gt;: Kiểm soát residual để tránh hỗn loạn gradient khi stack nhiều layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Muon optimizer&lt;/strong&gt;: Thay AdamW, hội tụ nhanh hơn cho MoE.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Khả năng triển khai thực tế
&lt;/h2&gt;

&lt;p&gt;Ảnh chụp nhanh (24/4/2026):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nền tảng&lt;/th&gt;
&lt;th&gt;Truy cập&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Chat web miễn phí, V4-Pro mặc định, cần đăng nhập&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API DeepSeek&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;api.deepseek.com&lt;/code&gt; với model ID &lt;code&gt;deepseek-v4-pro&lt;/code&gt; và &lt;code&gt;deepseek-v4-flash&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trọng số Hugging Face&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro" rel="noopener noreferrer"&gt;V4-Pro&lt;/a&gt;, &lt;a href="https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash" rel="noopener noreferrer"&gt;V4-Flash&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ModelScope&lt;/td&gt;
&lt;td&gt;Bản sao trọng số cho người dùng tại Trung Quốc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter &amp;amp; aggregator&lt;/td&gt;
&lt;td&gt;Sắp có&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;deepseek-chat&lt;/code&gt;/&lt;code&gt;reasoner&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Ngừng hỗ trợ từ 24/7/2026&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Lưu ý:&lt;/strong&gt; Nếu còn dùng &lt;code&gt;deepseek-chat&lt;/code&gt;, cần chuyển sang &lt;code&gt;deepseek-v4-pro&lt;/code&gt; hoặc &lt;code&gt;deepseek-v4-flash&lt;/code&gt; trong vòng 3 tháng.&lt;/p&gt;

&lt;h2&gt;
  
  
  So sánh với GPT-5.5 &amp;amp; Claude
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chi phí:&lt;/strong&gt; V4-Pro/V4-Flash trọng số mở, tự host tiết kiệm hơn GPT-5.5/Claude (đều đóng).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lập trình:&lt;/strong&gt; V4-Pro 93.5 LiveCodeBench, 3206 Codeforces, vượt GPT-5.5/Claude.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kiến thức:&lt;/strong&gt; Gemini 3.1 Pro dẫn đầu MMLU-Pro. V4-Pro ngang GPT-5.5, hơn Claude trên SimpleQA-Verified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Truy xuất dài:&lt;/strong&gt; Claude Opus vẫn mạnh nhất.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giấy phép:&lt;/strong&gt; MIT cho phép tích hợp sản phẩm thương mại dễ dàng.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ứng dụng thực tiễn
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nên dùng V4 cho:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agentic coding loops:&lt;/strong&gt; Gỡ lỗi đa tệp, refactor, sửa lỗi tự động. Kết hợp với &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; để kiểm thử API request/response khi tinh chỉnh prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suy luận tài liệu dài:&lt;/strong&gt; 1M token phù hợp monorepo, hợp đồng lớn, dataset nghiên cứu. Chọn Think High.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sản phẩm AI tự lưu trữ:&lt;/strong&gt; V4-Flash là mô hình mở đầu tiên cạnh tranh chất lượng với API đóng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nghiên cứu &amp;amp; tinh chỉnh:&lt;/strong&gt; Dùng các checkpoint Base + dữ liệu riêng để tạo model chuyên biệt.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Không phù hợp:&lt;/strong&gt; Phân loại số lượng lớn, truy xuất embedding, chat prompt ngắn (V4-Flash vẫn quá mạnh, dùng V3.2 hiệu quả hơn).&lt;/p&gt;

&lt;h2&gt;
  
  
  Giá cả
&lt;/h2&gt;

&lt;p&gt;Chưa có giá API chính thức. V3.2: ~$0.28/triệu token input, ~$0.42/triệu token output. Dự kiến V4-Flash ngang giá, V4-Pro cao hơn nhẹ. Đối thủ đóng: $5–15/triệu token input. Theo dõi cập nhật tại &lt;a href="https://api-docs.deepseek.com/" rel="noopener noreferrer"&gt;trang giá DeepSeek&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách thử nghiệm V4 ngay
&lt;/h2&gt;

&lt;p&gt;Ba cách, ưu tiên tốc độ nhận token đầu tiên:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Chat web:&lt;/strong&gt; Truy cập &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;, đăng nhập, mặc định V4-Pro, chuyển Think High trong UI. Miễn phí, không cần thẻ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API:&lt;/strong&gt; Lấy API key, trỏ client tới &lt;code&gt;https://api.deepseek.com&lt;/code&gt;, set &lt;code&gt;"model": "deepseek-v4-pro"&lt;/code&gt;. Request format tương thích OpenAI. Xem &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API DeepSeek V4&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trọng số local:&lt;/strong&gt; Tải từ Hugging Face hoặc ModelScope. V4-Flash chạy 2–4 H100; V4-Pro cần cluster lớn. Code inference trong &lt;code&gt;/inference&lt;/code&gt; của repo model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Để có hướng dẫn chi tiết về prompt engineering với Apidog, xem &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;cách sử dụng DeepSeek V4&lt;/a&gt;. Muốn dùng miễn phí, xem &lt;a href="http://apidog.com/blog/how-to-use-deepseek-v4-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn DeepSeek V4 miễn phí&lt;/a&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; và tạo trước collection; định dạng OpenAI giúp một request chạy được trên DeepSeek, OpenAI, v.v.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;DeepSeek V4 có thực sự mã nguồn mở không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Bốn checkpoint MIT, dùng thương mại/tùy biến/phân phối lại không cần xin phép.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chạy V4-Flash cần cụm GPU mạnh không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Cần 2–4 H100/H200 cho V4-Flash full precision, ít hơn nếu lượng tử hóa. V4-Pro cần cluster lớn. Nếu không có GPU, hãy dùng API hoặc &lt;a href="https://chat.deepseek.com/" rel="noopener noreferrer"&gt;chat.deepseek.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API DeepSeek đã hỗ trợ V4 chưa?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Đã hoạt động từ 23/4/2026. Model ID: &lt;code&gt;deepseek-v4-pro&lt;/code&gt;, &lt;code&gt;deepseek-v4-flash&lt;/code&gt;. &lt;code&gt;deepseek-chat&lt;/code&gt; và &lt;code&gt;deepseek-reasoner&lt;/code&gt; ngừng từ 24/7/2026.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4 so với Kimi, Qwen thế nào?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
V4-Pro điểm LiveCodeBench/Codeforces cao hơn Kimi K2, Qwen 3 Max. Cả ba đều MoE, trọng số mở, triển khai tương tự. Chọn theo benchmark phù hợp workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể tinh chỉnh V4 không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. Dùng checkpoint Base + dữ liệu bạn, pipeline SFT tiêu chuẩn. MIT license cho phép phân phối thương mại.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V4 dùng được với công cụ OpenAI cũ không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Có. API nhận định dạng OpenAI, Anthropic tại &lt;code&gt;https://api.deepseek.com&lt;/code&gt; và &lt;code&gt;https://api.deepseek.com/anthropic&lt;/code&gt;. Hầu hết client OpenAI chỉ cần đổi base URL. Xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GPT-5.5&lt;/a&gt; để biết mẫu code.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Bảng Giá GPT-5.5: Chi Tiết API, Codex và Chi Phí ChatGPT (Tháng 4/2026)</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 02:30:25 +0000</pubDate>
      <link>https://forem.com/sebbasstian/bang-gia-gpt-55-chi-tiet-api-codex-va-chi-phi-chatgpt-thang-42026-4hkn</link>
      <guid>https://forem.com/sebbasstian/bang-gia-gpt-55-chi-tiet-api-codex-va-chi-phi-chatgpt-thang-42026-4hkn</guid>
      <description>&lt;p&gt;OpenAI đã tăng gấp đôi giá mỗi token trên dòng GPT-5 với việc phát hành GPT-5.5 vào ngày 23/4/2026. Giá đầu vào tăng từ 2,50 USD lên 5,00 USD cho mỗi triệu token, đầu ra tăng từ 15,00 USD lên 30,00 USD mỗi triệu. Giá Pro vẫn giữ nguyên ở mức 30/180 USD. Đó là tiêu đề chính; các chi tiết là nơi ẩn chứa chi phí thực tế.&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 viết này hướng dẫn chi tiết cách tính chi phí và các phương án triển khai thực tế: từ giá API chuẩn, Batch, Flex, Priority, đến giá Pro, giới hạn Codex và cách dự toán chi phí cho khối lượng công việc thực tế trước khi chuyển đổi mô hình.&lt;/p&gt;

&lt;p&gt;Tham khảo tổng quan mô hình tại &lt;a href="http://apidog.com/blog/what-is-gpt-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 là gì&lt;/a&gt;. Hướng dẫn dành cho developer: &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Cách sử dụng API GPT-5.5&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id="tóm-tắt"&gt;Tóm tắt&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dịch vụ&lt;/th&gt;
&lt;th&gt;Đầu vào / Triệu&lt;/th&gt;
&lt;th&gt;Đầu ra / Triệu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API tiêu chuẩn GPT-5.5&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API GPT-5.5 Pro&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;td&gt;$180.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Batch (giảm 50%)&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Flex (giảm 50%)&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Priority (gấp 2,5 lần)&lt;/td&gt;
&lt;td&gt;$12.50&lt;/td&gt;
&lt;td&gt;$75.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API tiêu chuẩn GPT-5.4&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API GPT-5.4-mini&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GPT-5.5 có giá gấp đôi GPT-5.4 ở cấp token, nhưng OpenAI tuyên bố hiệu quả tăng ~20% khi tính đến hiệu quả sử dụng token.&lt;/p&gt;

&lt;h2 id="các-con-số-chính"&gt;Các con số chính&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5.5&lt;/strong&gt;: $5.00/m triệu token đầu vào, $30.00/m triệu token đầu ra.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5.5 Pro&lt;/strong&gt;: $30.00/m triệu đầu vào, $180.00/m triệu đầu ra.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cửa sổ ngữ cảnh&lt;/strong&gt;: 1 triệu token trên cả hai biến thể. Token suy luận tính vào hóa đơn đầu ra.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="batch-flex-và-priority"&gt;Batch, Flex và Priority&lt;/h2&gt;

&lt;p&gt;OpenAI cung cấp 3 cấp độ giá ngoài chuẩn giúp bạn chủ động kiểm soát chi phí và tốc độ.&lt;/p&gt;

&lt;h3 id="api-batch"&gt;API Batch&lt;/h3&gt;

&lt;p&gt;
Gửi request qua endpoint Batch, bạn được giảm 50% giá tiêu chuẩn, hoàn thành dưới 24h. Batch rất phù hợp cho:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chạy batch đánh giá trên toàn bộ dataset&lt;/li&gt;
&lt;li&gt;Bổ sung hoặc xử lý lại dữ liệu lịch sử&lt;/li&gt;
&lt;li&gt;Quy trình off-line, độ trễ hàng giờ không ảnh hưởng&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Với giá này, GPT-5.5 ngang giá GPT-5.4. Hãy cân nhắc batch cho mọi tác vụ không cần realtime.
&lt;/p&gt;

&lt;h3 id="xử-lý-flex"&gt;Xử lý Flex&lt;/h3&gt;

&lt;p&gt;Flex cũng giảm 50% chi phí, thời gian phản hồi thay đổi từ vài giây đến vài phút tùy tải. Dùng Flex khi chấp nhận được biến động latency và muốn giá rẻ gần như Batch cho trải nghiệm gần realtime.&lt;/p&gt;

&lt;h3 id="xử-lý-ưu-tiên"&gt;Xử lý ưu tiên&lt;/h3&gt;

&lt;p&gt;Priority giá gấp 2,5 lần chuẩn (12,50 USD / 75,00 USD mỗi triệu token trên GPT-5.5), mang lại thông lượng và rate limit cao, độ trễ gần bằng 0. Dùng cho các tính năng user-facing realtime đòi hỏi tốc độ phản hồi cao.&lt;/p&gt;

&lt;h2 id="tính-toán-chi-phí-chế-độ-suy-nghĩ"&gt;Tính toán chi phí chế độ suy nghĩ (Thinking mode)&lt;/h2&gt;

&lt;p&gt;
Chế độ suy nghĩ (GPT-5.5 Thinking, dùng &lt;code&gt;reasoning.effort&lt;/code&gt; cao hơn) không tăng giá mỗi token, nhưng tăng số token sử dụng trên mỗi request. Hệ số nhân tùy nỗ lực:
&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nỗ lực&lt;/th&gt;
&lt;th&gt;Hệ số token đầu ra&lt;/th&gt;
&lt;th&gt;Khi nào nên dùng&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;thấp&lt;/code&gt; (mặc định)&lt;/td&gt;
&lt;td&gt;1×&lt;/td&gt;
&lt;td&gt;Đa số use case thông thường&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trung bình&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1.3–2×&lt;/td&gt;
&lt;td&gt;Mã hóa multi-step, content có cấu trúc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cao&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2–4×&lt;/td&gt;
&lt;td&gt;Nghiên cứu chuyên sâu, yêu cầu độ chính xác&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;rất cao&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3–8×&lt;/td&gt;
&lt;td&gt;Agent loop, chuỗi tool, lập kế hoạch chi tiết&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;
Ví dụ: 1 call &lt;code&gt;xhigh&lt;/code&gt; với prompt dài có thể dùng 20k token suy luận. Với giá $30/m triệu token, chỉ riêng phần này đã tốn $0.60, chưa kể token đầu ra.
&lt;/p&gt;

&lt;p&gt;
Lập ngân sách theo workload, không theo từng request lẻ.
&lt;/p&gt;

&lt;h2 id="giá-codex"&gt;Giá Codex&lt;/h2&gt;

&lt;p&gt;
Codex gắn với các gói ChatGPT, không tính phí từng token. Ngày 23/4/2026, cấu trúc như sau:
&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gói&lt;/th&gt;
&lt;th&gt;Truy cập Codex&lt;/th&gt;
&lt;th&gt;GPT-5.5&lt;/th&gt;
&lt;th&gt;Ghi chú&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Miễn phí&lt;/td&gt;
&lt;td&gt;Có (giới hạn thời gian)&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Giới hạn weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;Có (giới hạn thời gian)&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Gấp đôi Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plus ($20/tháng)&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Giới hạn tiêu chuẩn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro ($200/tháng)&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Có + Thinking + Pro (trong ChatGPT)&lt;/td&gt;
&lt;td&gt;Giới hạn cao nhất/user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Tính theo seat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doanh nghiệp/Giáo dục&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;td&gt;Hợp đồng riêng&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;
Nếu bạn làm việc nhiều trên terminal với Codex, Plus/Pro là cách rẻ nhất để chạy GPT-5.5 - đặc biệt khi vượt vài trăm nghìn token/ngày. Xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-free-codex?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn về con đường miễn phí&lt;/a&gt; để tận dụng tối đa.
&lt;/p&gt;

&lt;h2 id="so-sánh-gpt-55-với-các-phien-bản-còn-lại"&gt;So sánh: GPT-5.5 và các phiên bản còn lại&lt;/h2&gt;

&lt;p&gt;
Khi nào nên trả tiền cho GPT-5.5, khi nào nên giữ GPT-5.4 hoặc GPT-5.4-mini? Tính toán chi phí dựa vào mức độ phức tạp và khối lượng đầu ra.
&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;Đầu vào / Triệu&lt;/th&gt;
&lt;th&gt;Đầu ra / Triệu&lt;/th&gt;
&lt;th&gt;Chi phí cho 1k token đầu ra&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4-mini&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$0.0020&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.4&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;$0.0150&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;td&gt;$0.0300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td&gt;$30.00&lt;/td&gt;
&lt;td&gt;$180.00&lt;/td&gt;
&lt;td&gt;$0.1800&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Đầu ra lớn, rủi ro thấp (phân loại, tóm tắt, chat đơn giản): &lt;strong&gt;GPT-5.4-mini&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Khối lượng sản xuất, 5.4 đáp ứng chất lượng: &lt;strong&gt;GPT-5.4&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Mã hóa phức tạp, agent multi-step, nghiên cứu sâu: &lt;strong&gt;GPT-5.5&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Yêu cầu cực cao về độ chính xác: &lt;strong&gt;GPT-5.5 Pro&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="ví-dụ-thực-tế-chi-phí-tác-nhân-mã-hóa"&gt;Ví dụ thực tế: chi phí agent mã hóa mỗi tác vụ&lt;/h2&gt;

&lt;p&gt;
Một phiên agent thông qua API GPT-5.5 với &lt;code&gt;reasoning.effort: "medium"&lt;/code&gt;:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token đầu vào/tác vụ (context + prompt): ~15,000&lt;/li&gt;
&lt;li&gt;Token đầu ra/tác vụ (code + giải thích): ~3,000&lt;/li&gt;
&lt;li&gt;Token suy luận/tác vụ (medium): ~6,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Chi phí/tác vụ với giá chuẩn:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đầu vào: 15k × $5.00/m = $0.075&lt;/li&gt;
&lt;li&gt;Đầu ra: (3k+6k) × $30.00/m = $0.27&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tổng: $0.345/tác vụ mã hóa hoàn thành&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Chạy cùng workload trên GPT-5.4:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Đầu vào: 15k × $2.50/m = $0.0375&lt;/li&gt;
&lt;li&gt;Đầu ra: 9k × $15.00/m = $0.135&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tổng: $0.1725/tác vụ&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
GPT-5.5 đắt gấp 2 lần/tác vụ với cùng mức effort. Việc nâng cấp chỉ hợp lý khi hiệu năng (SWE-bench 88,7% vs ~74%) giúp hoàn thành nhiều tác vụ hơn mà không phải làm lại thủ công.
&lt;/p&gt;

&lt;h2 id="kiểm-soát-chi-phí"&gt;Các biện pháp kiểm soát chi phí nên áp dụng từ đầu&lt;/h2&gt;

&lt;p&gt;
5 đòn bẩy giúp kiểm soát bill GPT-5.5:
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Giới hạn cứng &lt;code&gt;max_output_tokens&lt;/code&gt;&lt;/strong&gt; cho mọi call. Mặc định 2.000, tăng nếu thật sự cần đầu ra dài.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON schema nghiêm ngặt.&lt;/strong&gt; Output lỗi phải retry, retry là 1 call tính phí đầy đủ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing theo độ khó.&lt;/strong&gt; Request dễ giao cho GPT-5.4-mini, khó mới giao GPT-5.5. 10 dòng code routing tiết kiệm hơn tối ưu prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch cho mọi tác vụ offline.&lt;/strong&gt; Đánh giá, dữ liệu, report ban đêm đều giảm 50% giá.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theo dõi &lt;code&gt;usage.reasoning_tokens&lt;/code&gt;&lt;/strong&gt;. Bill bất ngờ thường do token suy luận ở effort cao. Nên đặt cảnh báo usage bất thường.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="ước-tính-chi-phí-hàng-tháng-theo-gói"&gt;Ước tính chi phí hàng tháng theo gói&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gói&lt;/th&gt;
&lt;th&gt;Giá hàng tháng&lt;/th&gt;
&lt;th&gt;Phù hợp nhất&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Miễn phí&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;Dùng thử GPT-5.5 với Codex trước khi commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;$4/tháng&lt;/td&gt;
&lt;td&gt;Học sinh, sinh viên, người dùng ít&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plus&lt;/td&gt;
&lt;td&gt;$20/tháng&lt;/td&gt;
&lt;td&gt;Dev cá nhân dùng Codex + ChatGPT hàng ngày&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$200/tháng&lt;/td&gt;
&lt;td&gt;Power user cần Thinking &amp;amp; Pro trên ChatGPT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;td&gt;$25/seat/tháng&lt;/td&gt;
&lt;td&gt;Nhóm cần workspace chung&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doanh nghiệp/Giáo dục&lt;/td&gt;
&lt;td&gt;Tùy chỉnh&lt;/td&gt;
&lt;td&gt;Hợp đồng riêng, có SLA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;
Nếu chạy &amp;gt;4 triệu token đầu ra/tháng qua API, gói Pro + Codex CLI sẽ rẻ hơn trả phí từng token, miễn là workload nằm trong context window 400k token của CLI.
&lt;/p&gt;

&lt;h2 id="tín-hiệu-thay-đổi-giá-cần-theo-dõi"&gt;Tín hiệu thay đổi giá cần theo dõi&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GA (General Availability) API GPT-5.5&lt;/strong&gt;: Giá có thể giảm khi cạnh tranh với Anthropic, Gemini, các mô hình open source trên &lt;a href="https://www.vellum.ai/llm-leaderboard" rel="noopener noreferrer"&gt;bảng xếp hạng Vellum&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dân chủ hóa Pro&lt;/strong&gt;: OpenAI thường hạ giá gói Pro sau 3–6 tháng. Không nên mặc định giá 30/180 USD là cố định mãi mãi.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="câu-hỏi-thường-gặp"&gt;Câu hỏi thường gặp&lt;/h2&gt;

&lt;p&gt;
&lt;strong&gt;Lưu cache có giảm chi phí đầu vào không?&lt;/strong&gt; Có. Token đầu vào cache trên GPT-5.5 tính phí thấp hơn nhiều so với chuẩn; &lt;a href="https://openai.com/api/pricing/" rel="noopener noreferrer"&gt;trang giá OpenAI&lt;/a&gt; có hệ số cụ thể. Cache mọi thứ tái sử dụng được (prompt system, schema tool, context repo).
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Có chiết khấu số lượng lớn không?&lt;/strong&gt; Chưa công bố. Doanh nghiệp lớn ký hợp đồng riêng, OpenAI điều chỉnh giá nếu usage lớn. Liên hệ sales nếu annual spending &amp;gt;1 triệu USD.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Chế độ suy nghĩ có tốn thêm chi phí ngoài giá token?&lt;/strong&gt; Không. Tốn vì dùng nhiều token hơn, không phải do giá token khác.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Sử dụng Codex CLI có tính phí riêng với API không?&lt;/strong&gt; Chỉ khi đăng nhập bằng API key. Đăng nhập ChatGPT tính vào gói, còn API key tính usage riêng.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Cách rẻ nhất để dùng thử GPT-5.5?&lt;/strong&gt; Gói Free/Go + Codex CLI. Xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn con đường miễn phí&lt;/a&gt; để biết các lựa chọn không tốn phí.
&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách sử dụng GPT-5.5 miễn phí với Codex</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 02:28:56 +0000</pubDate>
      <link>https://forem.com/sebbasstian/cach-su-dung-gpt-55-mien-phi-voi-codex-4phh</link>
      <guid>https://forem.com/sebbasstian/cach-su-dung-gpt-55-mien-phi-voi-codex-4phh</guid>
      <description>&lt;p&gt;OpenAI đã phát hành GPT-5.5 vào ngày 23 tháng 4 năm 2026 và, trong đợt ra mắt này, Codex đã được triển khai cho mọi gói ChatGPT, bao gồm cả gói Miễn phí và Go trong thời gian giới hạn. Đây là cách nhanh và miễn phí nhất để trải nghiệm mô hình mới: cài đặt Codex CLI, đăng nhập bằng tài khoản ChatGPT và dùng GPT-5.5 ngay trên terminal mà không cần khóa API hay thẻ tín dụ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;Hướng dẫn dưới đây tập trung vào các bước cài đặt, xác thực, chuyển đổi mô hình, quản lý hạn mức, và tích hợp Codex vào quy trình dev thực tế. Để nắm tổng quan về mô hình, xem &lt;a href="http://apidog.com/blog/what-is-gpt-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-5.5 là gì&lt;/a&gt;. Các phương án miễn phí khác (tín dụng thử, công cụ tổng hợp) được liệt kê trong &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api-for-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn sử dụng GPT-5.5 miễn phí&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&amp;lt;!--kg-card-begin: html--&amp;gt;&lt;/p&gt;
&lt;br&gt;
        &lt;br&gt;
        &lt;br&gt;
    &amp;lt;!--kg-card-end: html--&amp;gt;
&lt;h2&gt;
  
  
  Tóm tắt
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Codex CLI chạy GPT-5.5 trực tiếp trên repository cục bộ, với cửa sổ ngữ cảnh 400K.&lt;/li&gt;
&lt;li&gt;Tất cả các gói ChatGPT &lt;strong&gt;Miễn phí, Go, Plus, Pro, Business, Enterprise, Edu&lt;/strong&gt; đều truy cập Codex; Miễn phí và Go chỉ có trong &lt;strong&gt;thời gian giới hạn&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Cài đặt qua &lt;code&gt;npm install -g @openai/codex&lt;/code&gt; hoặc &lt;code&gt;brew install codex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Đăng nhập với ChatGPT OAuth (trình duyệt) hoặc mã thiết bị (máy chủ không giao diện đồ họa).&lt;/li&gt;
&lt;li&gt;Chuyển đổi mô hình qua &lt;code&gt;/model gpt-5.5&lt;/code&gt;; kiểm tra hạn ngạch bằng &lt;code&gt;/status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Kết hợp CLI với &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; để chuẩn hóa, kiểm thử và triển khai các lệnh gọi API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Tại sao Codex là cách tiếp cận miễn phí dễ dàng nhất
&lt;/h2&gt;

&lt;p&gt;OpenAI API mặc định chỉ dành cho người dùng trả phí; GPT-5.5 trên endpoint Responses có giá $5/triệu token đầu vào và $30/triệu token đầu ra khi public. Codex đóng gói mô hình này vào CLI xác thực bằng tài khoản ChatGPT thay vì khóa API. Gói dịch vụ sẽ quyết định hạn mức—mô hình bên dưới vẫn là GPT-5.5 thực.&lt;/p&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%2F04%2Fimage-214.png" alt="" width="1911" height="1149"&gt;
&lt;h2&gt;
  
  
  Cài đặt Codex CLI
&lt;/h2&gt;

&lt;p&gt;Có 2 cách cài đặt chính:&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="c"&gt;# npm (cross-platform)&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex

&lt;span class="c"&gt;# hoặc Homebrew (macOS / Linux)&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiểm tra cài đặt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Phiên bản phải &amp;gt;= &lt;code&gt;0.28.0&lt;/code&gt; để hỗ trợ GPT-5.5.&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%2F04%2Fimage-216.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%2F04%2Fimage-216.png" alt="" width="1960" height="1044"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Xác thực bằng tài khoản ChatGPT
&lt;/h2&gt;

&lt;p&gt;Chạy CLI lần đầu sẽ yêu cầu đăng nhập.&lt;/p&gt;

&lt;h3&gt;
  
  
  OAuth trình duyệt (máy cục bộ)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Một tab trình duyệt mở ra, đăng nhập với email ChatGPT. CLI lưu phiên làm việc, các lần sau không cần lặp lại.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mã thiết bị (máy chủ không giao diện đồ họa)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex login &lt;span class="nt"&gt;--device-auth&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy mã hiển thị, mở URL trên thiết bị khác, dán mã và xác nhận.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sử dụng khóa API (tùy chọn)
&lt;/h3&gt;

&lt;p&gt;Nếu có khóa API trả phí:&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;printenv &lt;/span&gt;OPENAI_API_KEY | codex login &lt;span class="nt"&gt;--with-api-key&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cách này phí sử dụng sẽ tính vào tài khoản API, không phải ChatGPT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chọn GPT-5.5 làm mô hình
&lt;/h2&gt;

&lt;p&gt;Codex mặc định dùng mô hình "recommended" cho gói; với gói miễn phí/Go có thể cần chuyển thủ công.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trong phiên làm việc
&lt;/h3&gt;



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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Khởi chạy với flag
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--model&lt;/span&gt; gpt-5.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Kiểm tra hạn ngạch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Xem ngân sách tin nhắn, cửa sổ ngữ cảnh, thời gian hết hạn dùng thử.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phiên đầu tiên: ví dụ thực tế
&lt;/h2&gt;

&lt;p&gt;Ví dụ sử dụng thực tế:&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;cd&lt;/span&gt; ~/Projects/my-app
codex &lt;span class="nt"&gt;--model&lt;/span&gt; gpt-5.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trong CLI, thử:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gt"&gt;&amp;gt; Read README.md, then open scripts/deploy.sh and summarize what it does in five bullets.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex sẽ mở file, tóm tắt nội dung. Tiếp theo:&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="o"&gt;&amp;gt;&lt;/span&gt; Refactor deploy.sh so it exits on any failed step, and add a dry-run flag. Keep backwards compatibility.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sau khi model đề xuất diff, bạn phê duyệt. Có thể chạy kiểm thử ngay:&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="o"&gt;&amp;gt;&lt;/span&gt; Run the deploy &lt;span class="nb"&gt;test &lt;/span&gt;suite and show me the failing &lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CLI trả về output kiểm thử; tiếp tục fix với GPT-5.5 cho đến khi pass.&lt;/p&gt;

&lt;p&gt;OpenAI báo cáo điểm SWE-bench của GPT-5.5 đạt 88,7% (so với 74% của GPT-5.4), cải thiện rõ ở các tác vụ đa tệp và automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Điểm mạnh của Codex so với gọi API thô
&lt;/h2&gt;

&lt;p&gt;CLI Codex mang lại:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ngữ cảnh repo:&lt;/strong&gt; Đọc cây tệp, index các file liên quan, truyền vào model mà không cần copy-paste.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thực thi lệnh có phê duyệt:&lt;/strong&gt; Model đề xuất, bạn duyệt trước khi chạy, tránh rủi ro shell.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Xem trước diff:&lt;/strong&gt; Mọi edit file đều hiển thị diff để chấp nhận/từ chối/sửa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lưu lịch sử phiên:&lt;/strong&gt; Quay lại CLI sau vẫn giữ ngữ cảnh cũ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu dùng API thuần, bạn phải tự xây lại từng tính năng trên. &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Hướng dẫn API GPT-5.5&lt;/a&gt; có ví dụ, nhưng để dev hàng ngày, CLI hiệu quả hơn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Giới hạn tốc độ và hạn mức theo gói
&lt;/h2&gt;

&lt;p&gt;Bảng hạn mức tính đến 23/4/2026:&lt;/p&gt;

&lt;p&gt;&amp;lt;!--kg-card-begin: html--&amp;gt;&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;Gói&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;Truy cập GPT-5.5 trong Codex&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;Hạn mức hàng tuần&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Miễn phí&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có (thời gian giới hạn)&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Chặt chẽ; kích thước nguyên mẫu&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có (thời gian giới hạn), gấp 2 lần giới hạn gói Miễn phí&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Nhỏ&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Plus&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Trung bình&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có, hạn mức cao nhất cho người dùng cá nhân&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Cao&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có, dựa trên số chỗ&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Cao cho mỗi chỗ&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Doanh nghiệp / Giáo dục&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Có, dựa trên hợp đồng&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Tùy chỉnh&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&amp;lt;!--kg-card-end: html--&amp;gt;

&lt;p&gt;Khi chạm hạn mức, Codex sẽ báo lỗi cụ thể. Sử dụng &lt;code&gt;/status&lt;/code&gt; để kiểm tra số lượng còn lại.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tích hợp với Editor và IDE
&lt;/h2&gt;

&lt;p&gt;Tên đăng nhập Codex dùng chung cho extension VS Code, plugin JetBrains, app Cloud Codex. Sau khi login CLI, extension IDE sẽ tự nhận session, không cần đăng nhập lại.&lt;/p&gt;

&lt;p&gt;Workflow kết hợp với Apidog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tạo prototype request trong Codex CLI (prompt GPT-5.5 trên file).&lt;/li&gt;
&lt;li&gt;Xuất prompt &amp;amp; output có cấu trúc sang collection &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; để chia sẻ với team.&lt;/li&gt;
&lt;li&gt;Khi hợp đồng ổn định, chuyển sang gọi API trực tiếp.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Xem &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog trong VS Code&lt;/a&gt; để kết nối collection vào editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bảo vệ quy trình trên gói Miễn phí và Go
&lt;/h2&gt;

&lt;p&gt;Hai cấu hình nên áp dụng ngay:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Luôn phê duyệt thao tác ghi file:&lt;/strong&gt; Trong &lt;code&gt;~/.codex/config.json&lt;/code&gt;, đặt &lt;code&gt;"autoApproveWrites": false&lt;/code&gt;. Mặc định an toàn trên gói Miễn phí, nhưng Go có thể auto-apply diff nhỏ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giới hạn workspace:&lt;/strong&gt; Chạy &lt;code&gt;codex&lt;/code&gt; trong thư mục dự án. Nếu mở từ &lt;code&gt;~&lt;/code&gt;, CLI sẽ đọc toàn bộ thư mục gốc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenAI đã kiểm thử an toàn cho GPT-5.5, nhưng CLI vẫn chạy local—hãy luôn xem xét diff trước khi apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Khi nào nên chuyển khỏi gói miễn phí
&lt;/h2&gt;

&lt;p&gt;"Thời gian giới hạn" nghĩa là Codex Free/Go sẽ cần nâng cấp trong tương lai. Lên kế hoạch sớm nếu:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vượt hạn mức weekly:&lt;/strong&gt; Đã dùng thực tế, nên lên Plus/Pro.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cần API trực tiếp:&lt;/strong&gt; Khối lượng lớn, nên xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GPT-5.5&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team cần thanh toán theo vị trí:&lt;/strong&gt; Dùng Business/Enterprise, phân tích giá tại &lt;a href="http://apidog.com/blog/gpt-5-5-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;đây&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chuyển gói chỉ thay đổi phương thức thanh toán và UI—mô hình vẫn giữ nguyên.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Codex có chạy GPT-5.5 Pro không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. CLI chỉ dùng model GPT-5.5 chuẩn trên mọi gói; Pro chỉ cho ChatGPT web và API sau này.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể dùng Codex mà không có tài khoản ChatGPT?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Bắt buộc đăng nhập ChatGPT hoặc dùng API key OpenAI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Truy cập Free/Go kéo dài bao lâu?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
"Thời gian giới hạn"—dự kiến vài tuần đến vài tháng; nên chuẩn bị nâng cấp khi cần.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codex chạy offline được không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. Mọi request GPT-5.5 đều gửi tới server OpenAI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Khác biệt so với ChatGPT web?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Codex chạy trong terminal, truy cập hệ thống file local, shell, ngữ cảnh repo—web app không có các tính năng này.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cách Sử Dụng API GPT-5.5 Miễn Phí</title>
      <dc:creator>Sebastian Petrus</dc:creator>
      <pubDate>Fri, 24 Apr 2026 02:16:03 +0000</pubDate>
      <link>https://forem.com/sebbasstian/cach-su-dung-api-gpt-55-mien-phi-5237</link>
      <guid>https://forem.com/sebbasstian/cach-su-dung-api-gpt-55-mien-phi-5237</guid>
      <description>&lt;p&gt;GPT-5.5 đã ra mắt ngày 23/4/2026 với hệ thống trả phí cho hầu hết các dịch vụ: gói Plus, Pro, Business, Enterprise trong ChatGPT, và token API trả phí cho các lệnh gọi lập trình. Tuy nhiên, bên trong đợt phát hành này vẫn có ba cách sử dụng miễn phí còn hoạt động tới hiện tại. Nếu chấp nhận giới hạn tốc độ và một số hạn chế thời gian, bạn vẫn có thể thực hiện các lệnh gọi GPT-5.5 thực tế mà không cần phương thức thanh 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;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 từng cách miễn phí đã được kiểm tra, cách chọn phương pháp phù hợp với từng tình huống, và cách chuẩn hóa bộ sưu tập API sẵn sàng sản xuất 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; để chuyển đổi mượt mà từ free sang trả phí khi nhu cầu tăng.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI trên ChatGPT Free hoặc Go&lt;/strong&gt; — truy cập tạm thời GPT-5.5 qua CLI Codex, không cần thẻ tín dụng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tín dụng dùng thử OpenAI cho tài khoản API mới&lt;/strong&gt; — số dư nhỏ trên khóa API đầu tiên, mở các lệnh gọi GPT-5.5 khi Responses API được unlock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Các gói miễn phí của OpenRouter và aggregator&lt;/strong&gt; — cổng bên thứ ba thỉnh thoảng cấp quota free cho các model mới ngay vài ngày đầu phát hành.&lt;/li&gt;
&lt;li&gt;Mỗi phương pháp đều có giới hạn. Khi sản xuất, hãy chuyển sang thanh toán trước khi hết hạn dùng thử.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cách 1: Codex CLI (phương pháp miễn phí thực tế nhất)
&lt;/h2&gt;

&lt;p&gt;OpenAI tích hợp Codex vào mọi gói ChatGPT khi ra mắt, kể cả Free/Go, trong một khoảng thời gian giới hạn. Điểm quan trọng là Codex cho phép truy cập GPT-5.5 qua đăng nhập ChatGPT thay vì API key. Đăng nhập bằng tài khoản free, chạy CLI, model phản hồi trong 400K token context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cài đặt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex
&lt;span class="c"&gt;# hoặc&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiểm tra:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Xác thực
&lt;/h3&gt;

&lt;p&gt;Chạy &lt;code&gt;codex&lt;/code&gt; lần đầu, trình duyệt sẽ mở để xác thực ChatGPT OAuth. Nếu trên server headless:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex login &lt;span class="nt"&gt;--device-auth&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quy trình device code sẽ cấp 1 URL ngắn + mã để dán vào máy khác. Không cần API key.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chọn model
&lt;/h3&gt;

&lt;p&gt;Trong phiên Codex:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Hoặc khởi động CLI với:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--model&lt;/span&gt; gpt-5.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kiểm tra quota còn lại với &lt;code&gt;/status&lt;/code&gt;. Gói Free/Go bị giới hạn chặt hơn trả phí nhưng đủ để tạo mẫu công cụ nhỏ.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bạn nhận được gì / không nhận được gì
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Được&lt;/strong&gt;: Model GPT-5.5 thực, context 400K, đọc file, thực thi terminal, edit repo trong CLI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Không được&lt;/strong&gt;: Không có API trực tiếp, chỉ truy cập qua Codex khi đã login.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Xem hướng dẫn chi tiết tại &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-free-codex?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn sử dụng GPT-5.5 miễn phí với Codex&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;OpenAI ghi rõ truy cập Codex Free/Go chỉ "có thời hạn". Lập trình nên dùng biến cấu hình cho model ID để chuyển đổi dễ dàng khi hết quota free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách 2: Tín dụng dùng thử OpenAI cho tài khoản API mới
&lt;/h2&gt;

&lt;p&gt;Tài khoản dev OpenAI mới thường được cấp một ít tín dụng dùng thử. Số tiền thay đổi từng đợt phát hành; thường là $5 trong 90 ngày đầu, có thể cao hơn cho email .edu. Khi API GPT-5.5 unlock rộng rãi, số dư này cho phép gọi thực tế tới &lt;code&gt;gpt-5.5&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cách nhận
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Đăng ký tài khoản developer mới tại &lt;code&gt;platform.openai.com&lt;/code&gt;. Dùng email chưa từng đăng ký trước.&lt;/li&gt;
&lt;li&gt;Xác minh số điện thoại. Bắt buộc để nhận trial credit.&lt;/li&gt;
&lt;li&gt;Tạo API key thuộc tổ chức thử nghiệm.&lt;/li&gt;
&lt;li&gt;Kiểm tra dashboard usage để biết số tiền và ngày hết hạn.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Có thể làm gì với GPT-5.5
&lt;/h3&gt;

&lt;p&gt;Với $5 credit và giá hiện tại $5/triệu token input, $30/triệu token output, bạn chạy được khoảng 1 triệu token input hoặc ~160K token output với &lt;code&gt;gpt-5.5&lt;/code&gt;. Đủ để thử nghiệm mẫu nhỏ, kiểm tra workflow, hoặc prototyping agent loop — không đủ cho traffic production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tips tiết kiệm:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dùng chế độ Batch:&lt;/strong&gt; Batch API chạy với 50% tốc độ tiêu chuẩn, tốt cho workflow không cần phản hồi realtime (&lt;a href="https://openai.com/api/pricing/" rel="noopener noreferrer"&gt;tham khảo pricing tại OpenAI&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giữ &lt;code&gt;reasoning.effort&lt;/code&gt; ở &lt;code&gt;low&lt;/code&gt;:&lt;/strong&gt; Mode này tiết kiệm token, phù hợp với hành vi GPT-5.4.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Điểm hạn chế
&lt;/h3&gt;

&lt;p&gt;Trial credit không tự refill. Hết quota, API trả về lỗi 402. Không có lần dùng thử thứ hai cho cùng 1 tài khoản/thiết bị/số điện thoại.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách 3: Các gói miễn phí của trình tổng hợp (Aggregator)
&lt;/h2&gt;

&lt;p&gt;Các cổng model bên thứ ba như OpenRouter, Together, Groq thỉnh thoảng cấp quota miễn phí cho model mới. Các ưu đãi này có thể biến mất bất kỳ lúc nào, nên hãy kiểm tra tình trạng thực tế trước khi sử dụng.&lt;/p&gt;

&lt;p&gt;Quy trình chung:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tạo tài khoản, xác minh email.&lt;/li&gt;
&lt;li&gt;Lấy API key aggregator.&lt;/li&gt;
&lt;li&gt;Đổi base URL trong SDK sang URL aggregator.&lt;/li&gt;
&lt;li&gt;Đổi model string sang alias của aggregator, ví dụ: &lt;code&gt;openai/gpt-5.5&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ví dụ với Python SDK:&lt;br&gt;
&lt;/p&gt;

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

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://openrouter.ai/api/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sk-or-v1-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;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;openai/gpt-5.5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;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;Explain the Responses API in two paragraphs.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;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;Lưu ý: aggregator có rate limit và quota riêng, hạn mức free chia sẻ. Khi nhà cung cấp rút GPT-5.5 khỏi free tier, yêu cầu trả về lỗi 402/429. Đây chỉ là giải pháp tạo mẫu, không dùng cho sản xuất.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bạn nên chọn cách nào trong các cách miễn phí này?
&lt;/h2&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;Cách miễn phí tốt nhất&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trợ lý mã hóa dựa trên Terminal&lt;/td&gt;
&lt;td&gt;Codex CLI (Cách 1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thử nghiệm Python hoặc Node nhanh&lt;/td&gt;
&lt;td&gt;Tín dụng dùng thử (Cách 2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kiểm tra từ một ứng dụng lưu trữ&lt;/td&gt;
&lt;td&gt;Trình tổng hợp (Cách 3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;So sánh GPT-5.5 với GPT-5.4 trên các lời nhắc thực tế&lt;/td&gt;
&lt;td&gt;Tín dụng dùng thử + Bộ sưu tập Apidog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nghiên cứu một lần "cái này có thể trả lời câu hỏi của tôi không"&lt;/td&gt;
&lt;td&gt;ChatGPT Plus (không miễn phí, nhưng rẻ nhất mỗi giờ)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Với mọi tác vụ lớn hơn bản mẫu, cả ba hình thức này sẽ hết hạn mức rất nhanh. Hãy tập trung tối ưu cấu trúc request và prompt trước khi chi trả token thực sự.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chuẩn hóa cấu trúc request trong Apidog
&lt;/h2&gt;

&lt;p&gt;Cách chuyển từ "dùng thử free" sang "khóa production" mà không phải rewrite code là xây dựng request một lần, kiểm soát qua versioned 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.amazonaws.com%2Fuploads%2Farticles%2Ffuujni1mvtoy9wit88i2.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.amazonaws.com%2Fuploads%2Farticles%2Ffuujni1mvtoy9wit88i2.png" alt="Giao diện Apidog hiển thị cấu hình API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trong Apidog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tạo collection mới, thêm request &lt;code&gt;POST https://api.openai.com/v1/responses&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Đặt header xác thực từ biến môi trường, giúp đổi key dễ dàng mà không sửa body.&lt;/li&gt;
&lt;li&gt;Lưu response mẫu để dev sau làm việc với mock khi chưa có key thật.&lt;/li&gt;
&lt;li&gt;Nhân bản collection cho aggregator bằng cách trỏ &lt;code&gt;baseUrl&lt;/code&gt; sang OpenRouter, đổi chuỗi model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Khi hết trial hoặc chuyển gói, chỉ cần đổi biến môi trường, collection vẫn chạy. Xem thêm &lt;a href="http://apidog.com/blog/how-to-use-apidog-inside-vscode?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn sử dụng Apidog trong VS Code&lt;/a&gt; nếu muốn tích hợp ngay trong Cursor hoặc Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hạn chế của các phương pháp miễn phí cần lưu ý
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Giới hạn tốc độ phụ thuộc tải:&lt;/strong&gt; Codex Free/Go sẽ chậm lại vào giờ cao điểm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tín dụng không cộng dồn:&lt;/strong&gt; Tài khoản OpenAI thứ hai không có trial nếu trùng thẻ/điện thoại/IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5.5 Pro không có trên bất kỳ bề mặt free nào:&lt;/strong&gt; Chỉ dành cho trả phí.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chế độ tư duy (Thinking mode) tốn quota:&lt;/strong&gt; Dùng &lt;code&gt;reasoning.effort&lt;/code&gt; ở mức &lt;code&gt;low&lt;/code&gt; nếu không cần benchmark chính xác.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gói miễn phí chỉ là tạm thời:&lt;/strong&gt; Quyền truy cập Codex Free/Go là "trong thời hạn" theo &lt;a href="https://openai.com/index/introducing-gpt-5-5/" rel="noopener noreferrer"&gt;thông báo ra mắt của OpenAI&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mẫu thử nghiệm thực tế với gói miễn phí
&lt;/h2&gt;

&lt;p&gt;Quy trình tối ưu tận dụng quota free:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chọn tác vụ thật sự nhóm bạn thực hiện (báo cáo, review code, tóm tắt nghiên cứu).&lt;/li&gt;
&lt;li&gt;Chạy 10 ví dụ thực tế với GPT-5.4 trên công cụ hiện tại, ghi lại chất lượng.&lt;/li&gt;
&lt;li&gt;Chạy 10 ví dụ tương tự qua GPT-5.5 trên Codex CLI hoặc trial credit.&lt;/li&gt;
&lt;li&gt;So sánh chất lượng output token và tỷ lệ lỗi.&lt;/li&gt;
&lt;li&gt;Đánh giá liệu việc nâng cấp lên GPT-5.5 có xứng đáng với chi phí tăng gấp đôi cho workload của bạn không.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Chỉ mất một buổi chiều để thực thi — tiết kiệm chi phí ngay từ tháng đầu khi chuyển sang production.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Codex Free và Go có vĩnh viễn không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. &lt;a href="https://openai.com/index/introducing-gpt-5-5/" rel="noopener noreferrer"&gt;Thông báo của OpenAI&lt;/a&gt; ghi rõ chỉ "có thời hạn", dự kiến hết sau vài tháng từ ngày phát hành.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT Free có GPT-5.5 trong trình duyệt không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không. ChatGPT Free vẫn là GPT-5.3 mặc định. GPT-5.5 yêu cầu ChatGPT Plus trở lên.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Có thể chạy GPT-5.5 trên Hugging Face/Ollama free không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Không được. GPT-5.5 là closed-weight, chỉ chạy trên hạ tầng OpenAI hoặc qua login Codex.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenAI còn giảm giá cho sinh viên không?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Từng có chương trình giảm giá cho email .edu và trial credit cao hơn các đợt trước. Xem &lt;a href="https://openai.com/education/" rel="noopener noreferrer"&gt;trang giáo dục của OpenAI&lt;/a&gt; để kiểm tra ưu đãi hiện tại.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chuyển từ free sang trả phí mà không rewrite code thế nào?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Dùng biến môi trường cho key và base URL (&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;, &lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;). Khi hết trial, chỉ cần đổi biến. Xem &lt;a href="http://apidog.com/blog/how-to-use-gpt-5-5-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;hướng dẫn API GPT-5.5&lt;/a&gt; để thực hiện theo best practice.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
