# Qwen Code

> ~/.qwen/settings.json-এ অথবা তিনটা environment variable দিয়ে Qwen Code-কে তার OpenAI protocol-এর মাধ্যমে Tokens-এর সাথে যুক্ত করুন, তারপর /model দিয়ে model বদলান।

Qwen Code হলো Alibaba-র terminal coding agent, যেটা মূলত Gemini CLI থেকে fork করা। এটা কয়েকটা protocol বোঝে। Tokens-এর জন্য আপনি ব্যবহার করবেন এর OpenAI protocol, যেটা chat completions পাঠায় `https://tokens.bd/v1`-এ।

:::note[Gemini CLI থেকে আসছেন?]
Gemini CLI শুধু Gemini-format API-র সাথে কথা বলতে পারে, তাই Tokens-এর সাথে চলে না। Qwen Code-এর workflow প্রায় একই রকম, আর এটা যেকোনো OpenAI-compatible endpoint-এর সাথে চলে। তাই বাস্তবে এটাই সবচেয়ে ভালো বিকল্প।
:::

[Tokens CLI](/docs/tokens-cli) Qwen Code-কে configure করে না, তাই নিজে হাতে সেট করে নিতে হবে। একটা file অথবা তিনটা variable হলেই হয়।

## Qwen Code install করুন

```bash
npm install -g @qwen-code/qwen-code@latest
# or
brew install qwen-code
```

[/dashboard/keys](/dashboard/keys)-এ গিয়ে একটা key তৈরি করুন। spend cap আর model allow-list-এর কথা আছে [API keys](/docs/api-keys) পাতায়।

## TOKENS_API_KEY export করুন

:::code-tabs

```bash title="macOS / Linux"
export TOKENS_API_KEY="tok_live_your_key"
```

```powershell title="Windows PowerShell"
$env:TOKENS_API_KEY = "tok_live_your_key"   # this window
setx TOKENS_API_KEY "tok_live_your_key"     # new windows
```

:::

## Option A: ~/.qwen/settings.json

`modelProviders.openai`-এর নিচে Tokens-এর model যোগ করুন, আর Qwen Code-কে বলে দিন OpenAI protocol ব্যবহার করতে:

```json title="~/.qwen/settings.json"
{
  "modelProviders": {
    "openai": [
      {
        "id": "deepseek/deepseek-v4.1-flash",
        "name": "DeepSeek V4.1 Flash (Tokens)",
        "baseUrl": "https://tokens.bd/v1",
        "description": "via Tokens",
        "envKey": "TOKENS_API_KEY"
      }
    ]
  },
  "security": { "auth": { "selectedType": "openai" } },
  "model": { "name": "deepseek/deepseek-v4.1-flash" }
}
```

`envKey` বলে দেয় কোন environment variable-এ key আছে, তাই file-এর ভেতরে কোনো secret থাকে না। একই file-এ `env` block-ও চলে (`"env": { "TOKENS_API_KEY": "tok_live_your_key" }`), কিন্তু তাতে key সরাসরি plain text-এ থেকে যায়। এটা ব্যবহার করলে file-টা কোনো repository-তে রাখবেন না।

একই variable একাধিক জায়গায় সেট থাকলে Qwen Code আগে নেয় shell-এর export, তারপর `.env` file, তারপর settings-এর `env` block।

context window, custom header আর request-এ বাড়তি field দিতে চাইলে Qwen Code-এর Model Providers reference-এ `generationConfig`, `customHeaders` আর `extra_body` নিয়ে লেখা আছে। context window-এ বসান [/models](/models)-এ model-এর পাতা থেকে নেওয়া আসল মান।

## Option B: শুধু environment variable

settings file না চাইলে এই তিনটা variable-ই যথেষ্ট:

:::code-tabs

```bash title="macOS / Linux"
export OPENAI_API_KEY="$TOKENS_API_KEY"
export OPENAI_BASE_URL="https://tokens.bd/v1"
export OPENAI_MODEL="deepseek/deepseek-v4.1-flash"
```

```powershell title="Windows PowerShell"
$env:OPENAI_API_KEY = $env:TOKENS_API_KEY
$env:OPENAI_BASE_URL = "https://tokens.bd/v1"
$env:OPENAI_MODEL = "deepseek/deepseek-v4.1-flash"
```

:::

`OPENAI_MODEL`-এর বদলে `QWEN_MODEL`-ও চলে। একটা কথা মনে রাখবেন: অন্য tool-ও `OPENAI_API_KEY` আর `OPENAI_BASE_URL` পড়ে। তাই shell profile-এ এগুলো সেট করলে ওই tool-গুলোও Tokens-এ চলে যাবে। Option A-তে এই ঝামেলা নেই।

চাইলে `qwen`-এর ভেতরে `/auth` চালিয়ে একই মানগুলো interactive-ভাবেও দিতে পারেন।

### Anthropic protocol

Qwen Code-এর একটা `anthropic` protocol-ও আছে, যেটা পড়ে `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL` আর `ANTHROPIC_MODEL`। Tokens-এর ক্ষেত্রে সেটা হবে `ANTHROPIC_BASE_URL=https://tokens.bd` (`/v1` ছাড়া)। তবে OpenAI protocol-ই সহজ, আর উপরে সেটাই দেখানো হয়েছে।

## model বদলান

`modelProviders.openai` array-তে প্রতিটা model-এর জন্য একটা করে object যোগ করুন। id দিন [/models](/models) বা `GET /v1/models` থেকে নেওয়া Tokens-এর হুবহু id, আর `baseUrl` ও `envKey` আগের মতোই:

```json
{
  "id": "moonshotai/kimi-k3",
  "name": "Kimi K3 (Tokens)",
  "baseUrl": "https://tokens.bd/v1",
  "envKey": "TOKENS_API_KEY"
}
```

ওপরের id-টা শুধু উদাহরণ, সঠিকটা [/models](/models)-এ দেখে নিন। তারপর `qwen`-এর ভেতরে `/model` চালিয়ে model বদলান, অথবা settings file-এ `model.name` পাল্টে দিন। environment variable ব্যবহার করলে পাল্টাতে হবে `OPENAI_MODEL`। agent-এর কাজে কোন model ভালো, সে বিষয়ে [Choosing a model](/docs/choosing-a-model) পাতায় পরামর্শ আছে।

## ঠিকমতো চলছে কিনা দেখুন

project folder-এ `qwen` চালু করুন, `/model` চালিয়ে দেখুন Tokens-এর model-টা বাছা আছে কিনা, তারপর ছোট একটা prompt পাঠান। request-টা Dashboard-এর Usage analytics-এ দেখা যাওয়া উচিত।

Qwen Code-কে বাদ দিয়ে দেখতে চাইলে endpoint-টা সরাসরি call করুন:

```bash
curl https://tokens.bd/v1/chat/completions \
  -H "Authorization: Bearer $TOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "deepseek/deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Reply with OK"}], "max_tokens": 10}'
```

## সমস্যা হলে

**key এইমাত্র বদলালেন, তবু 401 `invalid_api_key`।** কোথাও একটা পুরোনো মান জিতে যাচ্ছে: shell export জেতে `.env`-এর ওপর, আর `.env` জেতে settings-এর `env` block-এর ওপর। `echo $TOKENS_API_KEY` চালিয়ে দেখুন (PowerShell-এ `$env:TOKENS_API_KEY`)।

**401 `missing_api_key`।** `envKey`-তে যে variable-এর নাম দিয়েছেন, `qwen` যে shell থেকে চালু করেছেন সেখানে সেটা সেট নেই। Windows-এ `setx` চালানোর পর নতুন terminal খুলুন।

**request Tokens-এ পৌঁছাচ্ছে না।** `security.auth.selectedType` অবশ্যই `openai` হতে হবে, নইলে Qwen Code আগে যে auth method বাছা ছিল সেটাই ব্যবহার করবে। file-এ এটা সেট করুন, অথবা `/auth`-এ OpenAI option বেছে নিন।

**প্রতিটা request-এ 404।** `baseUrl` (বা `OPENAI_BASE_URL`) শেষ হতে হবে `/v1` দিয়ে।

**404 `model_not_found` বা 403 `model_not_allowed_on_key`।** id-তে বানান ভুল আছে, নয়তো key-র allow-list-এ ওই model নেই। তৈরির পর allow-list এডিট করা যায় না, তাই দরকার হলে নতুন key বানান।

402, 429 আর 5xx error-এর জন্য [Troubleshooting](/docs/troubleshooting) দেখুন।

---
Page: https://tokens.bd/bn/docs/qwen-code
