Source: https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/
Canonical: https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/
Language: ja

# Qwen: Qwen3 30B A3B

[Markdown](https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/index.md) · [JSON](https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/facts.json)

## [Qwen: Qwen3 30B A3B](https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/)

Qwen3-30B-A3Bは、推論、コーディング、多言語の対話向けに、思考・非思考の両モードを持つQwenの混合エキスパート型テキストモデルです。総パラメータ305億、トークン当たり有効なパラメータ33億、ネイティブな32,768トークンのコンテキストを持ちます。

- [**Ailoot Ultra · OpenAI チャット** `POST /v1/chat/completions` `qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/#method-0)
- [**Ailoot Ultra · Anthropic メッセージ** `POST /v1/messages` `qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/qwen-qwen3-30b-a3b/#method-1)

モデルについて

この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。

Qwen3-30B-A3Bは、一つのテキストモデルに二つの回答スタイルを組み合わせます。複雑な論理、数学、プログラミングの問題には思考を、簡単な対話には非思考を使います。Qwenは、創作文、役割に基づく対話、指示に従う能力、外部ツールとの連携も重視しています。初期Qwen3系列は119の言語と方言に対応し、ターン間で要求言語が変わる多言語の質問、翻訳、対話に役立ちます。出力言語を示し、変えずに保持する用語を指定して、読者の必要とする内容を説明してください。

これは初期のQwen3-30B-A3B混合エキスパート版です。総パラメータ305億のうち、各トークンで33億を有効にし、モデルのエキスパート層では128個のうち8個のエキスパートを選択します。この疎なアーキテクチャは、Qwen3の密なモデルとの重要な違いです。このプロファイルは、ネイティブなコンテキストが32,768トークンの初期ハイブリッドモデルを扱い、後発の別の名前を持つInstruct-2507版やThinking-2507版ではありません。分析の依頼では、関連するコードや元の文章、解決する質問、有効な回答が満たすべき条件を提示してください。

公式チャットテンプレートでは、思考が既定で有効です。設定のenable\_thinkingスイッチで完全に無効化できます。思考が有効のままなら、利用者またはシステム指示内の/thinkと/no\_thinkはテキストのスイッチとして働き、最新の指示がターンをまたいで要求する動作を制御します。有効なテンプレートへの/no\_thinkの要求でも、空の思考ブロックを生成する場合があります。設定のスイッチを無効にすると、どちらのマーカーも思考を有効にしません。この違いは、すぐに行う書き換えと、より込み入ったデバッグや推論の質問を交互に扱うフローで重要です。

Qwenの例は、\<think\>部分と最終回答を分けています。コードの問題では、最小限の関連するソースの抜粋、観察された失敗、望む結果を準備し、診断と修正案を求めてください。数学の問題では、開発元は、明示的な段階的指示と、\\boxed{}に入れた最終回答を推奨しています。多肢選択の依頼では、代わりに一つの回答フィールドを定義できます。後の対話ターンでは、Qwenは推論部分全体を繰り返し引き継ぐのではなく、最終回答を保持し、以前の思考内容を履歴から省くことを推奨しています。

ツール呼び出しは両モードで説明されています。Qwenは、モデルのツールテンプレートと解析を扱うためにQwen-Agentを推奨し、例には検索、時刻情報、コードインタープリターがあります。手順の計画を求める前に、利用可能なツールと引数を説明してください。実用的な依頼では、選択した資料の確認と、それに続く根拠を伴う実装案を求められます。モデルが実際の証拠から続けられるよう、各ツール結果を対話に返してください。文章によるツールの要求と、アプリケーションが実行した結果は、フローの別の部分です。

カードは、YaRNによる131,072トークンへのコンテキスト拡張を説明しています。ネイティブなウィンドウの設定に依存する拡張であり、Qwenは静的スケーリングが短い入力に影響し得ると注意しています。カードは、典型的なプロンプトと長い回答の余地を割り当てる、40,960位置の既定設定も説明します。これはネイティブなコンテキストの説明とは異なります。長い資料では文書の境界を明確にし、質問に関係する部分を優先して、回答と推論のための余地を残してください。

思考では、Qwenはtemperature 0.6、top-p 0.95、top-k 20、min-p 0を推奨し、結果の劣化や終わりのない繰り返しにつながり得るため、貪欲デコードを避けるよう助言しています。非思考では、temperatureを0.7、top-pを0.8に変えます。大半の質問では32,768トークンの出力容量を推奨し、特に難度の高い数学やプログラミングの問題では38,912トークンを説明しています。これらは開発元の生成設定であり、別の固定された回答保証ではありません。必要な推論と有用な最終結果の両方の余地を持たせるため、モードと要求する成果物を合わせて選んでください。

実用タスク

### 実用タスク

英語の技術例

```
Explain a weighted-average mistake

A student averages two class scores as (80 + 90) / 2. The first class has 10 students and the second has 30. Explain why that calculation does not give the combined student average, derive the correct weighted expression and state when the simple average would be valid. Finish with the combined average in a separate final line.
```

#### 期待される結果

```
A short explanation, a weighted formula, its evaluated result and the equal-weight condition.
```

#### 結果の確認

```
The explanation uses student counts as weights and distinguishes a class average from a student average.
```

**Ailoot Ultra · OpenAI チャット** `POST /v1/chat/completions` `qwen/qwen3-30b-a3b`

[`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=chat)

Alibaba /`qwen/qwen3-30b-a3b`

### はじめに

Qwen3-30B-A3Bは、推論、コーディング、多言語の対話向けに、思考・非思考の両モードを持つQwenの混合エキスパート型テキストモデルです。総パラメータ305億、トークン当たり有効なパラメータ33億、ネイティブな32,768トークンのコンテキストを持ちます。

対応する入力

テキスト

結果

テキスト

### Ailootで利用可能 · 入力とメソッド

**Ailoot Ultra · OpenAI チャット** `POST /v1/chat/completions`

入力の種類

`text`

出力の種類

`text`

出力形式

jsonまたはSSE

| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
| --- | --- | --- | --- | --- |
| フィールド`model` | 種類`string` | 要件必須 | 値と制限 qwen/qwen3-30b-a3b | デフォルト— |
| フィールド`messages` | 種類`message[]` | 要件必須 | 値と制限 最小項目数: 1 | デフォルト— |
| フィールド`messages[].role` | 種類`string` | 要件必須 | 値と制限 例：system, user, assistant, tool, function 条件: これらのロールはソースコードの互換型で明示されています。正確なロールの集合はモデルごとに異なります。 モデルによる | デフォルト— |
| フィールド`messages[].content` | 種類`string\|content_part[]\|null` | 要件任意 | 値と制限 | デフォルト— |
| フィールド`messages[].tool_calls` | 種類`tool_call[]` | 要件任意 | 値と制限 | デフォルト— |
| フィールド`messages[].tool_call_id` | 種類`string` | 要件任意 | 値と制限 適用条件: role=tool。実際に返されたIDを使ってください | デフォルト— |
| フィールド`messages[].name` | 種類`string` | 要件任意 | 値と制限 | デフォルト— |
| フィールド`messages[].reasoning_content` | 種類`string` | 要件任意 | 値と制限 適用条件: このモデルが使用する場合は、実際に返された推論をそのまま次のリクエストへ戻してください | デフォルト— |
| フィールド`messages[].reasoning_details` | 種類`object\|array` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`max_tokens` | 種類`integer` | 要件任意 | 値と制限 最小値: 1 モデルによる | デフォルト— |
| フィールド`max_completion_tokens` | 種類`integer` | 要件任意 | 値と制限 最小値: 1 モデルによる | デフォルト— |
| フィールド`stream` | 種類`boolean` | 要件任意 | 値と制限 | デフォルトfalse |
| フィールド`stream_options.include_usage` | 種類`boolean` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`temperature` | 種類`number` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`top_p` | 種類`number` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`stop` | 種類`string\|string[]` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`tools` | 種類`function_tool[]` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`tools[].type` | 種類`string` | 要件任意 | 値と制限 function モデルによる | デフォルト— |
| フィールド`tools[].function.name` | 種類`string` | 要件必須 | 値と制限 適用条件: 関数ツールの指定あり | デフォルト— |
| フィールド`tools[].function.description` | 種類`string` | 要件任意 | 値と制限 | デフォルト— |
| フィールド`tools[].function.parameters` | 種類`JSON_schema` | 要件任意 | 値と制限 | デフォルト— |
| フィールド`tool_choice` | 種類`string\|object` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`parallel_tool_calls` | 種類`boolean` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`response_format` | 種類`object` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`reasoning_effort` | 種類`string` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`reasoning` | 種類`object` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`service_tier` | 種類`string` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`instructions` | 種類`string` | 要件任意 | 値と制限 互換性用のフィールド | デフォルト— |
| フィールド`functions` | 種類`function[]` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`function_call` | 種類`string\|object` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`prompt_cache_options` | 種類`object` | 要件任意 | 値と制限 モデルによる | デフォルト— |
| フィールド`modalities` | 種類`string[]` | 要件任意 | 値と制限 text | デフォルト— |
| フィールド`provider` | 種類`object` | 要件任意 | 値と制限 条件: このUltraテキストルートではprovider.optionsは拒否されます | デフォルト— |
| フィールド`cache_control.ttl` | 種類`string` | 要件任意 | 値と制限 条件: 実際のプロンプトキャッシュの指定箇所では1hは拒否されます | デフォルト— |

入力素材の組み合わせ

**テキスト** · UTF8テキスト

`messages[].content`

メソッドのパラメータとライフサイクル

| パラメータ | 仕様 |
| --- | --- |
| パラメータ`content_type` | 仕様application/json |
| パラメータ`required` | 仕様model, messages |
| パラメータ`material_types` | 仕様text |
| パラメータ`messages` | 仕様role/content形式のメッセージ配列 |
| パラメータ`file_material` | 仕様実際のUTF-8文書をテキストとしてそのまま挿入します。ファイルIDは推定しません |
| パラメータ`optional_controls` | 仕様stream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| パラメータ`control_scope` | 仕様モデル固有。ユーザーの関数ツールとホスト側のツールは異なります |
| パラメータ`output_modalities` | 仕様text |
| パラメータ`hosted_operations` | 仕様false |
| パラメータ`multimodal_input_binding` | 仕様null |

ライフサイクル: `synchronous_or_streamed`

正確なモデルIDをmessagesとともに送ってください。

コンテキスト長は出力上限ではありません。

テキストファイルはテキストをそのまま提供できます。画像／音声／ファイルオブジェクトの入力には正確なバインディングが必要です。

### 料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード

標準料金 高速モードが選択されている場合

Flex モード

標準料金 flex モードが選択されている場合

最大推論量

標準料金 推論量が最大で、調整に既定値（default）を使用する場合

#### Ailootの料金

#### 設定別の価格

各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。

| 設定 | 料金表 | コンテキストトークン数が次の値を超える場合 | コンテキストトークン数が次の値以下の場合 | 料金 |
| --- | --- | --- | --- | --- |
| 設定トークンの基本単価 | 料金表基本料金 | コンテキストトークン数が次の値を超える場合— | コンテキストトークン数が次の値以下の場合上限なし | 料金 入力 · 入力トークン **$0.00024** / 1K トークン 出力 · 出力トークン **$0.001** / 1K トークン 入力 · キャッシュ読み取り **$0** / 1K トークン 入力 · キャッシュ書き込み **$0** / 1K トークン 入力 · キャッシュ書き込み、1時間 **—** / 1K トークン |
| 設定リクエスト長に応じた料金区分 1 | 料金表— | コンテキストトークン数が次の値を超える場合0 | コンテキストトークン数が次の値以下の場合上限なし | 料金 入力 · 入力トークン **$0.00024** / 1K トークン 出力 · 出力トークン **$0.001** / 1K トークン 入力 · キャッシュ読み取り **$0** / 1K トークン 入力 · キャッシュ書き込み **$0** / 1K トークン 入力 · キャッシュ書き込み、1時間 **—** / 1K トークン |

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。[金額の確保と精算の仕組み →](https://ailoot.ai/docs/ja/billing/reserve/)

### リクエスト例

#### Ailoot Ultra · OpenAI チャット

curlPython SDKPythonストリーミング

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen/qwen3-30b-a3b", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='qwen/qwen3-30b-a3b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='qwen/qwen3-30b-a3b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### 結果を受け取って保存

#### Ailoot Ultra · OpenAI チャット

jsonまたはSSE

##### 完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

すべての選択肢と、その内容・ツール呼び出し・推論を保持してください。SSEでは選択肢／ツールのインデックスごとに差分を組み立て、最終的な終了理由と使用量を残します。

##### 元のレスポンスを確認する場合

リクエスト／応答IDとヘッダーを保持してください。テキストジョブを取得する汎用URLは提供されません。

レスポンスのフィールド

| フィールド | 種類 |
| --- | --- |
| フィールド`choices[].index` | 種類integer |
| フィールド`choices[].message.content` | 種類string\|null |
| フィールド`choices[].message.tool_calls` | 種類tool\_call\[\] |
| フィールド`choices[].message.reasoning_content` | 種類string |
| フィールド`choices[].message.reasoning_details` | 種類object\|array |
| フィールド`choices[].finish_reason` | 種類string\|null |
| フィールド`usage` | 種類object |

エラーと次の手順

| レスポンス | 条件 | 次の手順 |
| --- | --- | --- |
| レスポンス400 · `invalid_request_error` | 条件必須フィールド、素材の表現形式、またはパラメーター値が不正です | 次の手順新しい生成リクエストを送る前に、指定されたフィールドを修正してください。 |

### エイリアス

#### モデルのエイリアス

**Ailoot Ultra** [`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=chat)

#### メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

#### 関連する呼び出し用ID

[`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=chat)

**Ailoot Ultra · Anthropic メッセージ** `POST /v1/messages` `qwen/qwen3-30b-a3b`

[`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=messages)

Alibaba /`qwen/qwen3-30b-a3b`

### はじめに

Qwen3-30B-A3Bは、推論、コーディング、多言語の対話向けに、思考・非思考の両モードを持つQwenの混合エキスパート型テキストモデルです。総パラメータ305億、トークン当たり有効なパラメータ33億、ネイティブな32,768トークンのコンテキストを持ちます。

対応する入力

テキスト

結果

json · sse

### Ailootで利用可能 · 入力とメソッド

**Ailoot Ultra · Anthropic メッセージ** `POST /v1/messages`

入力の種類

`text`

出力の種類

`json`, `sse`

出力形式

JSONまたはSSE

| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
| --- | --- | --- | --- | --- |
| フィールド`model` | 種類`string` | 要件必須 | 値と制限 qwen/qwen3-30b-a3b | デフォルト— |
| フィールド`messages` | 種類`message[]` | 要件必須 | 値と制限 | デフォルト— |
| フィールド`messages[].role` | 種類`string` | 要件必須 | 値と制限 user, assistant | デフォルト— |
| フィールド`messages[].content` | 種類`string` | 要件必須 | 値と制限 | デフォルト— |
| フィールド`max_tokens` | 種類`integer` | 要件必須 | 値と制限 | デフォルト— |
| フィールド`stream` | 種類`boolean` | 要件任意 | 値と制限 | デフォルトfalse |

入力素材の組み合わせ

**テキスト** · UTF-8テキスト

`messages[].contentの文字列`

メソッドのパラメータとライフサイクル

| パラメータ | 仕様 |
| --- | --- |
| パラメータ`content_type` | 仕様application/json |
| パラメータ`required` | 仕様model, messages, max\_tokens |
| パラメータ`optional_controls` | 仕様stream |
| パラメータ`material_types` | 仕様text |
| パラメータ`text_file_material` | 仕様実際のUTF-8文書を読み、その本文を指定された入力またはメッセージ内容の文字列に入れてください。 |

ライフサイクル: `synchronous_or_streamed`

### 料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード

標準料金 高速モードが選択されている場合

Flex モード

標準料金 flex モードが選択されている場合

最大推論量

標準料金 推論量が最大で、調整に既定値（default）を使用する場合

#### Ailootの料金

#### 設定別の価格

各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。

| 設定 | 料金表 | コンテキストトークン数が次の値を超える場合 | コンテキストトークン数が次の値以下の場合 | 料金 |
| --- | --- | --- | --- | --- |
| 設定トークンの基本単価 | 料金表基本料金 | コンテキストトークン数が次の値を超える場合— | コンテキストトークン数が次の値以下の場合上限なし | 料金 入力 · 入力トークン **$0.00024** / 1K トークン 出力 · 出力トークン **$0.001** / 1K トークン 入力 · キャッシュ読み取り **$0** / 1K トークン 入力 · キャッシュ書き込み **$0** / 1K トークン 入力 · キャッシュ書き込み、1時間 **—** / 1K トークン |
| 設定リクエスト長に応じた料金区分 1 | 料金表— | コンテキストトークン数が次の値を超える場合0 | コンテキストトークン数が次の値以下の場合上限なし | 料金 入力 · 入力トークン **$0.00024** / 1K トークン 出力 · 出力トークン **$0.001** / 1K トークン 入力 · キャッシュ読み取り **$0** / 1K トークン 入力 · キャッシュ書き込み **$0** / 1K トークン 入力 · キャッシュ書き込み、1時間 **—** / 1K トークン |

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。[金額の確保と精算の仕組み →](https://ailoot.ai/docs/ja/billing/reserve/)

### リクエスト例

#### Ailoot Ultra · Anthropic メッセージ

必要最小限の完全な JSON ボディcurl · ご自身の UTF-8 ドキュメントを使用するPython · 結果全体を保存する

```json
{
  "model": "qwen/qwen3-30b-a3b",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen/qwen3-30b-a3b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'qwen/qwen3-30b-a3b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### 結果を受け取って保存

#### Ailoot Ultra · Anthropic メッセージ

JSONまたはSSE

##### 完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

すべてのコンテンツブロック、思考署名、実際のツール利用IDを保持してください。SSEのすべてのブロック差分を組み立てます。最初のテキストブロックだけでは完全な出力になりません。

##### 元のレスポンスを確認する場合

リクエスト／応答IDとヘッダーを保持してください。テキストジョブを取得する汎用URLは提供されません。

レスポンスのフィールド

| フィールド | 種類 |
| --- | --- |
| フィールド`id` | 種類string |
| フィールド`model` | 種類string |
| フィールド`content[]` | 種類text\|thinking\|tool\_use\|other content block |
| フィールド`stop_reason` | 種類string\|null |
| フィールド`usage` | 種類object |

エラーと次の手順

| レスポンス | 条件 | 次の手順 |
| --- | --- | --- |
| レスポンス400 · `invalid_request_error` | 条件必須フィールド、素材の表現形式、またはパラメーター値が不正です | 次の手順新しい生成リクエストを送る前に、指定されたフィールドを修正してください。 |

### エイリアス

#### モデルのエイリアス

**Ailoot Ultra** [`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=messages)

#### メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

#### 関連する呼び出し用ID

[`qwen/qwen3-30b-a3b`](https://ailoot.ai/models/ja/#m=qwen%2Fqwen3-30b-a3b&route=Ultra&caller=qwen%2Fqwen3-30b-a3b&fmt=messages)

FAQ · Qwen: Qwen3 30B A3B

利用できる入力と結果は何ですか？

`POST /v1/chat/completions` · `qwen/qwen3-30b-a3b`: `text` → `text` `POST /v1/messages` · `qwen/qwen3-30b-a3b`: `text` → `json`, `sse`

リクエストはどの項目を使用しますか？

`POST /v1/chat/completions` · `qwen/qwen3-30b-a3b`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3-30b-a3b`: `model`, `messages`, `max_tokens`, `stream`

どの制限が適用されますか？

`POST /v1/chat/completions` · `qwen/qwen3-30b-a3b`: `messages.min_items`: `1`

AilootをClaude Code、OpenCode、Hermes、自分のアプリに接続しましょう。

## 企業とそのプロジェクト群

企業とそのプロジェクト群：数百万の顧客、毎月数十億規模の売上。

## トークンを割引価格で購入。

継続利用にサブスクリプション割引。プロモコードでトークン購入が最大50%割引。

サブスクリプション

定期的なリクエストに合う割引プランを選びましょう。

最大50%のプロモコード

購入時にコードを入力すると、実施中のキャンペーンに沿って価格を再計算します。

支出を履歴で確認

各リクエストのモデル、トークン、金額が保存されます。

[サブスクリプションを選ぶ](https://ailoot.ai/docs/ja/billing/subscriptions/) · [モデルの価格を見る](https://ailoot.ai/models/ja/)

## 販売する製品に、 APIを組み込みましょう。

SaaS、アプリ、ボットをAilootの公式サービス提供条件とライセンス契約に基づいて接続できます。再販にはリセラーライセンスを申請できます。

商用アプリ

サービスの有料機能に、文章、画像、動画、音声の生成を組み込めます。

リセラーライセンス

プロジェクトの説明とアクセスの仕組みをお送りください。利用・再販条件の書面を申請できます。

サイトで契約文書を確認

接続前にサービス提供条件、ライセンス契約、データ処理ポリシーを読めます。

[リセラーライセンスを申請](mailto:support@ailoot.ai) · [サービス提供条件とライセンス契約](https://ailoot.ai/legal/offer?lang=ja)

## Ailoot · 企業とそのプロジェクト群





Ailootは、蓄積した運営経験、幅広い顧客基盤、安定したサービス、継続的なKPI管理を基盤としています。





企業とそのプロジェクト群：数百万の顧客、毎月数十億規模の売上。





Ailootはこの運営経験を、お客様の製品、エージェント、アプリケーション、自動化でAI機能を利用するためのAPIアクセスに活かしています。
