Qwen Model Selector (Advisor)
Detecting Key Type
Run this command to detect the API key type (outputs token-plan, payg, or not-set):
python3 -c "
import os
from pathlib import Path
env_file = Path('.env')
if not env_file.exists():
for parent in [Path.cwd()] + list(Path.cwd().parents):
if (parent / '.git').exists() or (parent / 'skills').is_dir():
env_file = parent / '.env'
break
if env_file.exists():
for line in env_file.read_text().splitlines():
line = line.strip()
if not line or line.startswith('#') or '=' not in line:
continue
k, v = line.split('=', 1)
k, v = k.strip(), v.strip().strip('\"').strip(\"'\")
if k in ('QIANWEN_API_KEY', 'DASHSCOPE_API_KEY') and k not in os.environ:
os.environ[k] = v
key = os.environ.get('QIANWEN_API_KEY') or os.environ.get('DASHSCOPE_API_KEY') or ''
print('token-plan' if key.startswith('sk-sp-') else 'payg' if key else 'not-set')
"
| Output | Billing mode | Action |
|---|---|---|
token-plan |
Token Plan (Credits) | Select only from Token Plan list. Default to Team superset when edition unknown. |
payg |
Pay-as-you-go | Full model catalog available; continue below. |
not-set |
No key configured | Do not block. Ask the user: "Which approach do you plan to use? (1) Standard PAYG key (2) Token Plan key (3) Skip for now — just browse recommendations." Proceed based on their choice. |
Windows: If
python3is not available, usepython. The multi-line-cstring works in both PowerShell and CMD. Alternatively, save the snippet to a temporary.pyfile and run it.
This skill operates in two modes:
- Interactive advisory — asks diagnostic questions to recommend the right model (see Diagnostic Flow).
- Cross-skill resolution — provides a fast-path model lookup for execution skills that need a model decision without user interaction (see recommendation-matrix.md).
Do not fabricate model names — only recommend models listed in this skill or returned by CLI. This skill is part of QianWen-AI/qianwen-ai.
Skill directory
Load on demand. Do not fetch external URLs unless the user explicitly asks for the latest data.
| Location | Purpose |
|---|---|
references/cli-usage.md |
CLI-first data strategy: when to use CLI, 3-step login flow, display rules |
references/error-handling.md |
CLI error classification & recovery actions (auth, not-found, network, ...) |
references/recommendation-matrix.md |
Full model recommendation tables, Cross-Skill Resolution, Token Plan, Thinking |
references/pricing-disclaimer.md |
PAYG only: pricing disclaimer (CN/EN) + console links |
references/pricing.md |
PAYG only: pricing structural overview (offline snapshot) |
references/model-list.md |
PAYG only: model catalog (offline snapshot) |
references/sources.md |
Official documentation URLs (manual lookup only) |
Prerequisites
QianWen CLI is strongly recommended — it is the authoritative real-time data source for model availability, pricing, and quotas. Verify with:
qianwen version
If not installed:
npm install -g @qianwenai/qianwen-cli
Node.js >= 18 required. Without CLI you can still answer general navigation questions from offline snapshots, but you cannot answer "latest", "exact price", or "specific model details" questions.
Security & Credential Model
QianWen has two independent credential systems — never confuse them:
| Credential | Purpose | How to provide |
|---|---|---|
API Key (sk-... / sk-sp-...) |
Call model APIs in your code | $DASHSCOPE_API_KEY / $QIANWEN_API_KEY env var |
| CLI session | Authorize qianwen CLI subcommands |
qianwen auth login (browser device flow) |
Red lines (apply to both):
- NEVER output any credential value in plaintext. Use variable references; report only status
("set" / "not set", "valid" / "invalid"). Never display
.envor config file contents. - NEVER conflate the two systems. When CLI returns
Not authenticated/AUTH_REQUIRED, run the 3-step device-flow login (see cli-usage.md). DO NOT ask the user for an API key, and DO NOT try to set$DASHSCOPE_API_KEYto fix CLI auth.
Data Resolution Order
Match the user's question to the right data source. Do not fall back to a lower tier without trying the recovery actions in the higher tier first.
| Question type | Primary source | Notes |
|---|---|---|
| General navigation ("which family for text chat?") | SKILL.md Default table + recommendation-matrix.md |
Offline-answerable |
| Latest / exact / specific (price, model details, quota) | CLI MUST be used — see cli-usage.md |
Snapshots are stale; never invent numbers |
| Search by capability ("model that does X") | qianwen models search "<X>" --format json |
Snapshot keyword coverage is incomplete |
| CLI returned an error | error-handling.md recovery actions, then retry |
Auth failure → run 3-step login, do not skip to snapshot |
| CLI completely unavailable AND user declines install/login | model-list.md, pricing.md (with stale-data caveat) |
Only after CLI recovery genuinely failed |
| All of the above cannot answer AND user confirms online lookup | URLs in sources.md |
Never proactively fetch |
Diagnostic Flow (Interactive Advisory)
Prerequisite: Complete Detecting Key Type above and narrow the candidate set before proceeding. All recommendations below must stay within the user's billing scope.
Ask the user (in order):
- Content type? — text / image / video / audio / vision
- Primary task? — generation / understanding / coding / reasoning / translation
- Priority? — quality vs speed vs cost
- Input size? — short / medium / long context
- Structured output? — JSON / function calling needed?
Default Recommendations
No clear signals → use the canonical default for the domain. For specialized cases (reasoning, coding, OCR, role-play, image editing, etc.) and per-domain comparison, see recommendation-matrix.md.
| Domain | Default | Quality | Speed | Cost |
|---|---|---|---|---|
| text.chat | qwen3.7-plus | qwen3.8-max | qwen3.7-flash | qwen-turbo |
| text.chat (balanced) | qwen3.7-plus | qwen3.7-max | qwen3.7-flash | qwen3.7-flash |
| vision.analyze | qwen3.7-plus | qwen3.8-max | qwen3.8-flash | qwen3.8-flash |
| omni (voice+vision) | qwen3.5-omni-plus | qwen3.5-omni-plus | qwen3.5-omni-flash | — |
| image.generate | wan2.7-image | qwen-image-3.0-pro | wan2.2-t2i-flash | wan2.2-t2i-flash · z-image-turbo (open-source) |
| image.edit | wan2.7-image | qwen-image-3.0-pro | wan2.5-i2i-preview | wan2.5-i2i-preview |
| video.t2v | happyhorse-1.1-t2v | wan2.7-t2v | happyhorse-1.1-t2v | — |
| video.i2v | happyhorse-1.1-i2v | wan2.7-i2v | happyhorse-1.1-i2v | — |
| video.edit | wan2.7-videoedit | wan2.7-videoedit | happyhorse-1.0-video-edit | — |
| audio.tts | qwen-audio-3.0-tts-plus | qwen-audio-3.0-tts-plus | cosyvoice-v3.5-flash | qwen3-tts-flash |
Degradation: If this skill is not loaded, each execution skill falls back to its own built-in default. This protocol is purely additive — it enhances model selection but never blocks execution.
CLI Quick Reference
Auth required. All
modelsandusagecommands need an active CLI session (browser device-flow login — NOT the API key). If the command returnsNot authenticated/AUTH_REQUIRED:
- Run the 3-step device-flow login in cli-usage.md (proactively open the verification URL using the OS-appropriate command, then poll immediately).
- Retry the original command after
success.- DO NOT ask the user for
$DASHSCOPE_API_KEY/$QIANWEN_API_KEY— those are for model API calls, not CLI session. See Security & Credential Model above.- DO NOT silently fall back to snapshots.
Token Plan (
sk-sp-keys): Once an active CLI session is established (device-flow login),qianwen usagecommands report both pay-as-you-go usage and Token Plan seat allowance / shared-package Credits for the logged-in account. For purchasing shared packages, adjusting seats, or full billing history, direct the user to the Token Plan Subscription console. Token Plan model availability (text + image + video + TTS) is documented in recommendation-matrix.md.
| Need | Command |
|---|---|
| Full model catalog | qianwen models list --all --format json |
| Filter by modality | qianwen models list --input image --output text --format json |
| Single model details | qianwen models info <model-id> --format json |
| Keyword search | qianwen models search "<query>" --format json |
| Free tier remaining | qianwen usage free-tier --format json |
| Auth status | qianwen auth status --format json |
Display rules: Parse --format json output and present a human-readable summary; never dump raw
JSON. Display --format text output as-is, then add analysis after ---. See
cli-usage.md for details.
CLI Error Handling — Quick Guide
When CLI fails, classify first, recover, then retry. Never silently fall back to snapshots.
| Category | Recovery (summary) |
|---|---|
auth-failure |
Run 3-step login → retry the original command. Fall back only if user declines. |
not-installed |
Show install command → ask user to install → retry. Do NOT silently use snapshot. |
model-not-found |
Run qianwen models search "<keyword>" → propose top 3 → retry with correct ID. |
network-timeout |
Retry once after 2s; only after second failure ask whether to fall back. |
quota-exhausted |
Show Billing Console; do NOT use snapshot. |
version-mismatch |
Suggest qianwen version --check or update-check skill → upgrade → retry. |
other |
Show raw stderr; link to docs; only after user opt-out, fall back. |
Full classification, signals, and example flows: error-handling.md.
Pricing & Cost Estimation (PAYG only)
Skip this section for Token Plan.
- Latest pricing: Run
qianwen models info <model> --format jsonfirst; usepricing.mdonly as offline fallback. Never invent a price. - Mandatory disclaimer: Every cost-related answer must end with the disclaimer in pricing-disclaimer.md (Chinese or English version, matching the user's response language). Omitting the disclaimer is a critical failure.
- Free quota: Never assume free quota is available — use
qianwen usage free-tierto verify or direct the user to the console. - Usage / billing queries: Direct the user to the appropriate console page — see the table in pricing-disclaimer.md.
Update Check
When the user asks to check for updates ("check for updates", "check version", "is there a new version", "update skills"):
- Find qianwen-update-check: Look for
qianwen-update-check/SKILL.mdin sibling skill directories. - If found — run:
python3 <qianwen-update-check-dir>/scripts/check_update.py --print-responseand report the result. Use--forceif the user asks to force-check. - If not found — run
qianwen version --checkand report the result.
Anti-Patterns
- Never fabricate model names — only recommend models listed in this skill or returned by CLI.
- Never infer the API key type from the request wording — use the configured Key or calling context.
- Never recommend a model outside the user's billing scope — Token Plan keys must only receive models from the Token Plan list; PAYG keys may use the full catalog. Violating this causes hard failures for the user.
- Never invent or guess any price figure — use CLI /
pricing.md/ official pricing page only. Fabricating a price is a critical failure. - Never silently fall back to snapshots when CLI errors out — apply error-handling.md recovery actions first.
- Never assume free quota is available — quotas may have been consumed, expired, or removed. Always present the paid unit price first.
- Never output API keys in plaintext — see Security section.
- Never confuse CLI session with API key — CLI auth uses browser device-flow login; never offer
$DASHSCOPE_API_KEYor$QIANWEN_API_KEYas a fix for CLINot authenticated/AUTH_REQUIREDerrors. - Never proactively fetch URLs or trigger web searches — only access online sources when CLI + snapshots cannot answer AND the user confirms.
- Never construct usage/billing/console URLs — only use the exact links listed in this skill or its references. If a URL is not listed, do not invent one.
- Always include the cost disclaimer for any cost-related answer (see pricing-disclaimer.md).
References
| Source | Purpose |
|---|---|
| cli-usage.md | CLI-first strategy, 3-step login, display rules, model detail URL |
| error-handling.md | CLI error classification & recovery |
| recommendation-matrix.md | Full recommendation tables, Cross-Skill Resolution, Token Plan, Thinking Mode |
| pricing-disclaimer.md | Pricing guidance + mandatory disclaimer + billing console links |
| pricing.md | Pricing structural overview (offline snapshot) |
| model-list.md | Model catalog (offline snapshot) |
| sources.md | Official documentation URLs |
qianwen models list --format json |
Dynamic: full model catalog with pricing, features, quotas |
qianwen models info <id> --format json |
Dynamic: single model details (pricing tiers, context, rate limits) |
qianwen models search "<q>" --format json |
Dynamic: keyword-based model discovery |
qianwen usage free-tier --format json |
Dynamic: remaining free tier quota per model |