model-detail.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. <!DOCTYPE html>
  2. <html lang="vi">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Model — DoTouch.AI</title>
  7. <link rel="stylesheet" href="style.css">
  8. </head>
  9. <body>
  10. <div class="dev-note" id="demoLoginBanner" style="bottom:56px;"></div>
  11. <div class="dev-note">v1.2.0 · 模型详情页(数据驱动:glm-5.2 / deepseek-v4 / deepseek-v4-pro / qwen-max · 支持 ?m= 参数与语言联动)</div>
  12. <header>
  13. <div class="wrap nav">
  14. <a class="nav-logo" href="index.html">
  15. <svg viewBox="0 0 460 120" xmlns="http://www.w3.org/2000/svg">
  16. <defs><linearGradient id="g1" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#9B7BFF"/><stop offset="1" stop-color="#5C3DF0"/></linearGradient></defs>
  17. <g transform="translate(0,6) scale(0.92)"><circle cx="50" cy="50" r="33" stroke="rgba(124,92,255,.3)" stroke-width="1.5" stroke-dasharray="2 7" fill="none"/><g stroke="#00E5A0" stroke-width="1.8" opacity=".55"><line x1="50" y1="50" x2="76" y2="26"/><line x1="50" y1="50" x2="26" y2="76"/><line x1="50" y1="50" x2="78" y2="75"/></g><circle cx="50" cy="50" r="12" stroke="rgba(124,92,255,.4)" fill="none"/><circle cx="50" cy="50" r="7.5" fill="url(#g1)"/><circle cx="76" cy="26" r="4" fill="#00E5A0"/><circle cx="26" cy="76" r="4" fill="#00E5A0"/><circle cx="78" cy="75" r="4" fill="#00E5A0"/></g>
  18. <text x="128" y="78" font-size="50" font-weight="700" fill="#E8ECF8" font-family="inherit">DoTouch</text><text x="348" y="78" font-size="50" font-weight="700" fill="url(#g1)" font-family="inherit">.AI</text>
  19. </svg>
  20. </a>
  21. <nav class="nav-links">
  22. <a href="index.html" data-i18n="nav_home">Trang chủ</a>
  23. <a href="models.html" data-i18n="nav_models">Models</a>
  24. <a href="pricing.html" data-i18n="nav_pricing">Pricing</a>
  25. <a href="docs.html" data-i18n="nav_docs_ops">Hướng dẫn</a>
  26. <a href="../console-v1.0.0/user-console.html" data-i18n="nav_console">Console</a>
  27. </nav>
  28. <div class="nav-right">
  29. <div class="lang-switch">
  30. <button class="lang-btn active" data-lang="vi">VI</button><button class="lang-btn" data-lang="en">EN</button><button class="lang-btn" data-lang="zh-CN">简</button><button class="lang-btn" data-lang="zh-TW">繁</button>
  31. </div>
  32. <a class="btn btn-sm" href="#" data-open-auth="login" data-i18n="nav_login">Đăng nhập</a>
  33. <a class="btn btn-primary btn-sm" href="#" data-open-auth="register" data-i18n="nav_signup">Bắt đầu</a>
  34. </div>
  35. </div>
  36. </header>
  37. <div class="wrap">
  38. <div class="crumbs"><a href="index.html" data-i18n="crumb_home">Trang chủ</a><span class="sep">/</span><a href="models.html" data-i18n="detail_bread">Mô hình</a><span class="sep">/</span><b id="crumbModel">GLM 5.2</b></div>
  39. <!-- 头部 -->
  40. <div class="page-hero" style="display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;">
  41. <div>
  42. <h1 style="display:flex;align-items:center;gap:12px;"><span id="modelName">GLM 5.2</span> <span class="tag tag-purple" id="modelTag" data-i18n="tag_flagship">Cao cấp</span></h1>
  43. <p id="modelDesc">Mô hình đa phương thức hàng đầu, suy luận + lập trình + tác vụ agent.</p>
  44. </div>
  45. <a class="btn btn-primary" href="#" data-i18n="detail_use_btn">Bắt đầu với API này</a>
  46. </div>
  47. <div class="grid3">
  48. <!-- 技术规格 -->
  49. <div class="card">
  50. <h3 style="font-size:15px;color:var(--purple-l);margin-bottom:14px;" data-i18n="detail_spec">Thông số kỹ thuật</h3>
  51. <table style="width:100%;font-size:13.5px;border-collapse:collapse;">
  52. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_spec_vendor">Nhà cung cấp</td><td style="padding:7px 0;text-align:right;" id="specVendor">Zhipu AI</td></tr>
  53. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_spec_ctx">Ngữ cảnh</td><td style="padding:7px 0;text-align:right;" class="price" id="specCtx">128K tokens</td></tr>
  54. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_spec_out">Đầu ra tối đa</td><td style="padding:7px 0;text-align:right;" class="price" id="specOut">64K tokens</td></tr>
  55. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_spec_base">BASE URL</td><td style="padding:7px 0;text-align:right;" class="price">api.dotouch.ai/v1</td></tr>
  56. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_spec_rate">Giới hạn tốc độ</td><td style="padding:7px 0;text-align:right;" class="price" id="specRate">60 req/min</td></tr>
  57. </table>
  58. </div>
  59. <!-- 能力矩阵 -->
  60. <div class="card">
  61. <h3 style="font-size:15px;color:var(--purple-l);margin-bottom:14px;" data-i18n="detail_cap">Khả năng</h3>
  62. <table style="width:100%;font-size:13.5px;border-collapse:collapse;">
  63. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_cap_json">JSON Output</td><td style="padding:7px 0;text-align:right;" id="capJson"><span class="save-tag" data-i18n="spec_ok">Hỗ trợ</span></td></tr>
  64. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_cap_tool">Tool Calls</td><td style="padding:7px 0;text-align:right;" id="capTool"><span class="save-tag" data-i18n="spec_ok">Hỗ trợ</span></td></tr>
  65. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_cap_stream">Streaming (SSE)</td><td style="padding:7px 0;text-align:right;" id="capStream"><span class="save-tag" data-i18n="spec_ok">Hỗ trợ</span></td></tr>
  66. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_cap_think">Chế độ suy luận</td><td style="padding:7px 0;text-align:right;" id="capThink"><span class="save-tag" data-i18n="spec_ok">Hỗ trợ</span></td></tr>
  67. <tr><td style="padding:7px 0;color:var(--muted);" data-i18n="detail_cap_json">Vision (Hình ảnh)</td><td style="padding:7px 0;text-align:right;" id="capVision"><span class="tag tag-gray" data-i18n="spec_no">Không hỗ trợ</span></td></tr>
  68. </table>
  69. </div>
  70. <!-- 价格 -->
  71. <div class="card">
  72. <h3 style="font-size:15px;color:var(--purple-l);margin-bottom:14px;" data-i18n="detail_pricing">Giá</h3>
  73. <p style="font-size:12px;color:var(--muted);margin-bottom:10px;" data-i18n="detail_pricing_note">Giá mỗi 1 triệu tokens · đã gồm ưu đãi giá cực kỳ cạnh tranh</p>
  74. <div style="font-size:13.5px;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;"><span data-i18n="detail_price_in">Đầu vào</span><b class="price" style="color:var(--text);" id="priceIn"><span class="price-usd" data-usd="0.98">$0.98</span></b></div>
  75. <div style="font-size:13.5px;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;"><span data-i18n="detail_price_out">Đầu ra</span><b class="price" style="color:var(--text);" id="priceOut"><span class="price-usd" data-usd="3.08">$3.08</span></b></div>
  76. <div style="font-size:13.5px;color:var(--muted);padding:8px 0;display:flex;justify-content:space-between;"><span data-i18n="price_th_save">Tiết kiệm</span><span class="save-tag">-30% <span style="text-decoration:line-through;opacity:.6;" id="priceCut">$1.40 / $4.40</span></span></div>
  77. <div class="rate-box" style="margin-top:12px;font-size:12px;" data-i18n="rate_note">Tỷ giá tham khảo: 1 USD ≈ 25.400₫</div>
  78. </div>
  79. </div>
  80. <!-- 代码示例 -->
  81. <section style="padding-top:36px;">
  82. <h2 class="sec-head" style="font-size:18px;font-weight:800;margin-bottom:14px;" data-i18n="detail_code">Ví dụ gọi API</h2>
  83. <div class="code-block" style="max-width:820px;">
  84. <div class="code-head"><span class="dots"><i></i><i></i><i></i></span><span>cURL</span></div>
  85. <pre><code><span class="c-c"># OpenAI-compatible — chỉ cần đổi base URL và key</span>
  86. <span class="c-k">curl</span> https://api.dotouch.ai/v1/chat/completions \
  87. -H <span class="c-s">"Authorization: Bearer dt_your_key_here"</span> \
  88. -H <span class="c-s">"Content-Type: application/json"</span> \
  89. -d <span class="c-s">'{
  90. "model": "<span class="c-p" id="codeModel">glm-5.2</span>",
  91. "messages": [{"role": "user", "content": "Xin chào!"}],
  92. "stream": true
  93. }'</span></code></pre>
  94. </div>
  95. <div class="code-block" style="max-width:820px;margin-top:14px;">
  96. <div class="code-head"><span class="dots"><i></i><i></i><i></i></span><span>Python SDK</span></div>
  97. <pre><code><span class="c-k">from</span> openai <span class="c-k">import</span> OpenAI
  98. client = OpenAI(
  99. base_url=<span class="c-s">"https://api.dotouch.ai/v1"</span>,
  100. api_key=<span class="c-s">"dt_your_key_here"</span>,
  101. )
  102. resp = client.chat.completions.create(
  103. model=<span class="c-s">"<span class="c-p" id="codeModel2">glm-5.2</span>"</span>,
  104. messages=[{<span class="c-s">"role"</span>: <span class="c-s">"user"</span>, <span class="c-s">"content"</span>: <span class="c-s">"Xin chào!"</span>}],
  105. )
  106. <span class="c-k">print</span>(resp.choices[0].message.content)</code></pre>
  107. </div>
  108. </section>
  109. <!-- 扣费规则 -->
  110. <section>
  111. <div class="notice" style="max-width:820px;">
  112. <b data-i18n="detail_billing">Quy tắc tính phí:</b> <span data-i18n="detail_billing_p">Phí = token tiêu thụ × đơn giá, trừ trực tiếp từ số dư nạp trước. Giá có thể thay đổi; xem trang này để cập nhật mới nhất.</span>
  113. </div>
  114. </section>
  115. <!-- 相关模型 -->
  116. <section>
  117. <h2 style="font-size:18px;font-weight:800;margin-bottom:14px;" data-i18n="detail_rel">Mô hình liên quan</h2>
  118. <div class="grid3" id="relatedBox">
  119. <a class="card hover-up" href="model-detail.html?m=deepseek-v4"><b data-i18n="m_dsv4_name">DeepSeek V4</b><span class="tag tag-green" style="margin-left:8px;" data-i18n="tag_best">Đáng giá</span><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="m_dsv4_short">Cỗ máy suy luận mã nguồn mở, lý tưởng cho chat & RAG khối lượng lớn.</p><div style="margin-top:10px;font-size:12px;color:var(--muted);"><span class="price-usd" data-usd="0.14">$0.14</span> / 1M in</div></a>
  120. <a class="card hover-up" href="model-detail.html?m=deepseek-v4-pro"><b data-i18n="m_dsv4p_name">DeepSeek V4 Pro</b><span class="tag tag-gold" style="margin-left:8px;" data-i18n="tag_reasoning">Suy luận</span><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="m_dsv4p_short">Suy luận sâu cho toán học, logic và kế hoạch agent dài hạn.</p><div style="margin-top:10px;font-size:12px;color:var(--muted);"><span class="price-usd" data-usd="0.30">$0.30</span> / 1M in</div></a>
  121. <a class="card hover-up" href="model-detail.html?m=qwen-max"><b data-i18n="m_qwen_name">Qwen Max</b><span class="tag tag-gray" style="margin-left:8px;" data-i18n="tag_enterprise">Doanh nghiệp</span><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="m_qwen_short">Mô hình tổng quát mạnh nhất, đa ngôn ngữ & gọi công cụ.</p><div style="margin-top:10px;font-size:12px;color:var(--muted);"><span class="price-usd" data-usd="1.96">$1.96</span> / 1M in</div></a>
  122. </div>
  123. <a href="models.html" style="display:inline-block;margin-top:16px;font-size:14px;color:var(--purple-l);font-weight:600;" data-i18n="detail_rel_view">Xem tất cả mô hình →</a>
  124. </section>
  125. </div>
  126. <footer>
  127. <div class="wrap">
  128. <div class="foot-grid">
  129. <div class="foot-brand">
  130. <svg viewBox="0 0 460 120" width="140" xmlns="http://www.w3.org/2000/svg">
  131. <defs><linearGradient id="fg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#9B7BFF"/><stop offset="1" stop-color="#5C3DF0"/></linearGradient></defs>
  132. <g transform="translate(0,6) scale(0.92)"><circle cx="50" cy="50" r="33" stroke="rgba(124,92,255,.3)" stroke-width="1.5" stroke-dasharray="2 7" fill="none"/><g stroke="#00E5A0" stroke-width="1.8" opacity=".55"><line x1="50" y1="50" x2="76" y2="26"/><line x1="50" y1="50" x2="26" y2="76"/><line x1="50" y1="50" x2="78" y2="75"/></g><circle cx="50" cy="50" r="7.5" fill="url(#fg)"/><circle cx="76" cy="26" r="4" fill="#00E5A0"/><circle cx="26" cy="76" r="4" fill="#00E5A0"/><circle cx="78" cy="75" r="4" fill="#00E5A0"/></g>
  133. <text x="128" y="78" font-size="50" font-weight="700" fill="#E8ECF8" font-family="inherit">DoTouch</text><text x="348" y="78" font-size="50" font-weight="700" fill="url(#fg)" font-family="inherit">.AI</text>
  134. </svg>
  135. <p data-i18n="foot_p">AI Trung Quốc giá rẻ cho lập trình viên và doanh nghiệp nhỏ trên toàn thế giới.</p>
  136. </div>
  137. <div class="foot-col"><h4 data-i18n="foot_product">Sản phẩm</h4><a href="models.html" data-i18n="nav_models">Mô hình</a><a href="pricing.html" data-i18n="nav_pricing">Bảng giá</a><a href="../console-v1.0.0/user-console.html" data-i18n="foot_console">Console</a><a href="#" data-i18n="foot_status">Trạng thái</a></div>
  138. <div class="foot-col"><h4 data-i18n="foot_dev">Nhà phát triển</h4><a href="docs.html" data-i18n="foot_docs">Tài liệu</a><a href="docs.html" data-i18n="foot_quickstart">Bắt đầu nhanh</a><a href="#" data-i18n="foot_support">Hỗ trợ</a></div>
  139. <div class="foot-col"><h4 data-i18n="foot_legal">Pháp lý</h4><a href="#" data-i18n="foot_tos">Điều khoản dịch vụ</a><a href="#" data-i18n="foot_privacy">Chính sách bảo mật</a><a href="#" data-i18n="foot_refund">Chính sách hoàn tiền</a></div>
  140. </div>
  141. <div class="foot-bottom"><span>© 2026 DoTouch.AI — doTouch.ai</span><span data-i18n="foot_made">Thế giới mã nguồn mở · AI phổ cập</span></div>
  142. </div>
  143. </footer>
  144. <div class="support-panel" id="supportPanel">
  145. <div class="support-head"><b data-i18n="chat_title">Trợ giúp & Hỗ trợ</b><span class="chat-status" data-i18n="chat_online">Trực tuyến</span></div>
  146. <div class="support-body">
  147. <p data-i18n="chat_hello">Xin chào! Chúng tôi có thể giúp gì cho bạn?</p>
  148. <div class="chat-sugg">
  149. <button data-i18n="chat_q_balance">Làm sao để nạp tiền?</button>
  150. <button data-i18n="chat_q_key">Tạo API key thế nào?</button>
  151. <button data-i18n="chat_q_model">Nên chọn mô hình nào?</button>
  152. </div>
  153. <div class="chat-input"><input placeholder="Nhập tin nhắn..." data-i18n="chat_input"><button>➤</button></div>
  154. <div class="chat-channels"><a class="tag tag-purple" href="#">Zalo</a><a class="tag tag-green" href="#">Telegram</a><a class="tag tag-gray" href="#">Email</a></div>
  155. </div>
  156. </div>
  157. <button class="support-fab" id="supportFab" aria-label="Support">
  158. <span class="pulse-ring"></span>
  159. <svg viewBox="0 0 24 24" width="26" height="26" fill="#fff"><path d="M12 3C7 3 3 6.6 3 11c0 2.3 1 4.3 2.7 5.8L5 20l3.4-1.5c1.1.4 2.3.5 3.6.5 5 0 9-3.6 9-8s-4-8-9-8z"/><circle cx="8.5" cy="11" r="1.2" fill="#0B1020"/><circle cx="12" cy="11" r="1.2" fill="#0B1020"/><circle cx="15.5" cy="11" r="1.2" fill="#0B1020"/></svg>
  160. </button>
  161. <div class="modal-mask" id="authModal">
  162. <div class="modal">
  163. <button class="modal-close" aria-label="Close">✕</button>
  164. <div id="viewLogin">
  165. <h3 data-i18n="auth_login_title">Đăng nhập</h3>
  166. <div class="auth-error" data-i18n="auth_err_email">Email không hợp lệ</div>
  167. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  168. <div class="field"><label data-i18n="auth_password">Mật khẩu</label><input type="password"></div>
  169. <button class="btn btn-primary btn-block" data-i18n="auth_login_btn">Đăng nhập</button>
  170. <div class="auth-links"><a data-auth-view="reset" data-i18n="auth_forgot">Quên mật khẩu?</a><a data-auth-view="register" data-i18n="auth_to_register">Tạo tài khoản</a></div>
  171. </div>
  172. <div id="viewRegister" hidden>
  173. <h3 data-i18n="auth_register_title">Tạo tài khoản</h3>
  174. <div class="auth-error" data-i18n="auth_err_pwd">Mật khẩu không khớp</div>
  175. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  176. <div class="field"><label data-i18n="auth_password">Mật khẩu</label><input type="password"></div>
  177. <div class="field"><label data-i18n="auth_confirm">Xác nhận mật khẩu</label><input type="password"></div>
  178. <div class="field">
  179. <label data-i18n="auth_code_label">Mã xác minh</label>
  180. <div class="code-row">
  181. <input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1">
  182. <button class="btn btn-sm code-send" data-send-code data-i18n="auth_code_send">Gửi mã</button>
  183. </div>
  184. <p class="auth-note" data-code-note data-i18n="auth_code_note">Mã gồm 8 ký tự chữ hoa & số, hiệu lực 15 phút</p>
  185. </div>
  186. <button class="btn btn-primary btn-block" data-i18n="auth_register_btn">Đăng ký</button>
  187. <div class="auth-links"><a data-auth-view="login" data-i18n="auth_to_login">Đã có tài khoản? Đăng nhập</a></div>
  188. </div>
  189. <div id="viewReset" hidden>
  190. <h3 data-i18n="auth_reset_title">Đặt lại mật khẩu</h3>
  191. <div class="auth-error" data-i18n="auth_err_pwd">Mật khẩu không khớp</div>
  192. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  193. <div class="field">
  194. <label data-i18n="auth_code_label">Mã xác minh</label>
  195. <div class="code-row">
  196. <input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1"><input class="code-cell" maxlength="1">
  197. <button class="btn btn-sm code-send" data-send-code data-i18n="auth_code_send">Gửi mã</button>
  198. </div>
  199. <p class="auth-note" data-code-note data-i18n="auth_code_note">Mã gồm 8 ký tự chữ hoa & số, hiệu lực 15 phút</p>
  200. </div>
  201. <div class="field"><label data-i18n="auth_new_pwd">Mật khẩu mới</label><input type="password"></div>
  202. <div class="field"><label data-i18n="auth_confirm_new">Xác nhận mật khẩu mới</label><input type="password"></div>
  203. <button class="btn btn-primary btn-block" data-i18n="auth_reset_btn">Đặt lại mật khẩu</button>
  204. <div class="auth-links"><a data-auth-view="login" data-i18n="auth_back_login">Quay lại đăng nhập</a></div>
  205. </div>
  206. </div>
  207. </div>
  208. <script src="i18n.js"></script>
  209. <script>
  210. /* ══ 模型数据(4 个主推模型;描述/名称引用 i18n 键,随语言联动) ══ */
  211. const MODEL_DATA = {
  212. 'glm-5.2': {
  213. nameKey: 'm_glm_name', descKey: 'm_glm_desc', vendorKey: 'm_glm_vendor', tagKey: 'tag_flagship', tagCls: 'tag-purple',
  214. ctx: '128K', out: '64K', rate: '60 req/min',
  215. caps: { json: 1, tool: 1, stream: 1, think: 1, vision: 0 },
  216. inUsd: 0.98, outUsd: 3.08, cut: '1.40 / 4.40',
  217. rel: ['deepseek-v4', 'deepseek-v4-pro', 'qwen-max']
  218. },
  219. 'deepseek-v4': {
  220. nameKey: 'm_dsv4_name', descKey: 'm_dsv4_desc', vendorKey: 'm_dsv4_vendor', tagKey: 'tag_best', tagCls: 'tag-green',
  221. ctx: '1M', out: '128K', rate: '120 req/min',
  222. caps: { json: 0, tool: 1, stream: 1, think: 1, vision: 0 },
  223. inUsd: 0.14, outUsd: 0.28, cut: '0.20 / 0.40',
  224. rel: ['glm-5.2', 'deepseek-v4-pro', 'qwen-max']
  225. },
  226. 'deepseek-v4-pro': {
  227. nameKey: 'm_dsv4p_name', descKey: 'm_dsv4p_desc', vendorKey: 'm_dsv4p_vendor', tagKey: 'tag_reasoning', tagCls: 'tag-gold',
  228. ctx: '1M', out: '128K', rate: '60 req/min',
  229. caps: { json: 0, tool: 1, stream: 1, think: 1, vision: 0 },
  230. inUsd: 0.42, outUsd: 0.84, cut: '0.60 / 1.20',
  231. rel: ['glm-5.2', 'deepseek-v4', 'qwen-max']
  232. },
  233. 'qwen-max': {
  234. nameKey: 'm_qwen_name', descKey: 'm_qwen_desc', vendorKey: 'm_qwen_vendor', tagKey: 'tag_enterprise', tagCls: 'tag-gray',
  235. ctx: '256K', out: '64K', rate: '60 req/min',
  236. caps: { json: 1, tool: 1, stream: 1, think: 1, vision: 1 },
  237. inUsd: 1.96, outUsd: 7.84, cut: '2.80 / 11.20',
  238. rel: ['glm-5.2', 'deepseek-v4', 'deepseek-v4-pro']
  239. }
  240. };
  241. const capIds = { json: 'capJson', tool: 'capTool', stream: 'capStream', think: 'capThink', vision: 'capVision' };
  242. function curLang() { return document.documentElement.lang || 'vi'; }
  243. function t(key) { return (I18N[curLang()] || {})[key] || key; }
  244. function renderModel(id) {
  245. const m = MODEL_DATA[id] || MODEL_DATA['glm-5.2'];
  246. document.getElementById('modelName').textContent = t(m.nameKey);
  247. document.getElementById('crumbModel').textContent = t(m.nameKey);
  248. document.getElementById('modelDesc').textContent = t(m.descKey);
  249. const tag = document.getElementById('modelTag');
  250. tag.className = 'tag ' + m.tagCls;
  251. tag.textContent = t(m.tagKey);
  252. document.getElementById('specVendor').textContent = t(m.vendorKey);
  253. document.getElementById('specCtx').textContent = m.ctx + ' tokens';
  254. document.getElementById('specOut').textContent = m.out + ' tokens';
  255. document.getElementById('specRate').textContent = m.rate;
  256. document.getElementById('codeModel').textContent = id;
  257. document.getElementById('codeModel2').textContent = id;
  258. Object.entries(capIds).forEach(([k, elId]) => {
  259. const el = document.getElementById(elId);
  260. el.innerHTML = m.caps[k]
  261. ? '<span class="save-tag">' + t('spec_ok') + '</span>'
  262. : '<span class="tag tag-gray">' + t('spec_no') + '</span>';
  263. });
  264. const pi = document.getElementById('priceIn').querySelector('[data-usd]');
  265. pi.dataset.usd = m.inUsd; pi.textContent = fmtPrice(m.inUsd);
  266. const po = document.getElementById('priceOut').querySelector('[data-usd]');
  267. po.dataset.usd = m.outUsd; po.textContent = fmtPrice(m.outUsd);
  268. document.getElementById('priceCut').textContent = '$' + m.cut;
  269. /* 相关模型(去重当前) */
  270. const rb = document.getElementById('relatedBox');
  271. rb.innerHTML = m.rel.map(rid => {
  272. const r = MODEL_DATA[rid];
  273. const cls = 'card hover-up';
  274. return '<a class="' + cls + '" href="model-detail.html?m=' + rid + '"><b>' + t(r.nameKey) + '</b><span class="tag ' + r.tagCls + '" style="margin-left:8px;">' + t(r.tagKey) + '</span><p style="font-size:12.5px;color:var(--muted);margin-top:6px;">' + t(r.descKey) + '</p><div style="margin-top:10px;font-size:12px;color:var(--muted);"><span class="price-usd" data-usd="' + r.inUsd + '">' + fmtPrice(r.inUsd) + '</span> / 1M in</div></a>';
  275. }).join('');
  276. applyCurrency();
  277. }
  278. /* 初始化:读取 ?m= 参数 */
  279. const param = new URLSearchParams(location.search).get('m') || 'glm-5.2';
  280. renderModel(param);
  281. /* 语言切换后重渲染(拦截 lang-btn 点击,setLang 执行后渲染) */
  282. document.querySelectorAll('.lang-btn').forEach(b => b.addEventListener('click', () => {
  283. setTimeout(() => renderModel(new URLSearchParams(location.search).get('m') || 'glm-5.2'), 0);
  284. }));
  285. </script>
  286. </body>
  287. </html>