PageSourceSearch

https://www.aa.com.cn/

html aa.com.cn collected 2026-10-07 19:56:18 UTC 59,733 bytes, 997 lines download raw bytes

1<!doctype html>
2<html lang="zh-CN">
3
4<head>
5  <meta charset="utf-8" />
6  <meta name="viewport" content="width=device-width, initial-scale=1" />
7  <title>国内高速 AI 大模型 API 中转 - 典名词元</title>
8  <meta name="canvas:aspect-ratio" content="16:9" />
9  <link href="/statics/css/font-awesome4.7.0.min.css" rel="stylesheet" type="text/css">
10  <link href="/statics/css/css2.css" rel="stylesheet" type="text/css">
11  <link href="/statics/css/common.css" rel="stylesheet" type="text/css">
12  </head>
13
14<body>
15  <!-- ─── Navigation ──────────────────────────────────────────────── -->
16  <div class="hero-grid-bg" aria-hidden="true"></div>
17  <header class="topnav" id="top" data-component="Navigation" data-od-id="topnav">
18    <div class="container topnav-inner">
19      <a href="/" class="logo" style="text-decoration:none; opacity:1;">
20        <img src="/statics/images/logo.png" alt="典名词元">
21      </a>
22      <nav>
23        <ul class="nav-links">
24          <li><a href="/">首页</a></li>
25          <li class="nav-dropdown">
26            <a href="/agent/qwenwork">AI应用
27              <svg class="dropdown-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
28                <polyline points="6 9 12 15 18 9" />
29              </svg>
30            </a>
31            <ul class="dropdown-menu">
32              <li><a href="/agent/qwenwork">千问办公</a></li>
33              <!-- <li><a href="/agent/ihuiwa">绘蛙</a></li> -->
34              <li><a href="/agent/traework">Trae Work</a></li>
35              <li><a href="/agent/workbuddy">WorkBuddy</a></li>
36            </ul>
37          </li>
38          <li><a href="/model">模型广场</a></li>
39          <li><a href="/pricing">ä»·æ ¼</a></li>
40          <li><a href="https://api-doc.aa.com.cn" target="_blank">文档中心</a></li>
41          <li class="nav-dropdown">
42            <a href="/about/company">关于我们
43              <svg class="dropdown-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
44                <polyline points="6 9 12 15 18 9" />
45              </svg>
46            </a>
47            <ul class="dropdown-menu">
48              <li><a href="/about/company">公司介绍</a></li>
49              <li><a href="/about/qualifications">资质荣誉</a></li>
50              <li><a href="/about/methodology">测试方法论</a></li>
51              <li><a href="/about/sla">SLA</a></li>
52              <li><a href="/about/contact">联系方式</a></li>
53            </ul>
54          </li>
55          <li class="hidden console" id="console-link"><a href="/console/">控制台</a></li>
56        </ul>
57      </nav>
58      <div class="nav-actions">
59        <!-- 用户信息区域 -->
60        <!-- <div id="user-area" class="relative flex items-center"> -->
61        <div id="user-area">
62          <button class="btn btn-secondary btn-sm hidden" id="login-button">登录</button>
63          <button class="btn btn-primary btn-sm hidden" id="register-button">注册</button>
64          <!-- 用户头像和下拉菜单(已登录状态) -->
65          <div id="user-dropdown" class="hidden nav-dropdown">
66            <button id="user-avatar" class="flex items-center p-1 rounded-full hover:bg-gray-100 transition-colors">
67              <img id="avatar-img" src="" alt="用户头像" class="w-8 h-8 rounded-full object-cover hidden">
68              <span id="avatar-initial" class="w-8 h-8 rounded-full bg-primary text-white flex items-center justify-center text-sm font-medium hidden"></span>
69            </button>
70            <div class="absolute right-0 w-28 bg-white rounded-lg shadow-lg py-1 z-50 hidden">
71              <ul class="dropdown-menu" style="top: calc(100% - 8px) !important;">
72                                  <li><a href="https://www.aa.com.cn/console/" class="block px-6 py-2 text-gray-700 hover:bg-gray-100 align-center">模型广场</a></li>
73                                  <li><a href="https://www.aa.com.cn/console/user" class="block px-6 py-2 text-gray-700 hover:bg-gray-100 align-center">个人信息</a></li>
74                                  <li><a href="https://www.aa.com.cn/console/recharge" class="block px-6 py-2 text-gray-700 hover:bg-gray-100 align-center">积分充值</a></li>
75                                <li><a href="#" id="logout-button" class="block px-6 py-2 text-red-500 hover:bg-red-100 align-center">退出登录</a></li>
76              </ul>
77            </div>
78          </div>
79        </div>
80      </div>
81      <button class="menu-toggle" aria-label="打开菜单">
82        <svg class="icon-hamburger" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
83          <line x1="3" y1="6" x2="21" y2="6" />
84          <line x1="3" y1="12" x2="21" y2="12" />
85          <line x1="3" y1="18" x2="21" y2="18" />
86        </svg>
87        <svg class="icon-close" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
88          <line x1="18" y1="6" x2="6" y2="18" />
89          <line x1="6" y1="6" x2="18" y2="18" />
90        </svg>
91      </button>
92    </div>
93  </header>
94
95  <!-- ─── Mobile Menu ─────────────────────────────────────────────── -->
96  <div class="mobile-menu" id="mobileMenu">
97    <ul class="mobile-menu-links">
98      <li><a href="/">首页</a></li>
99      <li>
100        <a href="/agent/qwenwork">AI应用</a>
101        <ul class="mobile-dropdown-menu">
102          <li><a href="/agent/qwenwork">千问办公</a></li>
103          <!-- <li><a href="/agent/ihuiwa">绘蛙</a></li> -->
104          <li><a href="/agent/traework">Trae Work</a></li>
105          <li><a href="/agent/workbuddy">WorkBuddy</a></li>
106        </ul>
107      </li>
108      <li><a href="/model">模型广场</a></li>
109      <li><a href="/pricing">ä»·æ ¼</a></li>
110      <li><a href="https://api-doc.aa.com.cn" target="_blank">文档中心</a></li>
111      <li>
112        <a href="/about/company">
112关于我们</a>
113        <ul class="mobile-dropdown-menu">
114          <li><a href="/about/company">公司介绍</a></li>
115          <li><a href="/about/qualifications">资质荣誉</a></li>
116          <li><a href="/about/methodology">测试方法论</a></li>
117          <li><a href="/about/sla">SLA</a></li>
118          <li><a href="/about/contact">联系方式</a></li>
119        </ul>
120      </li>
121      <li class="mobile-console hidden"><a href="/console/">控制台</a></li>
122      <li class="mobile-ucenter hidden">
123        <a href="#">个人中心</a>
124        <ul class="mobile-dropdown-menu">
125                      <li><a href="https://www.aa.com.cn/console/">模型广场</a></li>
126                      <li><a href="https://www.aa.com.cn/console/user">个人信息</a></li>
127                      <li><a href="https://www.aa.com.cn/console/recharge">积分充值</a></li>
128                  </ul>
129      </li>
130    </ul>
131    <div class="mobile-menu-footer">
132      <a href="https://uc.aa.com.cn/login/oauth/authorize?client_id=5cbb2506c9e13330fe1a&amp;response_type=code&amp;redirect_uri=https%3A%2F%2Fwww.aa.com.cn%2Fconsole%2Fcallback&amp;theme=light&amp;origin=home&amp;icode=" class="btn btn-primary" id="mobile-menu-login-button">登录</a>
133      <button class="btn btn-secondary hidden" id="mobile-menu-logout-button">退出登录</button>
134    </div>
135  </div>
136
137  <main id="content">
138      <!-- ─── Hero / Banner ─────────────────────────────────────────── -->
139  <section class="hero section" data-component="Hero" data-od-id="hero">
140    <div class="container hero-inner">
141      <div class="hero-content">
142        <p class="eyebrow"><span class="eyebrow-dot"></span>领先的人工智能应用基座</p>
143        <h1>国内高速 AI 大模型<br/>API 中转</h1>
144        <p class="lead">通过统一、标准接口协议接入海量国内模型。承载 AI 应用,高效管理 token 资产,连接未来。</p>
145        <div class="hero-cta">
146          <button class="btn btn-primary btn-lg" id="now-get">
147            立即获取 API Key
148            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
149          </button>
150          <a href="https://api-doc.aa.com.cn" target="_blank" class="btn btn-secondary btn-lg">查看接入文档</a>
151        </div>
152        <p style="margin-top: var(--gap-lg); font-size: 14px; color: var(--fg-tertiary);">现在开始,5 分钟接入全网大模型</p>
153        <div class="hero-apps">
154          <div class="hero-apps-label">常用应用支持</div>
155          <div class="hero-apps-desc">完美支持各类工具生态协议</div>
156          <div class="hero-apps-list">
157            <span class="hero-app-pill">
158              <svg xmlns="http://www.w3.org/2000/svg" fill="#d97757" viewBox="0 0 100 100" class="w-full fill-current"><path d="m19.6 66.5 19.7-11 .3-1-.3-.5h-1l-3.3-.2-11.2-.3L14 53l-9.5-.5-2.4-.5L0 49l.2-1.5 2-1.3 2.9.2 6.3.5 9.5.6 6.9.4L38 49.1h1.6l.2-.7-.5-.4-.4-.4L29 41l-10.6-7-5.6-4.1-3-2-1.5-2-.6-4.2 2.7-3 3.7.3.9.2 3.7 2.9 8 6.1L37 36l1.5 1.2.6-.4.1-.3-.7-1.1L33 25l-6-10.4-2.7-4.3-.7-2.6c-.3-1-.4-2-.4-3l3-4.2L28 0l4.2.6L33.8 2l2.6 6 4.1 9.3L47 29.9l2 3.8 1 3.4.3 1h.7v-.5l.5-7.2 1-8.7 1-11.2.3-3.2 1.6-3.8 3-2L61 2.6l2 2.9-.3 1.8-1.1 7.7L59 27.1l-1.5 8.2h.9l1-1.1 4.1-5.4 6.9-8.6 3-3.5L77 13l2.3-1.8h4.3l3.1 4.7-1.4 4.9-4.4 5.6-3.7 4.7-5.3 7.1-3.2 5.7.3.4h.7l12-2.6 6.4-1.1 7.6-1.3 3.5 1.6.4 1.6-1.4 3.4-8.2 2-9.6 2-14.3 3.3-.2.1.2.3 6.4.6 2.8.2h6.8l12.6 1 3.3 2 1.9 2.7-.3 2-5.1 2.6-6.8-1.6-16-3.8-5.4-1.3h-.8v.4l4.6 4.5 8.3 7.5L89 80.1l.5 2.4-1.3 2-1.4-.2-9.2-7-3.6-3-8-6.8h-.5v.7l1.8 2.7 9.8 14.7.5 4.5-.7 1.4-2.6 1-2.7-.6-5.8-8-6-9-4.7-8.2-.5.4-2.9 30.2-1.3 1.5-3 1.2-2.5-2-1.4-3 1.4-6.2 1.6-8 1.3-6.4 1.2-7.9.7-2.6v-.2H49L43 72l-9 12.3-7.2 7.6-1.7.7-3-1.5.3-2.8L24 86l10-12.8 6-7.9 4-4.6-.1-.5h-.3L17.2 77.4l-4.7.6-2-2 .2-3 1-1 8-5.5Z"></path></svg>
159              Claude Code
160            </span>
161            <span class="hero-app-pill">
162              <svg t="1784017964799" class="icon" viewBox="0 0 1089 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1764" width="200" height="200"><path d="M466.63477617 31.24645905c61.12522043 0.88373813 118.42090898 24.45008817 165.40631938 71.43549856 6.92261532 6.92261532 12.96149253 8.54280189 22.24074285 7.21719472 134.77006433-19.00036972 253.04368363 66.13306981 277.78835118 200.01939602 6.48074626 35.20223538 4.41869063 70.25718107-5.59700813 104.57567833-2.50392469 8.3955122-0.88373813 13.69794096 4.56598031 20.32597691 111.49829366 136.83211996 44.7760651 343.77413131-125.63810368 388.84477577-9.72111939 2.50392469-13.99252034 6.92261532-17.38018316 15.75999661-63.33456576 164.66987094-276.02087492 209.00406699-400.03879204 83.36596328-6.1861669-6.1861669-11.48859565-7.51177407-19.88410786-6.33345656-136.68483027 19.2949491-255.10573925-65.98578013-279.55582743-201.34500323-6.33345658-34.7603663-3.97682157-69.37344294 6.03887721-103.25007113 2.50392469-8.3955122 0.88373813-13.69794096-4.41869062-20.32597692-111.94016272-136.97940963-44.03961664-345.39431787 126.96371087-389.28664484 8.54280189-2.20934532 12.51962347-5.89158752 15.6127069-13.84523064 36.82242196-96.32745582 126.22726243-157.59996593 233.89602422-157.15809688z m148.17342591 593.13557275c-77.32708608 44.6287754-152.1502475 87.49007455-226.38425013 131.08782212-16.79102442 9.86840908-31.07812413 9.5738297-47.86914855-0.29457938-58.17942668-34.46578693-116.80072242-67.90054606-175.42201815-101.48259488-4.27140094-2.35663501-7.80635344-7.2171947-14.58167908-5.15513907-7.95364315 71.58278827 14.4343894 131.23511182 73.20297482 173.50725221 59.2104545 42.56671978 124.3124965 47.86914853 188.82537976 13.69794097 65.98578013-34.907656 129.76221494-74.08671296 194.42238788-111.49829366 3.68224221-2.06205563 7.80635344-3.68224221 7.80635345-9.13196065v-90.73044766z m-41.24111259-487.38157692c-1.47289687-5.15513907-5.30242877-6.62803595-8.24822251-8.69009157-58.91587511-39.9155054-121.66128212-46.24896197-185.29042725-14.87625848-64.21830387 31.81457257-98.38951143 86.16446736-100.30427737 157.89454531-1.91476594 72.90839547-0.29457937 145.81679091-0.73644845 218.72518637 0 7.80635344 2.65121438 11.93046471 9.27925032 15.46541723 21.65158411 11.93046471 43.00858883 24.59737787 64.36559358 36.82242194 2.65121438 1.47289687 5.0078494 4.71327001 9.42654001 1.91476595 0-86.31175705 0.29457937-173.06538315-0.14728967-259.81900928-0.1472897-17.82205222 6.62803595-29.31064787 22.09345315-38.00073943 44.7760651-25.18653662 89.11026111-51.10952167 133.59174684-76.88521704 18.70579035-10.75214722 37.4115807-21.79887379 55.97008135-32.551021z m85.28072925 341.56478599v18.85308004c0 81.89306641-0.1472897 163.93342252 0.14728967 245.82648892 0.1472897 16.64373472-6.03887719 27.98504069-20.62055629 35.93868382-20.47326659 11.19401627-40.50466414 23.12448098-60.68335137 34.76036634-43.45045791 25.18653662-87.04820548 50.37307323-134.62277464 77.91624483 4.12411126 1.47289687 6.1861669 1.76747625 7.65906377 2.94579376 54.64447417 39.9155054 114.29679772 49.04746604 176.89491503 24.00821909 62.5981173-25.03924691 102.95549177-72.6138161 110.61455554-139.63062402 9.27925033-81.89306641 1.91476594-164.66987094 3.3876628-247.00480644 0.1472897-4.41869063-1.91476594-6.92261532-5.44971843-8.98467094-25.03924691-14.4343894-49.93120416-28.86877882-77.32708608-44.6287754zM554.71400945 367.2142369c6.03887719 3.68224221 10.16298847 6.03887719 14.13981004 8.39551221 71.2882089 41.24111259 142.42912809 82.62951485 214.01191636 123.42875836 15.46541722 8.83738127 22.09345317 20.47326659 21.94616348 38.14802915-0.44186907 68.19512544-0.1472897 136.39025089-0.14728969 204.58537633 0 5.0078494 0.44186907 9.86840908 0.73644844 15.90728628 3.68224221-1.3256072 5.89158752-2.06205563 8.10093282-2.94579374 64.0710142-29.75251694 102.07175363-79.6837211 108.11063085-149.79361249 6.33345658-72.6138161-22.68261193-130.94053245-84.98614986-169.38314097-62.745407-38.73718787-127.55286961-74.08671296-191.32930443-111.20371428-5.59700814-3.24037312-9.72111939-3.68224221-15.61270692-0.29457938-24.15550879 14.13981003-48.60559698 27.83775099-74.97045109 43.15587853zM216.24230691 270.44491203c-6.62803595-0.88373813-10.60485751 2.20934532-14.72896877 4.27140094-60.97793075 30.63625506-96.62203518 80.12559015-102.21904332 147.87884654-5.74429781 70.25718107 21.50429441 127.9947387 81.15661796 165.70089876 63.92372449 40.35737445 130.64595307 76.44334797 196.04257446 114.44408742 3.82953187 2.20934532 7.36448439 4.12411126 11.78317501 1.47289688 25.33382629-14.72896878 50.66765259-29.45793756 77.47437578-44.92335477-5.59700814-3.38766283-9.42654002-5.89158752-13.40336158-8.24822253-71.2882089-41.24111259-142.42912809-82.62951485-214.01191636-123.28146868-16.05457598-9.13196064-22.53532223-21.06242535-22.38803255-39.32634664 0.58915875-72.31923671 0.29457937-144.7857631 0.29457937-217.98873792z m190.15098694 130.79324274c6.1861669-3.24037312 10.31027814-5.30242877 14.28709973-7.65906375 70.55176044-40.65195383 141.25081059-81.00932829 211.36070197-122.39773056 16.79102442-9.86840908 31.07812413-10.16298847 47.86914854-0.29457937 59.0631648 34.907656 118.56819867 68.78428419 177.92594284 102.95549177 3.5349525 2.06205563 6.48074626 5.89158752 12.51962347 4.12411125 7.80635344-70.10989139-13.40336159-129.32034589-70.69905013-171.73977596-59.50503387-44.18690634-125.34352431-50.22578353-191.03472509-15.6127069-65.98578013 34.907656-129.76221494 74.08671296-194.56967756 111.35100396-3.68224221 2.06205563-7.65906378 3.82953187-7.65906377 9.27925033v89.99399923z m208.41490823 115.9169843c0-20.17868721-0.44186907-36.96971163 0.14728969-53.61344636 0.29457937-7.65906378-2.20934532-12.0777544-8.98467096-15.75999658
162-29.45793756-16.49644503-58.76858542-33.43475913-87.78465391-50.6676526-5.59700814-3.38766283-9.72111939-3.38766283-15.46541723-0.14728971-29.01606849 17.23289347-58.32671636 34.17120756-87.78465393 50.66765261-6.77532564 3.82953187-8.83738127 8.24822251-8.83738127 15.90728628 0.44186907 32.84560039 0.58915875 65.83849045 0 98.68409082-0.1472897 8.98467097 3.09308345 13.69794096 10.75214722 17.67476253 13.99252034 7.2171947 27.24859225 15.61270692 40.94653321 23.41906036 17.38018317 9.86840908 34.7603663 27.6904613 51.99325978 27.54317163 17.96934191-0.1472897 35.79139413-17.52747284 53.46615667-27.54317163 16.9383141-9.72111939 39.17905696-16.20186565 48.75288666-30.78354473 9.86840908-15.46541722 1.76747625-39.03176725 2.79850407-55.38092262z" fill="#030303" p-id="1765"></path></svg>
163              Codex
164            </span>
165            <span class="hero-app-pill">
166              <svg t="1784018012974" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2799" width="200" height="200"><path d="M716.8 819.2H307.2V409.6h409.6v409.6z" fill="#CFCECD" p-id="2800"></path><path d="M716.8 204.8H307.2v614.4h409.6V204.8z m204.8 819.2H102.4V0h819.2v1024z" fill="#211E1E" p-id="2801"></path></svg>
167              OpenCode
168            </span>
169            <span class="hero-app-pill more">
170              <svg viewBox="0 0 24 24" fill="currentColor"><circle cx="6" cy="12" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="18" cy="12" r="2"/></svg>
171              更多
172            </span>
173          </div>
174        </div>
175      </div>
176      <div class="hero-code" id="quickstart">
177        <div class="code-container">
178          <div class="code-tabs" role="tablist">
179            <button class="code-tab active" data-code-tab="chat" role="tab" aria-selected="true">Chat</button>
180            <button class="code-tab" data-code-tab="responses" role="tab" aria-selected="false">Responses</button>
181            <button class="code-tab" data-code-tab="claude" role="tab" aria-selected="false">Claude</button>
182            <button class="code-tab" data-code-tab="gemini" role="tab" aria-selected="false">Gemini</button>
183          </div>
184          <!-- Chat -->
185          <div class="code-panel active" data-code-panel="chat">
186            <div class="code-panel-scroll">
187              <div class="code-endpoint"><span class="method-badge">POST</span> /api/v1/chat/completions</div>
188              <div class="code-section-label">Request</div>
189              <div class="code-block"><span class="fn">curl</span> -X POST <span class="str">"https://api.aa.com.cn/api/v1/chat/completions"</span> \
190<span class="op">-H</span> <span class="str">"Authorization: Bearer sk-****"</span> \
191<span class="op">-H</span> <span class="str">"Content-Type: application/json"</span> \
192<span class="op">-d</span> <span class="str">'{
193  "model": "deepseek-v4-flash",
194  "messages": [
195    {"role": "user", "content": "你好!"}
196  ]
197}'</span></div>
198              <div class="code-section-label">Response</div>
199              <div class="code-block">{
200<span class="str">"choices"</span>: [{
201  <span class="str">"message"</span>: { <span class="str">"content"</span>: <span class="str">"你好!我是典名词元AI助手,有什么可以帮助您的吗?"</span> }
202}],
203<span class="str">"usage"</span>: { <span class="str">"total_tokens"</span>: <span class="num">27</span> }
204}</div>
205            </div>
206            <div class="code-status">
207              <span class="status-left">142 MS &bull; 27 TOKENS &bull; COST $0.00081</span>
208              <span class="status-right">STREAM &bull; SSE</span>
209            </div>
210          </div>
211          <!-- Responses -->
212          <div class="code-panel" data-code-panel="responses">
213            <div class="code-panel-scroll">
214              <div class="code-endpoint"><span class="method-badge">POST</span> /api/v1/responses</div>
215              <div class="code-section-label">Request</div>
216              <div class="code-block"><span class="fn">curl</span> -X POST <span class="str">"https://api.aa.com.cn/api/v1/responses"</span> \
217<span class="op">-H</span> <span class="str">"Authorization: Bearer sk-****"</span> \
218<span class="op">-H</span> <span class="str">"Content-Type: application/json"</span> \
219<span class="op">-d</span> <span class="str">'{
220  "model": "qwen3.7-max",
221  "input": "你好!"
222}'</span></div>
223              <div class="code-section-label">Response</div>
224              <div class="code-block">{
225<span class="str">"output"</span>: [{
226  <span class="str">"type"</span>: <span class="str">"message"</span>,
227  <span class="str">
227"content"</span>: [{ <span class="str">"text"</span>: <span class="str">"你好!有什么可以帮助您的吗?"</span> }]
228}],
229<span class="str">"usage"</span>: { <span class="str">"total_tokens"</span>: <span class="num">31</span> }
230}</div>
231            </div>
232            <div class="code-status">
233              <span class="status-left">168 MS &bull; 31 TOKENS &bull; COST $0.00093</span>
234              <span class="status-right">STREAM &bull; SSE</span>
235            </div>
236          </div>
237          <!-- Claude -->
238          <div class="code-panel" data-code-panel="claude">
239            <div class="code-panel-scroll">
240              <div class="code-endpoint"><span class="method-badge">POST</span> /api/v1/messages</div>
241              <div class="code-section-label">Request</div>
242              <div class="code-block"><span class="fn">curl</span> -X POST <span class="str">"https://api.aa.com.cn/api/v1/messages"</span> \
243<span class="op">-H</span> <span class="str">"x-api-key: sk-****"</span> \
244<span class="op">-H</span> <span class="str">"Content-Type: application/json"</span> \
245<span class="op">-d</span> <span class="str">'{
246  "model": "deepseek-v4-pro",
247  "max_tokens": 1024,
248  "messages": [
249    {"role": "user", "content": "你好!"}
250  ]
251}'</span></div>
252              <div class="code-section-label">Response</div>
253              <div class="code-block">{
254<span class="str">"content"</span>: [{
255  <span class="str">"type"</span>: <span class="str">"text"</span>,
256  <span class="str">"text"</span>: <span class="str">"你好!我是 Claude,有什么可以帮助您的吗?"</span>
257}],
258<span class="str">"usage"</span>: { <span class="str">"output_tokens"</span>: <span class="num">19</span> }
259}</div>
260            </div>
261            <div class="code-status">
262              <span class="status-left">203 MS &bull; 19 TOKENS &bull; COST $0.00114</span>
263              <span class="status-right">STREAM &bull; SSE</span>
264            </div>
265          </div>
266          <!-- Gemini -->
267          <div class="code-panel" data-code-panel="gemini">
268            <div class="code-panel-scroll">
269              <div class="code-endpoint"><span class="method-badge">POST</span> /api/v1/v1beta/models/gemini-3.5-flash:generateContent</div>
270              <div class="code-section-label">Request</div>
271              <div class="code-block"><span class="fn">curl</span> -X POST <span class="str">"https://api.aa.com.cn/api/v1/v1beta/models/gemini-3.5-flash:generateContent"</span> \
272<span class="op">-H</span> <span class="str">"Authorization: Bearer sk-****"</span> \
273<span class="op">-H</span> <span class="str">"Content-Type: application/json"</span> \
274<span class="op">-d</span> <span class="str">'{
275  "contents": [{
276    "parts": [{"text": "你好!"}]
277  }]
278}'</span></div>
279              <div class="code-section-label">Response</div>
280              <div class="code-block">{
281<span class="str">"candidates"</span>: [{
282  <span class="str">"content"</span>: {
283    <span class="str">"parts"</span>: [{ <span class="str">"text"</span>: <span class="str">"你好!我是 Gemini,有什么可以帮助您的吗?"</span> }]
284  }
285}],
286<span class="str">"usageMetadata"</span>: { <span class="str">"totalTokenCount"</span>: <span class="num">24</span> }
287}</div>
288            </div>
289            <div class="code-status">
290              <span class="status-left">156 MS &bull; 24 TOKENS &bull; COST $0.00072</span>
291              <span class="status-right">STREAM &bull; SSE</span>
292            </div>
293          </div>
294        </div>
295      </div>
296    </div>
297  </section>
298
299  <!-- ─── 为什么选择典名词元 ─────────────────────────────────────── -->
300  <section class="section" id="why" data-component="Features" data-od-id="why">
301    <div class="container">
302      <div class="section-header">
303        <p class="eyebrow">WHY US</p>
304        <h2>为什么选择典名词元</h2>
305      </div>
306      <div class="features-grid">
307        <div class="feature-card">
308          <div class="feature-icon">
309            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
309<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
310          </div>
311          <h3>国内直连,极速低延迟</h3>
312          <p>阿里云节点部署,无需代理,国内高速直连,平均延迟 50ms。</p>
313          <div class="feature-highlight">平均延迟 50ms</div>
314        </div>
315        <div class="feature-card">
316          <div class="feature-icon">
317            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6"/></svg>
318          </div>
319          <h3>更低成本,按量计费</h3>
320          <p>输入输出 token 价格比官方低约 30%–70%,用多少付多少,无最低消费。</p>
321          <div class="feature-highlight">比官方低约 30%–70%</div>
322        </div>
323        <div class="feature-card">
324          <div class="feature-icon">
325            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
326          </div>
327          <h3>零改动接入,兼容 OpenAI</h3>
328          <p>无需修改 SDK,仅改 base_url 一行代码即可接入,完全兼容 OpenAI API 格式。</p>
329          <div class="feature-highlight">仅改 base_url</div>
330        </div>
331        <div class="feature-card">
332          <div class="feature-icon">
333            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>
334          </div>
335          <h3>99.9% SLA 保障</h3>
336          <p>智能路由与自动故障转移,多节点高可用部署,企业级稳定性保障。</p>
337          <div class="feature-highlight">智能路由 · 自动故障转移</div>
338        </div>
339      </div>
340    </div>
341  </section>
342
343  <!-- ─── 主流厂商全覆盖 ─────────────────────────────────────────── -->
344  <section class="section" id="providers" data-component="Providers" data-od-id="providers">
345    <div class="container">
346      <div class="section-header">
347        <p class="eyebrow">MODEL PROVIDERS</p>
348        <h2>主流厂商全覆盖</h2>
349        <p>通过一个 API 端点访问 100+ 款大模型,覆盖国内外主流厂商。</p>
350      </div>
351      <div class="providers-layout">
352        <!-- Row 1: scrolls right -->
353        <div class="providers-scroll-wrapper">
354          <div class="provider-track scroll-right">
355                          <div class="provider-set" aria-hidden="false">
356                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/tencent.png" alt="" aria-hidden="true"></div><div class="provider-name">腾讯云</div></div>
357                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/zhipu.svg" alt="" aria-hidden="true"></div><div class="provider-name">智谱 AI</div></div>
358                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/qwen.svg" alt="" aria-hidden="true"></div><div class="provider-name">通义千问</div></div>
359                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/deepseek.svg" alt="" aria-hidden="true"></div><div class="provider-name">DeepSeek</div></div>
360                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/bytedance.svg" alt="" aria-hidden="true"></div><div class="provider-name">字节豆包</div></div>
361              </div>
362                          <div class="provider-set" aria-hidden="true">
363                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/tencent.png" alt="" aria-hidden="true"></div><div class="provider-name">腾讯云</div></div>
364                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/zhipu.svg" alt="" aria-hidden="true"></div><div class="provider-name">智谱 AI</div></div>
365                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/qwen.svg" alt="" aria-hidden="true"></div><div class="provider-name">通义千问</div></div>
366                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/deepseek.svg" alt="" aria-hidden="true"></div><div class="provider-name">DeepSeek</div></div>
367                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/bytedance.svg" alt="" aria-hidden="true"></div><div class="provider-name">字节豆包</div></div>
368              </div>
369                          <div class="provider-set" aria-hidden="true">
370                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/tencent.png" alt="" aria-hidden="true"></div><div class="provider-name">腾讯云</div></div>
371                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/zhipu.svg" alt="" aria-hidden="true"></div><div class="provider-name">智谱 AI</div></div>
372                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/qwen.svg" alt="" aria-hidden="true"></div><div class="provider-name">通义千问</div></div>
373                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/deepseek.svg" alt="" aria-hidden="true"></div><div class="provider-name">DeepSeek</div></div>
374                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/bytedance.svg" alt="" aria-hidden="true"></div><div class="provider-name">字节豆包</div></div>
375              </div>
376                          <div class="provider-set" aria-hidden="true">
377                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/tencent.png" alt="" aria-hidden="true"></div><div class="provider-name">腾讯云</div></div>
378                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/zhipu.svg" alt="" aria-hidden="true"></div><div class="provider-name">智谱 AI</div></div>
379                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/qwen.svg" alt="" aria-hidden="true"></div><div class="provider-name">通义千问</div></div>
380                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/deepseek.svg" alt="" aria-hidden="true"></div><div class="provider-name">DeepSeek</div></div>
381                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/bytedance.svg" alt="" aria-hidden="true"></div><div class="provider-name">字节豆包</div></div>
382              </div>
383                      </div>
384        </div>
385        <!-- Row 2: scrolls left -->
386        <div class="providers-scroll-wrapper">
387          <div class="provider-track scroll-left">
388                          <div class="provider-set" aria-hidden="false">
389                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/kling.svg" alt="" aria-hidden="true"></div><div class="provider-name">快手可灵</div></div>
390                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/jimeng.svg" alt="" aria-hidden="true"></div><div class="provider-name">即梦</div></div>
391                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/minimax.svg" alt="" aria-hidden="true"></div><div class="provider-name">MiniMax</div></div>
392                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/vidu.svg" alt="" aria-hidden="true"></div><div class="provider-name">Vidu</div></div>
393                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/happy-horse.png" alt="" aria-hidden="true"></div><div class="provider-name">HappyHorse</div></div>
394              </div>
395                          <div class="provider-set" aria-hidden="true">
396                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/kling.svg" alt="" aria-hidden="true"></div><div class="provider-name">快手可灵</div></div>
397                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/jimeng.svg" alt="" aria-hidden="true"></div><div class="provider-name">即梦</div></div>
398                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/minimax.svg" alt="" aria-hidden="true"></div><div class="provider-name">MiniMax</div></div>
399                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/vidu.svg" alt="" aria-hidden="true"></div><div class="provider-name">Vidu</div></div>
400                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/happy-horse.png" alt="" aria-hidden="true"></div><div class="provider-name">HappyHorse</div></div>
401              </div>
402                          <div class="provider-set" aria-hidden="true">
403                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/kling.svg" alt="" aria-hidden="true"></div><div class="provider-name">快手可灵</div></div>
404                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/jimeng.svg" alt="" aria-hidden="true"></div><div class="provider-name">即梦</div></div>
405                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/minimax.svg" alt="" aria-hidden="true"></div><div class="provider-name">MiniMax</div></div>
406                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/vidu.svg" alt="" aria-hidden="true"></div><div class="provider-name">Vidu</div></div>
407                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/happy-horse.png" alt="" aria-hidden="true"></div><div class="provider-name">HappyHorse</div></div>
408              </div>
409                          <div class="provider-set" aria-hidden="true">
410                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/kling.svg" alt="" aria-hidden="true"></div><div class="provider-name">快手可灵</div></div>
411                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/jimeng.svg" alt="" aria-hidden="true"></div><div class="provider-name">即梦</div></div>
412                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/minimax.svg" alt="" aria-hidden="true"></div><div class="provider-name">MiniMax</div></div>
413                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/vidu.svg" alt="" aria-hidden="true"></div><div class="provider-name">Vidu</div></div>
414                <div class="provider-item"><div class="provider-logo"><img src="/statics/images/logos/happy-horse.png" alt="" aria-hidden="true"></div><div class="provider-name">HappyHorse</div></div>
415              </div>
416                      </div>
417        </div>
418      </div>
419    </div>
420  </section>
421
422  <!-- ─── 三步接入,5 分钟跑通 ───────────────────────────────────── -->
423  <section class="section" id="steps" data-component="Steps" data-od-id="steps">
424    <div class="container">
425      <div class="section-header">
426        <p class="eyebrow">QUICK START</p>
427        <h2>三步接入,5 分钟跑通</h2>
428      </div>
429      <div class="steps-grid">
430        <div class="step-card">
431          <div class="step-number">01</div>
432          <h3>注册账号</h3>
433          <p>在官网注册账号,获取专属 API Key,即刻开始使用。</p>
434        </div>
435        <div class="step-card">
436          <div class="step-number">
43602</div>
437          <h3>替换 base_url</h3>
438          <p>在现有 SDK 中将 base_url 替换为典名词元端点,无需改动业务代码。</p>
439          <div class="step-code">base_url = "https://api.aa.com.cn/api/v1"</div>
440        </div>
441        <div class="step-card">
442          <div class="step-number">03</div>
443          <h3>开始调用</h3>
444          <p>调用任意模型,按实际 token 用量计费,用多少付多少。</p>
445        </div>
446      </div>
447    </div>
448  </section>
449
450  <!-- ─── 典型应用场景 ───────────────────────────────────────────── -->
451  <section class="section" id="cases" data-component="UseCases" data-od-id="cases">
452    <div class="container">
453      <div class="section-header">
454        <p class="eyebrow">USE CASES</p>
455        <h2>典型应用场景</h2>
456      </div>
457      <div class="cases-grid">
458        <div class="case-card">
459          <div class="case-tag">Agent</div>
460          <h3>AI Agent 编排</h3>
461          <p>构建复杂 AI Agent 工作流,支持工具调用与多轮对话,灵活编排多模型协作。</p>
462          <div class="case-recommend">推荐模型: <span>GLM-5.2</span></div>
463        </div>
464        <div class="case-card">
465          <div class="case-tag">RAG</div>
466          <h3>智能客服 / RAG</h3>
467          <p>基于知识库的智能问答系统,优秀的中文理解能力,精准检索增强生成。</p>
468          <div class="case-recommend">推荐模型: <span>DeepSeek-V4-Flash</span></div>
469        </div>
470        <div class="case-card">
471          <div class="case-tag">Content</div>
472          <h3>内容生成 / SEO</h3>
473          <p>低成本批量生成长文、营销文案与 SEO 内容,按量计费大幅降低内容生产成本。</p>
474          <div class="case-recommend">推荐模型: <span>Qwen3.7-Max / GLM-5.2</span></div>
475        </div>
476        <div class="case-card">
477          <div class="case-tag">Research</div>
478          <h3>科研 / 数据分析</h3>
479          <p>调用推理模型进行数据分析与科研计算,无需自建 GPU 集群,按需弹性使用。</p>
480          <div class="case-recommend">推荐模型: <span>DeepSeek-V4-Pro</span></div>
481        </div>
482      </div>
483    </div>
484  </section>
485
486  <!-- ─── CTA / 准备好简化 ─────────────────────────────────────── -->
487  <section class="cta-section" data-component="CTA" data-od-id="cta">
488    <div class="cta-content">
489      <h2 class="cta-title">
490        准备好简化<br>
491        <span class="gradient-text">你的 AI 集成了吗?</span>
492      </h2>
493      <div class="cta-buttons">
494        <button class="cta-btn-primary" id="to-start">
495          开始使用
496          <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>
497        </button>
498        <a href="/pricing" class="cta-btn-secondary">查看定价</a>
499      </div>
500    </div>
501  </section>
502  </main>
503
504  <!-- ─── Footer ──────────────────────────────────────────────────── -->
505  <footer class="pagefoot" data-component="Footer" data-od-id="footer">
506    <div class="container">
507      <div class="footer-grid">
508        <div class="footer-brand">
509          <span class="logo">
510            <img src="/statics/images/logo.png" alt="典名词元">
511          </span>
512          <p>国内高速 AI 大模型 API 中转,通过统一接口接入海量模型。</p>
513        </div>
514        <div class="footer-col">
515          <h4>产品</h4>
516          <ul>
517            <li><a href="#why">核心优势</a></li>
518            <li><a href="#providers">模型厂商</a></li>
519            <li><a href="#quickstart">代码示例</a></li>
520            <li><a href="#cases">应用场景</a></li>
521          </ul>
522        </div>
523        <div class="footer-col">
524          <h4>开发者</h4>
525          <ul>
526            <li><a href="https://api-doc.aa.com.cn">快速接入</a></li>
527            <li><a href="https://api-doc.aa.com.cn">
527API 文档</a></li>
528          </ul>
529        </div>
530        <div class="footer-col">
531          <h4>关于</h4>
532          <ul>
533            <li><a href="/about/company">关于我们</a></li>
534            <li><a href="/about/contact">联系方式</a></li>
535          </ul>
536        </div>
537
538        <div class="footer-col">
539          <h4>友情链接</h4>
540          <ul>
541            <li><a href="https://www.wangpan.com.cn" target="_blank" title="企业网盘">企业网盘</a></li>
542            <li><a href="https://www.321.com.cn" target="_blank" title="321短信">321短信</a></li>
543            <li><a href="https://www.mail.com.cn" target="_blank" title="企业邮箱">企业邮箱</a></li>
544            <li><a href="http://www.023dns.com" target="_blank" title="域名虚机">域名虚机</a></li>
545            <li><a href="https://www.aimao.com" target="_blank" title="特种猫视频创作">视频创作</a></li>
546          </ul>
547        </div>
548
549      </div>
550      <div class="footer-bottom">
551        <span>&copy; 2026 重庆典名科技有限公司</span>
552        <span>
553          <a href="https://beian.miit.gov.cn/" target="_blank">渝ICP备10013348号-35</a>
554        </span>
555      </div>
556    </div>
557  </footer>
558
559  <!-- 登录弹窗 -->
560  <div id="login-modal" class="fixed inset-0 z-50 flex items-center justify-center hidden">
561    <div class="absolute inset-0 bg-black bg-opacity-50"></div>
562    <div class="relative bg-white rounded-lg overflow-hidden shadow-xl w-full max-w-[40rem] max-h-[95vh]">
563      <div class="login-frame-clip relative h-[53vh] w-full rounded-lg">
564        <h2 class="ml-4 mt-4 bold text-lg font-medium">创建、登录您的开发者账号</h2>
565        <button id="close-modal" class="absolute right-3 top-0 z-20 flex h-9 w-9 items-center justify-center rounded-full border border-brand-border bg-brand-card/92 text-gray-300 transition-colors hover:border-gray-500 hover:text-red-500">
566          <i class="fa fa-times"></i>
567        </button>
568        <iframe id="login-iframe" src="" width="100%" height="100%" frameborder="0"></iframe>
569      </div>
570    </div>
571  </div>
572
573  <!-- 回到顶部按钮 -->
574  <div id="back-to-top" class="back-to-top">
575    <i class="fa fa-chevron-up"></i>
576  </div>
577
578  
578<script>
579    // icode
580    sessionStorage.setItem('icode', '');
581
582    /* ─── Code tabs ─────────────────────────────────────────────── */
583    (function() {
584      var tabs = document.querySelectorAll('.code-tab');
585      var panels = document.querySelectorAll('.code-panel');
586      tabs.forEach(function(tab) {
587        tab.addEventListener('click', function() {
588          var target = tab.getAttribute('data-code-tab');
589          tabs.forEach(function(t) {
590            t.classList.remove('active');
591            t.setAttribute('aria-selected', 'false');
592          });
593          panels.forEach(function(p) {
594            p.classList.remove('active');
595          });
596          tab.classList.add('active');
597          tab.setAttribute('aria-selected', 'true');
598          document.querySelector('[data-code-panel="' + target + '"]').classList.add('active');
599        });
600      });
601    })();
602
603    /* ─── Navigation scroll effect ─────────────────────────────── */
604    (function() {
605      var nav = document.querySelector('.topnav');
606      var scrollThreshold = 50;
607      var ticking = false;
608
609      function updateNav() {
610        if (window.scrollY > scrollThreshold) {
611          nav.classList.add('scrolled');
612        } else {
613          nav.classList.remove('scrolled');
614        }
615        ticking = false;
616      }
617
618      window.addEventListener('scroll', function() {
619        if (!ticking) {
620          window.requestAnimationFrame(updateNav);
621          ticking = true;
622        }
623      }, {
624        passive: true
625      });
626    })();
627
628    /* ─── Mobile menu toggle ───────────────────────────────────── */
629    (function() {
630      var menuToggle = document.querySelector('.menu-toggle');
631      var mobileMenu = document.getElementById('mobileMenu');
632      var nav = document.querySelector('.topnav');
633      var menuLinks = mobileMenu.querySelectorAll('a');
634
635      function openMenu() {
636        mobileMenu.classList.add('open');
637        nav.classList.add('menu-open');
638        document.body.style.overflow = 'hidden';
639        menuToggle.setAttribute('aria-label', '关闭菜单');
640      }
641
642      function closeMenu() {
643        mobileMenu.classList.remove('open');
644        nav.classList.remove('menu-open');
645        document.body.style.overflow = '';
646        menuToggle.setAttribute('aria-label', '打开菜单');
647      }
648
649      menuToggle.addEventListener('click', function() {
650        if (mobileMenu.classList.contains('open')) {
651          closeMenu();
652        } else {
653          openMenu();
654        }
655      });
656
657      menuLinks.forEach(function(link) {
658        link.addEventListener('click', closeMenu);
659      });
660    })();
661
662    (function() {
663      // 登录功能
664      const loginButton = document.getElementById('login-button');
665      const loginButtonMobile = document.getElementById('login-button-mobile');
666      const loginModal = document.getElementById('login-modal');
667      const closeModal = document.getElementById('close-modal');
668      const loginIframe = document.getElementById('login-iframe');
669      const loginFrameClip = document.querySelector('.login-frame-clip');
670      const nowGetButton = document.getElementById('now-get');
671      const toStartButton = document.getElementById('to-start');
672      const mobileMenuLoginButton = document.getElementById('mobile-menu-login-button');
673      let login_url = "https://uc.aa.com.cn/login/oauth/authorize?client_id=5cbb2506c9e13330fe1a&response_type=code&redirect_uri=https%3A%2F%2Fwww.aa.com.cn%2Fconsole%2Fcallback&theme=light&origin=home&icode=";
674      let register_url = "https://uc.aa.com.cn/signup?client_id=5cbb2506c9e13330fe1a&response_type=code&redirect_uri=https%3A%2F%2Fwww.aa.com.cn%2Fconsole%2Fcallback&theme=light&origin=home&icode=";
675
676
677      // 监听来自iframe的消息
678      window.addEventListener('message', function(event) {
679        // 检查消息是否表示登录成功
680        if (event.data.type === 'login_success' || 'access_token' in event.data) {
681          // 登录成功,关闭弹窗
682          closeLoginModal();
683          // 写入 Cookie
684          document.cookie = "access_token=" + event.data.access_token + "; path=/";
685          localStorage.setItem("access_token", event.data.access_token);
686          // 刷新页面
687          location.reload();
688        }
689      });
690
691      // 登录函数
692      function showLoginModal() {
693        // 设置iframe的src
694        loginIframe.src = login_url;
695        // 显示弹窗
696        loginModal.classList.remove('hidden');
697        // 禁止背景滚动
698        document.body.classList.add('modal-open');
699      }
700
701      // 点击立即获取 API Key 按钮
702      if (nowGetButton) {
703        nowGetButton.addEventListener('click', function() {
704          if (localStorage.getItem('access_token')) { // 已登录,直接跳转到api key 页面
705            window.location.href = '/console/api-key';
706          } else {
707            // 判断是否移动端,移动端直接跳转
708            if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
709              window.location.href = login_url;
710            } else {
711              showLoginModal();
712            }
713          }
714        });
715      }
716
717      // 点击开始使用按钮
718      if (toStartButton) {
719        toStartButton.addEventListener('click', function() {
720          if (localStorage.getItem('access_token')) { // 已登录,直接跳转到定价页面
721            window.location.href = '/console/';
722          } else {
723            // 判断是否移动端,移动端直接跳转
724            if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
725              window.location.href = login_url;
726            } else {
727              showLoginModal();
728            }
729          }
730        });
731      }
732
733      // 点击登录按钮
734      if (loginButton) {
735        loginButton.addEventListener('click', showLoginModal);
736      }
737
738      // 注册函数
739      function showRegisterModal() {
740        // 设置iframe的src
741        loginIframe.src = register_url;
742        // 显示弹窗
743        loginModal.classList.remove('hidden');
744        // 禁止背景滚动
745        document.body.classList.add('modal-open');
746      }
747
748      // 点击注册按钮
749      const registerButton = document.getElementById('register-button');
750      if (registerButton) {
751        registerButton.addEventListener('click', showRegisterModal);
752      }
753
754      // 关闭弹窗
755      function closeLoginModal() {
756        loginModal.classList.add('hidden');
757        loginIframe.src = '';
758        // 恢复背景滚动
759        document.body.classList.remove('modal-open');
760      }
761
762      closeModal.addEventListener('click', closeLoginModal);
763
764      // 点击遮罩层关闭弹窗
765      loginModal.addEventListener('click', function(e) {
766        if (e.target === loginModal) {
767          closeLoginModal();
768        }
769      });
770
771      // 用户信息和下拉菜单
772      const userArea = document.getElementById('user-area');
773      const userDropdown = document.getElementById('user-dropdown');
774      const userAvatar = document.getElementById('user-avatar');
775      const avatarImg = document.getElementById('avatar-img');
776      const avatarInitial = document.getElementById('avatar-initial');
777      const logoutButton = document.getElementById('logout-button');
778      const mobileMenuLogoutButton = document.getElementById('mobile-menu-logout-button');
779      const mobileUcenter = document.querySelector('.mobile-ucenter');
780      const mobileConsole = document.querySelector('.mobile-console');
781      const mobileLogoutButton = document.getElementById('mobile-logout-button');
782      const consoleLink = document.getElementById('console-link');
783
784      avatarImg.onerror = function() { // 图片加载失败时,显示首字符,隐藏图片
785        avatarImg.classList.add('hidden');
786        avatarInitial.classList.remove('hidden');
787      };
788
789      avatarImg.onload = function() { // 图片加载成功时,显示图片,隐藏首字符
790        avatarImg.classList.remove('hidden');
791        avatarInitial.classList.add('hidden');
792      };
793
794      // 检查用户登录状态
795      function checkLoginStatus() {
796        const accessToken = localStorage.getItem('access_token');
797        if (accessToken) {
798          // 有token,获取用户信息
799          fetch('/api/user/profile', {
800              headers: {
801                'Authorization': 'Bearer ' + accessToken
802              }
803            })
804            .then(response => response.json())
805            .then(data => {
806              if (data.code === 200 && data.data) {
807                // 显示用户头像
808                loginButton.classList.add('hidden');
809                loginButton.classList.remove('sm:block');
810                registerButton.classList.add('hidden');
811                registerButton.classList.remove('sm:block');
812                if (loginButtonMobile) {
813                  loginButtonMobile.classList.add('hidden');
814                }
815                userDropdown.classList.remove('hidden');
816                // 移动端菜单:隐藏登录按钮,显示退出登录按钮
817                if (mobileMenuLoginButton) {
818                  mobileMenuLoginButton.classList.add('hidden');
819                }
820                if (mobileMenuLogoutButton) {
821                  mobileMenuLogoutButton.classList.remove('hidden');
822                }
823                // 显示控制台
824                if (mobileConsole) {
825                  mobileConsole.classList.remove('hidden');
826                }
827                // 显示个人中心
828                if (mobileUcenter) {
829                  mobileUcenter.classList.remove('hidden');
830                }
831                // 显示控制台链接
832                if (consoleLink) {
833                  consoleLink.classList.remove('hidden');
834                }
835                const displayName = data.data.display_name || data.data.name || 'A';
836                avatarInitial.textContent = displayName.charAt(0).toUpperCase();
837                avatarImg.src = data.data.avatar;
838                // 把本地存储的token写入 Cookie(移动端的登录是跳转,未进行cookie维护),cookie在退出登录时需要使用
839                document.cookie = "access_token=" + accessToken + "; path=/";  
840              } else {
841                // 没有用户信息,显示登录按钮
842                loginButton.classList.remove('hidden');
843                loginButton.classList.add('sm:block');
844                registerButton.classList.remove('hidden');
845                registerButton.classList.add('sm:block');
846                if (loginButtonMobile) {
847                  loginButtonMobile.classList.remove('hidden');
848                }
849                userDropdown.classList.add('hidden');
850                // 移动端菜单:显示登录按钮,隐藏退出登录按钮
851                if (mobileMenuLoginButton) {
852                  mobileMenuLoginButton.classList.remove('hidden');
853                }
854                if (mobileMenuLogoutButton) {
855                  mobileMenuLogoutButton.classList.add('hidden');
856                }
857                // 隐藏控制台链接
858                if (consoleLink) {
859                  consoleLink.classList.add('hidden');
860                }
861              }
862            })
863            .catch(error => {
864              console.error('获取用户信息失败:', error);
865              // 出错时显示登录按钮
866              loginButton.classList.remove('hidden');
867              loginButton.classList.add('sm:block');
868              registerButton.classList.remove('hidden');
869              registerButton.classList.add('sm:block');
870              if (loginButtonMobile) {
871                loginButtonMobile.classList.remove('hidden');
872              }
873              userDropdown.classList.add('hidden');
874              // 移动端菜单:显示登录按钮,隐藏退出登录按钮
875              if (mobileMenuLoginButton) {
876                mobileMenuLoginButton.classList.remove('hidden');
877              }
878              if (mobileMenuLogoutButton) {
879                mobileMenuLogoutButton.classList.add('hidden');
880              }
881              // 隐藏控制台链接
882              if (consoleLink) {
883                consoleLink.classList.add('hidden');
884              }
885            });
886        } else {
887          // 没有token,显示登录按钮
888          loginButton.classList.remove('hidden');
889          loginButton.classList.add('sm:block');
890          registerButton.classList.remove('hidden');
891          registerButton.classList.add('sm:block');
892          if (loginButtonMobile) {
893            loginButtonMobile.classList.remove('hidden');
894          }
895          userDropdown.classList.add('hidden');
896          // 移动端菜单:显示登录按钮,隐藏退出登录按钮
897          if (mobileMenuLoginButton) {
898            mobileMenuLoginButton.classList.remove('hidden');
899          }
900          if (mobileMenuLogoutButton) {
901            mobileMenuLogoutButton.classList.add('hidden');
902          }
903          // 隐藏控制台链接
904          if (consoleLink) {
905            consoleLink.classList.add('hidden');
906          }
907        }
908      }
909
910      // 初始化时检查登录状态
911      checkLoginStatus();
912
913      // 用户头像悬停效果
914      userAvatar.addEventListener('mouseenter', function() {
915        userDropdown.querySelector('div').classList.remove('hidden');
916      });
917
918      userArea.addEventListener('mouseleave', function() {
919        userDropdown.querySelector('div').classList.add('hidden');
920      });
921
922      // 退出登录
923      logoutButton.addEventListener('click', function(e) {
924        e.preventDefault();
925        localStorage.removeItem('access_token');
926        window.location.href = '/logout';
927      });
928
929      // 移动端菜单退出登录
930      if (mobileMenuLogoutButton) {
931        mobileMenuLogoutButton.addEventListener('click', function(e) {
932          e.preventDefault();
933          localStorage.removeItem('access_token');
934          window.location.href = '/logout';
935        });
936      }
937
938      // 建设中提示
939      const aboutLink = document.getElementById('about-link');
940      const mobileAboutLink = document.getElementById('mobile-about-link');
941
942      if (aboutLink) {
943        aboutLink.addEventListener('click', function(e) {
944          e.preventDefault();
945          alert('建设中');
946        });
947      }
948
949      if (mobileAboutLink) {
950        mobileAboutLink.addEventListener('click', function(e) {
951          e.preventDefault();
952          alert('建设中');
953        });
954      }
955
956      // 移动端菜单
957      const mobileMenuButton = document.getElementById('mobile-menu-button');
958      const mobileMenu = document.getElementById('mobile-menu');
959
960      if (mobileMenuButton && mobileMenu) {
961        mobileMenuButton.addEventListener('click', function() {
962          mobileMenu.classList.toggle('hidden');
963        });
964
965        // 点击页面其他地方关闭菜单
966        document.addEventListener('click', function(e) {
967          if (!mobileMenuButton.contains(e.target) && !mobileMenu.contains(e.target)) {
968            mobileMenu.classList.add('hidden');
969          }
970        });
971      }
972
973      // 回到顶部按钮
974      const backToTopButton = document.getElementById('back-to-top');
975      if (backToTopButton) {
976        // 显示/隐藏按钮
977        window.addEventListener('scroll', function() {
978          if (window.scrollY > 300) {
979            backToTopButton.classList.add('show');
980          } else {
981            backToTopButton.classList.remove('show');
982          }
983        });
984
985        // 点击回到顶部
986        backToTopButton.addEventListener('click', function() {
987          window.scrollTo({
988            top: 0,
989            behavior: 'smooth'
990          });
991        });
992      }
993    })();
994  </script>
994
995  </body>
996
997</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.