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

> OpenAI-API-compatible provider plugin দিয়ে Dify-তে Tokens-এর model যোগ করুন: form-এর field, slash-ওয়ালা model ID, agent-এর জন্য Function Call Type, আর Dify Cloud বনাম self-hosted।

Dify একটা open-source platform, যেটা দিয়ে LLM app, chatbot, agent আর workflow বানানো যায়। Dify-তে model provider মানে একেকটা plugin। এর OpenAI-API-compatible provider যেকোনো base URL-এ OpenAI Chat Completions request পাঠাতে পারে, আর Tokens-এর জন্য সেই URL হলো `https://tokens.bd/v1`। Tokens-এর প্রতিটা model আপনাকে Dify-তে নিজে হাতে, custom model হিসেবে যোগ করতে হবে।

এই গাইড মিলিয়ে দেখা হয়েছে Dify 1.17.1 (প্রকাশ 10 সেপ্টেম্বর 2026) আর OpenAI-API-compatible plugin-এর 0.0.68 version দিয়ে, অক্টোবর 2026-এ। দেখার উৎস ছিল Dify-র documentation আর langgenius/dify-official-plugins repository-তে plugin-এর source। মানে documentation আর source দেখে যাচাই করা হয়েছে, আসল Tokens key দিয়ে শুরু থেকে শেষ পর্যন্ত চালিয়ে দেখা হয়নি।

## শুরুর আগে

- একটা Tokens key। spend cap দিয়ে key বানানোর কথা আছে [API keys](/docs/api-keys) পেজে।
- [model catalog](/models) থেকে একটা model ID। এই গাইডে `deepseek/deepseek-v4.1-flash` ব্যবহার করা হয়েছে।
- model-এর catalog পেজ থেকে context window আর সর্বোচ্চ output-এর মান। `GET /v1/models` এই দুটো দেয় না ([Models and usage](/docs/models-and-usage)), অথচ Dify দুটোই চায়।
- একটা Dify workspace, যেখানে আপনি owner বা admin। Dify শুধু এই দুই role-কে model provider ম্যানেজ করতে দেয়।

## Provider plugin install করুন

Dify-তে **Integrations** খুলে **Model Provider**-এ যান, তারপর Marketplace থেকে **OpenAI-API-compatible** install করুন। Dify-র documentation অনুযায়ী plugin তিন জায়গা থেকে আনা যায়: Marketplace, public GitHub repository, আর local `.zip` file upload।

## Tokens-এর model যোগ করুন

OpenAI-API-compatible provider-এর card খুলে **Add Model**-এ ক্লিক করুন। Dify-র documentation বলছে, কোনো provider-এর তালিকায় নেই এমন model যোগ করার উপায় হলো Add Model। একই নাম আর type-এর model আগে থেকে থাকলে Dify নতুন একটা duplicate বানায় না, বরং নতুন key-টা সেই model-এই জুড়ে দেয়।

এবার form পূরণ করুন। নিচের label-গুলো plugin-এর 0.0.68 source থেকে নেওয়া, আপনার Dify version-এ শব্দ একটু অন্যরকম হতে পারে।

| Field                                  | যা বসাবেন                                                              |
| -------------------------------------- | ---------------------------------------------------------------------- |
| Model Type                             | `LLM`                                                                  |
| Model Name                             | `deepseek/deepseek-v4.1-flash`                                                    |
| Model display name (optional)          | Dify-তে যে নামে দেখতে চান, যেমন `DeepSeek V4.1 Flash`                  |
| API Key                                | আপনার Tokens key                                                       |
| API Base URL                           | `https://tokens.bd/v1`                                                  |
| model name for API endpoint (optional) | ফাঁকা রাখুন (নিচে দেখুন)                                               |
| Completion mode                        | `Chat`                                                                 |
| Model context size                     | model-এর catalog পেজে দেওয়া context window                            |
| Upper bound for max tokens             | model-এর catalog পেজে দেওয়া সর্বোচ্চ output                           |
| Function Call Type                     | tool support করে এমন model-এ `Tool Call` (নিচে Tool calling দেখুন)     |
| Stream function calling                | stream করা tool call চাইলে এবং model support করলে `Support`            |
| Vision Support                         | শুধু যে model image নেয় তার জন্য `Support`                             |

form save করুন। save করার সময় Dify credentials যাচাই করে, আর plugin সেটা করে endpoint-এ ছোট একটা chat request পাঠিয়ে। form save হয়ে গেলে বুঝবেন key, address আর model name ঠিক আছে।

form নিয়ে কয়েকটা কথা:

- **API Base URL।** plugin-এর placeholder হলো `https://api.openai.com/v1`, মানে address শেষ হয় `/v1` দিয়ে। `chat/completions` plugin নিজেই জুড়ে নেয়, আপনি জুড়বেন না। কোনো কোনো third-party গাইডে এই field-কে "API endpoint URL" বলা হয়।
- **form-এ key দেওয়া optional, কিন্তু Tokens-এ key সবসময় লাগে।** না দিলে 401 `missing_api_key` পাবেন।
- **Model context size আর Upper bound for max tokens, দুটোরই default 4096।** default রেখে দিলে model যা-ই পারুক, Dify নিজের দিক থেকে লম্বা prompt আর output আটকে দেবে। দুটোই catalog পেজ দেখে বসান।
- **Include Usage in Stream** plugin-এ default-এ চালু থাকে। চালু রাখুন: এতে Dify stream-এর মধ্যেই token count চায়। Tokens এটা support করে ([Streaming](/docs/streaming))।
- **প্রতিটা model আলাদা করে যোগ করুন।** plugin endpoint থেকে model-এর তালিকা আনে না। Dify-তে যে যে Tokens model বাছতে চান, প্রত্যেকটার জন্য Add Model আবার করুন।

### Slash-ওয়ালা model ID

Tokens-এর ID দেখতে `provider/model`-এর মতো। model name-এ slash চলে কিনা, সেটা Dify-র documentation বলে না, আর plugin-এর Model Name placeholder-এ লেখা আছে "Enter full model name"। plugin model name-টা endpoint-এ হুবহু পাঠায়। তবে **model name for API endpoint** ভরা থাকলে সে তার বদলে ওই মান পাঠায়।

1. আগে **Model Name**-এ পুরো ID দিয়ে চেষ্টা করুন।
2. Dify নামটা না নিলে Model Name-এ একটা ছোট নাম দিন, যেমন `tokens-flash`, আর **model name for API endpoint**-এ পুরো Tokens ID বসান। এই দ্বিতীয় field ঠিক এই কাজের জন্যই আছে: Dify যে নাম দেখায় আর endpoint যে নাম চায়, দুটো আলাদা হতে পারে।

যেভাবেই করুন, Tokens-এ যে মান পৌঁছায় সেটা অবশ্যই পুরো ID হতে হবে, নইলে 404 `model_not_found` আসবে।

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

আগে curl দিয়ে key আর model পরীক্ষা করে নিন।

```bash
export TOKENS_API_KEY=tok_live_your_key
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"}]}'
```

তারপর Dify-তে একটা app বানান, যে model যোগ করেছেন সেটা বেছে নিন, আর preview-তে একটা message পাঠান। Request-টা আপনার Tokens Dashboard-এর usage analytics-এ দেখা যাবে।

## Tool calling

Dify-র Agent node আর agent app tool নিয়ে কাজ করে। Dify দুই ধরনের agent strategy দেয়:

- **Function Calling** model-এর নিজস্ব tool calling ব্যবহার করে, আর tool-এর বিবরণ পাঠায় `tools` parameter-এ। Dify বলছে, এটা ব্যবহার করলে model যে function calling support করে তা নিশ্চিত করে নিন।
- **ReAct** এর বদলে structured prompt দিয়ে model-কে পথ দেখায়। যে model-এ native tool calling নেই, তার জন্য Dify এটা সুপারিশ করে।

custom model-এর ক্ষেত্রে Dify-কে জানানোর জায়গা হলো Add Model form-এর **Function Call Type**। এর default `Not Support`। কোন option কী করে, তা plugin-এর source থেকে জানা যায়।

- **Tool Call** OpenAI-র `tools` format-এ পাঠায়। Tokens-এর [Tool calling](/docs/tool-calling) পেজের সাথে এটাই মেলে।
- **Function Call** পাঠায় পুরনো `functions` format-এ। Tokens-এর documentation-এ এটা নেই, তাই ব্যবহার করবেন না।
- **Not Support** কোনো tool-এর বিবরণই পাঠায় না, তাই ওই model-এ Function Calling strategy চলতেই পারে না।

কোনো model Not Support-এ রেখে Function Calling strategy বাছলে কী হয়, তা Dify-র documentation-এ নেই। তাই পরীক্ষা করে দেখার চেয়ে আগেই ঠিকমতো set করে দিন।

তবু tool calling-এর জন্য model-কেও তা support করতে হবে। [model catalog](/models)-এ model-এর পেজ দেখুন, আর সাহায্য পাবেন [Choosing a model](/docs/choosing-a-model) পেজে।

## Dify Cloud আর self-hosted

দুই ক্ষেত্রেই সেটআপ একই। তফাত শুধু এটুকু যে Tokens-এ request কোথা থেকে যায়: Dify Cloud-এ যায় Dify-র server থেকে, self-hosted হলে আপনার নিজের deployment থেকে। Tokens একটা public HTTPS address, তাই self-hosted Dify থেকে সেখানে বাইরে যাওয়ার (outbound) অনুমতি থাকতে হবে। আপনি কোনটা ব্যবহার করছেন, তা Tokens-এর দিকে জানানোর কিছু নেই।

- **Dify-র AI credits** Dify-র নিজের billing। এটা দিয়ে Tokens-এর model-এর খরচ মেটে না। Tokens-এর usage-এর বিল যায় আপনার Tokens অ্যাকাউন্টে।
- self-hosted Dify-তে Dify-র বাইরে Marketplace খুলে plugin install করলে আগে **Install Preference**-এর নিচে আপনার deployment-এর URL set করে নিন।

Dify-র documentation থেকে যা নিশ্চিত হওয়া যায়নি: self-hosted plugin daemon-এর network-সংক্রান্ত শর্ত, আর Dify Cloud-এর কোনো plan custom model provider সীমিত করে কিনা। Dify-র self-hosting documentation আর নিজের plan দেখে নিন।

## পেছনে কীসে credit খরচ হয়

Dify যত request কোনো Tokens model-এ পাঠায়, সবকটার খরচ ওই key-তে ধরা হয়।

- workflow-র প্রতিটা LLM node প্রতি run-এ একটা request। কয়েকটা LLM node থাকলে, কিংবা কোনোটা iteration বা loop-এর ভেতরে থাকলে, প্রতি পাকে একটা করে request হয়।
- agent প্রতিটা tool-এর ফল পাওয়ার পর model-কে আবার call করে। Dify-র documentation **Max Iterations**-কে বর্ণনা করেছে অসীম loop ঠেকানোর একটা নিরাপত্তা-সীমা হিসেবে, আর সহজ কাজে 3 থেকে 5, জটিল research-এ 10 থেকে 15 রাখতে বলেছে। কাজ চলে যায় এমন সবচেয়ে কম মান রাখুন।
- প্রতি রাউন্ডে পুরো কথোপকথন আবার পাঠানো হয়, তাই প্রতি রাউন্ডে input token বাড়তে থাকে।
- আর কোন feature নিজে থেকে model call করে, তা Dify-র documentation-এ তালিকা করা নেই। আপনার app-এর কোন feature model ব্যবহার করে, আর কোন model, তা app আর workspace-এর সেটিংসে দেখে নিন।

Dify-র জন্য আলাদা একটা key নিন, তাতে মাসিক spend cap আর allowed models-এর তালিকা দিন ([API keys](/docs/api-keys))। cap-এ পৌঁছে গেলে বিল বাড়তে থাকার বদলে request 403 `monthly_spend_cap_exceeded` দিয়ে fail করবে।

## সীমা আর যা এখানে নেই

- এই পেজ শুধু LLM model নিয়ে। plugin-এ text embedding, rerank, speech আর text-to-speech type-ও আছে। কিন্তু Tokens-এর embeddings endpoint শুধু embedding model-এর জন্য কাজ করে, আর Tokens-এ কোনো audio endpoint নেই ([Models and usage](/docs/models-and-usage)), তাই বাকিগুলো এখানে আলোচনার বাইরে।
- plugin-এ **API Type** নামে একটা setting আছে, যাতে Responses API-র option আছে। এটা Chat Completions-এই রাখুন। Tokens-এ Responses তখনই চলে যখন upstream সেটা support করে ([Responses API](/docs/responses))।
- Dify-র built-in model provider, যেমন তার OpenAI provider, এখানে ব্যবহার হয় না।

## সমস্যা হলে

**model save করতে গেলে credentials error আসছে।** message-এ Tokens-এর পাঠানো status code আর response body থাকে, ওটা পড়ুন। 401 `invalid_api_key` মানে key ভুল বা revoke করা। 404 মানে API Base URL বা model name ভুল। ওপরের curl test-এর সাথে মিলিয়ে দেখুন।

**প্রতিটা request-এ 404।** API Base URL ঠিক `https://tokens.bd/v1` কিনা দেখুন। `/v1` লাগবে, আর `/chat/completions` জুড়বেন না।

**404 `model_not_found`।** Tokens-এ যে model name পৌঁছাচ্ছে সেটা পুরো ID নয়। Model Name আর "model name for API endpoint" `GET /v1/models`-এর সাথে মিলিয়ে দেখুন।

**403 `model_not_allowed_on_key`।** key-র allowed models-এর তালিকায় এই model নেই। তালিকার কোনো model নিন, অথবা অন্য key ব্যবহার করুন।

**Agent node model-টা নিচ্ছে না, বা কখনো tool call করছে না।** model-এ Function Call Type-কে `Tool Call` করুন, অথবা agent-কে ReAct strategy-তে নিয়ে যান। তারপরও tool call না হলে model-টা সম্ভবত tool use-এর জন্য ঠিক নয়।

**400 `invalid_request`, আর message-এ `user` field-এর কথা।** plugin-এ **User Identity Support** নামে একটা setting আছে, যেটা বলে endpoint ঐচ্ছিক top-level `user` parameter নেয় কিনা। এটা Not Support করে দিলে field-টা আর যাবে না।

**লম্বা prompt কেটে যাচ্ছে, বা output আগেই থেমে যাচ্ছে।** Model context size আর Upper bound for max tokens দেখুন। দুটোর default 4096।

**429 `rate_limited`, `concurrency_limit` বা `window_exhausted`।** `Retry-After`-এ লেখা সেকেন্ড অপেক্ষা করুন, অথবা [Rate limits](/docs/rate-limits) দেখুন। **402 `insufficient_credits`** হলে [billing](/dashboard/billing)-এ গিয়ে টাকা যোগ করুন।

সব code-এর তালিকা আছে [Errors](/docs/errors) পেজে। [support](/docs/support)-এ যোগাযোগ করলে একই call curl দিয়ে চালিয়ে তার `x-tokens-request-id` header সাথে দিন।

সূত্র: [Dify Model Providers](https://docs.dify.ai/en/use-dify/workspace/model-providers), [Integrations](https://docs.dify.ai/en/use-dify/workspace/plugins) আর [self-hosted Integrations পেজ](https://docs.dify.ai/en/self-host/use-dify/workspace/plugins), [Agent node](https://docs.dify.ai/en/use-dify/nodes/agent), [OpenAI-API-compatible plugin-এর source আর README](https://github.com/langgenius/dify-official-plugins/tree/main/models/openai_api_compatible) (version 0.0.68) আর [Dify plugin SDK-র OpenAI-compatible model class](https://github.com/langgenius/dify-plugin-sdks/blob/main/src/dify_plugin/interfaces/model/openai_compatible/llm.py), অক্টোবর 2026-এ দেখা।

---
Page: https://tokens.bd/bn/docs/dify
