Qwen3 30B A3B Thinking 2507 API

qwen/qwen3-30b-a3b-thinking-2507

Qwen3-30B-A3B-Thinking-2507 是一款拥有300亿参数的专家混合推理模型,专门针对需要多步骤深度思考的复杂任务进行优化。该模型专为"思维模式"设计,其核心特性是将内部推理过程与最终答案分离。相较于早期发布的 Qwen3-30B 版本,本模型在逻辑推理、数理科学、编程开发及多语言基准测试方面均实现性能提升,同时展现出更强的指令遵循能力、工具使用能力以及与人类价值观的对齐能力。凭借更高的推理效率和扩展的输出容量,该模型特别适用于前沿学术研究、竞技级问题求解,以及需要结构化长上下文推理的智能体应用场景。

模型 ID
qwen/qwen3-30b-a3b-thinking-2507
更新日期
模型能力
文本生成
上下文长度
256 K
模型价格(每 1000 tokens 输入)
¥ 0.00125
模型价格(每 1000 tokens 输出)
¥ 0.00375
模型系列
Qwen

API 接口地址:

https://wcode.net/api/gpt/v1/chat/completions

此 API 接口兼容 OpenAI 的接口规范,也就是可以直接使用 OpenAI 的 SDK 来调用各个模型。仅需替换以下两项配置即可:

  1. base_url 替换为 https://wcode.net/api/gpt/v1
  2. api_key 替换为从 https://wcode.net/get-apikey 获取到的 API Key

具体可参考下方的各编程语言代码示例中的 openai sdk 调用示例。

请求方法:

POST

各编程语言代码示例:

# TODO: 以下代码中的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
curl --request POST 'https://wcode.net/api/gpt/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY' \
--data '{
    "model": "qwen/qwen3-30b-a3b-thinking-2507",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ]
}'
import Foundation

let headers = [
  "Authorization": "Bearer API_KEY",     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  "content-type": "application/json"
]
let parameters = [
  "model": "qwen/qwen3-30b-a3b-thinking-2507",
  "messages": [
    [
      "role": "user",
      "content": "你好"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://wcode.net/api/gpt/v1/chat/completions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 60.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
var headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer API_KEY'     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
};
var request = http.Request('POST', Uri.parse('https://wcode.net/api/gpt/v1/chat/completions'));
request.body = json.encode({
  "model": "qwen/qwen3-30b-a3b-thinking-2507",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
});
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
  print(await response.stream.bytesToString());
}
else {
  print(response.reasonPhrase);
}
require 'uri'
require 'net/http'

url = URI("https://wcode.net/api/gpt/v1/chat/completions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer API_KEY'     # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
request["content-type"] = 'application/json'
request.body = "{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}"

response = http.request(request)
puts response.read_body
use serde_json::json;
use reqwest;

#[tokio::main]
pub async fn main() {
  let url = "https://wcode.net/api/gpt/v1/chat/completions";

  let payload = json!({
    "model": "qwen/qwen3-30b-a3b-thinking-2507",
    "messages": (
      json!({
        "role": "user",
        "content": "你好"
      })
    )
  });

  let mut headers = reqwest::header::HeaderMap::new();
  headers.insert("Authorization", "Bearer API_KEY".parse().unwrap());     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  headers.insert("content-type", "application/json".parse().unwrap());

  let client = reqwest::Client::new();
  let response = client.post(url)
    .headers(headers)
    .json(&payload)
    .send()
    .await;

  let results = response.unwrap()
    .json::<serde_json::Value>()
    .await
    .unwrap();

  dbg!(results);
}
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://wcode.net/api/gpt/v1/chat/completions");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer API_KEY");    // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}");

CURLcode ret = curl_easy_perform(hnd);
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {
  url := "https://wcode.net/api/gpt/v1/chat/completions"

  payload := strings.NewReader("{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}")

  req, _ := http.NewRequest("POST", url, payload)

  req.Header.Add("Authorization", "Bearer API_KEY")     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  req.Header.Add("content-type", "application/json")

  res, _ := http.DefaultClient.Do(req)

  defer res.Body.Close()
  body, _ := io.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
using System.Net.Http.Headers;


var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, "https://wcode.net/api/gpt/v1/chat/completions");

request.Headers.Add("Authorization", "Bearer API_KEY");     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey

request.Content = new StringContent("{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}", null, "application/json");

var response = await client.SendAsync(request);

response.EnsureSuccessStatusCode();

Console.WriteLine(await response.Content.ReadAsStringAsync());
var client = new RestClient("https://wcode.net/api/gpt/v1/chat/completions");

var request = new RestRequest("", Method.Post);

request.AddHeader("Authorization", "Bearer API_KEY");     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey

request.AddHeader("content-type", "application/json");

request.AddParameter("application/json", "{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}", ParameterType.RequestBody);

var response = client.Execute(request);
const axios = require('axios');

let data = JSON.stringify({
  "model": "qwen/qwen3-30b-a3b-thinking-2507",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://wcode.net/api/gpt/v1/chat/completions',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer API_KEY'     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  },
  data : data
};

axios.request(config).then((response) => {
  console.log(JSON.stringify(response.data));
}).catch((error) => {
  console.log(error);
});
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");

RequestBody body = RequestBody.create(mediaType, "{\"model\":\"qwen/qwen3-30b-a3b-thinking-2507\",\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}");

Request request = new Request.Builder()
  .url("https://wcode.net/api/gpt/v1/chat/completions")
  .post(body)
  .addHeader("Authorization", "Bearer API_KEY")             // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
$client = new \GuzzleHttp\Client();

$headers = [
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer API_KEY',     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
];

$body = '{
  "model": "qwen/qwen3-30b-a3b-thinking-2507",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
}';

$request = new \GuzzleHttp\Psr7\Request('POST', 'https://wcode.net/api/gpt/v1/chat/completions', $headers, $body);

$response = $client->sendAsync($request)->wait();

echo $response->getBody();
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://wcode.net/api/gpt/v1/chat/completions",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 5,
  CURLOPT_TIMEOUT => 300,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'model' => 'qwen/qwen3-30b-a3b-thinking-2507',
    'messages' => [
      [
        'role' => 'user',
        'content' => '你好'
      ]
    ]
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer API_KEY",     // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
    "content-type: application/json",
  ],
]);

$response = curl_exec($curl);
$error = curl_error($curl);

curl_close($curl);

if ($error) {
  echo "cURL Error #:" . $error;
} else {
  echo $response;
}
import requests
import json

url = "https://wcode.net/api/gpt/v1/chat/completions"

payload = {
  "model": "qwen/qwen3-30b-a3b-thinking-2507",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
}

headers = {
  "Authorization": "Bearer API_KEY",     # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
  "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(json.dumps(response.json(), indent=4, ensure_ascii=False))
from openai import OpenAI

client = OpenAI(
  base_url="https://wcode.net/api/gpt/v1",
  api_key="API_KEY"                             # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://wcode.net/get-apikey
)

completion = client.chat.completions.create(
  model="qwen/qwen3-30b-a3b-thinking-2507",
  messages=[
    {
      "role": "user",
      "content": "你好"
    }
  ]
)

print(completion.choices[0].message.content)

API 响应示例:

{
    "id": "chatcmpl-t1759079076s731r877160edf756cedb7fd6fb6b",
    "model": "qwen/qwen3-30b-a3b-thinking-2507",
    "object": "chat.completion",
    "created": 1759079077,
    "choices": [
        {
            "logprobs": null,
            "finish_reason": "stop",
            "native_finish_reason": "stop",
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\n\n你好呀!😊 我是通义千问(Qwen),是通义实验室研发的超大规模语言模型。你可以叫我通义千问、通义、Qwen,或者随便叫个可爱的名字(比如“小Q”也行~)。\n\n**我能帮你做什么?**\n- 📝 **写故事、写公文、写邮件、写剧本**:只要给你个主题,我都能帮你脑洞大开;\n- 💡 **表达观点、进行逻辑推理**:比如“怎么把工作做得更高效?”;\n- 💻 **编程**:支持多种语言,写代码、debug 都可以;\n- 🌐 **多语言支持**:中、英、德、法、西……全球100+语言无障碍沟通;\n- 🧠 **玩游戏、讲笑话、解谜题**:比如“猜个谜语”“来段即兴诗”;\n- 📚 **学习知识**:历史、科技、生活……只要你想问,我尽量帮你找答案!\n\n**举个栗子🌰**:  \n你要是说“帮我写一封给客户的道歉信,语气诚恳但不卑微”,我秒回!  \n(不过现在你已经知道我的超能力啦~)\n\n有什么想让我试试的吗?随时问我哦!✨",
                "refusal": null,
                "reasoning": "嗯,用户让我介绍自己。首先,我需要确定用户想知道什么。他们可能刚接触通义千问,想了解我的基本功能和用途。我应该用简短明了的方式介绍,避免太技术化的术语。\n\n之前的回答已经提到了我是通义千问,由通义实验室开发,能回答问题、创作文字、编程等。但可能需要更具体一点,比如举例子,让信息更生动。比如提到可以帮写故事、写公文、写邮件、写剧本,或者进行逻辑推理、编程,这些例子用户可能更容易理解。\n\n还要注意语气友好,避免太正式。用户可能不是技术人员,所以用日常语言更好。比如“能帮你写故事、写公文、写邮件、写剧本”这样的表达更亲切。\n\n另外,用户可能关心我的能力有什么特别之处,比如多语言支持,或者是否能处理复杂任务。需要提到支持多种语言,这样用户知道可以用不同语言交流。\n\n还要避免信息过载,不要列太多点。可能分几个主要点:回答问题、创作内容、编程能力、多语言支持。每个点用一两句话说明。\n\n最后,可能需要鼓励用户提问,比如“你可以试试问我任何问题”,这样促进互动。不过原回答里已经这样写了,所以保持现有结构。\n\n检查有没有错误,比如“通义实验室”是否正确,是的,通义实验室是阿里云的。确认无误。\n\n现在要确保回答简洁,不冗长。用户可能希望快速了解,所以每点不要太长。例如,不用提训练数据的时间,除非用户问。\n\n可能用户是潜在的用户,想决定是否用我的服务,所以重点放在实用功能上。比如写文案、写代码,这些实际应用场景。\n\n再检查有没有遗漏的重要点,比如是否免费,但可能不需要提,因为不是重点。重点在能力。\n\n现在组织语言:先自我介绍,然后核心能力,分点说明,最后邀请使用。保持亲切,用表情符号或者语气词,比如“你好呀”,但原回答已经用了“你好”,是合适的。\n\n不需要提到技术细节,比如参数量,用户不关心。保持用户导向。\n\n确认一下,用户问“介绍一下你自己”,所以重点在自我介绍,而不是功能列表。所以开头要明确身份,然后讲能做什么。\n\n嗯,之前的回答已经不错,可能只需要保持流畅自然。\n"
            }
        }
    ],
    "system_fingerprint": "",
    "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 775,
        "total_tokens": 789,
        "completion_tokens_details": {
            "reasoning_tokens": 497
        }
    }
}

可选参数:

重要提示:由于模型架构不同,部分参数可能仅适用于特定的模型。

温度

  • 参数:temperature

  • 可选,浮点数,0.0 到 2.0

  • 默认:1.0

此设置影响模型回复的多样性。较低的值会使回复更可预测、更常见;较高的值会鼓励更具多样性且较不常见的回复。当设置为 0 时,模型对相同输入将尽可能的给出相同的回复。

Top-P

  • 参数:top_p

  • 可选,float,0.0 至 1.0

  • 默认值:1.0

top_p 参数控制模型在生成文本时的候选词选择范围。具体来说,模型会生成一组候选 token,然后从累积概率达到或超过 p 的 token 中随机选择一个作为输出。通过这种方式,top_p 能够在保证生成内容的多样性的同时,考虑到概率分布的合理性。

由于 temperature 与 top_p 均可以控制生成文本的多样性,因此建议您只设置其中一个值。

Top-K

  • 参数:top_k

  • 可选,int,>= 0

  • 默认值:0

top_k 会限制模型在每一步对 token 的选择,使其从较小的集合中进行选择。值为 1 表示模型将始终选择最有可能的下一个 token,从而得到可预测的结果。

频率惩罚

  • 参数:frequency_penalty

  • 可选,float,-2.0 至 2.0

  • 默认值:0.0

frequency_penalty 可根据词条在输入中出现的频率来控制其重复使用。它会尝试减少那些在输入中出现频率较高的词条的使用频率,这与它们出现的频率成正比。词条惩罚会随着出现次数的增加而增加。负值将鼓励词条重复使用。

存在惩罚

  • 参数:presence_penalty

  • 可选,float,-2.0 至 2.0

  • 默认值:0.0

presence_penalty 调整模型重复输入中已使用的特定标记的频率。值越高,重复的可能性就越小,负值则相反。标记惩罚不会随着出现次数而变化。负值会鼓励标记重用。

重复惩罚

  • 参数:repetition_penalty

  • 可选,float,0.0 至 2.0

  • 默认值:1.0

repetition_penalty 有助于减少输入中标记的重复。较高的值会降低模型重复标记的可能性,但过高的值会使输出不够连贯(通常会出现缺少小词的连续句子)。标记惩罚会根据原始标记的概率进行调整。

Min-P

  • 参数:min_p

  • 可选,float,0.0 至 1.0

  • 默认值:0.0

min_p 表示某个 token 被考虑的最小概率,该概率是相对于最可能的 token 的概率而言的。如果 min_p 设置为 0.1,则意味着它只允许概率至少为最佳选项十分之一的 token 被考虑。

Top-A

  • 参数:top_a

  • 可选,float,0.0 到 1.0

  • 默认值:0.0

top_a 仅考虑概率“足够高”的 top tokens,该概率基于最可能的 token 概率。可以将其视为一个动态的 Top-P。较低的 Top-A 值会根据概率最高的 token 集中选择,但范围会更窄。较高的 Top-A 值不一定会影响输出的创造性,但会根据最大概率优化过滤过程。

种子

  • 参数:seed

  • 可选,int

如果指定了 seed 参数,推理将确定性地进行采样,即使用相同种子和参数的重复请求应该返回相同的结果。某些模型无法保证确定性。

最大 tokens 数

  • 参数:max_tokens

  • 可选,int,>= 1

max_tokens 可设定模型在响应中可以生成的 token 数量的上限。模型不会生成超过此限制的 token。其最大值等于上下文长度减去 prompt 长度。

Logit Bias

  • 参数:logit_bias

  • 可选,object

logit_bias 是一个可选参数,用于修改指定 token 在模型生成输出中出现的可能性。

对数概率

  • 参数:logprobs

  • 可选,boolean

logprobs 设置是否返回输出 token 的对数概率。如果为 true,则返回每个输出 token 的对数概率。

最高对数概率

  • 参数:top_logprobs

  • 可选,int

top_logprobs 是一个介于 0 和 20 之间的整数,指定在每个 token 位置要返回的最可能 token 的数量,每个 token 都会带有相应的对数概率。如果使用此参数,则必须将 logprobs 设置为 true

响应格式

  • 参数:response_format

  • 可选,object

response_format 强制模型产出特定的输出格式。将其设置为 { "type": "json_object" } 可启用 JSON 模式,保证模型生成的消息为有效的 JSON。

注意:使用 JSON 模式时,应同时通过 system 或 user 提示词指示模型生成 JSON。

结构化输出

  • 参数:structured_outputs

  • 可选,boolean

指示模型是否能够使用 response_format 中的 json_schema 返回结构化输出。

停止

  • 参数:stop

  • 可选,array

如果模型遇到 stop 数组中指定的任意 token,则立即停止生成。

工具

  • 参数:tools

  • 可选,array

工具调用参数,遵循 OpenAI 的工具调用请求格式。对于非 OpenAI 提供者,会相应地进行转换。

工具选择

  • 参数:tool_choice

  • 可选,array

控制模型调用哪个工具。'none' 表示模型不会调用任何工具,而是生成一条消息。'auto' 表示模型可以在生成消息或调用一个或多个工具之间进行选择。'required' 表示模型必须调用一个或多个工具。通过 {"type": "function", "function": {"name": "my_function"}} 指定特定工具会强制模型调用该工具。

并行工具调用

  • 参数:parallel_tool_calls

  • 可选,boolean

  • 默认:true

是否在使用工具时启用并行函数调用。如果为 true,模型可以同时调用多个函数。如果为 false,函数将按顺序依次调用。

冗长程度

  • 参数:verbosity

  • 可选,enumlow medium high

  • 默认:medium

控制模型响应的冗长程度和长度。较低的值会生成更简洁的回答,而较高的值会生成更详细、更全面的回答。


以上文档为标准版 API 接口文档,可直接用于项目开发和系统调用。如果标准版 API 接口无法满足您的需求,需要定制开发 API 接口,请联系我们的 IT 技术支持工程师:

(沟通需求✅ → 确认技术方案✅ → 沟通费用与工期✅ → 开发&测试✅ → 验收交付✅ → 维护升级✅)

最受关注模型

Qwen3 VL 30B A3B Instruct

图片识别

GLM 4.6

文本生成、深度思考

Tongyi DeepResearch 30B A3B

文本生成、深度研究

Qwen3 Next 80B A3B Instruct

文本生成

Qwen3 VL 235B A22B Instruct

图片识别

DeepSeek V3.2 Exp

文本生成

DeepSeek V3.1 Terminus

文本生成

Qwen3 Next 80B A3B Thinking

文本生成、深度思考

Qwen3 VL 30B A3B Thinking

图片识别、深度思考

GLM 4.5

文本生成

最新发布模型

Qwen3 VL 8B Instruct

图片识别

Baidu ERNIE 4.5 21B A3B Thinking

文本生成、深度思考

Qwen3 VL 30B A3B Thinking

图片识别、深度思考

Qwen3 VL 30B A3B Instruct

图片识别

GLM 4.6

文本生成、深度思考

DeepSeek V3.2 Exp

文本生成

Qwen3 VL 235B A22B Instruct

图片识别

Qwen3 VL 235B A22B Thinking

图片识别

DeepSeek V3.1 Terminus

文本生成

Tongyi DeepResearch 30B A3B

文本生成、深度研究