Coding agent-এর সঙ্গে Ollama কীভাবে ব্যবহার করবেন
Ollama-কে coding agent-এ যুক্ত করতে base URL বদলান, API key-তে dummy string দিন। context length-এর ভুলে কাজ নষ্ট হতে পারে, তবে local model কিছু কাজে এগিয়ে।
আপনি কীসের সঙ্গে সংযোগ করছেন
আপনি আপনার coding agent-এর সঙ্গে Ollama ব্যবহার করতে পারেন। সংযোগের জন্য প্রত্যাশার চেয়ে কম পরিবর্তন লাগে। একটি base URL পরিবর্তন করুন এবং একটি model name নির্বাচন করুন। API key field-এ এখনও একটি value দিতে হবে, কিন্তু local server সেটি উপেক্ষা করে। তাই যেকোনো string কাজ করবে।
Ollama port 11434-এ listening করে এবং একই সময়ে দুই ধরনের request shape সরবরাহ করে। /v1/chat/completions হলো OpenAI-compatible shape। Ollama-এর documentation-এ এখানে key-কে required কিন্তু ignored বলা হয়েছে। /v1/messages হলো Anthropic-compatible shape, যা Claude Code ব্যবহার করে। আপনার agent ইতিমধ্যে এই দুইটির একটিতে কথা বলে। তাই agent-এর অন্য কোনো configuration পরিবর্তন করতে হবে না।
এই অংশটি সম্পন্ন করতে পাঁচ মিনিট লাগে। ফলাফল ব্যবহারযোগ্য হবে কি না, তা নির্ভর করে এমন দুটি setting-এর ওপর, যেগুলো প্রায় কেউ পরিবর্তন করে না: context length এবং keep-alive। এ ছাড়া model-কে তার উপযোগী ধরনের কাজ দিতে হবে। এই দুই setting-এর জন্য আলাদা section রয়েছে। বাস্তব সীমাবদ্ধতাগুলো শেষে দেওয়া হয়েছে।
কোন coding agent local base URL গ্রহণ করে
পরীক্ষাটি একটি প্রশ্নে সীমাবদ্ধ: tool-টি কি base URL সেট করার সুবিধা দেয়? দিলে এটি আপনার server-এর সঙ্গে যোগাযোগ করতে পারবে।
Ollama, Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDE এবং VS Code-এর জন্য integration page প্রকাশ করে। Aider নিজের Ollama support আলাদাভাবে নথিভুক্ত করে। August 2026-এ coding agent বলতে সাধারণত যেসব tool বোঝানো হয়, সেগুলোর বেশিরভাগই এতে অন্তর্ভুক্ত। এগুলো সবাই একই API format ব্যবহার করে না। Setup ব্যর্থ হওয়ার প্রধান কারণ এখানেই।
- বেশিরভাগ agent OpenAI-compatible endpoint চায়। তাদের base URL হিসেবে
http://localhost:11434/v1এবং API key হিসেবে যেকোনো non-empty string দিন। - Claude Code কোনো OpenAI base URL গ্রহণ করে না। এটি Anthropic Messages API ব্যবহার করে। তাই
ANTHROPIC_BASE_URL-এhttp://localhost:11434সেট করতে হবে, যেখানে Ollama/v1/messagesপ্রদান করে। - Codex OpenAI Responses API ব্যবহার করে। Ollama
/v1/responses-ও প্রদান করে। এই সুবিধা version 0.13.3-এ যোগ হয়েছে। - কোনো agent-এ base URL সেট করার সুবিধা না থাকলে সেটিকে redirect করা যায় না, কারণ endpoint client-এর ভিতরেই নির্ধারিত থাকে। এর সামনে একটি translation layer বসান, যেমন self-hosted LiteLLM gateway, এবং client যে format দাবি করে সেই format-এ আপনার model পুনরায় expose করুন।
Ollama আপনার জন্য এই config-গুলো লিখে দিতে পারে। ollama launch opencode আপনার নির্বাচিত model-এর জন্য inline config সহ OpenCode চালু করে, ollama launch claude Claude Code-এর জন্য একই কাজ করে, এবং ollama launch droid --config tool চালু না করেই config লিখে দেয়।
Ollama ইনস্টল করুন এবং tool call করতে পারে এমন একটি model pull করুন
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsInstaller একটি systemd unit যোগ করে এবং সেটি চালু করে। তাই systemctl status ollama চালালে active (running) প্রিন্ট হওয়ার কথা। তা না হলে journalctl -e -u ollama কারণটি দেখায়।
Model-টিকে tool calling সমর্থন করতে হবে, কারণ agent এই পদ্ধতিতেই কাজ করে। এটি একটি file পড়ে, একটি patch লেখে, test চালায়, তারপর ব্যর্থতার তথ্য পড়ে আবার চেষ্টা করে। কোনো model tool call তৈরি করতে না পারলে সেটি পরিবর্তনটি করার বদলে prose-এ বর্ণনা করবে, ফলে agent বারবার একই কাজ করবে অথবা থেমে যাবে। pull করার আগে ollama.com-এ model-এর page-এ tools label আছে কি না দেখুন। qwen3-coder:30b এই label বহন করে। August 2026 অনুযায়ী, এই tag-এর download size 19 GB এবং context window 256K।
এখন server আসলে কোন নামগুলো serve করছে তা নিশ্চিত করুন:
curl http://localhost:11434/v1/modelsওই response-এ থাকা string-গুলোই আপনার agent config-এ অক্ষরে অক্ষরে থাকতে হবে। আগে এটি পরীক্ষা করলে model-not-found সংক্রান্ত অধিকাংশ error-এর কারণ নির্ধারণ করা যায়। Ollama এখনও ইনস্টল করা না থাকলে, বিস্তারিত নির্দেশিকা VPS-এ Ollama দিয়ে একটি LLM self-host করা-এ রয়েছে।
Ollama-কে OpenCode-এর সঙ্গে সংযুক্ত করুন
~/.config/opencode/opencode.json সম্পাদনা করুন:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-coder:30b": {
"name": "qwen3-coder 30b"
}
}
}
}
}models-এর অধীনে থাকা মানটি Ollama-তে পাঠানো model-এর নাম। তাই এটি ollama ls-এর সঙ্গে হুবহু মিলতে হবে। name field-টি শুধু model picker-এ প্রদর্শিত label। opencode চালু করুন, Ollama provider নির্বাচন করুন এবং journalctl -e -u ollama monitor করুন। এতে নিশ্চিত হওয়া যাবে যে request অন্য কোথাও নয়, আপনার server-এই পৌঁছেছে। Agent সেটআপ করার পদ্ধতি VPS-এ OpenCode চালানো-তে ব্যাখ্যা করা হয়েছে।
Claude Code-কে Ollama-এর সঙ্গে সংযুক্ত করুন
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bANTHROPIC_API_KEY ইচ্ছাকৃতভাবে একটি খালি string হিসেবে সেট করা হয়েছে। Environment-এ প্রকৃত key রেখে দিলে আপনার অনুরোধ hosted API-তে চলে যায়। এতে খরচ হয় এবং local inference হয় না। ollama launch claude আপনার হয়ে এগুলো সেট করে দেয়।
Compatibility layer কী কী সমর্থন করে না, তা জেনে রাখুন। এটি tool_choice বা prompt caching implement করে না। এর কোনো token counting endpoint-ও নেই। তাই আপনি যে token সংখ্যা দেখেন, সেগুলো model-এর নিজস্ব tokenizer থেকে নেওয়া আনুমানিক হিসাব। Claude Code একটি বড় system prompt এবং বড় tool set পাঠায়। তাই chat client-এর তুলনায় এর বেশি context প্রয়োজন হয়। কোন বিষয়গুলো একইভাবে কাজ করে এবং কোনগুলো করে না, সেই বিস্তৃত আলোচনা Claude নিজে host করা যায় কি না অংশে আছে।
Aider-কে Ollama-এর দিকে নির্দেশ করুন
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bAider-এর documentation-এ ollama_chat/ prefix ব্যবহারের পরামর্শ দেওয়া হয়েছে, ollama/-এর নয়। এছাড়া .aider.model.settings.yml-এ প্রতিটি model-এর জন্য context window নির্দিষ্ট করে দেওয়া যায়। server-এর default window থেকে কোনো model-এর window আলাদা হলে এটি কার্যকর:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536কার্যকর সেটআপ থেকেও কেন ভুল ফল আসে
এটাই গুরুত্বপূর্ণ অংশ। Ollama যে VRAM (GPU-এর video memory) দেখতে পায়, সেখান থেকে একটি default context length নির্বাচন করে। এই default-গুলো প্রকাশিত আছে:
The data behind this chart
[
{
"label": "Under 24 GiB VRAM",
"default_context_tokens": "4,096"
},
{
"label": "24 to 48 GiB VRAM",
"default_context_tokens": "32,768"
},
{
"label": "48 GiB VRAM or more",
"default_context_tokens": "262,144"
}
]অধিকাংশ VPS plan এবং সব CPU-only server প্রথম সারিতে পড়ে: 4,096 tokens। শুধু বড় GPU-ই শেষ সারির 262,144 tokens পায়।
কোনো কাজ শুরু করার আগেই একটি agent 4096 tokens ব্যবহার করে। system prompt, tool definitions, repository listing এবং এটি খোলা প্রথম file—সব মিলিয়ে এর আকার ইতিমধ্যে তার চেয়ে বেশি হয়। এরপর যা ঘটে, সেটিই মূল সমস্যা: কোনো error দেখা যায় না। Aider-এর documentation অনুযায়ী, window-এর সীমা ছাড়িয়ে যাওয়া context Ollama নীরবে বাদ দেয়। সবচেয়ে পুরোনো tokens বাদ পড়ে। ফলে model এমন কোনো file সম্পর্কে আত্মবিশ্বাসের সঙ্গে উত্তর দেয়, যা সে আর দেখতে পাচ্ছে না। অথবা দুই ধাপ আগে দেওয়া আপনার instruction সে ভুলে যায়। local model code লেখার জন্য অতিরিক্ত দুর্বল—এমন অধিকাংশ report-এর পেছনে এই mechanism কাজ করে।
Ollama-এর documentation অনুযায়ী, agent এবং coding tool-এর মতো কাজের জন্য অন্তত 64000 tokens নির্ধারণ করা উচিত। এটি server-এ নির্ধারণ করুন:
sudo systemctl edit ollama.serviceoverride file-এ এই lines যোগ করুন:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"এরপর reload এবং restart করুন:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psollama ps হলো যাচাই করার command। এটি একটি CONTEXT column দেখায়। ওই সংখ্যাটিই model বাস্তবে পেয়েছে। আপনার ID এবং SIZE আলাদা হবে:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowagent-এর পরিবর্তে server-এ এটি নির্ধারণ করুন, এর দুটি কারণ আছে। OpenAI chat completions schema-তে context length-এর জন্য কোনো field নেই। তাই OpenAI-compatible client এটি চাইতে পারে না। আর এই setting server-ভিত্তিক। ফলে ওই server-এ নির্দেশ করা প্রতিটি agent এটি উত্তরাধিকারসূত্রে পায়। কোনো model-এর জন্য আলাদা window প্রয়োজন হলে, একটি Modelfile ব্যবহার করে সেটি copy-তে নির্ধারণ করুন:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f ModelfileContext বিনামূল্যে পাওয়া যায় না। দীর্ঘ window-এর জন্য বেশি memory লাগে। তাই PROCESSOR column monitor করুন। 100% GPU হলো আপনি যে মানটি চান। model-এর কোনো অংশ CPU-তে চলে গেলে token rate এত কমে যায় যে agent loop ব্যবহার অনুপযোগী হয়ে পড়ে। আপনার server-এর প্রকৃত সীমা নির্ধারণের উপায় হলো local LLM-এ প্রতি সেকেন্ডে tokens মাপা। server কেনার আগে machine-এর আকার নির্ধারণের বিষয়টি coding agent-এর VPS-এর জন্য কত RAM এবং CPU প্রয়োজন-এ ব্যাখ্যা করা হয়েছে।
অনুরোধগুলোর মধ্যে মডেল লোড রাখা
ডিফল্টভাবে Ollama শেষ অনুরোধের 5 মিনিট পরে মডেল unload করে। চ্যাট বক্সের জন্য এটি উপযুক্ত, কিন্তু agent কাজের জন্য নয়। আপনি একটি diff পড়ার জন্য বিরতি নেন, timer-এর সময়সীমা শেষ হয়ে যায়, এবং পরের অনুরোধে প্রথম token দেখানোর আগে disk থেকে কয়েক দশ gigabyte weights আবার load হয়। এতে মনে হয় system আটকে গেছে।
OLLAMA_KEEP_ALIVE-এ 10m বা 24h-এর মতো একটি duration string, seconds-এর একটি সাধারণ সংখ্যা, মডেল অনির্দিষ্টকাল load রাখা হবে বোঝাতে -1, অথবা সঙ্গে সঙ্গে unload করার জন্য 0 দেওয়া যায়। এটি context length-এর পাশে সেট করুন:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"keep_alive request field শুধু Ollama-এর native /api/generate এবং /api/chat endpoint-এ থাকে, compatibility endpoint-এ নয়। তাই কোনো agent প্রতি request-এ এটি সেট করতে পারে না। আপনার হাতে environment variable-ই একমাত্র নিয়ন্ত্রণ ব্যবস্থা। memory আবার প্রয়োজন হলে server বন্ধ না করেই ollama stop qwen3-coder:30b মডেল unload করে।
অন্য একটি সার্ভারে Ollama চালানো
Ollama localhost-এ bind করে। অন্য কোনো মেশিন থেকে এতে পৌঁছাতে একই systemd override-এ OLLAMA_HOST=0.0.0.0:11434 সেট করুন এবং service restart করুন।
এটি শুধু একটি private network-এ করুন। Ollama-এর documentation অনুযায়ী local API-এর জন্য কোনো authentication প্রয়োজন হয় না। তাই port 11434 Internet-এ open থাকলে যে কেউ আপনার hardware ব্যবহার করতে এবং আপনার agent যে তথ্য পাঠায় তা পড়তে পারবে। নিরাপদ দুটি উপায় আছে। bind localhost-এ রেখে আপনার laptop থেকে SSH-এর মাধ্যমে port forward করুন:
ssh -N -L 11434:localhost:11434 you@your-vpsআপনার agent http://localhost:11434/v1-এর দিকেই নির্দেশ করবে এবং কোনো পার্থক্য বুঝতে পারবে না। অন্য উপায় হলো VPN ব্যবহার করা এবং Ollama-কে 0.0.0.0-এর পরিবর্তে VPN address-এ bind করা। একই box একাধিক ব্যক্তি বা একাধিক agent ব্যবহার করলে এই ধরনের load-এর জন্য Ollama-এর scheduler তৈরি করা হয়নি। Ollama এবং vLLM-এর তুলনা দেখায়, throughput-এর পার্থক্য কোথা থেকে সমস্যাজনক হতে শুরু করে।
যেখানে স্থানীয় coding model কার্যকর, আর যেখানে নয়
আপনার host করা model দ্বারা চালিত agent প্রতিটি কাজে frontier API-কে প্রতিস্থাপন করতে পারে না। চার ধরনের কাজে এটি স্পষ্টভাবে কার্যকর।
- Bulk mechanical edit, যেখানে প্রতিটি পরিবর্তন ছোট এবং আপনি তা যাচাই করতে পারেন। একটি repository জুড়ে নাম পরিবর্তন, type hint যোগ করা, docstring লেখা এবং comment অনুবাদ করা এর উদাহরণ। Model ঘণ্টার পর ঘণ্টা চলতে পারে, কিন্তু bill বাড়ে না।
- যে কাজের data আপনার hardware-এর বাইরে পাঠানো যাবে না। যেমন confidentiality agreement-এর আওতাধীন client code, অথবা এমন internal repository যা third party-কে পাঠানোর অনুমতি আপনার নেই।
- Offline এবং air-gapped machine, যেখানে call করার মতো কোনো hosted API-ই নেই।
- পূর্বানুমানযোগ্য খরচ। Server-এর মূল্য পরিশোধ করার পর loop-এ token ব্যবহার করা agent-এর জন্য অতিরিক্ত খরচ হয় না। Metered API-এর ক্ষেত্রে ঠিক উল্টো। GPU VPS কখন API token-এর তুলনায় খরচের দিক থেকে সমান হয়-এ এর হিসাব দেওয়া আছে।
দীর্ঘ multi-step কাজে এটি দুর্বল। “এই test কেন ব্যর্থ হচ্ছে তা খুঁজে বের করুন, কারণটি ঠিক করুন, caller-গুলো update করুন”—এ ধরনের কাজে ধারাবাহিকভাবে অনেকগুলো সঠিক tool call প্রয়োজন, এবং পুরো history-কে context-এ রাখতে হয়। একটি মাঝারি server-এ 8B থেকে 14B range-এর model malformed tool call তৈরি করতে পারে, অথবা কয়েকটি turn-এর পর plan হারিয়ে ফেলতে পারে। তখন কাজটি নিজে করতে যত সময় লাগত, তার চেয়ে agent-কে নির্দেশনা দিতেই বেশি সময় লাগে। এটি prompt-এর সমস্যা নয়, যা আরও ভালো prompt লিখে সমাধান করা যায়। এটি capacity-এর সীমাবদ্ধতা।
যখন ভুলের খরচ বেশি এবং আপনি প্রতিটি line পড়ে যাচাই করবেন না, তখনও এটি দুর্বল। স্থানীয় model-কে এমন সীমিত কাজ দিন যার output আপনি যাচাই করবেন। আর যে কাজ step by step যাচাই করবেন না, তার জন্য hosted model ব্যবহার করুন।
ব্যর্থতার ধরন এবং যে স্ট্রিংগুলো আপনি দেখবেন
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused। সার্ভার চলছে না, অথবা agent-কে অন্য host-এ নির্দেশ করা হয়েছে। systemctl status ollama চালান, তারপর journalctl -e -u ollama চালান।
agent জানায় যে model-টি নেই। আপনার config-এ দেওয়া নামটি server যে নামে model সরবরাহ করে, তার সঙ্গে মেলে না। curl http://localhost:11434/v1/models-এর সঙ্গে তুলনা করুন এবং সেখানকার string কপি করুন। tag নামের অংশ। তাই আপনি কখনো pull করেননি এমন tag-সহ config নাম দিলে, একই ধরনের কোনো model ইনস্টল থাকলেও কাজ ব্যর্থ হবে।
agent prose-এ উত্তর দেয় এবং কোনো file সম্পাদনা করে না। হয় model-এ tool support নেই, অথবা request এবং তার tool definition ইতিমধ্যে context window পূর্ণ করে ফেলেছে। model page-এ tools label পরীক্ষা করুন। এরপর ollama ps-এ CONTEXT column পরীক্ষা করুন।
প্রথম token আসার আগে দীর্ঘ নীরবতা, তারপর স্বাভাবিক গতি। keep-alive-এর মেয়াদ শেষ হয়েছে এবং weights আবার disk থেকে পড়া হচ্ছে। OLLAMA_KEEP_ALIVE সেট করুন।
model এইমাত্র পড়া কোনো file-এর বক্তব্যের বিরোধিতা করে। এটি context truncation-এর লক্ষণ। ollama ps-এ সাধারণত এমন একটি CONTEXT value দেখা যায়, যা আপনি সেট করেছেন বলে মনে করা value-এর চেয়ে ছোট। কারণ environment variable-টি systemd unit-এ নয়, আপনার shell-এ সেট হয়েছে।
সবকিছু কাজ করে, কিন্তু ধীরগতিতে, এবং PROCESSOR হলো না 100% GPU। model এবং তার context VRAM-এ একসঙ্গে ধরে না। context length কমান, অথবা ছোট model কিংবা ছোট quantisation ব্যবহার করুন।
FAQ
আমি কি Claude Code-কে Ollama-এর দিকে নির্দেশ করতে পারি?
হ্যাঁ, তবে OpenAI-compatible URL ব্যবহার করে নয়। Claude Code Anthropic Messages API ব্যবহার করে, আর Ollama একই port 11434-এ /v1/messages-এ সেই format পরিবেশন করে। ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama এবং একটি খালি ANTHROPIC_API_KEY export করুন, তারপর claude --model qwen3-coder:30b দিয়ে এটি চালু করুন। ollama launch claude আপনার হয়ে একই settings লিখে দেয়। এই compatibility layer tool_choice বা prompt caching implement করে না। এটির কোনো token counting endpoint-ও নেই। তাই দেখানো token count আনুমানিক।
আমার local model যে code দেখতে পাচ্ছে না, সে সম্পর্কে উত্তর দেয় কেন?
কারণ request আর context window-তে ধরে না, এবং এর পুরোনো অংশ কোনো error ছাড়াই বাদ পড়ে। Ollama যে VRAM পায়, তার ভিত্তিতে default context নির্ধারণ করে। 24 GiB-এর কম হলে সেই default হলো 4,096 tokens। একটি agent-এর system prompt এবং tool definition-ই এর চেয়ে বেশি জায়গা নিতে পারে। systemd unit-এ OLLAMA_CONTEXT_LENGTH=64000 সেট করুন, Ollama restart করুন, এবং CONTEXT-এর column ollama ps-এ নতুন value দেখাচ্ছে কি না নিশ্চিত করুন।
VPS-এ coding agent চালানোর জন্য কোন model ব্যবহার করা উচিত?
এমন সবচেয়ে বড় model বেছে নিন, যার সঙ্গে tools label আছে এবং যা 64k context window-সহ memory-তে ধরে। Code-এর জন্য tuned model অগ্রাধিকার দিন। পর্যাপ্ত VRAM-সহ GPU server-এ qwen3-coder:30b সাধারণ পছন্দ। প্রায় 14B parameters-এর নিচের model code-সংক্রান্ত প্রশ্নের ভালো উত্তর দিতে পারে, কিন্তু multi-step edit-এ ব্যর্থ হতে পারে। কারণ tool call-এ ছোট formatting mistake-ও agent-এর কাজে সমস্যা তৈরি করে। Sample prompt-এর বদলে নিজের repository থেকে একটি বাস্তব task দিয়ে পরীক্ষা করুন।
নিজের model-এ coding agent চালাতে কি GPU প্রয়োজন?
বাস্তবে, হ্যাঁ। শুধু CPU ব্যবহার করে inference চালানো যায় এবং একক প্রশ্নের জন্য তা যথেষ্ট। কিন্তু একটি agent প্রতিটি task-এ অনেক request পাঠায় এবং প্রতিবার দীর্ঘ history আবার পড়ে। তাই token rate কম হলে দুই মিনিটের task এক ঘণ্টা লাগতে পারে। ollama ps-এ PROCESSOR column দেখুন। 100% GPU ছাড়া অন্য কোনো value থাকলে model-এর কিছু অংশ CPU-তে চলছে এবং token rate দ্রুত কমে যায়।