docs.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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>Documentation — DoTouch.AI</title>
  7. <link rel="stylesheet" href="style.css">
  8. </head>
  9. <body>
  10. <div class="dev-note">v1.1.0 · 文档页(快速开始 / API 参考 / 错误码 / 计费)</div>
  11. <header>
  12. <div class="wrap nav">
  13. <a class="nav-logo" href="index.html">
  14. <svg viewBox="0 0 460 120" xmlns="http://www.w3.org/2000/svg">
  15. <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>
  16. <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>
  17. <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>
  18. </svg>
  19. </a>
  20. <nav class="nav-links">
  21. <a href="index.html" data-i18n="nav_home">Trang chủ</a>
  22. <a href="models.html" data-i18n="nav_models">Models</a>
  23. <a href="pricing.html" data-i18n="nav_pricing">Pricing</a>
  24. <a href="docs.html" class="active" data-i18n="nav_docs_ops">Hướng dẫn</a>
  25. <a href="../console-v1.0.0/user-console.html" data-i18n="nav_console">Console</a>
  26. </nav>
  27. <div class="nav-right">
  28. <div class="lang-switch">
  29. <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>
  30. </div>
  31. <a class="btn btn-sm" href="#" data-open-auth="login" data-i18n="nav_login">Đăng nhập</a>
  32. <a class="btn btn-primary btn-sm" href="#" data-open-auth="register" data-i18n="nav_signup">Bắt đầu</a>
  33. </div>
  34. </div>
  35. </header>
  36. <div class="wrap">
  37. <div class="crumbs"><a href="index.html" data-i18n="crumb_home">Trang chủ</a><span class="sep">/</span><span data-i18n="nav_docs">Tài liệu</span></div>
  38. <div class="page-hero">
  39. <h1 data-i18n="docs_h1">Tài liệu</h1>
  40. <p data-i18n="docs_sub">Bắt đầu nhanh, API Reference và quy tắc tính phí.</p>
  41. </div>
  42. <div style="display:grid;grid-template-columns:220px 1fr;gap:34px;" class="docs-layout">
  43. <!-- 侧边栏 -->
  44. <aside style="position:sticky;top:100px;align-self:start;">
  45. <div class="card" style="padding:16px;font-size:13.5px;">
  46. <a href="#start" style="display:block;padding:8px 10px;color:var(--purple-l);font-weight:600;" data-i18n="docs_sidebar_start">Bắt đầu nhanh</a>
  47. <a href="#api" style="display:block;padding:8px 10px;color:var(--muted);" data-i18n="docs_sidebar_api">API Reference</a>
  48. <a href="#errors" style="display:block;padding:8px 10px;color:var(--muted);" data-i18n="docs_sidebar_errors">Mã lỗi</a>
  49. <a href="#billing" style="display:block;padding:8px 10px;color:var(--muted);" data-i18n="docs_sidebar_billing">Tính phí</a>
  50. </div>
  51. </aside>
  52. <!-- 内容 -->
  53. <main>
  54. <!-- 快速开始 -->
  55. <section id="start" style="padding-top:0;">
  56. <h2 style="font-size:20px;font-weight:800;margin-bottom:8px;" data-i18n="docs_start_h">Bắt đầu nhanh</h2>
  57. <p style="color:var(--muted);font-size:14px;margin-bottom:18px;" data-i18n="docs_start_p">3 bước để gọi mô hình đầu tiên.</p>
  58. <div class="grid3">
  59. <div class="card"><b style="color:var(--purple-l);">01</b><h3 style="margin-top:6px;font-size:14.5px;" data-i18n="s1_t">Tạo tài khoản</h3><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="docs_start_s1">Tạo tài khoản & nạp tiền</p></div>
  60. <div class="card"><b style="color:var(--purple-l);">02</b><h3 style="margin-top:6px;font-size:14.5px;" data-i18n="s2_t">Tạo API key</h3><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="docs_start_s2">Tạo API key (tiền tố dt_)</p></div>
  61. <div class="card"><b style="color:var(--purple-l);">03</b><h3 style="margin-top:6px;font-size:14.5px;" data-i18n="s3_t">Gọi API</h3><p style="font-size:12.5px;color:var(--muted);margin-top:6px;" data-i18n="docs_start_s3">Gọi API tương thích OpenAI</p></div>
  62. </div>
  63. <div class="code-block" style="margin-top:18px;">
  64. <div class="code-head"><span class="dots"><i></i><i></i><i></i></span><span>cURL · POST /v1/chat/completions</span></div>
  65. <pre><code><span class="c-c"># OpenAI-compatible — đổi base URL và key là xong</span>
  66. <span class="c-k">curl</span> https://api.dotouch.ai/v1/chat/completions \
  67. -H <span class="c-s">"Authorization: Bearer dt_your_key_here"</span> \
  68. -H <span class="c-s">"Content-Type: application/json"</span> \
  69. -d <span class="c-s">'{
  70. "model": "glm-5.2",
  71. "messages": [{"role": "user", "content": "Xin chào!"}],
  72. "stream": true
  73. }'</span></code></pre>
  74. </div>
  75. </section>
  76. <!-- API 参考 -->
  77. <section id="api">
  78. <h2 style="font-size:20px;font-weight:800;margin-bottom:8px;" data-i18n="docs_sidebar_api">API Reference</h2>
  79. <div class="table-wrap" style="margin-top:14px;">
  80. <table class="data">
  81. <thead><tr><th data-i18n="docs_api_endpoint">Endpoint</th><th>Method</th><th data-i18n="docs_sidebar_api">Mô tả</th></tr></thead>
  82. <tbody>
  83. <tr><td class="price">/v1/models</td><td><span class="tag tag-green">GET</span></td><td style="color:var(--muted);" data-i18n="docs_api_models_p">GET /v1/models — không cần xác thực.</td></tr>
  84. <tr><td class="price">/v1/chat/completions</td><td><span class="tag tag-purple">POST</span></td><td style="color:var(--muted);" data-i18n="docs_api_chat_p">POST /v1/chat/completions — xác thực bằng Bearer API key. Hỗ trợ streaming SSE.</td></tr>
  85. <tr><td class="price">/v1/auth/*</td><td><span class="tag tag-purple">POST</span></td><td style="color:var(--muted);">Register / Login / Me</td></tr>
  86. <tr><td class="price">/v1/keys</td><td><span class="tag tag-purple">POST</span></td><td style="color:var(--muted);">Tạo API key (Console)</td></tr>
  87. <tr><td class="price">/v1/usage/summary</td><td><span class="tag tag-green">GET</span></td><td style="color:var(--muted);">Tổng kết sử dụng theo ngày</td></tr>
  88. </tbody>
  89. </table>
  90. </div>
  91. </section>
  92. <!-- 错误码 -->
  93. <section id="errors">
  94. <h2 style="font-size:20px;font-weight:800;margin-bottom:8px;" data-i18n="docs_sidebar_errors">Mã lỗi</h2>
  95. <p style="color:var(--muted);font-size:13.5px;margin-bottom:14px;">Định dạng lỗi tương thích OpenAI: <code class="price" style="color:var(--purple-l);">{error: {message, type, code, param}}</code></p>
  96. <div class="table-wrap">
  97. <table class="data">
  98. <thead><tr><th>HTTP</th><th data-i18n="docs_sidebar_errors">Mã lỗi</th><th>type</th></tr></thead>
  99. <tbody>
  100. <tr><td class="price">401</td><td data-i18n="docs_err_401">API key không hợp lệ</td><td class="price">invalid_api_key</td></tr>
  101. <tr><td class="price">402</td><td data-i18n="docs_err_402">Số dư không đủ</td><td class="price">insufficient_balance</td></tr>
  102. <tr><td class="price">404</td><td data-i18n="docs_err_404">Mô hình không tồn tại</td><td class="price">model_not_found</td></tr>
  103. <tr><td class="price">429</td><td data-i18n="docs_err_429">Vượt giới hạn tốc độ</td><td class="price">rate_limit_exceeded</td></tr>
  104. <tr><td class="price">500</td><td>Lỗi máy chủ / thượng nguồn</td><td class="price">api_error</td></tr>
  105. </tbody>
  106. </table>
  107. </div>
  108. </section>
  109. <!-- 计费 -->
  110. <section id="billing">
  111. <h2 style="font-size:20px;font-weight:800;margin-bottom:8px;" data-i18n="docs_sidebar_billing">Tính phí</h2>
  112. <div class="card" style="max-width:700px;">
  113. <p style="font-size:14px;color:var(--muted);" data-i18n="docs_bill_p">Phí = token × đơn giá (USD), quy đổi VND theo tỷ giá tại thời điểm nạp tiền. Lịch sử giao dịch trong Console.</p>
  114. <div style="margin-top:14px;display:flex;gap:10px;flex-wrap:wrap;">
  115. <span class="tag tag-purple">MoMo</span><span class="tag tag-purple">ZaloPay</span><span class="tag tag-purple">Stripe</span><span class="tag tag-purple">PayPal</span><span class="tag tag-purple">Alipay</span><span class="tag tag-purple" data-i18n="pay_card">Thẻ ngân hàng</span>
  116. </div>
  117. </div>
  118. </section>
  119. </main>
  120. </div>
  121. </div>
  122. <footer>
  123. <div class="wrap">
  124. <div class="foot-grid">
  125. <div class="foot-brand">
  126. <svg viewBox="0 0 460 120" width="140" xmlns="http://www.w3.org/2000/svg">
  127. <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>
  128. <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>
  129. <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>
  130. </svg>
  131. <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>
  132. </div>
  133. <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="#" data-i18n="foot_console">Console</a><a href="#" data-i18n="foot_status">Trạng thái</a></div>
  134. <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>
  135. <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>
  136. </div>
  137. <div class="foot-bottom"><span>© 2026 DoTouch.AI — doTouch.ai</span><span data-i18n="foot_made">Thế giới mã nguồn mở · 算力普惠</span></div>
  138. </div>
  139. </footer>
  140. <div class="support-panel" id="supportPanel">
  141. <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>
  142. <div class="support-body">
  143. <p data-i18n="chat_hello">Xin chào! Chúng tôi có thể giúp gì cho bạn?</p>
  144. <div class="chat-sugg">
  145. <button data-i18n="chat_q_balance">Làm sao để nạp tiền?</button>
  146. <button data-i18n="chat_q_key">Tạo API key thế nào?</button>
  147. <button data-i18n="chat_q_model">Nên chọn mô hình nào?</button>
  148. </div>
  149. <div class="chat-input"><input placeholder="Nhập tin nhắn..." data-i18n="chat_input"><button>➤</button></div>
  150. <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>
  151. </div>
  152. </div>
  153. <button class="support-fab" id="supportFab" aria-label="Support">
  154. <span class="pulse-ring"></span>
  155. <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>
  156. </button>
  157. <div class="modal-mask" id="authModal">
  158. <div class="modal">
  159. <button class="modal-close" aria-label="Close">✕</button>
  160. <div id="viewLogin">
  161. <h3 data-i18n="auth_login_title">Đăng nhập</h3>
  162. <div class="auth-error" data-i18n="auth_err_email">Email không hợp lệ</div>
  163. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  164. <div class="field"><label data-i18n="auth_password">Mật khẩu</label><input type="password"></div>
  165. <button class="btn btn-primary btn-block" data-i18n="auth_login_btn">Đăng nhập</button>
  166. <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>
  167. </div>
  168. <div id="viewRegister" hidden>
  169. <h3 data-i18n="auth_register_title">Tạo tài khoản</h3>
  170. <div class="auth-error" data-i18n="auth_err_pwd">Mật khẩu không khớp</div>
  171. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  172. <div class="field"><label data-i18n="auth_password">Mật khẩu</label><input type="password"></div>
  173. <div class="field"><label data-i18n="auth_confirm">Xác nhận mật khẩu</label><input type="password"></div>
  174. <div class="field">
  175. <label data-i18n="auth_code_label">Mã xác minh</label>
  176. <div class="code-row">
  177. <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">
  178. <button class="btn btn-sm code-send" data-send-code data-i18n="auth_code_send">Gửi mã</button>
  179. </div>
  180. <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>
  181. </div>
  182. <button class="btn btn-primary btn-block" data-i18n="auth_register_btn">Đăng ký</button>
  183. <div class="auth-links"><a data-auth-view="login" data-i18n="auth_to_login">Đã có tài khoản? Đăng nhập</a></div>
  184. </div>
  185. <div id="viewReset" hidden>
  186. <h3 data-i18n="auth_reset_title">Đặt lại mật khẩu</h3>
  187. <div class="auth-error" data-i18n="auth_err_pwd">Mật khẩu không khớp</div>
  188. <div class="field"><label data-i18n="auth_email">Email</label><input type="email" placeholder="you@example.com"></div>
  189. <div class="field">
  190. <label data-i18n="auth_code_label">Mã xác minh</label>
  191. <div class="code-row">
  192. <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">
  193. <button class="btn btn-sm code-send" data-send-code data-i18n="auth_code_send">Gửi mã</button>
  194. </div>
  195. <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>
  196. </div>
  197. <div class="field"><label data-i18n="auth_new_pwd">Mật khẩu mới</label><input type="password"></div>
  198. <div class="field"><label data-i18n="auth_confirm_new">Xác nhận mật khẩu mới</label><input type="password"></div>
  199. <button class="btn btn-primary btn-block" data-i18n="auth_reset_btn">Đặt lại mật khẩu</button>
  200. <div class="auth-links"><a data-auth-view="login" data-i18n="auth_back_login">Quay lại đăng nhập</a></div>
  201. </div>
  202. </div>
  203. </div>
  204. <script src="i18n.js"></script>
  205. </body>
  206. </html>