
Qwen3.8 Maxの使い方:Python・TypeScript・cURL
qwen3.8-maxを使用します。文書URLは過去のPreview slugを保持しているため、本番IDを使い、Traffic投入前に自分のAccountでSmoke Testを実行してください。QwenCloudリリースとEvoLink状況
| Surface | ID | 状況 |
|---|---|---|
| QwenCloud | qwen3.8-max | 正式upstream flagship |
| Token Plan | qwen3.8-max-preview | Preview channel |
| EvoLink | qwen3.8-max | 本番Route利用可能、文書URLはPreview slugを保持 |
最初のリクエスト前の準備
| 要件 | 準備 | 目的 |
|---|---|---|
| EvoLink API Key | API Keyダッシュボードで作成 | Bearer認証 |
| Base URL | テキストは https://direct.evolink.ai/v1 | SDK設定とEndpointを分離 |
| マルチモーダルURL | 画像・音声・動画は https://api.evolink.ai/v1 | 文書化された専用Endpoint |
| モデル変数 | EvoLink表示の正確なID | PreviewからGAへの変更を設定だけで対応 |
| スモークテスト | 短く決定的な1リクエスト | 認証、経路、形式、課金を確認 |
| フォールバック | 検証済みEvoLinkモデル | 有効化・容量変更時の継続性 |
export EVOLINK_API_KEY="your-evolink-api-key"
export EVOLINK_BASE_URL="https://direct.evolink.ai/v1"
export EVOLINK_QWEN_MODEL="qwen3.8-max-preview"Protocol判断ツリー
既存OpenAI ChatはChat、新規AgentでToolやサーバー状態が必要ならResponses、Anthropic stackはMessagesを選びます。
Existing OpenAI-compatible chat application?
├─ Yes → Chat Completions
└─ No
├─ New agent needs built-in tools or server-linked turns? → Responses
└─ Existing Anthropic Messages stack? → MessagesEVOLINK_QWEN_MODELはqwen3.8-maxに設定し、最初のResponseでResolved Modelを確認してください。Chat・Responses・Messagesの選択
| プロトコル | Endpoint | 主な用途 | 違い |
|---|---|---|---|
| Chat Completions | /v1/chat/completions | 既存OpenAI互換チャット | messages、Thinkingは reasoning_content |
| Responses | /v1/responses | Agent、組み込みツール、連結ターン | input、previous_response_id、Session Cache |
| Messages | /v1/messages | Anthropic SDK | トップレベル system、max_tokens 必須 |
既存OpenAIアプリはChat、ツールやサーバー状態はResponses、Anthropic形式のBlockとEventはMessagesから始めます。
cURLで最初のコール
curl --request POST \
--url "${EVOLINK_BASE_URL}/chat/completions" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"model\": \"${EVOLINK_QWEN_MODEL}\",
\"messages\": [
{
\"role\": \"system\",
\"content\": \"You are a concise software architecture assistant.\"
},
{
\"role\": \"user\",
\"content\": \"Return three checks for a safe API rollout.\"
}
]
}"id、解決後の model、1件以上の choices、usageが含まれます。有効化テストでは返却モデルを保存してください。OpenAI SDKによるPython統合
pip install openaiimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)
response = client.chat.completions.create(
model=os.environ["EVOLINK_QWEN_MODEL"],
messages=[
{
"role": "system",
"content": "You are a concise software architecture assistant.",
},
{
"role": "user",
"content": "Return three checks for a safe API rollout.",
},
],
)
print(response.choices[0].message.content)
print(response.model)統合境界はAPI Key、Base URL、モデルIDだけです。Promptや業務ロジックを変える前に、設定変更で出力と運用特性を比較します。
TypeScript統合
npm install openaiimport OpenAI from "openai";
const apiKey = process.env.EVOLINK_API_KEY;
const model = process.env.EVOLINK_QWEN_MODEL;
if (!apiKey || !model) {
throw new Error("EVOLINK_API_KEY and EVOLINK_QWEN_MODEL are required");
}
const client = new OpenAI({
apiKey,
baseURL: process.env.EVOLINK_BASE_URL ?? "https://direct.evolink.ai/v1",
});
const response = await client.chat.completions.create({
model,
messages: [
{
role: "system",
content: "You are a concise software architecture assistant.",
},
{
role: "user",
content: "Return three checks for a safe API rollout.",
},
],
});
console.log(response.choices[0].message.content);
console.log(response.model);StreamingでThinkingと最終内容を分離
reasoning_contentとcontentを分けて保存します。import os
from openai import OpenAI
model = os.environ.get("EVOLINK_QWEN_MODEL")
if not model:
raise RuntimeError("EVOLINK_QWEN_MODEL is required")
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)
stream = client.chat.completions.create(
model=model,
messages=[
{"role": "user", "content": "Review this rollout plan for failure modes."}
],
stream=True,
extra_body={"enable_thinking": True},
)
for chunk in stream:
delta = chunk.choices[0].delta
reasoning = getattr(delta, "reasoning_content", None)
if reasoning:
print(reasoning, end="", flush=True)
if delta.content:
print(delta.content, end="", flush=True)EVOLINK_QWEN_MODEL を検証してください。暗黙のフォールバックではRolloutとRollbackを監査できません。ツールとマルチターン向けResponses API
messages ではなく input を使います。EvoLinkは previous_response_id と x-dashscope-session-cache: enable も文書化しています。curl --request POST \
--url "${EVOLINK_BASE_URL}/responses" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--header "x-dashscope-session-cache: enable" \
--data "{
\"model\": \"${EVOLINK_QWEN_MODEL}\",
\"input\": \"List the production checks for a model-route canary.\"
}"Responsesの次ターンとSession Cache
previous_response_idに使います。Headerだけではhitを証明しないためusageを確認します。curl --request POST \
--url "${EVOLINK_BASE_URL}/responses" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--header "x-dashscope-session-cache: enable" \
--data "{
\"model\": \"${EVOLINK_QWEN_MODEL}\",
\"previous_response_id\": \"resp_FROM_FIRST_CALL\",
\"input\": \"Turn those checks into a five-step canary plan.\"
}"id を保存します。現行仕様の有効期間は7日ですが、永続Workflowでは再確認してください。Anthropic互換向けMessages API
messages の外へ置き、max_tokens を必須とします。curl --request POST \
--url "${EVOLINK_BASE_URL}/messages" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"model\": \"${EVOLINK_QWEN_MODEL}\",
\"max_tokens\": 1024,
\"system\": \"You are a concise software architecture assistant.\",
\"messages\": [
{
\"role\": \"user\",
\"content\": \"Return three checks for a safe API rollout.\"
}
]
}"Tool検証・限定Retry・Fallback
Tool引数は信頼できない入力です。副作用前に名前、Schema、権限、環境を検証します。
import { z } from "zod";
const createCanarySchema = z.object({
workload: z.string().min(1).max(80),
trafficPercent: z.number().min(0.1).max(10),
});
function validateToolCall(name: string, rawArguments: string) {
if (name !== "create_canary") {
throw new Error(`Blocked unknown tool: ${name}`);
}
return createCanarySchema.parse(JSON.parse(rawArguments));
}Timeout、接続、429、一時5xxのみ上限付きでRetryし、400/401/402は同じまま再送しません。
import os
import random
import time
from openai import APIConnectionError, APIStatusError, APITimeoutError, OpenAI
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url=os.getenv("EVOLINK_BASE_URL", "https://direct.evolink.ai/v1"),
)
def complete_with_fallback(messages):
models = [
os.environ["EVOLINK_QWEN_MODEL"],
os.environ["EVOLINK_FALLBACK_MODEL"],
]
for model in models:
for attempt in range(3):
try:
return client.chat.completions.create(
model=model,
messages=messages,
timeout=60,
)
except APIStatusError as error:
if error.status_code != 429 and error.status_code < 500:
raise
except (APIConnectionError, APITimeoutError):
pass
time.sleep((2 ** attempt) + random.random())
raise RuntimeError("Primary and fallback routes failed")Production Validation台帳
| 機能 | Route状況 | Accountで記録するEvidence |
|---|---|---|
| Chat / Responses / Messages | 利用可能、検証必要 | ID、model、HTTP、stop、usage |
| Streaming / Thinking | 利用可能、検証必要 | 初回event、最終event、reasoning、content |
| Tools / Cache / Multimodal | 対象Endpointで検証 | 引数、継続、cache usage、media形式 |
system、Content Block、Cache Field、Anthropic Streaming Eventを保ちます。
Thinking・Streaming・Tools・Cacheを段階的に有効化
| 機能 | Chat | Responses | Messages | 本番確認 |
|---|---|---|---|---|
| Thinking | enable_thinking、reasoning_content | reasoning.effort | thinking Block | 品質、遅延、Token |
| Streaming | stream: true、SSE | Responses Event | Anthropic Event | 切断、部分出力 |
| Tools | tools の関数 | 組み込み・Custom Tool | Tool Block | 副作用前に引数検証 |
| Cache | cache_control | Session Cache Header | cache_control Block | usageを確認 |
| Multimodal | https://api.evolink.ai/v1 | Multimodal URL | 対応Image Block | 形式とサイズを実経路でテスト |
QwenCloudの価格やCache割引をEvoLinkコストへコピーしないでください。EvoLink製品ページのLive価格を使います。
トラブルシューティング
| 症状 | 原因 | 対応 |
|---|---|---|
400 | 形式・必須Fieldの誤り | 最小例に戻す |
401 | Tokenが無効 | KeyとHeaderを確認 |
402 | Credit不足 | 残高を確認 |
404 | Route、ID、Endpoint | 正確なIDとPathを確認 |
429 | Rate Limit | Jitter付き指数Backoff、並列数削減 |
5xx | 一時障害 | 回数限定Retry後Fallback |
| Thinking時に空 | 読み取りField違い | Reasoningと最終出力を確認 |
400、401、402は原因を直さず再試行しません。429と一時的5xxのRetry回数を制限します。
本番Rolloutチェックリスト
- 正確なIDを
EVOLINK_QWEN_MODELに設定。 - 短い非Streamingコールでモデルとusageを保存。
- Streaming、Tools、Thinking、Cache、Multimodalを個別テスト。
- 代表的な20〜50タスクを現行Baselineと比較。
- 成功率、受入可能な遅延、Retry、Token、修正時間を計測。
- Shadow Trafficから小規模Canaryへ進む。
- 同じGatewayに検証済みFallbackを保持。
- エラー、遅延、コスト、品質がGuardrailを越えたらRollback。
最初の本番呼び出し前にルートを確認する
リリース情報だけで登録せず、まず5項目を確認してください。ワークロードに合う場合のみAPIキーを作成します。
- 01
リリース済み?
はい。Qwen3.8 Maxが正式モデルで、Previewは過去のチャネル情報です。
- 02
利用できる?
EvoLinkで利用できます。製品ページで稼働ルートとモデルIDを確認してください。
- 03
用途に合う?
長文脈推論、大規模リポジトリ、ツール中心のAgent向けです。軽い処理は小型ルートに残します。
- 04
料金は?
製品ページのリアルタイム料金を確認し、上流やPreviewプランの価格を流用しないでください。
- 05
呼び出し方は?
Chat Completions、Responses、Messagesから選び、導入ガイドとパラメータ仕様を確認します。
5項目を確認しましたか? APIキーを作成.
よくある質問
EvoLinkですでに呼び出せますか?
2026年8月3日時点では有効化中です。アカウント表示とスモークテスト成功後に本番へ進みます。
どのモデルIDを使いますか?
qwen3.8-max、現行EvoLink文書は qwen3.8-max-preview なので設定化します。どのBase URLですか?
https://direct.evolink.ai/v1、画像・音声・動画は https://api.evolink.ai/v1 です。ChatとResponsesのどちらですか?
既存OpenAIアプリはChat、連結ターン・組み込みTool・Responses EventはResponsesです。
Anthropic SDKは使えますか?
/v1/messages を使い、system、max_tokens、Block、Eventを保持します。価格は掲載していますか?
いいえ。価格はモデルページの担当で、古い重複情報とKeyword Cannibalizationを防ぎます。
Rate Limitへの対応は?
並列数を制限し、429にJitter付きBackoff、Retry上限、Fallbackを設定します。
本番前に何をテストしますか?
認証、モデル解決、Parsing、Streaming、Tools、Thinking、Cache、Multimodal、Timeout、Retry、課金、Fallback、Shadow、Canaryです。


