<!DOCTYPE html> <html> <head> <title>API 接口说明</title> <link rel="icon" type="image/png" href="/static/favicon.png"> <style> body { font-family: Arial, sans-serif; margin: 20px; } h1 { color: #333; } .endpoint { margin: 20px 0; padding: 15px; background: #f5f5f5; border-radius: 5px; } .method { font-weight: bold; color: #007bff; } .url { color: #28a745; } .description { margin-top: 10px; } </style> </head> <body> <h1>API 接口说明</h1> <h2>项目概述</h2> <p>这是一个基于 FastAPI 实现的通义千问 API 代理服务器,用于转发和处理与通义千问 API 的通信。</p> <h2>主要功能</h2> <ul> <li>模型列表获取 API</li> <li>聊天完成 API</li> <li>支持流式响应</li> <li>内置模型列表缓存机制</li> <li>自动重试机制</li> </ul> <h2>环境要求</h2> <ul> <li>Python 3.7+</li> <li>FastAPI 0.104.1+</li> <li>Uvicorn 0.24.0+</li> <li>HTTPX 0.25.1+</li> </ul> <h2>安装步骤</h2> <ol> <li>克隆项目到本地</li> <li>安装依赖: <pre><code>pip install -r requirements.txt</code></pre> </li> <li>使用 Docker(可选): <pre><code>docker build -t qwen-api-proxy . docker run -p 8000:8000 qwen-api-proxy</code></pre> </li> </ol> <h2>运行服务</h2> <pre><code>python qwen.py</code></pre> <p>或使用 uvicorn:</p> <pre><code>uvicorn qwen:app --host 0.0.0.0 --port 8000</code></pre> <p>服务将在 <a href="http://localhost:8000">http://localhost:8000</a> 上运行。</p> <h2>错误处理</h2> <ul> <li>服务内置了自动重试机制,最多重试3次</li> <li>500错误或HTML响应会触发重试</li> <li>401错误表示未授权,需要检查token</li> <li>400错误表示请求参数有误</li> </ul> <h2>获取 API Key</h2> <ol> <li>访问 <a href="https://chat.qwenlm.ai/">https://chat.qwenlm.ai/</a> 并登录</li> <li>打开浏览器开发者工具(通常按 F12)</li> <li>切换到"应用程序"选项卡</li> <li>在左侧菜单中选择"Cookies" -> "https://chat.qwenlm.ai"</li> <li>找到名称为"token"的cookie</li> <li>复制其值,这就是你的API Key</li> </ol> <h2>许可证</h2> <p>本项目采用 MIT License 开源许可证。</p> <div class="endpoint"> <div class="method">GET</div> <div class="url">/api/models</div> <div class="description"> 获取可用模型列表<br> 请求头需要包含 Authorization: Bearer {api_key} </div> </div> <div class="endpoint"> <div class="method">POST</div> <div class="url">/api/chat/completions</div> <div class="description"> 与模型进行对话<br> 请求头需要包含 Authorization: Bearer {api_key}<br> 支持流式响应(stream: true) </div> </div> </body> </html>