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

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

Qwen3 Coder Next は、長いコンテキストのコード理解、構造化出力、チャット補完 API を介した関数呼び出しスタイルのツール連携を必要とするコーディングエージェントワークフロー向けに、Novita AI でサーバーレステキストモデルとして提供されています。モデルホスティングを管理することなく、エージェントループ内でコーディング特化型モデルを使用する場合は、OpenAI 互換のエンドポイント POST https://api.novita.ai/openai/v1/chat/completions で確認済みモデル ID qwen/qwen3-coder-next を使用してください。

まず、全体的なローンチ情報とモデルのポジショニング概要を確認したい場合は、Novita AI 上の Qwen3-Coder-Next をお読みください。同じモデルを Anthropic 互換ツールに組み込むことが目的であれば、Claude Code で Qwen3-Coder-Next を使用する ための併用ガイドを参照してください。

コーディングエージェントで 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 トークン
最大出力トークン数 65,536 トークン
掲載の入力料金 100万トークンあたり $0.20
掲載の出力料金 100万トークンあたり $1.50
掲載の機能 関数呼び出し、構造化出力、サーバーレス
掲載の 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 には response_format が含まれており、json_objectjson_schema オプションが利用できます。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 はモデル出力を返します。リポジトリの読み取り、コマンド実行、パッチ適用、テスト、承認は、独自のエージェントランタイムで実装する必要があります。

関連する Qwen コーディングガイド