Qwen3 Coder Next API 在 Novita AI 上供程式碼代理使用

Qwen3 Coder Next API 在 Novita AI 上供程式碼代理使用

Qwen3 Coder Next 在 Novita AI 上以無伺服器文字模型的形式提供,適用於需要長上下文程式碼理解、結構化輸出以及透過聊天補全 API 進行函式呼叫風格工具協調的程式碼代理工作流程。當您希望在代理迴圈中使用一個專注於程式碼的模型,而無需管理模型託管時,請使用已驗證的模型 ID qwen/qwen3-coder-next 搭配 OpenAI 相容的 POST https://api.novita.ai/openai/v1/chat/completions 端點。

何時在程式碼代理中使用 Qwen3 Coder Next

當您的應用程式需要在受控的軟體開發工作流程中使用一個專注於程式碼的語言模型時,請使用 Qwen3 Coder Next:程式碼解釋、修補計畫、錯誤定位、測試案例草擬、重構審查,或工具中介的儲存庫檢查。

重要的區別在於,本指南並非通用的模型概述。它專注於一種程式碼代理的實作模式:

  • 將儲存庫或檔案上下文傳送至聊天補全請求;
  • 要求模型提出一個有邊界的下一步動作;
  • 選擇性地要求結構化 JSON,以便您的代理可以決定是否要檢查另一個檔案、提出修補或停止;
  • 在您自己的應用層中執行工具,而非在模型呼叫內部;
  • 將觀察結果傳送回下一個聊天回合。

Novita AI 的目錄將 Qwen3 Coder Next 描述為一個文字輸入、文字輸出的 LLM,具有無伺服器可用性、函式呼叫支援、結構化輸出支援以及長上下文。這些是對程式碼代理重要的部分:模型可以產生類似工具呼叫的指令和結構化決策,而您的應用程式則負責檔案系統存取、命令執行、儲存庫變更和核准閘道。

避免將模型視為可以直接自行編輯儲存庫。程式碼代理需要周圍的程式碼來準備上下文、驗證輸出、執行工具、套用修補並記錄結果。Qwen3 Coder Next 提供該迴圈中的語言模型步驟。

模型 ID、端點、定價與限制

已驗證的 Novita AI 模型 ID 為 qwen/qwen3-coder-next

欄位 已驗證值
顯示名稱 Qwen3 Coder Next
模型 ID qwen/qwen3-coder-next
輸入模態 文字
輸出模態 文字
端點系列 chat/completionsanthropic
OpenAI 相容端點 POST https://api.novita.ai/openai/v1/chat/completions
上下文大小 262,144 個 token
最大輸出 token 65,536 個 token
列示輸入價格 每 1M token $0.20 美元
列示輸出價格 每 1M token $1.50 美元
列示功能 函式呼叫、結構化輸出、無伺服器
T1 配額列示 RPM 30 RPM

定價、速率限制和可用性可能變更。請在正式上線前查看 Novita AI 模型庫 和您的控制台配額。

步驟 1:取得 Novita AI API 金鑰

建立或開啟您的 Novita AI 帳戶,然後從控制台產生一個 API 金鑰。將其儲存為環境變數,而不是在應用程式中硬編碼。

export NOVITA_API_KEY="your_api_key_here"

對於本地開發,請使用您的 shell 設定檔、.env 載入器或密碼管理員。對於正式環境,請透過部署平台的密碼系統注入金鑰,並確保其不會出現在日誌、客戶端程式碼和儲存庫歷史記錄中。

步驟 2:發送第一個程式碼請求

從最小有用的請求開始:一條限制助手角色的系統訊息,加上一條包含簡短程式碼範例和特定程式碼任務的使用者訊息。

curl https://api.novita.ai/openai/v1/chat/completions \
-H "Authorization: Bearer $NOVITA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3-coder-next",
"messages": [
{
"role": "system",
"content": "你是一個程式碼助手。清楚說明風險,除非被要求,否則不要改變行為。"
},
{
"role": "user",
"content": "審查這個 JavaScript 函式的邊界情況:\n\nfunction divide(a, b) {\n return a / b;\n}"
}
],
"temperature": 0.2,
"max_tokens": 600
}'

成功的非串流回應會回傳一個包含 choices 陣列的聊天補全物件。讀取 choices[0].message.content 取得模型輸出,以及 usage 取得 token 統計。

import os
import requests

api_key = os.environ["NOVITA_API_KEY"]

response = requests.post(
    "https://api.novita.ai/openai/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    json={
        "model": "qwen/qwen3-coder-next",
        "messages": [
            {
                "role": "system",
                "content": (
                    "你是一個程式碼助手。清楚說明風險,"
                    "並將建議範圍限制在所提供的程式碼內。"
                ),
            },
            {
                "role": "user",
                "content": (
                    "審查這個 Python 函式是否有錯誤:\n\n"
                    "def normalize(items):\n"
                    "    return [x.strip().lower() for x in items]\n"
                ),
            },
        ],
        "temperature": 0.2,
        "max_tokens": 600,
    },
    timeout=60,
)

response.raise_for_status()
data = response.json()
print(data["choices"][0]["message"]["content"])

這個範例刻意保持簡單。只有在基本請求能在您的環境中正常運作後,才加入串流、工具或結構化輸出。

步驟 3:在代理迴圈中使用 Qwen3 Coder Next

程式碼代理是一個圍繞模型的迴圈。模型提出下一個動作;您的應用程式決定是否執行它,然後將結果回饋回去。

對於一個最小化的程式碼代理迴圈,請保持動作空間較小:

動作 您的應用程式做什麼
inspect_file 讀取允許的檔案路徑並回傳相關內容。
search_code 使用有邊界的查詢搜尋儲存庫。
propose_patch 要求模型產生一個修補計畫或 diff 以供審查。
finish 以摘要和剩餘風險結束迴圈。

不要給予模型不受限制的 shell 存取權。將每個建議的動作視為一個需要您的應用程式驗證的請求。良好的驗證包括路徑允許清單、最大檔案大小、命令允許清單(如果支援命令)、逾時限制,以及在套用變更前的人員核准。

一個簡單的迴圈可能如下所示:

import json
import os
import requests

API_URL = "https://api.novita.ai/openai/v1/chat/completions"
MODEL = "qwen/qwen3-coder-next"

def call_model(messages):
    response = requests.post(
        API_URL,
        headers={
            "Authorization": f"Bearer {os.environ['NOVITA_API_KEY']}",
            "Content-Type": "application/json",
        },
        json={
            "model": MODEL,
            "messages": messages,
            "temperature": 0.1,
            "max_tokens": 1200,
            "response_format": {"type": "json_object"},
        },
        timeout=60,
    )
    response.raise_for_status()
    return response.json()["choices"][0]["message"]["content"]

messages = [
    {
        "role": "system",
        "content": (
            "你是一個程式碼代理規劃器。僅回傳 JSON,包含鍵值 "
            "action、path、query、rationale 和 final_answer。允許的動作 "
            "為 inspect_file、search_code、propose_patch 和 finish。"
        ),
    },
    {
        "role": "user",
        "content": (
            "我們需要找出為什麼 normalize_user 在缺少 email 時會崩潰。 "
            "從選擇下一個安全的檢查步驟開始。"
        ),
    },
]

raw = call_model(messages)
decision = json.loads(raw)
print(decision)

這個範例使用 JSON 模式來保持應用程式解析器簡單。對於正式環境,請驗證回應是否包含允許的 action,並且在執行任何動作之前,pathquery 等欄位是否符合您的安全規則。

步驟 4:為代理決策加入結構化輸出

Novita AI 的聊天補全 API 包含 response_format,包括 json_objectjson_schema 選項。Qwen3 Coder Next 在模型庫中被列示為支援結構化輸出,因此結構化決策物件非常適合程式碼代理的編排。

對於您的軟體必須可靠解析的決策,請使用結構化輸出:

  • 分類是否需要變更;
  • 回傳一個包含檔案路徑和風險說明的修補計畫;
  • 決定是否需要更多上下文;
  • 產生一個測試檢查清單;
  • 輸出一個最終摘要,區分變更的行為、驗證和風險。

對於更嚴格的驗證,請使用 json_schema 並保持 schema 較小。模型輸出仍然是您程式的未受信任輸入,因此在解析後對其進行驗證。

schema = {
    "name": "coding_agent_decision",
    "schema": {
        "type": "object",
        "properties": {
            "action": {
                "type": "string",
                "enum": ["inspect_file", "search_code", "propose_patch", "finish"],
            },
            "path": {"type": "string"},
            "query": {"type": "string"},
            "rationale": {"type": "string"},
            "risk": {"type": "string"},
        },
        "required": ["action", "rationale", "risk"],
        "additionalProperties": False,
    },
    "strict": True,
}

payload = {
    "model": "qwen/qwen3-coder-next",
    "messages": [
        {
            "role": "system",
            "content": "將下一個程式碼代理決策回傳為結構化 JSON。",
        },
        {
            "role": "user",
            "content": "找出除錯一個失敗的登入測試最安全的第一步。",
        },
    ],
    "response_format": {
        "type": "json_schema",
        "json_schema": schema,
    },
    "temperature": 0.1,
    "max_tokens": 800,
}

當您的應用程式已經有一個工具分派層時,請使用函式呼叫。Novita AI API 參考文件記錄了一個 tools 欄位,可以在其中提供函式。模型可能會為這些函式產生 JSON 輸入,但您的應用程式仍然執行該函式,並在後續回合中回傳觀察結果。保持工具描述精確,並避免暴露破壞性操作,除非它們需要明確核准。

步驟 5:規劃上下文、輸出與成本

Qwen3 Coder Next 在 Novita AI 上列示的上下文大小為 262,144 個 token,最大輸出大小為 65,536 個 token。這為程式碼代理提供了多檔案上下文的空間,但較大的提示會增加成本,並可能稀釋模型的注意力。

使用檢索步驟,而不是將整個儲存庫傾倒到每個請求中:

  1. 從使用者請求、相關錯誤訊息和儲存庫地圖開始。
  2. 要求模型選擇要檢查的檔案。
  3. 僅加入選定的片段或檔案。
  4. 在要求 diff 之前,先要求一個有邊界的修補計畫。
  5. 保留一個簡短的執行摘要,而不是重播每個先前的觀察結果。

成本基於輸入和輸出 token。以列示的價格每 1M 輸入 token $0.20 美元和每 1M 輸出 token $1.50 美元計算,冗長的生成 diff 可能比簡潔的分析花費更多。將 max_tokens 設定為適合該步驟的最小值。例如,一個規劃步驟可能需要數百個 token,而最終的修補解釋可能需要更多。

速率限制在代理迴圈中也很重要。模型庫列出 Qwen3 Coder Next 的 T1 配額為 30 RPM,目錄中顯示了更高的 RPM 層級。設計您的代理以在收到 429 回應時使用退避重試,避免重複檢查相同檔案的平行迴圈,並在適當情況下快取摘要。

疑難排解

問題 可能原因 修正方法
401 或驗證失敗 API 金鑰遺失、過期或格式錯誤 檢查 Authorization: Bearer $NOVITA_API_KEY 標頭,必要時重新產生金鑰。
找不到模型 模型 ID 不正確 精確使用 qwen/qwen3-coder-next
輸出不是有效的 JSON 提示或 schema 太寬鬆 使用 response_format、降低 temperature,並驗證解析後的物件。
上下文太大 一個請求中包含太多檔案或長日誌 檢索較小的片段並摘要先前的回合。
代理迴圈無進展 動作空間太廣或觀察結果重複 加入最大迭代次數限制,並要求每個步驟提供新的理由。
意外的工具動作 模型建議了您的應用程式不應執行的動作 在模型外部強制執行允許清單和核准閘道。
速率限制錯誤 太多平行呼叫或緊密的重試迴圈 加入指數退避並將代理步驟排入佇列。

常見問題

Qwen3 Coder Next 可以透過 Novita AI API 使用嗎?

可以。Novita AI 模型庫將 Qwen3 Coder Next 列示為一個無伺服器 LLM,模型 ID 為 qwen/qwen3-coder-next

我應該使用哪個端點來使用 Qwen3 Coder Next?

使用 OpenAI 相容的聊天補全端點:POST https://api.novita.ai/openai/v1/chat/completions。模型目錄也列示了一個 anthropic 端點系列,但本指南中的可執行範例使用聊天補全。

Qwen3 Coder Next 在 Novita AI 上的費用是多少?

已查核的 Novita AI 目錄將 Qwen3 Coder Next 的價格列示為每 1M 輸入 token $0.20 美元,每 1M 輸出 token $1.50 美元。由於定價可能變更,請在正式上線前重新檢查模型庫中的定價。

上下文和輸出限制是多少?

已查核的 Novita AI 目錄將 Qwen3 Coder Next 的上下文大小列示為 262,144 個 token,最大輸出 token 為 65,536 個。

Qwen3 Coder Next 是否支援函式呼叫和結構化輸出?

是的。Novita AI 模型庫將 Qwen3 Coder Next 列示為具有 function-callingstructured-outputs 功能。您的應用程式仍然需要驗證並執行任何工具動作。

Qwen3 Coder Next 可以直接編輯我的儲存庫嗎?

不行。API 回傳模型輸出。儲存庫讀取、命令執行、修補套用、測試和核准必須在您自己的代理執行環境中實作。