Novita AIでのQwen3 Coder Next API:コーディングエージェント向け

Novita AIでのQwen3 Coder Next API:コーディングエージェント向け

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/completions, anthropic
OpenAI互換エンドポイント POST https://api.novita.ai/openai/v1/chat/completions
コンテキストサイズ 262,144 トークン
最大出力トークン数 65,536 トークン
入力価格(掲載) $0.20 / 100万トークン
出力価格(掲載) $1.50 / 100万トークン
掲載機能 関数呼び出し、構造化出力、サーバーレス
T1クォータ時の掲載RPM 30 RPM

料金、レート制限、提供状況は変更される可能性があります。本番環境に展開する前に、Novita AIモデルライブラリとコンソールのクォータを確認してください。

ステップ1:Novita AI APIキーを取得する

Novita AIアカウントを作成または開き、コンソールからAPIキーを生成します。アプリケーションにハードコーディングせず、環境変数として保存します。

export NOVITA_API_KEY="your_api_key_here"

ローカル開発では、シェルプロファイル、.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": "You are a coding assistant. Explain risks clearly and avoid changing behavior unless asked."
},
{
"role": "user",
"content": "Review this JavaScript function for edge cases:\n\nfunction divide(a, b) {\n return a / b;\n}"
}
],
"temperature": 0.2,
"max_tokens": 600
}'

成功した非ストリーミング応答は、choices配列を含むチャット補完オブジェクトを返します。モデル出力は choices[0].message.content、トークン使用量は usage から読み取ります。

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": (
                    "You are a coding assistant. Explain risks clearly "
                    "and keep recommendations scoped to the provided code."
                ),
            },
            {
                "role": "user",
                "content": (
                    "Review this Python function for bugs:\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 モデルにレビュー用のパッチ計画または差分を生成するよう依頼します。
finish ループを終了し、要約と残りのリスクを出力します。

モデルに無制限のシェルアクセスを与えないでください。提案されたすべてのアクションは、アプリケーションが検証するリクエストとして扱います。適切な検証には、パスの許可リスト、最大ファイルサイズ、サポートされている場合のコマンド許可リスト、タイムアウト制限、変更を適用する前の人間による承認が含まれます。

シンプルなループは次のようになります。

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": (
            "You are a coding-agent planner. Return JSON only with keys "
            "action, path, query, rationale, and final_answer. Allowed actions "
            "are inspect_file, search_code, propose_patch, and finish."
        ),
    },
    {
        "role": "user",
        "content": (
            "We need to find why normalize_user crashes when email is missing. "
            "Start by choosing the next safe inspection step."
        ),
    },
]

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

この例ではJSONモードを使用して、アプリケーションのパーサーをシンプルに保っています。本番環境では、応答に許可された action が含まれていること、pathquery などのフィールドがセキュリティルールに準拠していることを確認してから何かを実行してください。

ステップ4:エージェントの意思決定に構造化出力を追加する

Novita AIのチャット補完APIには、json_objectjson_schema オプションを含む response_format が含まれています。Qwen3 Coder Nextはモデルライブラリで構造化出力をサポートしていると記載されているため、構造化された決定オブジェクトはコーディングエージェントのオーケストレーションに適しています。

ソフトウェアで確実に解析する必要がある決定には、構造化出力を使用します。

  • 変更が必要かどうかを分類する
  • ファイルパスとリスクメモを含むパッチ計画を返す
  • さらにコンテキストが必要かどうかを判断する
  • テストチェックリストを生成する
  • 変更された動作、検証、リスクを分離した最終要約を出力する

より厳格な検証には json_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": "Return the next coding-agent decision as structured JSON.",
        },
        {
            "role": "user",
            "content": "Find the safest first step for debugging a failing login test.",
        },
    ],
    "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トークン、最大出力サイズ65,536トークンと掲載されています。これにより、コーディングエージェントは複数ファイルのコンテキストを扱う余地がありますが、プロンプトが大きくなるとコストが増加し、モデルの注意が分散する可能性があります。

すべてのリクエストにリポジトリ全体を投入する代わりに、検索ステップを使用します。

  1. ユーザーリクエスト、関連するエラーメッセージ、リポジトリマップから開始します。
  2. モデルに検査するファイルを選択するよう依頼します。
  3. 選択されたスニペットまたはファイルのみを追加します。
  4. 差分を要求する前に、制限されたパッチ計画を要求します。
  5. すべての以前の観測結果を再生する代わりに、短い実行サマリーを保持します。

コストは入力トークンと出力トークンに基づきます。掲載価格は入力トークン100万あたり$0.20、出力トークン100万あたり$1.50であるため、冗長な生成差分は簡潔な分析よりもコストが高くなる可能性があります。max_tokens はそのステップに適合する最小の値に設定します。たとえば、計画ステップでは数百トークンが必要かもしれませんが、最終的なパッチの説明ではより多くのトークンが必要になる場合があります。

レート制限もエージェントループでは重要です。モデルライブラリにはQwen3 Coder NextのT1クォータが30 RPMと記載されており、カタログにはより高いRPM層も表示されています。エージェントが429応答をバックオフで再試行し、同じファイルを繰り返し検査する並列ループを避け、適切な場所でサマリーをキャッシュするように設計します。

トラブルシューティング

問題 考えられる原因 修正方法
401 または認証失敗 APIキーの欠落、期限切れ、または形式が不正 Authorization: Bearer $NOVITA_API_KEY ヘッダーを確認し、必要に応じてキーを再生成します。
モデルが見つからない モデルIDが間違っている 正確に qwen/qwen3-coder-next を使用します。
出力が有効なJSONではない プロンプトまたはスキーマが緩すぎる response_format を使用し、temperature を下げ、解析したオブジェクトを検証します。
コンテキストが大きすぎる 1つのリクエストにファイルや長いログが多すぎる より小さなスニペットを取得し、以前のターンを要約します。
エージェントがループして進まない アクションスペースが広すぎる、または観測結果が繰り返されている 最大反復制限を追加し、各ステップに新しい根拠を要求します。
予期しないツールアクション モデルがアプリケーションで実行すべきでないアクションを提案した モデル外で許可リストと承認ゲートを適用します。
レート制限エラー 並列呼び出しが多すぎる、または再試行ループがタイト 指数バックオフを追加し、エージェントステップをキューイングします。

FAQ

Qwen3 Coder NextはNovita AI APIで利用できますか?

はい。Novita AIモデルライブラリには、Qwen3 Coder NextがモデルID qwen/qwen3-coder-next のサーバーレスLLMとしてリストされています。

Qwen3 Coder Nextにはどのエンドポイントを使用すればよいですか?

OpenAI互換のチャット補完エンドポイント POST https://api.novita.ai/openai/v1/chat/completions を使用します。モデルカタログには anthropic エンドポイントファミリーもリストされていますが、このガイドの実行可能な例ではチャット補完を使用しています。

Novita AIでのQwen3 Coder Nextのコストはいくらですか?

確認済みのNovita AIカタログでは、Qwen3 Coder Nextは入力トークン100万あたり$0.20、出力トークン100万あたり$1.50とリストされています。価格は変更される可能性があるため、起動前にモデルライブラリで価格を再確認してください。

コンテキストと出力の制限は何ですか?

確認済みのNovita AIカタログでは、Qwen3 Coder Nextのコンテキストサイズは262,144トークン、最大出力トークン数は65,536トークンとリストされています。

Qwen3 Coder Nextは関数呼び出しと構造化出力をサポートしていますか?

はい。Novita AIモデルライブラリには、Qwen3 Coder Nextに function-callingstructured-outputs 機能がリストされています。アプリケーションはツールアクションを検証して実行する必要があります。

Qwen3 Coder Nextはリポジトリを直接編集できますか?

いいえ。APIはモデル出力を返します。リポジトリの読み取り、コマンド実行、パッチ適用、テスト、承認は、独自のエージェントランタイムで実装する必要があります。