মূল কনটেন্টে যান
এআই টিউটোরিয়াল

AI Agent Gateway দিয়ে AI এজেন্ট ডিপ্লয় ও সুরক্ষিত করুন

Docker Compose ব্যবহার করে AI Agent Gateway ডিপ্লয় করা, প্রশাসক অ্যাকাউন্ট初始化 করা, এর তিনটি সার্ভিস প্লেন যাচাই করা, MCP টুল সংযুক্ত করা, অ্যানালিটিক্স চালু করা, বহির্মুখী অ্যাক্সেস নিয়ন্ত্রণ করা, ক্রেডেনশিয়াল সুরক্ষিত রাখা এবং আরও উন্নত এজেন্ট ও LLM ওয়ার্কফ্লোর জন্য গেটওয়ে প্রস্তুত করা শিখুন।

AI Agent Gateway দিয়ে AI এজেন্ট ডিপ্লয় ও সুরক্ষিত করুন

AI Agent Gateway কী?

AI Agent Gateway হলো একটি ওপেন-সোর্স পরিষেবা, যা AI এজেন্ট এবং তাদের ব্যবহৃত সিস্টেমগুলোর মধ্যে অবস্থান করে। এটি MCP টুল সার্ভার এবং সমর্থিত LLM প্রদানকারীদের জন্য একটি প্রমাণীকৃত ও পর্যবেক্ষণযোগ্য প্রবেশপথ প্রদান করে। এর মধ্যে রয়েছে Anthropic Claude, AWS Bedrock, OpenAI এবং Gemini।

প্রতিটি এজেন্টে টুলের ক্রেডেনশিয়াল ও প্রদানকারীর সেটিংস কপি করার পরিবর্তে, আপনি কেন্দ্রীয়ভাবে প্রমাণীকরণ, সিক্রেট, অ্যাক্সেস নীতি এবং অনুরোধের লগ পরিচালনা করতে পারেন। গেটওয়েটি একটি বাইনারি হিসেবে বিতরণ করা হয় এবং এতে একটি এমবেডেড প্রশাসনিক কনসোল রয়েছে।

পরিষেবাটি তিনটি লিসেনার প্রকাশ করে:

  • পোর্ট 8080-এ MCP প্লেন: এজেন্টদের কাছ থেকে MCP অনুরোধ গ্রহণ করে এবং অনুমোদিত অপারেশন নিবন্ধিত টুল সার্ভারগুলোতে ফরোয়ার্ড করে।
  • পোর্ট 8081-এ কন্ট্রোল প্লেন: REST API এবং প্রশাসনিক কনসোল হোস্ট করে।
  • পোর্ট 8082-এ LLM প্লেন: সমর্থিত LLM অনুরোধের প্রক্সি হিসেবে কাজ করে এবং ব্যবহারের তথ্য রেকর্ড করে।

PostgreSQL প্রয়োজন। Redis-সামঞ্জস্যপূর্ণ একটি সেশন স্টোর ঐচ্ছিক; এটি একাধিক রিপ্লিকা নিয়ে MCP প্লেন চালানোর সুবিধা দেয়। বান্ডেল করা ডিপ্লয়মেন্টগুলোতে Valkey ব্যবহার করা হয়। ClickHouse ঐচ্ছিক এবং অতিরিক্ত অ্যানালিটিক্স সুবিধা চালু করে।

প্রধান বৈশিষ্ট্য

  • প্রতিটি অনুরোধের জন্য প্রমাণীকরণ: গেটওয়ে-প্রদত্ত API কী একটি টেন্যান্ট ও ভূমিকার আওতায় সীমাবদ্ধ থাকে।
  • সুরক্ষিত কানেক্টর ক্রেডেনশিয়াল: ক্রেডেনশিয়ালগুলো একটি এনক্রিপ্ট করা সিক্রেট স্টোরে সংরক্ষিত হয় এবং কলকারীকে প্রকাশ না করে বহির্গামী MCP অনুরোধে যুক্ত করা হয়।
  • এজেন্টভিত্তিক টুল নীতি: প্রোফাইলের মাধ্যমে কোনো এজেন্ট কোন টুল ব্যবহার করতে পারবে তা সীমাবদ্ধ করা যায়। সীমাবদ্ধতাগুলো শুধু টুলের তালিকা প্রকাশের সময় নয়, tools/call চলাকালেও কার্যকর হয়।
  • প্রম্পট ও রিসোর্স: গেটওয়ে একটি শেয়ার করা নেমস্পেসের মাধ্যমে ব্যাকএন্ডের প্রম্পট ও রিসোর্স সরবরাহ করে এবং একই প্রোফাইল নীতি প্রয়োগ করে।
  • স্কিল ও কমান্ড: প্রোফাইলে পুনর্ব্যবহারযোগ্য রেফারেন্স টেক্সট ও প্রম্পট টেমপ্লেট যুক্ত করা যায়, যা নেটিভ MCP ব্যবস্থার মাধ্যমে প্রকাশিত হয়।
  • একাধিক প্রদানকারীর LLM প্রক্সি: LLM প্লেন Anthropic, Bedrock, OpenAI এবং Gemini সমর্থন করে এবং টোকেন ব্যবহার ও আনুমানিক খরচ সংগ্রহ করে।
  • কেন্দ্রীভূত পর্যবেক্ষণ: প্রয়োজনীয় স্টোরেজ চালু থাকলে কনসোল থেকে অ্যাক্সেস লগ, LLM লগ, সেশন টাইমলাইন এবং একটি অ্যানালিটিক্স ড্যাশবোর্ড দেখা যায়।
  • বহির্গামী অনুরোধ সুরক্ষা: সার্ভার-সাইড অনুরোধ জালিয়াতির ঝুঁকি কমাতে অভ্যন্তরীণ, লুপব্যাক, লিঙ্ক-লোকাল এবং অন্যান্য ব্যক্তিগত গন্তব্য ডিফল্টভাবে ব্লক করা হয়।

পূর্বশর্ত

Docker Compose ব্যবহার করাই দ্রুততম সেটআপ। শুরু করার আগে নিচের বিষয়গুলো ইনস্টল বা যাচাই করুন:

  • Compose প্লাগইনসহ Docker, যেমন Docker Desktop, Colima বা Docker Engine।
  • হেলথ চেকের জন্য curl এবং API রেসপন্স প্রক্রিয়াকরণের জন্য jq।
  • 8080, 8081 এবং 8082 পোর্টগুলো স্থানীয়ভাবে খালি থাকতে হবে।
  • অ্যানালিটিক্স প্রোফাইল ও তার Adminer পরিষেবা চালু করলে 8090 পোর্ট।
  • কমপক্ষে 4 GB খালি Docker সক্ষমতা, অথবা ClickHouse অ্যানালিটিক্স যুক্ত করলে 8 GB।

macOS এবং Linux সমর্থিত। Windows WSL2-এর মাধ্যমে ব্যবহার করা যায়, তবে এই পরিবেশটি বর্তমানে পরীক্ষিত নয়।

Docker-এর বাইরে বিল্ড করতে রিপোজিটরিতে Go 1.27, কনসোলের জন্য Node.js 26 এবং make প্রয়োজন। কিছু সম্পূর্ণ উদাহরণের জন্য অতিরিক্তভাবে npx, Python, kind, kubectl বা কোনো প্রদানকারীর API কী প্রয়োজন।

গেটওয়ে ইনস্টল ও চালু করুন

1. রিপোজিটরি ক্লোন করুন

git clone https://github.com/Tuskira/ai-agent-gateway.git
cd ai-agent-gateway

2. স্ট্যান্ডার্ড Compose স্ট্যাক চালু করুন

docker compose -f deploy/docker-compose.yml up --build -d

প্রথমবার চালু হতে কিছুটা সময় লাগতে পারে, কারণ Docker-কে প্রয়োজনীয় উপাদানগুলো বিল্ড বা ডাউনলোড করতে এবং ডেটাবেস初始化 করতে হয়।

3. কন্ট্রোল প্লেনের জন্য অপেক্ষা করুন

until curl -sf localhost:8081/api/v1/health >/dev/null; do sleep 1; done

কন্ট্রোল-প্লেনের হেলথ এন্ডপয়েন্ট সফলভাবে সাড়া না দেওয়া পর্যন্ত এই লুপ অপেক্ষা করে।

4. তিনটি প্লেনই পরীক্ষা করুন

curl localhost:8080/health
curl localhost:8081/api/v1/health
curl localhost:8082/health

সফল রেসপন্স নিশ্চিত করে যে MCP, কন্ট্রোল এবং LLM লিসেনারগুলো উপলভ্য।

প্রশাসনিক অ্যাক্সেস初始化 করুন

নতুন ডিপ্লয়মেন্টে কোনো কনসোল ব্যবহারকারী বা API কী থাকে না। ডিফল্ট টেন্যান্ট এবং একটি প্রশাসক API কী তৈরি করে শুরু করুন:

docker compose -f deploy/docker-compose.yml exec gateway /gateway bootstrap-key

কমান্ডটি API কীটি একবারই দেখায়। এটি নিরাপদে সংরক্ষণ করুন, কারণ শুরু করার কর্মপ্রবাহে কানেক্টর নিবন্ধন এবং প্রশাসনিক API অপারেশন সম্পাদনের জন্য এই কী ব্যবহার করা হয়।

এরপর প্রথম কনসোল ব্যবহারকারী তৈরি করুন:

docker compose -f deploy/docker-compose.yml exec gateway /gateway create-user -tenant default -username admin -role admin

এই কমান্ডটি একবার ব্যবহারযোগ্য অস্থায়ী পাসওয়ার্ড দেখায়। http://localhost:8081 খুলে admin হিসেবে সাইন ইন করুন এবং নির্দেশনা এলে অস্থায়ী পাসওয়ার্ড পরিবর্তন করুন।

প্রোগ্রামগুলোর সাধারণত API কী দিয়ে প্রমাণীকরণ করা উচিত। জরুরি বিকল্প হিসেবে কনসোলেও API কী গ্রহণ করা যায়।

মৌলিক ব্যবহার: একটি MCP সার্ভার যোগ ও কল করুন

গেটওয়ের পরিভাষায়, একটি MCP টুল সার্ভার API-তে connector এবং কনসোলে MCP হিসেবে পরিচিত। সাইন ইন করার পর প্রস্তুত MCP সার্ভারগুলোর তালিকা দেখতে MCPs → Catalog খুলুন।

প্রথমবার ব্যবহারের সাধারণ কর্মপ্রবাহ হলো:

  1. অ্যাডমিনিস্ট্রেটর API কী তৈরি করে সংরক্ষণ করুন।
  2. একটি MCP সার্ভারকে কানেক্টর হিসেবে নিবন্ধন করুন।
  3. কানেক্টরের প্রয়োজনীয় যেকোনো ক্রেডেনশিয়াল কনফিগার করুন।
  4. একটি এজেন্ট প্রোফাইল তৈরি করুন বা নির্বাচন করুন।
  5. ওই প্রোফাইলের জন্য কানেক্টরের টুলগুলো উপলভ্য করুন।
  6. পোর্ট 8080-এ গেটওয়ের MCP লিসেনারের মাধ্যমে অনুমোদিত একটি টুল কল করুন।
  7. অ্যাডমিনিস্ট্রেটিভ কনসোলে কলটি পরিদর্শন করুন।

রিপোজিটরিতে examples/01-quickstart-এর অধীনে একটি সম্পূর্ণ এক্সিকিউটেবল ওয়াকথ্রু রয়েছে। এটি স্ট্যাক চালু করে, তিনটি প্লেনই যাচাই করে, একটি অ্যাডমিনিস্ট্রেটর কী বুটস্ট্র্যাপ করে, একটি নমুনা MCP সার্ভার নিবন্ধন করে এবং তার একটি টুল কল করে। সঠিক কানেক্টর নিবন্ধন ও টুল-কল অনুরোধের জন্য শুরু করার গাইড অনুসরণ করুন।

বাহ্যিক ক্রেডেনশিয়াল প্রয়োজন হয় না এমন সব উদাহরণ চালাতে ব্যবহার করুন:

make examples-smoke

এজেন্ট প্রোফাইল কীভাবে অ্যাক্সেস নিয়ন্ত্রণ করে

প্রোফাইল একটি এজেন্টের জন্য উপলভ্য টুল, প্রম্পট, রিসোর্স, দক্ষতা এবং কমান্ড নির্ধারণ করে। কোনো এজেন্ট tools/call চালু করার সময় টুলের সীমাবদ্ধতা যাচাই করা হয়, তাই tools/list থেকে কোনো টুল লুকিয়ে রাখাই একমাত্র প্রয়োগব্যবস্থা নয়।

আরও শক্তিশালী নীতি প্রয়োগের জন্য একটি API কীকে একটি প্রোফাইলের সঙ্গে যুক্ত করুন। কোনো সংযোগ না থাকলে কলকারী X-Agent-Profile-Name হেডারের মাধ্যমে পছন্দের প্রোফাইল শনাক্ত করতে পারে। কী-টু-প্রোফাইল সংযোগ কলকারীকে ইচ্ছামতো অন্য প্রোফাইল নির্বাচন করা থেকে বিরত রাখে।

একাধিক MCP সার্ভার প্রম্পট বা রিসোর্স প্রকাশ করলে গেটওয়ে সেগুলো একটি সাধারণ নেমস্পেসে রাখে। প্রম্পটের সঙ্গে তাদের কানেক্টরের নাম যুক্ত করা হয়, আর রিসোর্সে গেটওয়ে-পরিচালিত URI ব্যবহার করা হয়। একই প্রোফাইল নিয়ম নির্ধারণ করে কোনো এজেন্ট কোন এন্ট্রিগুলো অ্যাক্সেস করতে পারবে।

LLM প্রক্সি ব্যবহার করুন

LLM প্লেন সমর্থিত মডেল প্রদানকারীদের জন্য একটি কেন্দ্রীভূত রুট সরবরাহ করে: Anthropic, AWS Bedrock, OpenAI এবং Gemini। এর ফলে এজেন্ট অ্যাপ্লিকেশনগুলো টুলের জন্য ব্যবহৃত একই নিয়ন্ত্রিত সারফেসের মাধ্যমে মডেল ট্রাফিক পাঠাতে পারে।

প্রতিটি প্রক্সিড কলের জন্য গেটওয়ে টোকেন ব্যবহার রেকর্ড করতে এবং খরচের আনুমানিক হিসাব করতে পারে। প্রদানকারী সেটআপ, নিজস্ব কী ব্যবহারের কনফিগারেশন, Bedrock ক্রেডেনশিয়াল মোড, রুট, ক্যাপচার সেটিংস এবং খরচের আচরণ LLM প্লেন গাইডে নথিভুক্ত রয়েছে।

ক্লায়েন্ট কনফিগার করার আগে লিসেনার যাচাই করতে হেলথ এন্ডপয়েন্ট ব্যবহার করুন:

curl localhost:8082/health

অ্যানালিটিক্স সক্রিয় করুন

স্ট্যান্ডার্ড ডিপ্লয়মেন্ট ClickHouse ছাড়াই LLM লগ সমর্থন করে। Overview ড্যাশবোর্ড, Access Logs, Session Timeline এবং ClickHouse-নির্ভর অ্যানালিটিক্স যোগ করতে analytics প্রোফাইলসহ Compose চালু করুন:

GATEWAY_SINKS_CLICKHOUSE_ENABLED=true docker compose -f deploy/docker-compose.yml --profile analytics up --build -d

এই কনফিগারেশনের জন্য বেশি স্থানীয় রিসোর্স প্রয়োজন এবং এটি পোর্ট 8090 ব্যবহার করতে পারে।

সংবেদনশীল অনুরোধের বডি সুরক্ষিত করুন

ডেমোনস্ট্রেশন স্ট্যাক PostgreSQL-এ LLM অনুরোধ ও প্রতিক্রিয়ার বডি সংরক্ষণ করে, প্রতিটির সীমা 1 MiB। অ্যানালিটিক্স প্রোফাইলের সঙ্গে এটি LLM এবং MCP অনুরোধ ও প্রতিক্রিয়ার বডিও ClickHouse-এ সংরক্ষণ করে, যাতে সেগুলো কনসোলে প্রদর্শন করা যায়। এসব বডি কনটেইনার লগে প্রিন্ট করা হয় না।

প্রম্পট, মডেলের প্রতিক্রিয়া বা টুলের পেলোডে সংবেদনশীল তথ্য থাকতে পারে হলে সম্পূর্ণরূপে বডি সংরক্ষণ বন্ধ করুন:

GATEWAY_LLM_PROXY_CAPTURE_STORE_BODIES=false GATEWAY_CAPTURE_STORE_BODIES=false docker compose -f deploy/docker-compose.yml up --build -d

প্রোডাকশন ডেটার সঙ্গে ক্যাপচার ফিচার ব্যবহারের আগে অবজার্ভেবিলিটি ডকুমেন্টেশন পর্যালোচনা করুন।

স্থানীয় বা ব্যক্তিগত MCP সার্ভারে নিরাপদে সংযোগ করুন

গেটওয়ে ডিফল্টভাবে লুপব্যাক, ব্যক্তিগত, লিংক-লোকাল এবং অন্যান্য অভ্যন্তরীণ গন্তব্য ব্লক করে। এটি ক্লাউড মেটাডেটা ঠিকানা 169.254.169.254-ও স্থায়ীভাবে ব্লক করে। এই নীতি কোনো কানেক্টর, ক্যাটালগ এন্ট্রি বা মডেল টার্গেটকে নীরবে হোস্ট বা নেটওয়ার্কের সংবেদনশীল পরিষেবায় পৌঁছানো থেকে বিরত রাখে।

কোনো হোস্টনেম তৈরি করার সময় সেটি যদি কেবল ব্লক করা ঠিকানায় রেজলভ হয়, গেটওয়ে 400 egress_blocked ত্রুটিসহ সেটি প্রত্যাখ্যান করে। কোনো হোস্টনেম তখনও রেজলভ না হলে সেটি গ্রহণ করা হতে পারে, তবে গেটওয়ে সংযোগের চেষ্টা করার সময় আবার যাচাই করবে।

বাইনারি সরাসরি চালানো

make run দিয়ে চালানোর সময় একই মেশিনে MCP সার্ভার চললে স্পষ্টভাবে লুপব্যাকের অনুমতি দিন:

GATEWAY_EGRESS_ALLOWED_CIDRS=127.0.0.0/8,::1/128 make run

সরবরাহ করা Compose স্ট্যাক ব্যবহার

অন্তর্ভুক্ত Compose কনফিগারেশন ইতিমধ্যেই host.docker.internal এবং লুপব্যাক CIDR-এর অনুমতি দেয়। তাই আপনার ল্যাপটপে চলমান সার্ভারকে host.docker.internal-এর মাধ্যমে নির্দেশ করা যায়। প্রয়োজন না থাকলে শেয়ার করা পরিবেশে এই অনুমতিগুলো সরিয়ে দিন।

Kubernetes বা ব্যক্তিগত নেটওয়ার্ক ব্যবহার

ইন-ক্লাস্টার Kubernetes সার্ভিসের জন্য শুধু যে DNS নামটি কল করা হচ্ছে সেটির অনুমতি দিন, যেমন:

GATEWAY_EGRESS_ALLOWED_HOSTS=my-mcp-server.my-ns.svc

বিকল্পভাবে সংশ্লিষ্ট pod বা service CIDR-এর অনুমতি দিতে পারেন। শুধু VPN বা ব্যক্তিগত নেটওয়ার্কে থাকা সার্ভারের জন্য প্রতিটি ব্যক্তিগত ঠিকানা রেঞ্জ সক্রিয় না করে নির্দিষ্ট হোস্টনেম বা সংকীর্ণ CIDR যোগ করুন।

বহির্মুখী অ্যালাউলিস্ট যতটা সম্ভব সংকীর্ণ রাখুন। প্রাথমিক পরীক্ষা সহজ করার জন্য সুরক্ষা বন্ধ করবেন না।

উন্নত অপারেশনাল পরামর্শ

  • মানব ব্যবহারকারী ও প্রোগ্রামগত অ্যাক্সেস আলাদা রাখুন: প্রশাসকদের জন্য কনসোল অ্যাকাউন্ট এবং এজেন্ট ও অটোমেশনের জন্য গেটওয়ে-প্রদত্ত API কী ব্যবহার করুন।
  • কীগুলো প্রোফাইলের সঙ্গে যুক্ত করুন: অনুরোধের হেডার ব্যবহার করে কলকারীদের প্রোফাইল বেছে নেওয়ার সুযোগ দেওয়ার চেয়ে প্রোফাইল-সংযুক্ত কী আরও শক্তিশালী নিশ্চয়তা দেয়।
  • গেটওয়েতে ক্রেডেনশিয়াল রাখুন: কানেক্টরের ক্রেডেনশিয়াল কেন্দ্রীয়ভাবে কনফিগার করুন, যাতে এজেন্টরা মূল গোপন তথ্য না পায়।
  • কানেক্টরের ক্রেডেনশিয়াল ঘুরিয়ে দিন: প্রতিটি এজেন্ট আলাদাভাবে আপডেট করার পরিবর্তে কানেক্টর ও ক্রেডেনশিয়াল ব্যবস্থাপনা সুবিধা ব্যবহার করুন।
  • ডেটা ধারণ নিয়ন্ত্রণ করুন: গোপনীয় প্রম্পট বা টুলের ফলাফল প্রক্রিয়া করার আগে অনুরোধ ও প্রতিক্রিয়ার বডি সংরক্ষণ করা হবে কি না তা নির্ধারণ করুন।
  • একাধিক রেপ্লিকার জন্য পরিকল্পনা করুন: MCP প্লেনকে একটির বেশি রেপ্লিকায় স্কেল করার সময় ঐচ্ছিক Redis-protocol সেশন স্টোর কনফিগার করুন।
  • সংকীর্ণ egress নিয়ম ব্যবহার করুন: বিস্তৃত প্রাইভেট রেঞ্জের পরিবর্তে পৃথক হোস্ট বা CIDR অনুমোদন করুন।
  • পরীক্ষিত উদাহরণগুলো দেখুন: পৃথক উদাহরণগুলো অতিরিক্ত পরিস্থিতি কভার করে এবং নিজস্ব README ফাইলে প্রয়োজনীয় টুল বা ভেন্ডর কী তালিকাভুক্ত করে।
  • পরিবর্তনের জন্য প্রস্তুত থাকুন: প্রকল্পটি 1.0-এর আগের আলফা সফটওয়্যার, তাই মাইনর সংস্করণগুলোর মধ্যে API ও কনফিগারেশন পরিবর্তিত হতে পারে।

Docker-এর বাইরে বিল্ড করা

স্থানীয় ডেভেলপমেন্টের জন্য Go 1.27, Node.js 26 এবং make ইনস্টল করুন। রিপোজিটরিতে make build এবং make run ওয়ার্কফ্লো রয়েছে। ঐচ্ছিক ডেভেলপমেন্ট ও রিলিজ টুলের মধ্যে রয়েছে golangci-lint, govulncheck এবং goreleaser।

ডেভেলপমেন্টের নিয়ম, টেস্ট কমান্ড, pull request নির্দেশিকা এবং স্টোর, sink ও provider-এর এক্সটেনশন পয়েন্টের জন্য contributing guide দেখুন।

উপসংহার

AI Agent Gateway প্রমাণীকৃত endpoint-এর আড়ালে MCP টুল এবং একাধিক LLM provider-এ অ্যাক্সেস কেন্দ্রীভূত করে। এর প্রোফাইল প্রয়োগ, ক্রেডেনশিয়াল ইনজেকশন, বহির্গামী নেটওয়ার্ক নিয়ন্ত্রণ এবং অবজারভেবিলিটি সুবিধা পৃথক এজেন্ট কনফিগারেশন থেকে নীতি ও গোপন তথ্য দূরে রাখতে সহায়তা করে।

Docker Compose quickstart দিয়ে শুরু করুন, তৈরি হওয়া administrator key সংরক্ষণ করুন, একটি console user তৈরি করুন এবং প্রথম connector workflow সম্পন্ন করুন। এরপর প্রোফাইল-সংযুক্ত API key যোগ করুন, provider access কনফিগার করুন, উপযুক্ত body-capture policy বেছে নিন এবং অতিরিক্ত দৃশ্যমানতার প্রয়োজন হলেই ClickHouse analytics সক্রিয় করুন।