Files
AI2API/qwen2api-cf.md
BlueSkyXN abd64dd33e 0.0.2
2025-03-22 13:44:19 +08:00

5.4 KiB
Raw Blame History

Qwen2API

项目简介

Qwen2API用于将通义千问(Qwen AI)的WEB转换为OpenAI兼容的API接口格式让您可以通过标准的OpenAI API调用方式来使用通义千问模型。该代理支持包括模型列表查询、聊天补全流式和非流式、图像生成以及图片上传功能为开发者提供了便捷的集成方式。

特性

  • OpenAI API兼容: 提供与OpenAI API格式兼容的接口方便现有OpenAI项目迁移
  • 模型支持: 支持通义千问的各类模型包括qwen-max、qwen-plus等
  • 模型变体: 自动扩展模型名称,支持以下后缀功能:
    • -thinking: 启用思考模式
    • -search: 启用搜索增强
    • -draw: 启用图像生成 【可能存在问题】
    • 以上后缀可组合使用,如qwen-max-latest-thinking-search
  • 流式输出: 支持流式响应,减少首字等待时间
  • 多模态交互: 支持图片上传和图像生成【可能存在问题】
  • 图像生成: 提供专用的图像生成接口【可能存在问题】

部署要求

  • CloudFlare账号
  • CloudFlare Workers服务

安装部署

  1. 登录CloudFlare Workers控制台
  2. 创建新的Worker
  3. qwen2api-cf.js代码复制到Worker编辑器中
  4. 保存并部署

配置选项

您可以通过环境变量配置以下选项:

变量名 描述 默认值
API_PREFIX API路径前缀可用于自定义路由 空字符串

使用方法

认证

使用通义千问的Token作为API密钥在请求头中设置Authorization: Bearer {YOUR_QWEN_TOKEN}

获取Token方法:

  1. 访问通义千问官网
  2. 登录您的账号
  3. 从Cookie中提取token字段的值

支持的API端点

1. 获取模型列表

GET /v1/models

响应示例:

{
  "object": "list",
  "data": [
    {
      "id": "qwen-max-latest",
      "object": "model",
      "created": 1709128113453,
      "owned_by": "qwen"
    },
    {
      "id": "qwen-max-latest-thinking",
      "object": "model",
      "created": 1709128113453,
      "owned_by": "qwen"
    },
    // 更多模型...
  ]
}

2. 聊天补全

POST /v1/chat/completions

请求体示例:

{
  "model": "qwen-max-latest",
  "messages": [
    {
      "role": "user",
      "content": "你好,请介绍一下自己"
    }
  ],
  "stream": false
}

特殊功能:

  • 使用-thinking后缀启用思考模式
  • 使用-search后缀启用搜索增强
  • 同时传递图片(多模态)

多模态示例:

{
  "model": "qwen2.5-vl-72b-instruct",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "这张图片是什么?"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/jpeg;base64,/9j/4AAQ..."
          }
        }
      ]
    }
  ]
}

3. 图像生成

方法1: 使用聊天接口

POST /v1/chat/completions
{
  "model": "qwen-max-latest-draw",
  "messages": [
    {
      "role": "user",
      "content": "画一只可爱的猫咪"
    }
  ]
}

方法2: 使用专用图像生成接口

POST /v1/images/generations
{
  "model": "qwen-max-latest-draw",
  "prompt": "画一只可爱的猫咪",
  "n": 1,
  "size": "1024*1024"
}

支持的模型

系统内置了以下默认模型当API获取失败时会使用这些模型

  • qwen-max-latest
  • qwen-plus-latest
  • qwen2.5-vl-72b-instruct
  • qwen2.5-14b-instruct-1m
  • qvq-72b-preview
  • qwq-32b-preview
  • qwen2.5-coder-32b-instruct
  • qwen-turbo-latest
  • qwen2.5-72b-instruct

每个模型都支持添加后缀变体(-thinking、-search、-draw)。

技术实现细节

架构概述

该代理作为中间层将OpenAI格式的请求转换为通义千问API格式并将通义千问的响应转换回OpenAI格式。主要处理流程包括

  1. 解析请求和提取Token
  2. 根据URL路径分发到不同处理函数
  3. 转换请求格式并调用通义千问API
  4. 处理响应并转换格式
  5. 特殊处理流式响应和图像生成

模型处理机制

  • 基础模型名称处理:从请求中提取模型名称
  • 后缀功能处理:解析后缀并应用相应的配置
    • -thinking: 设置feature_config.thinking_enabled = true
    • -search: 设置chat_type = "search"
    • -draw: 切换到图像生成流程

流式响应处理

代理实现了高效的流式响应处理机制:

  1. 使用TransformStream处理数据流
  2. 对数据进行SSE(Server-Sent Events)格式转换
  3. 实现增量去重逻辑,确保内容不重复
  4. 处理完成标记和结束流

图像生成实现

图像生成使用任务创建和状态轮询机制:

  1. 创建图像生成任务并获取taskId
  2. 定期轮询任务状态(最多30次每6秒一次)
  3. 获取生成的图像URL并返回

常见问题与解决方案

Token无效或过期

症状: 请求返回401错误 解决方案: 重新获取通义千问Cookie中的token值

模型列表获取失败

症状: 仅显示默认模型列表 解决方案: 检查网络连接和token有效性

图像生成超时

症状: 返回"图像生成超时"错误 解决方案:

  • 检查网络连接
  • 尝试简化图像描述
  • 尝试减小图像尺寸

流式响应中断

症状: 响应突然停止 解决方案:

  • 检查网络稳定性
  • 减少请求的复杂度