# Open WebUI-কে Tokens-এর সাথে যুক্ত করুন

> Open WebUI-তে Tokens-কে OpenAI connection হিসেবে যোগ করুন, model list সাজান, chat title-এর মতো background task সস্তা model-এ সরান, আর connection error ঠিক করুন।

Open WebUI একটা self-hosted chat interface। যেকোনো OpenAI-compatible server-এর সাথে এটা কথা বলে OpenAI connection দিয়ে, যা Chat Completions request পাঠায়। তাই Tokens-এও চলে: base URL হবে `https://tokens.bd/v1`, সাথে একটা Tokens key। Connection যোগ করা যায় admin settings থেকে, অথবা environment variable দিয়ে।

এই গাইড Open WebUI-র documentation দেখে লেখা, 11 অক্টোবর 2026-এ মিলিয়ে দেখা হয়েছে (তখন সবচেয়ে নতুন release ছিল v0.12.0)। মিলিয়ে দেখা হয়েছে documentation-এর সাথে, কোনো live Open WebUI install-এ শুরু থেকে শেষ পর্যন্ত চালিয়ে দেখা হয়নি।

## শুরুর আগে

- একটা Tokens key। Dashboard থেকে বানিয়ে নিন। spend cap আর allowed models-এর কথা আছে [API keys](/docs/api-keys) পেজে।
- আপনার Open WebUI instance-এ admin access।
- [model catalog](/models) থেকে অন্তত একটা model id। এই গাইডে `deepseek/deepseek-v4.1-flash` ব্যবহার করা হয়েছে। Id-র চেহারা `provider/model`।

## Tokens-কে connection হিসেবে যোগ করুন

1. Open WebUI-তে **Settings > Admin > Connections**-এ যান।
2. **Manage OpenAI API Connections** list-এর add বাটনে (**Add Connection**) ক্লিক করুন।
3. **Connection Type** যেমন আছে, **External**-ই রেখে দিন।
4. **URL**-এ দিন `https://tokens.bd/v1`।
5. **API Key**-তে আপনার Tokens key paste করুন।
6. **Save** করুন।

শুধু base URL দিন। Open WebUI-র documentation-এর সব উদাহরণ `/v1`-এ শেষ হয়, কোনোটাতেই `/chat/completions`-এর মতো path নেই। Tokens-এর নিজের base URL-ও `/v1`-এ শেষ।

Save করলেই connection test হয় না। Test করতে **Verify Connection** চাপুন, ওটা Bearer token দিয়ে `GET /models` call করে। Tokens এই call-এর উত্তরে আপনার key যে model-গুলো চালাতে পারে সেগুলো পাঠায়, তাই check পাস করা মানে key-ও ঠিক আছে। **Advanced**-এর নিচে **Provider** সেটিং **Default**-এ রাখুন, আর **Forward cookies** বন্ধ রাখুন। Open WebUI-র docs বলে, ওটা চালু করবেন শুধু এমন server-এর জন্য, যেটা আপনার নিজের আর cookie দিয়ে authenticate করে। তৃতীয় পক্ষের endpoint-এ কখনোই না।

### অথবা environment variable দিয়ে সেট করুন

Open WebUI environment variable থেকেও connection পড়ে। একটা connection-এর জন্য:

```bash title="Environment of the Open WebUI container"
OPENAI_API_BASE_URL=https://tokens.bd/v1
OPENAI_API_KEY=tok_live_your_key
```

`OPENAI_API_BASE_URLS` আর `OPENAI_API_KEYS`-এ একাধিক মান দেওয়া যায়, semicolon দিয়ে আলাদা করে। অন্য provider-এর পাশে Tokens যোগ করতে এগুলো ব্যবহার করলে দুটো list-এর ক্রম একই রাখুন। Docker Compose file-এ key সরাসরি না লিখে আপনার shell থেকে পাঠান, অথবা compose file-এর পাশের একটা `.env` file থেকে। নইলে key commit করা file-এ চলে যায়:

```yaml title="docker-compose.yml (excerpt)"
services:
  open-webui:
    environment:
      - OPENAI_API_BASE_URL=https://tokens.bd/v1
      - OPENAI_API_KEY=${TOKENS_API_KEY}
```

Open WebUI-র reference-এ এই variable-গুলোকে `ConfigVar` বলা হয়েছে। মানে, প্রথমবার চালু হওয়ার সময় মানটা store হয়ে যায়, তারপর Open WebUI environment-এর বদলে ওই store করা মানই ব্যবহার করে। পরে কিছু বদলাতে হলে **Settings > Admin > Connections**-এ গিয়ে বদলান। Environment variable-কে আবার আগে রাখার switch হলো `ENABLE_PERSISTENT_CONFIG=False`, তবে তখন UI থেকে করা পরিবর্তন restart-এর পর হারিয়ে যায়।

:::note[Docker আর host.docker.internal]
Docker host-এ চলা model server-এর জন্য Open WebUI-র documentation `host.docker.internal` ব্যবহার করে। Tokens একটা remote address, তাই URL থাকে `https://tokens.bd/v1`-ই।
:::

## কোন model দেখা যাবে তা ঠিক করুন

ডিফল্টভাবে Open WebUI সেই সব model দেখায় যেগুলো connection `GET /models` থেকে ফেরত দেয়। Tokens-এর ক্ষেত্রে সেটা আপনার key যে model-গুলো চালাতে পারে তার list। তাই key-তে allowed-models list থাকলে শুধু সেগুলোই দেখা যাবে।

**Advanced**-এর নিচের **Model IDs** field দিয়ে এটা বদলানো যায়:

- ফাঁকা (ডিফল্ট): provider-এর সব model detect হয়।
- ভরা: আপনি যে list দেন, সেটা fetch করা list-এর জায়গা নেয়। ওই connection-এর জন্য Open WebUI provider-এর `/models` call করা বন্ধ করে দেয়, আর শুধু আপনার দেওয়া id-গুলো দেখায়। আপনার user-দের কাছ থেকে কিছু model লুকাতে চাইলে এটা কাজে লাগে।

হুবহু Tokens id লিখুন, যেমন `deepseek/deepseek-v4.1-flash`, তারপর plus বাটনে ক্লিক করে যোগ করুন। একই id দুবার দিলে নেয় না, আর আগে-পরের ফাঁকা জায়গা মুছে যায়।

### Slash-ওয়ালা id

Tokens-এর id-তে সবসময় একটা slash থাকে। Open WebUI-র documentation-এ model id-র slash নিয়ে বিশেষ কিছু বলা নেই, তাই provider যেমন পাঠায় id তেমনই দেখায়। Connection-প্রতি আলাদা label চাইলে **Prefix ID** field আছে। ওটা আপনার prefix আর model id-কে একটা dot দিয়ে জোড়ে (prefix `tokens` দিলে হয় `tokens.provider/model`), আর upstream-এ request যাওয়ার আগে আবার সরিয়ে ফেলে। Prefix লিখবেন শেষে slash ছাড়া। docs দেখায় `groq/` দিলে `groq/.model` হয়ে যায়।

## ঠিকমতো চলছে কিনা যাচাই করুন

1. নতুন chat খুলুন, model selector থেকে একটা Tokens model বেছে নিন।
2. "Reply with OK" পাঠান।
3. Reply stream হয়ে আসবে, আর request-টা আপনার Tokens [usage](/dashboard/usage)-এ দেখা যাবে।

আগে Open WebUI-কে বাদ দিয়ে দেখতে চাইলে যেকোনো machine থেকে এটা চালান:

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

## Streaming আর tool calling

Open WebUI-র docs-এ একমাত্র আবশ্যক endpoint হিসেবে `POST /v1/chat/completions`-এর কথা আছে, সাথে streaming আর temperature, top_p, max_tokens-এর মতো সাধারণ parameter। Tokens এই endpoint-এ Server-Sent Events দিয়ে stream করে। বিস্তারিত [Streaming](/docs/streaming) পেজে।

Tool use-এর জন্য এমন model আর provider লাগে, যারা `tools` আর `tool_choice` নেয়। Open WebUI-র docs এটাকে শর্ত হিসেবেই বলেছে। Tokens এগুলো পাস করে দেয়, কিন্তু সব model এগুলো ভালোভাবে সামলাতে পারে না। আপনার user-দের জন্য tools চালু করার আগে [Choosing a model](/docs/choosing-a-model) আর [catalog](/models)-এ ওই model-এর পেজ দেখে নিন, আর request-এর format জানতে [Tool calling](/docs/tool-calling) পড়ুন।

## Background task-এ credit খরচ হয়: সস্তা একটা task model দিন

প্রতিটা conversation-এর পেছনে Open WebUI আরও কিছু request পাঠায়। তাদের task-models পেজে যেগুলোর কথা আছে: chat title, tag, follow-up suggestion, autocomplete, retrieval আর web search-এর query নতুন করে লেখা, image prompt, আর context compaction-এর summary। এগুলোর প্রতিটাই Tokens-এ billed request।

ডিফল্টে task model থাকে **Current Model**। মানে user যে model-এ chat করছে, এসব request-ও সেটাতেই যায়, দামি model হলেও। বদলাতে:

1. **Settings > Admin > Interface**-এ গিয়ে **Tasks** section খুঁজুন।
2. **External Task Model**-এ আপনার Tokens list থেকে একটা ছোট, দ্রুত, non-reasoning model বেছে নিন। Open WebUI-র docs ছোট non-reasoning model-ই recommend করে, কারণ সহজ output-এর জন্য reasoning model শুধু দেরি আর খরচ বাড়ায়। Tokens-এর জন্য এই picker-টাই খাটে, কারণ এটা Ollama-র মতো Local connection নয়। Environment variable-টা `TASK_MODEL_EXTERNAL`।
3. Background request-এ কড়া সীমা চাইলে **Task Model Parameters**-এর নিচে `max_tokens` সেট করুন। docs বলছে, যেকোনো একটা parameter সেট করলে title আর summary-র জন্য built-in 1000 token সীমা উঠে যায়, তাই `max_tokens` নিজেই দিয়ে দিন। Variable-টা `TASK_MODEL_PARAMS`, একটা JSON object।

নির্দিষ্ট করা task model পাওয়া না গেলে Open WebUI fail না করে chat-এর নিজের model-এ ফিরে যায়। তার মানে, আপনার key যে task model চালাতে পারে না, সেটা দিলে চুপচাপ আবার দামি model-এ খরচ হতে থাকবে। Task model-কে key-র allowed-models list-এর ভেতরে রাখুন।

Task একেবারে বন্ধ করতে একই admin পেজের **Generation**-এর নিচে তাদের toggle বন্ধ করুন: Title Generation (`ENABLE_TITLE_GENERATION`), Tags Generation (`ENABLE_TAGS_GENERATION`), Follow Up Generation (`ENABLE_FOLLOW_UP_GENERATION`) আর Autocomplete Generation (`ENABLE_AUTOCOMPLETE_GENERATION`)। Open WebUI-র reference অনুযায়ী autocomplete ডিফল্টে বন্ধ, বাকিগুলো চালু। Autocomplete চলে user টাইপ করার সময়েই, তাই metered key-তে ওটা বন্ধ রাখুন। Context compaction-এর নিজস্ব picker আছে, **Context Compaction Model**, **Chat**-এর নিচে।

## Shared server-এ চালানো

Instance-এর সবাই connection-এ বসানো একটাই key-র খরচ করে, আর সেই account-এর rate আর concurrency limit ভাগ করে নেয় ([Rate limits](/docs/rate-limits))। অন্য মানুষদের হাতে instance দেওয়ার আগে:

- শুধু এই instance-এর জন্য একটা key বানান, monthly spend cap আর allowed-models list সহ ([API keys](/docs/api-keys))।
- Task model-কে ওই list-এ রাখুন, ওপরে যেমন বলা হলো।
- Key এমন file-এ রাখবেন না যা commit হয়। Environment variable বা admin পেজ ব্যবহার করুন।
- Dashboard-এ usage দেখুন। Tokens account-এ আর কত বাকি, তা Open WebUI দেখায় না। `GET /v1/tokens/usage` দেখায় ([Models and usage](/docs/models-and-usage))।

## যা এই connection দিয়ে যায় না

- **Image, speech আর transcription।** Image generation, text-to-speech আর speech-to-text-এর জন্য Open WebUI-তে আলাদা settings আর variable আছে। Tokens ওই endpoint-গুলো serve করে না, তারা 404 `unsupported_endpoint` ফেরত দেয়। এই feature-গুলো অন্য provider-এ পাঠান।
- **RAG-এর embeddings।** Open WebUI-র docs `/v1/embeddings`-কে optional বলে, RAG-এর কাজে লাগে। Tokens embeddings serve করে শুধু সেইসব model-এর জন্য, যেগুলো embedding model ([Embeddings](/docs/embeddings))। ওগুলোর একটা বেছে না নিলে ডিফল্ট RAG embedding সেটআপই রেখে দিন।

## সমস্যা হলে

**Verify Connection fail করছে, বা model list ফাঁকা।** URL-টা `/v1`-এ শেষ হয়েছে কিনা আর পরে কোনো path নেই কিনা দেখুন। Tokens থেকে list ফাঁকা আসার সাধারণ কারণ, active plan নেই আর wallet-এ ব্যালান্সও নেই। দেখুন [Models and usage](/docs/models-and-usage)। Open WebUI-র docs এটাও বলে, check fail করা মানেই chat ভাঙা নয়: **Model IDs**-এ model id যোগ করে একটা chat চেষ্টা করুন।

**Settings পেজ আটকে যাচ্ছে বা list ধীরে আসছে।** Open WebUI ডিফল্টে model list fetch 10 সেকেন্ড পরে timeout করে দেয়। ধীর network-এ `AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST` বাড়ান। Save করা URL-এ পৌঁছানো না গেলে model list load হওয়ার সমস্যা নিয়ে Open WebUI-র connection-error গাইডে আলাদা একটা section আছে।

**401 `invalid_api_key` বা `missing_api_key`।** Key ভুল, rotate হয়ে গেছে বা ফাঁকা। Connection-এ নতুন একটা key paste করুন। Rotate করলে পুরনো secret সাথে সাথে বন্ধ হয়ে যায়।

**404 `model_not_found`।** Model id পুরো Tokens id নয়। Model list থেকে copy করুন, `provider/model` সহ।

**403 `model_not_allowed_on_key`।** Key-র allowed-models list-এ ওই model নেই। Task model list-এর বাইরে থাকলেও এটা হয়: তখন সাধারণ chat চলে, কিন্তু chat title fail করে।

**402 `insufficient_credits`, 403 `monthly_spend_cap_exceeded`।** Credit শেষ, অথবা key তার cap ছুঁয়ে ফেলেছে। [billing](/dashboard/billing)-এ টাকা যোগ করুন, অথবা বেশি cap-ওয়ালা key নিন।

**429 `rate_limited` বা `concurrency_limit`।** একটা key-তে অনেক user, বা অনেক background task। `Retry-After` পর্যন্ত অপেক্ষা করুন, যে task toggle লাগে না সেগুলো বন্ধ করুন, অথবা দ্বিতীয় instance-এর জন্য দ্বিতীয় একটা key নিন।

সব code-এর তালিকা আছে [Errors](/docs/errors)-এ, আর আরও সমাধান [Troubleshooting](/docs/troubleshooting)-এ। [support](/docs/support)-এর কাছে সাহায্য চাইলে `-i` দিয়ে curl চালিয়ে পাওয়া `x-tokens-request-id` header-টা সাথে দিন।

সূত্র: Open WebUI documentation, [OpenAI-compatible providers](https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible/), [Starting with OpenAI](https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-openai), [task models](https://docs.openwebui.com/features/administration/task-models/) আর [environment variable reference](https://docs.openwebui.com/reference/env-configuration), 11 অক্টোবর 2026-এ দেখা।

---
Page: https://tokens.bd/bn/docs/open-webui
