এই নির্দেশিকা এমন Mac মালিকের জন্য, যাঁর অ্যাপ ইনস্টল করার অনুমতি ও নিজের অসংবেদনশীল পরীক্ষামূলক ফাইল আছে। আপনি Ollama-তে একটি মডেল নামাবেন, সংরক্ষিত Open WebUI ব্রাউজার চ্যাট ও VS Code-এর Continue এক্সটেনশনকে একই নির্বাহ সেবায় যুক্ত করবেন, তারপর বাস্তবে প্রস্তাবিত পরিবর্তন রেখে দেবেন কি না ঠিক করবেন। নিচের কমান্ড ও পরীক্ষা রক্ষণাবেক্ষণকারীদের বর্তমান নথি অনুসরণ করে। BIG CHANGE এই ব্যবস্থা চালায়নি বা গতি, খরচ কিংবা নেটওয়ার্ক ট্রাফিক মাপেনি।

বড় পরিবর্তন

  • কী বদলাচ্ছে: নামানো Ollama মডেল স্থানীয় API দিয়ে ব্রাউজার চ্যাট ও VS Code সম্পাদনা সহায়ক—দুটোকেই সেবা দিতে পারে। প্রতিটি ক্লায়েন্টের সংযোগ আলাদা পরীক্ষা করতে হবে।
  • কেন গুরুত্বপূর্ণ: একই Mac-এ একবার মডেল ইনস্টল করে কথোপকথন ও পর্যালোচিত কোড পরিবর্তন করা যায়, আর চূড়ান্ত সিদ্ধান্ত থাকে ফাইলের মালিকের হাতে।
  • কী খেয়াল রাখবেন: মেনুতে মডেলের নাম দেখে কোন সার্ভার উত্তর দিয়েছে বোঝা যায় না। বিশেষ করে অন্য প্রদানকারী বা ক্লাউড সুবিধা চালু থাকলে সংযোগ ও প্রকৃত উত্তর পরীক্ষা করুন।

১. Mac পরীক্ষা করে মডেল বাছুন

আপনার দরকার Ollama-এর জন্য macOS 14 বা পরের সংস্করণ, Mac-এর Docker Desktop, Continue এক্সটেনশন-সহ VS Code এবং নিচের ছোট JSON ও ফাইল পরীক্ষার জন্য Python 3। Ollama Apple M সিরিজের CPU ও GPU সমর্থন করে; Intel Mac-এর নথিতে শুধু CPU আছে। Mac ডাউনলোড পৃষ্ঠা থেকে Ollama ইনস্টল করে Applications-এ নিন, চালু করুন এবং চাইলে কমান্ড-লাইন লিংকের অনুমতি দিন। Docker Desktop ইনস্টল করে চালান, তারপর VS Code-এর Extensions থেকে Continue বসান। Python 3 ইনস্টল করুন Python.org থেকে, যদি python3 না থাকে। Mac-এ VS Code নিজে থেকে code শেলের খোঁজার পাথে যোগ করে না। এর Mac সেটআপ নির্দেশনাঅনুসারে Cmd+Shift+Pদিয়ে Command Palette খুলে Shell Command: Install 'code' command in PATHচালান, তারপর Terminal আবার চালু করুন। প্রয়োজনীয় সরঞ্জাম আছে কি না দেখুন:

Terminal
sw_vers -productVersion
ollama --version
docker version
code --version
python3 --version

ইনস্টল করা সংস্করণ লিখে রাখুন। কোনো অ্যাপ না চললে বা মডেল ও Docker ডেটার জায়গা না থাকলে থামুন। qwen2.5-coder:7b মডেল পৃষ্ঠা এখন 4.7 GB ডাউনলোড ও Apache 2.0 লাইসেন্স দেখায়। ডাউনলোডের মাপ মোট কার্যকরী মেমরির চাহিদা নয়। এটি উদাহরণ, সব Mac-এর জন্য সুপারিশ নয়। দরকার হলে নথিভুক্ত ছোট স্থানীয় ট্যাগ বেছে নিচের সব কমান্ড, ব্রাউজার নির্বাচন ও YAML ঘরে qwen2.5-coder:7b -এর বদলে সেই নির্ভুল ট্যাগ দিন। বিকল্প মডেলের লাইসেন্সও পরীক্ষা করুন।

মডেল নামিয়ে দেখুন Ollama সঠিক ট্যাগ দেখাচ্ছে কি না:

Terminal
ollama pull qwen2.5-coder:7b
ollama list
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/tags | python3 -c 'import json,sys; d=json.load(sys.stdin); print([m["name"] for m in d["models"]])'

তালিকায় qwen2.5-coder:7bথাকা উচিত। এরপর স্থানীয় চ্যাট API -এর কাছে ছোট উত্তর চান। HTTP ত্রুটিতে কমান্ড ব্যর্থ হয় এবং ফেরত আসা মডেল ও সহায়কের খালি নয় এমন লেখা যাচাই করে; উত্তরের সুনির্দিষ্ট ভাষা গুরুত্বপূর্ণ নয়। Ollama নির্বাহ বিকল্প num_predict পরীক্ষাটিকে ৬৪টি তৈরি টোকেনে সীমাবদ্ধ করে। কাটা বাক্যও বিষয়বস্তু ফেরত আসার প্রমাণ হতে পারে; খালি উত্তর ব্যর্থ পরীক্ষা, যার কারণ খুঁজতে হবে।

Terminal
set -o pipefail
curl --fail-with-body --silent --show-error http://127.0.0.1:11434/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"model":"qwen2.5-coder:7b","messages":[{"role":"user","content":"Reply with one short sentence about checking a local connection."}],"stream":false,"options":{"num_predict":64}}' \
  | python3 -c 'import json,sys; d=json.load(sys.stdin); assert d.get("model")=="qwen2.5-coder:7b",d.get("model"); assert d.get("message",{}).get("content","").strip(); print("Model:",d["model"],"Reply:",d["message"]["content"])'

ট্যাগ না থাকলে ডাউনলোড শেষ করে তালিকা আবার দেখুন। API-তে পৌঁছানো না গেলে Ollama চালিয়ে তার Mac সার্ভার লগ দেখুন এখানে: ~/.ollama/logs/server.log। ডাউনলোড করা ট্যাগ ও সফল স্থানীয় উত্তর হলো তিন পরীক্ষার প্রথমটি।

২. স্থায়ী স্থানীয় ডেটাসহ Open WebUI চালু করুন

এই Open WebUI দ্রুত শুরুর নির্দেশিকা অ্যাকাউন্ট, সেটিং ও চ্যাট রাখে /app/backend/data -এ এবং অপরিবর্তিত WEBUI_SECRET_KEYচায়। আমরা স্থিতিশীল v0.12.3 রিলিজ ব্যবহার করছি, ক্রমাগত বদলানো main ট্যাগ নয়। Docker আপনার Mac-এর স্থাপত্যমাফিক ইমেজ নেবে; নামানোর পরে ইমেজের পরিচয় লিখুন।

আগে এখানে ব্যবহৃত নাম দেখুন। কোনোটি আগে থাকলে সেই কনটেইনার বা ভলিউম দেখে বুঝুন তা পুরোনো সেটআপের কি না। শুধু কমান্ড চালাতে বিদ্যমান কনটেইনার বদলাবেন বা ভলিউম মুছবেন না।

Terminal
docker ps -a --filter name=^/bc-open-webui$ 
docker volume inspect bc-open-webui-data

প্রথম সেটআপে দ্বিতীয় কমান্ড ভলিউম নেই বললে স্বাভাবিক। পরের ধাপ তৈরি চাবি Mac অ্যাকাউন্টের ব্যক্তিগত ফাইলে রাখে। কনটেইনার পুনর্গঠনের জন্য এটি নিরাপদ রাখুন। এর লেখা রিপোজিটরিতে কমিট, কোথাও পেস্ট বা শেয়ার করবেন না। এই ইনস্ট্যান্সের চাবি আগে থাকলে সেটিই ব্যবহার করুন।

Terminal
mkdir -p "$HOME/.config/bc-open-webui"
chmod 700 "$HOME/.config/bc-open-webui"
umask 077
if [ ! -s "$HOME/.config/bc-open-webui/webui-secret" ]; then
  openssl rand -hex 32 > "$HOME/.config/bc-open-webui/webui-secret"
fi
chmod 600 "$HOME/.config/bc-open-webui/webui-secret"
export WEBUI_SECRET_KEY="$(cat "$HOME/.config/bc-open-webui/webui-secret")"
docker pull ghcr.io/open-webui/open-webui:v0.12.3
docker image inspect ghcr.io/open-webui/open-webui:v0.12.3 --format '{{json .RepoDigests}}'
docker volume create bc-open-webui-data
docker run -d --name bc-open-webui --restart unless-stopped \
  -p 127.0.0.1:3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v bc-open-webui-data:/app/backend/data \
  -e WEBUI_SECRET_KEY \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  ghcr.io/open-webui/open-webui:v0.12.3
unset WEBUI_SECRET_KEY
docker ps --filter name=^/bc-open-webui$ --format 'table {{.Names}}\t{{.Image}}\t{{.Ports}}'

পোর্ট আউটপুটে 127.0.0.1:3000->8080/tcpদেখা উচিত। নামযুক্ত ভলিউম কনটেইনার আবার তৈরি হলেও চ্যাট ও সেটিং রাখে। চাবি সেশনের ধারাবাহিকতা ও অ্যাপের এনক্রিপ্ট করা মান রক্ষা করে, তাই ব্যক্তিগত কপি রাখুন। Docker-এ প্রবেশাধিকার থাকা ব্যক্তি কনটেইনার সেটিং থেকে পরিবেশের মান দেখতে পারেন; এটি একজনের স্থানীয় ব্যবস্থা, ভাগ করা হোস্টের গোপন তথ্যের ভাণ্ডার নয়।

ব্রাউজারে http://127.0.0.1:3000 খুলুন। প্রথমবার প্রশাসক অ্যাকাউন্ট বানান। অবতার মেনুতে Settings → Admin → Connectionsখুলে Manage Ollama API Connections দেখুন এবং http://host.docker.internal:11434-এ মাত্র একটি সংযোগ চালু রাখুন। এই পরীক্ষার জন্য অনাকাঙ্ক্ষিত প্রদানকারী সংযোগ সরান বা বন্ধ করুন। Open WebUI একাধিক Ollama সংযোগে অনুরোধ ভাগ করতে পারে, তাই ড্রপডাউনে একই নাম যথেষ্ট নয়। নতুন চ্যাটে qwen2.5-coder:7b বেছে জিজ্ঞেস করুন: “স্থানীয় মডেল উত্তর দিয়েছে কীভাবে যাচাই করব?” খালি নয় এমন উত্তর এলে সংরক্ষিত চ্যাট আবার খুলুন। নির্বাচিত মডেল ও সংযোগ URL লিখুন। এটি ব্রাউজার পরীক্ষা; নির্দিষ্ট উত্তর বাধ্যতামূলক নয়।

পৃষ্ঠা না খুললে docker logs bc-open-webui ও পোর্ট বাঁধন পরীক্ষা করুন। মডেল তালিকা খালি হলে দেখুন Ollama এখনও /api/tags-এ উত্তর দেয় কি না, সংরক্ষিত Open WebUI সংযোগ দেখুন এবং Docker Desktop-এর এই সংস্করণ Mac হোস্টের সেবা পায় কি না পরীক্ষা করুন। host.docker.internal হলো Docker Desktop-এর হোস্ট ঠিকানা, কিন্তু localhost কনটেইনারের ভিতরে কনটেইনারটিকেই বোঝায়। Ollama সাধারণভাবে 127.0.0.1-এ বাঁধা থাকে; হোস্ট-কনটেইনার ফরওয়ার্ডিং সেটিংভেদে বদলাতে পারে। ব্যর্থ সংযোগকে সফল সেটআপ ভাববেন না বা সাধারণ সমাধান হিসেবে Ollama-কে 0.0.0.0 -এ উন্মুক্ত করবেন না। এগোনোর আগে নিরাপত্তানীতি মেনে স্থানীয় নেটওয়ার্ক পথ ঠিক করুন। সমস্যা খোঁজার সময় ভলিউম ও আগের চ্যাট রাখুন।

৩. Continue-কে একই Ollama ট্যাগে যুক্ত করুন

Continue Mac-এর VS Code-এ চলে, তাই Ollama API ঠিকানা হলো http://localhost:11434। Continue খুলে চ্যাট ইনপুটের ডানদিকে উপরের কনফিগারেশন তালিকা ব্যবহার করে Local Config-এর পাশের গিয়ারে ক্লিক করুন। এতে ~/.continue/config.yamlখোলে; Continue-এর বর্তমান রেফারেন্স YAML ব্যবহার করে। পুরোনো সেটিংয়ের কপি রাখুন এবং প্রয়োজনীয় মডেল বা নিয়ম বজায় রাখুন। নতুন স্থানীয় সেটিংয়ের সম্পূর্ণ ন্যূনতম লেখা:

YAML
name: Local Ollama check
version: 1.0.0
schema: v1
models:
  - name: Qwen2.5 Coder 7B local
    provider: ollama
    model: qwen2.5-coder:7b
    apiBase: http://localhost:11434
    roles:
      - chat
      - edit

আগের ফাইলে এই মডেল এন্ট্রি তার models: তালিকায় যোগ করে বিদ্যমান ওপরের স্তরের সেটিং রাখুন। সেভ করে Local Config ও নামযুক্ত স্থানীয় মডেল বাছুন, তারপর Continue Chat-এ ছোট প্রশ্ন করুন। বিষয়বস্তু ফেরত আসে কি না দেখুন। এটি এক্সটেনশনের সংযোগ যাচাই করে, কিন্তু চ্যাটের উত্তর ফাইলের সম্পাদনা নয়। chat ও edit ভূমিকা এখানে ব্যবহৃত দুই কাজ চালু করে; এই প্রক্রিয়া Agent বা স্বয়ংসম্পূর্ণতার প্রতিশ্রুতি দেয় না।

নিজের পরীক্ষার ডিরেক্টরি ও সহজ আচরণের ফাইল বানান, যা স্বাধীনভাবে পরীক্ষা করা যায়। কমান্ড আগের ফাইল বা মূল কপি অক্ষত রাখে; কোনো নাম আগে ব্যবহৃত হলে দেখে নিন বা নতুন ডিরেক্টরি বাছুন:

Terminal
mkdir -p "$HOME/continue-local-check"
if [ -e "$HOME/continue-local-check/greeting.py" ] || [ -e "$HOME/continue-local-check/greeting.original.py" ]; then
  printf '%s\n' 'Scratch file already exists; inspect it or choose a new directory.'
else
  cat > "$HOME/continue-local-check/greeting.py" <<'PY'
def greeting(name):
    return "Hello, " + name

if __name__ == "__main__":
    assert greeting("Ada") == "Hello, Ada"
    print(greeting("Ada"))
PY
  if python3 "$HOME/continue-local-check/greeting.py"; then
    cp "$HOME/continue-local-check/greeting.py" "$HOME/continue-local-check/greeting.original.py"
  else
    printf '%s\n' 'Original check failed; inspect the file before requesting an edit.'
  fi
fi

মূল পরীক্ষায় assertion পাসের পরে Hello, Ada ছাপা উচিত। greeting.py VS Code-এ খুলে শুধু ফাংশন বাছুন এবং Cmd+I চাপ দিয়ে Continue Editব্যবহার করুন। ফেরত দেওয়া লেখা না বদলে ছোট docstring যোগ করতে বলুন। ক্রমে দেখা ইনলাইন diff মিলিয়ে দেখুন greeting.original.py-এর সঙ্গে। নির্বাচিত কোডে Edit-ও পুরো ফাইল প্রসঙ্গে আনতে পারে, তাই নিজের অসংবেদনশীল ফাইলই নিন। মডেল চাওয়ার চেয়ে বেশি বদলাতে পারে। প্রতিটি বদলানো লাইন দেখে উপযুক্ত প্রস্তাব Cmd+Opt+Yদিয়ে নিন, অথবা Cmd+Opt+Nদিয়ে বাতিল করুন। Continue-এ সব গ্রহণ বা সব বাতিলের ব্যবস্থাও আছে, কিন্তু ছোট diff এক-একটি বদল ধরে দেখা সহজ।

গ্রহণের পরে ফাইল সেভ করে চালান:

Terminal
diff -u "$HOME/continue-local-check/greeting.original.py" "$HOME/continue-local-check/greeting.py" || true
python3 "$HOME/continue-local-check/greeting.py"

নিশ্চিত করুন diff-এ শুধু চাওয়া বদল আছে এবং মূল assertion এখনও পাস করছে। বাতিল করলে ফাইল মূলের সমান কি না দেখুন এবং বাতিলের নোট রাখুন; সম্পাদনা হয়েছে বলবেন না। ফাইল, diff ও আলাদা Python পরীক্ষা মডেলের নিজের বর্ণনার চেয়ে নির্ভরযোগ্য।

৪. সীমা স্পষ্ট রাখুন

Ollama, Open WebUI ও Continue-এর আলাদা সেটিং আছে। শুধু Ollama ক্লাউড বন্ধ করতে সার্ভার চালানো অ্যাকাউন্টের ~/.ollama/server.json-এ নিচের ঘর যোগ করুন, আগের JSON ঘর রাখুন। নতুন ফাইল হলে পুরো লেখা:

JSON
{
  "disable_ollama_cloud": true
}

Ollama অ্যাপ আবার চালিয়ে সার্ভার লগ দেখুন:

Terminal
grep 'Ollama cloud disabled: true' "$HOME/.ollama/logs/server.log"

এই Ollama FAQ সেই লগ লাইন ব্যাখ্যা করে। না পেলে ক্লাউড বন্ধ বলার আগে Ollama চালানো Mac অ্যাকাউন্ট, JSON ও পুনরায় চালানো যাচাই করুন। এই সেটিং Open WebUI-এর অন্য প্রদানকারী, ঐচ্ছিক অনলাইন সুবিধা বা Continue ট্রাফিক দেখে না। Continue-এর অফলাইন নির্দেশিকা অনুযায়ী Allow Anonymous Telemetryবন্ধ করে স্থানীয় মডেল ব্যবহার ও VS Code পুনরায় চালান। সংবেদনশীল তথ্যের আগে প্রতিটি অ্যাপের সংযোগ দেখুন। শুধু লুপব্যাক URL নেটওয়ার্ক নিরীক্ষা নয়।

প্রকৃত ব্যবহারের জন্য Docker Desktop লাইসেন্স দেখুন। ব্যক্তিগত, শিক্ষামূলক, অ-বাণিজ্যিক ওপেন-সোর্স ব্যবহার এবং এমন ছোট প্রতিষ্ঠানের জন্য বিনামূল্যে, যাদের কর্মী ২৫০ জনের কম এবং বার্ষিক আয় ১ কোটি মার্কিন ডলারের কম। বড় প্রতিষ্ঠান ও সরকারের পেশাগত ব্যবহারে সশুল্ক সদস্যতা লাগে। মডেলের Apache 2.0 লাইসেন্স আলাদা। ডিস্ক, মেমরি, ডাউনলোড ব্যান্ডউইডথ ও বিদ্যুৎ এখনও দরকার; এই গাইডে খরচ বা কর্মক্ষমতা মাপা হয়নি।

শুধু Ollama টার্মিনাল ও API-এর সংক্ষিপ্ত ধাপের জন্য দেখুন স্থানীয় Ollama মডেল চালিয়ে চ্যাট API যাচাই করুন। স্থানীয় Ollama মডেল দিয়ে Claude Code-এর একটি যাচাই করা পরিবর্তন করুন অন্য প্রোগ্রামিং ক্লায়েন্ট নিয়ে আলোচনা করে।

উৎস ও আরও পড়ুন