১. সংক্ষিপ্ত বিবরণ
এই কোডল্যাব সিরিজটির (স্ব-গতিতে শেখার উপযোগী, হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হলো ডেভেলপারদের তাদের অ্যাপ্লিকেশন ডেপ্লয় করার সময় উপলব্ধ বিভিন্ন বিকল্পগুলো বুঝতে সাহায্য করা। এই কোডল্যাবে, আপনি শিখবেন কীভাবে পাইথনের সাথে গুগল ক্লাউড ট্রান্সলেশন এপিআই ব্যবহার করতে হয় এবং এটিকে স্থানীয়ভাবে রান করতে বা কোনো ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে (অ্যাপ ইঞ্জিন, ক্লাউড ফাংশনস, বা ক্লাউড রান) ডেপ্লয় করতে হয়। এই টিউটোরিয়ালের রেপোতে থাকা নমুনা অ্যাপটি শুধুমাত্র সামান্য কনফিগারেশন পরিবর্তনের মাধ্যমে (অন্তত) আটটি ভিন্ন উপায়ে ডেপ্লয় করা যেতে পারে:
- স্থানীয় ফ্লাস্ক সার্ভার (পাইথন ২)
- স্থানীয় ফ্লাস্ক সার্ভার (পাইথন ৩)
- অ্যাপ ইঞ্জিন (পাইথন ২)
- অ্যাপ ইঞ্জিন (পাইথন ৩)
- ক্লাউড ফাংশন (পাইথন ৩)
- ক্লাউড রান (ডকারের মাধ্যমে পাইথন ২)
- ক্লাউড রান (ডকারের মাধ্যমে পাইথন ৩)
- ক্লাউড রান (ক্লাউড বিল্ডপ্যাকের মাধ্যমে পাইথন ৩)
এই কোডল্যাবটি উপরে বোল্ড করা প্ল্যাটফর্ম(গুলি)তে এই অ্যাপটি ডেপ্লয় করার উপর আলোকপাত করে।
আপনি শিখবেন কিভাবে
- Google Cloud API ব্যবহার করুন, বিশেষ করে Cloud Translation API (advanced/v3)।
- স্থানীয়ভাবে একটি সাধারণ ওয়েব অ্যাপ্লিকেশন চালান অথবা ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে স্থাপন করুন।
আপনার যা যা লাগবে
- একটি সক্রিয় ক্লাউড বিলিং অ্যাকাউন্ট সহ একটি গুগল ক্লাউড প্রজেক্ট
- স্থানীয়ভাবে চালানোর জন্য ফ্লাস্ক ইনস্টল করা আছে, অথবা ক্লাউড-ভিত্তিক স্থাপনার জন্য একটি ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্ম সক্রিয় করা আছে।
- পাইথনের প্রাথমিক দক্ষতা
- অপারেটিং সিস্টেমের মৌলিক কমান্ড সম্পর্কে কার্যকরী জ্ঞান
জরিপ
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না, এবং আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করার পর পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়। - তৃতীয় আরেকটি ভ্যালু আছে, যা হলো প্রজেক্ট নম্বর এবং কিছু এপিআই এটি ব্যবহার করে। এই তিনটি ভ্যালু সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে কোডল্যাবের শেষে দেওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
৩. অনুবাদ এপিআই সক্রিয় করুন
ক্লাউড এপিআই সক্ষম করা
এই অংশে, আপনি সাধারণভাবে গুগল এপিআই (Google APIs) কীভাবে সক্রিয় করতে হয় তা শিখবেন। আমাদের নমুনা অ্যাপটির জন্য, আপনাকে ক্লাউড ট্রান্সলেশন এপিআই (Cloud Translation API) , ক্লাউড রান (Cloud Run) , এবং ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি (Cloud Artifact Registry ) সক্রিয় করতে হবে।
ভূমিকা
আপনি আপনার অ্যাপ্লিকেশনে যে গুগল এপিআই-ই ব্যবহার করতে চান না কেন, সেগুলোকে অবশ্যই সক্রিয় করতে হবে। নিচের উদাহরণটিতে ক্লাউড ভিশন এপিআই সক্রিয় করার দুটি উপায় দেখানো হয়েছে। একটি ক্লাউড এপিআই কীভাবে সক্রিয় করতে হয় তা শেখার পর, আপনি অন্যান্য এপিআই-গুলোও সক্রিয় করতে পারবেন, কারণ প্রক্রিয়াটি একই রকম।
বিকল্প ১: ক্লাউড শেল বা আপনার কমান্ড-লাইন ইন্টারফেস থেকে
যদিও ক্লাউড কনসোল থেকে এপিআই (API) সক্রিয় করা বেশি প্রচলিত, কিছু ডেভেলপার কমান্ড লাইন থেকে সবকিছু করতে পছন্দ করেন। এটি করার জন্য, আপনাকে একটি এপিআই-এর "সার্ভিস নেম" খুঁজে বের করতে হবে। এটি একটি ইউআরএল (URL)-এর মতো দেখতে: SERVICE_NAME । আপনি এগুলো সাপোর্টেড প্রোডাক্টস চার্টে খুঁজে পেতে পারেন, অথবা গুগল ডিসকভারি এপিআই (Google Discovery API) .googleapis.com করে প্রোগ্রাম্যাটিকভাবে এগুলোর জন্য কোয়েরি করতে পারেন।
এই তথ্যের সাহায্যে, ক্লাউড শেল (অথবা আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে যেখানে gcloud কমান্ড-লাইন টুল ইনস্টল করা আছে ) ব্যবহার করে, আপনি নিম্নলিখিতভাবে একটি API সক্রিয় করতে পারেন:
gcloud services enable SERVICE_NAME.googleapis.com
উদাহরণস্বরূপ, এই কমান্ডটি ক্লাউড ভিশন এপিআই সক্রিয় করে:
gcloud services enable vision.googleapis.com
এই কমান্ডটি অ্যাপ ইঞ্জিন সক্রিয় করে:
gcloud services enable appengine.googleapis.com
আপনি একটি অনুরোধের মাধ্যমে একাধিক API সক্রিয় করতে পারেন। উদাহরণস্বরূপ, এই কমান্ড লাইনটি ক্লাউড রান, ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড ট্রান্সলেশন API সক্রিয় করে:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
বিকল্প ২: ক্লাউড কনসোল থেকে
আপনি এপিআই ম্যানেজার-এও ভিশন এপিআই সক্রিয় করতে পারেন। ক্লাউড কনসোল থেকে, এপিআই ম্যানেজার- এ যান এবং লাইব্রেরি নির্বাচন করুন।

আপনি যদি ক্লাউড ভিশন এপিআই (Cloud Vision API) সক্রিয় করতে চান, তাহলে সার্চ বারে 'vision' টাইপ করা শুরু করুন, এবং আপনি এখন পর্যন্ত যা লিখেছেন তার সাথে মেলে এমন যেকোনো কিছু প্রদর্শিত হবে:

আপনি যে API-টি সক্রিয় করতে চান তা নির্বাচন করুন এবং 'সক্রিয় করুন' বোতামে ক্লিক করুন।

খরচ
যদিও অনেক গুগল এপিআই বিনামূল্যে ব্যবহার করা যায়, গুগল ক্লাউড প্রোডাক্ট ও এপিআই-এর ব্যবহার বিনামূল্যে নয় । ক্লাউড এপিআই সক্রিয় করার সময়, আপনার কাছে একটি সক্রিয় বিলিং অ্যাকাউন্ট চাওয়া হতে পারে। তবে, এটি মনে রাখা গুরুত্বপূর্ণ যে কিছু গুগল ক্লাউড প্রোডাক্টে একটি "সর্বদা বিনামূল্যে" স্তর (দৈনিক/মাসিক) রয়েছে, যা অতিক্রম করলেই বিলিং চার্জ প্রযোজ্য হবে; অন্যথায়, আপনার ক্রেডিট কার্ড (বা নির্দিষ্ট বিলিং মাধ্যম) থেকে কোনো চার্জ কাটা হবে না।
যেকোনো এপিআই (API) চালু করার আগে ব্যবহারকারীদের এর মূল্য সংক্রান্ত তথ্য দেখে নেওয়া উচিত, বিশেষ করে এটির কোনো ফ্রি টিয়ার (free tier) আছে কিনা এবং থাকলে, সেটি কী তা লক্ষ্য করা উচিত। আপনি যদি ক্লাউড ভিশন এপিআই (Cloud Vision API) চালু করেন, তাহলে আপনাকে এর মূল্য সংক্রান্ত তথ্যের পেজটি দেখতে হবে। ক্লাউড ভিশনের একটি ফ্রি কোটা (free quota) আছে, এবং যতক্ষণ আপনি সামগ্রিকভাবে (প্রতি মাসে) এর সীমার মধ্যে থাকবেন, ততক্ষণ আপনার কোনো চার্জ লাগার কথা নয়।
গুগল এপিআই ভেদে মূল্য এবং বিনামূল্যের স্তর ভিন্ন হয়ে থাকে। উদাহরণস্বরূপ:
- গুগল ক্লাউড/জিসিপি — প্রতিটি পণ্যের বিলিং পদ্ধতি ভিন্ন এবং সাধারণত প্রতি vCPU সাইকেল, স্টোরেজ ব্যবহার, মেমরি ব্যবহার বা ব্যবহারের ভিত্তিতে অর্থ প্রদান করতে হয়; উপরের ফ্রি টিয়ার সম্পর্কিত তথ্য দেখুন।
- গুগল ম্যাপস — এতে রয়েছে একাধিক এপিআই এবং এটি ব্যবহারকারীদের প্রতি মাসে মোট ২০০ মার্কিন ডলারের বিনামূল্যে ক্রেডিট প্রদান করে।
- গুগল ওয়ার্কস্পেস (পূর্বের নাম জি স্যুট) এপিআই — ওয়ার্কস্পেসের মাসিক সাবস্ক্রিপশন ফি- এর আওতায় একটি নির্দিষ্ট সীমা পর্যন্ত বিনামূল্যে ব্যবহারের সুযোগ দেয়, তাই জিমেইল, গুগল ড্রাইভ, ক্যালেন্ডার, ডকস, শিটস এবং স্লাইডস এপিআই ব্যবহারের জন্য সরাসরি কোনো বিলিং করা হয় না।
গুগলের বিভিন্ন পণ্যের বিলিং পদ্ধতি ভিন্ন, তাই এই তথ্যের জন্য আপনার এপিআই (API)-এর ডকুমেন্টেশন দেখে নিতে ভুলবেন না।
সারসংক্ষেপ
এখন যেহেতু আপনি জানেন কিভাবে সাধারণভাবে গুগল এপিআই (Google APIs) চালু করতে হয়, তাই এপিআই ম্যানেজারে (API Manager) যান এবং ক্লাউড ট্রান্সলেশন এপিআই (Cloud Translation API), ক্লাউড রান (Cloud Run), এবং ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি (Cloud Artifact Registry) চালু করুন (যদি আগে থেকে করা না থাকে)। আপনাকে প্রথমটি চালু করতে হবে কারণ আমাদের অ্যাপ্লিকেশনটি এটি ব্যবহার করে। আপনাকে দ্বিতীয়টি চালু করতে হবে কারণ আপনার ক্লাউড রান পরিষেবা (Cloud Run service) শুরু করার জন্য ডেপ্লয় (deploy) করার আগে আমাদের কন্টেইনার ইমেজগুলো সেখানেই সংরক্ষিত থাকে, আর একারণেই আপনাকে সেটি চালু করতে হবে। আপনি যদি gcloud টুল দিয়ে সবগুলো একসাথে চালু করতে চান, তাহলে আপনার টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি দিন:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
যদিও এর মাসিক কোটা সামগ্রিক "সর্বদা বিনামূল্যে" স্তরের সারাংশ পৃষ্ঠায় তালিকাভুক্ত নয়, অনুবাদ এপিআই-এর মূল্য নির্ধারণ পৃষ্ঠায় বলা হয়েছে যে সমস্ত ব্যবহারকারী প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অনূদিত অক্ষর পান। আপনি যদি সেই সীমার নিচে থাকেন, তাহলে এপিআই-এর জন্য আপনার কোনো চার্জ লাগার কথা নয়। যদি গুগল ক্লাউড সম্পর্কিত অন্য কোনো চার্জ থাকে, তবে সেগুলি শেষে "পরিষ্কারকরণ" বিভাগে আলোচনা করা হবে।
৪. নমুনা অ্যাপ কোডটি সংগ্রহ করুন।
রিপো থেকে কোডটি আপনার কম্পিউটারে অথবা ক্লাউড শেলে ( git clone কমান্ড ব্যবহার করে) ক্লোন করুন, অথবা নিচের স্ক্রিনশটে দেখানো অনুযায়ী এর সবুজ 'Code' বাটন থেকে ZIP ফাইলটি ডাউনলোড করুন:

এখন যেহেতু আপনার কাছে সবকিছু আছে, এই নির্দিষ্ট টিউটোরিয়ালটি করার জন্য ফোল্ডারটির একটি সম্পূর্ণ কপি তৈরি করুন, কারণ এতে সম্ভবত ফাইল ডিলিট বা পরিবর্তন করার প্রয়োজন হবে। আপনি যদি অন্য কোনো ডেপ্লয়মেন্ট করতে চান, তাহলে আসল ফাইলটি কপি করে আবার নতুন করে শুরু করতে পারেন, যাতে আপনাকে এটি পুনরায় ক্লোন বা ডাউনলোড করতে না হয়।
৫. নমুনা অ্যাপের পরিভ্রমণ
নমুনা অ্যাপটি গুগল ট্রান্সলেটের একটি সাধারণ সংস্করণ, যা ব্যবহারকারীদের ইংরেজিতে টেক্সট লিখতে বলে এবং সেই টেক্সটের সমতুল্য স্প্যানিশ অনুবাদ প্রদান করে। এখন main.py ফাইলটি খুলুন, যাতে আমরা দেখতে পারি এটি কীভাবে কাজ করে। লাইসেন্সিং সম্পর্কিত কমেন্ট করা লাইনগুলো বাদ দিলে, এর উপরের এবং নিচের অংশটি দেখতে এইরকম:
from flask import Flask, render_template, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
# . . . [translate() function definition] . . .
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
- এই ইম্পোর্টগুলোর মাধ্যমে ফ্লাস্কের কার্যকারিতা,
google.authমডিউল এবং ক্লাউড ট্রান্সলেশন এপিআই ক্লায়েন্ট লাইব্রেরি যুক্ত হয়। - গ্লোবাল ভেরিয়েবলগুলো ফ্লাস্ক অ্যাপ, ক্লাউড প্রজেক্ট আইডি, ট্রান্সলেশন এপিআই ক্লায়েন্ট, ট্রান্সলেশন এপিআই কলের জন্য প্যারেন্ট "লোকেশন পাথ" এবং সোর্স ও টার্গেট ল্যাঙ্গুয়েজকে নির্দেশ করে। এক্ষেত্রে, এগুলো হলো ইংরেজি (
en) এবং স্প্যানিশ (es), কিন্তু ক্লাউড ট্রান্সলেশন এপিআই দ্বারা সমর্থিত অন্যান্য ল্যাঙ্গুয়েজ কোডে এই মানগুলো পরিবর্তন করতে পারেন। - নিচের বড়
ifব্লকটি এই অ্যাপটি স্থানীয়ভাবে চালানোর টিউটোরিয়ালে ব্যবহৃত হয় — এটি আমাদের অ্যাপটি পরিবেশন করার জন্য ফ্লাস্ক ডেভেলপমেন্ট সার্ভার ব্যবহার করে। ক্লাউড রান ডেপ্লয়মেন্ট টিউটোরিয়ালের জন্যও এই অংশটি রয়েছে, যদি ওয়েব সার্ভারটি কন্টেইনারের সাথে বান্ডল করা না থাকে। আপনাকে কন্টেইনারে সার্ভার বান্ডলিং সক্ষম করতে বলা হয়, কিন্তু যদি আপনি এটি উপেক্ষা করেন, তাহলে অ্যাপ কোডটি ফ্লাস্ক ডেভেলপমেন্ট সার্ভার ব্যবহার করার জন্য ফলব্যাক করে। (এটি অ্যাপ ইঞ্জিন বা ক্লাউড ফাংশনের কোনো সমস্যা নয়, কারণ সেগুলো সোর্স-ভিত্তিক প্ল্যাটফর্ম, অর্থাৎ গুগল ক্লাউড একটি ডিফল্ট ওয়েব সার্ভার সরবরাহ করে এবং চালায়।)
অবশেষে, main.py ফাইলের মাঝখানে রয়েছে অ্যাপ্লিকেশনটির মূল অংশ, translate() ফাংশনটি:
@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
"""
main handler - show form and possibly previous translation
"""
# Flask Request object passed in for Cloud Functions
# (use gcf_request for GCF but flask.request otherwise)
local_request = gcf_request if gcf_request else request
# reset all variables (GET)
text = translated = None
# if there is data to process (POST)
if local_request.method == 'POST':
text = local_request.form['text']
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context & render template
context = {
'orig': {'text': text, 'lc': SOURCE},
'trans': {'text': translated, 'lc': TARGET},
}
return render_template('index.html', **context)
মূল ফাংশনটি ব্যবহারকারীর ইনপুট গ্রহণ করে এবং বাকি জটিল কাজগুলো করার জন্য ট্রান্সলেশন এপিআই-কে কল করে। চলুন বিষয়টি ভেঙে দেখি:
-
local_requestভেরিয়েবলটি ব্যবহার করে দেখুন অনুরোধগুলি ক্লাউড ফাংশন থেকে আসছে কিনা। ক্লাউড ফাংশন তার নিজস্ব ফ্লাস্ক রিকোয়েস্ট অবজেক্ট পাঠায়, যেখানে অন্য সবাই (যারা স্থানীয়ভাবে চলছে অথবা অ্যাপ ইঞ্জিন বা ক্লাউড রানে ডেপ্লয় করছে) সরাসরি ফ্লাস্ক থেকে রিকোয়েস্ট অবজেক্টটি পায়। - ফর্মের মৌলিক ভেরিয়েবলগুলো রিসেট করুন। এটি মূলত GET রিকোয়েস্টের জন্য, কারণ POST রিকোয়েস্টের ডেটা এগুলোকে প্রতিস্থাপন করে।
- যদি এটি একটি POST অনুরোধ হয়, তাহলে অনুবাদ করার জন্য টেক্সটটি নিন এবং API মেটাডেটার প্রয়োজনীয়তা প্রতিনিধিত্বকারী একটি JSON কাঠামো তৈরি করুন। এরপর API-টি কল করুন; যদি ব্যবহারকারী কোনো পুরোনো লাইব্রেরি ব্যবহার করেন, তবে API-এর পূর্ববর্তী সংস্করণে ফিরে যান।
- যাই হোক না কেন, প্রকৃত ফলাফল (POST) অথবা কোনো ডেটা না থাকা (GET) অবস্থাকে টেমপ্লেট কনটেক্সটে ফরম্যাট করুন এবং রেন্ডার করুন।
অ্যাপ্লিকেশনটির ভিজ্যুয়াল অংশটি টেমপ্লেট index.html ফাইলে রয়েছে। এটি পূর্বে অনুবাদ করা ফলাফলগুলো দেখায় (অন্যথায় ফাঁকা থাকে) এবং তারপরে অনুবাদ করার জন্য কিছু জানতে চেয়ে একটি ফর্ম আসে:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
৬. পাইথন ৩ ইমেজ বিল্ড করার জন্য ডকারকে সেট করুন।
এখন Dockerfile ফাইলটি খুলুন, যা লাইসেন্সের তথ্য ছাড়া দেখতে এইরকম:
#FROM python:3-slim
FROM python:2-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]
আপনি দেখতেই পাচ্ছেন, ডিফল্টভাবে এটি পাইথন ২-এর জন্য সেটআপ করা আছে। তাই, হয় FROM লাইনটি python:2-slim থেকে python:3-slim এ এডিট করে অথবা উপরের লাইনটি আনকমেন্ট করে পুরোনো FROM লাইনটি ডিলিট করে এটি পরিবর্তন করুন। কাজ শেষ হলে Dockerfile টি দেখতে এইরকম হবে:
FROM python:3-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]
৭. পরিষেবাটি স্থাপন করুন
এখন এই কমান্ডটি চালিয়ে আপনি আপনার অনুবাদ পরিষেবাটি ক্লাউড রান-এ স্থাপন করতে প্রস্তুত:
gcloud run deploy translate --source . --allow-unauthenticated --platform managed
আউটপুটটি নিম্নরূপ হওয়া উচিত এবং পরবর্তী পদক্ষেপের জন্য কিছু নির্দেশনা প্রদান করবে:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
এখন যেহেতু আপনার অ্যাপটি বিশ্বজুড়ে উপলব্ধ, তাই ডিপ্লয়মেন্ট আউটপুটে দেখানো অনুযায়ী আপনার প্রজেক্ট আইডি সম্বলিত URL-টিতে আপনি এটি অ্যাক্সেস করতে পারবেন:

কোনো কিছু অনুবাদ করে দেখুন তা কীভাবে কাজ করে!

৮. উপসংহার
অভিনন্দন! আপনি শিখেছেন কীভাবে ক্লাউড ট্রান্সলেশন এপিআই সক্রিয় করতে হয়, প্রয়োজনীয় ক্রেডেনশিয়াল সংগ্রহ করতে হয় এবং পাইথন ৩ ক্লাউড রান-এ একটি সাধারণ ওয়েব অ্যাপ ডেপ্লয় করতে হয়!
পরিষ্কার করা
ক্লাউড ট্রান্সলেশন এপিআই আপনাকে প্রতি মাসে একটি নির্দিষ্ট পরিমাণ অক্ষর বিনামূল্যে অনুবাদ করার সুযোগ দেয়। অ্যাপ ইঞ্জিনেরও একটি বিনামূল্যের কোটা আছে, এবং ক্লাউড ফাংশন ও ক্লাউড রানের ক্ষেত্রেও একই নিয়ম প্রযোজ্য। এই কোটা অতিক্রম করলে আপনাকে চার্জ দিতে হবে। আপনি যদি পরবর্তী কোডল্যাবে যেতে চান, তবে আপনার অ্যাপটি বন্ধ করার প্রয়োজন নেই।
তবে, আপনি যদি এখনও পরবর্তী টিউটোরিয়ালে যাওয়ার জন্য প্রস্তুত না হন অথবা আপনার সদ্য ডেপ্লয় করা অ্যাপটি ইন্টারনেট খুঁজে পাবে বলে চিন্তিত হন, তাহলে চার্জ এড়ানোর জন্য আপনার App Engine অ্যাপটি নিষ্ক্রিয় করুন , আপনার Cloud Function মুছে ফেলুন , অথবা আপনার Cloud Run পরিষেবাটি নিষ্ক্রিয় করুন । যখন আপনি পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হবেন, তখন আপনি এটি পুনরায় সক্রিয় করতে পারবেন। অন্যদিকে, আপনি যদি এই অ্যাপ্লিকেশন বা অন্যান্য কোডল্যাব নিয়ে আর কাজ চালিয়ে যেতে না চান এবং সবকিছু পুরোপুরি মুছে ফেলতে চান, তাহলে আপনি আপনার প্রজেক্টটি শাট ডাউন করতে পারেন।
এছাড়াও, গুগল ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে ডেপ্লয় করার জন্য সামান্য বিল্ড এবং স্টোরেজ খরচ হয়। ক্লাউড বিল্ড এবং ক্লাউড স্টোরেজ উভয়েরই নিজস্ব ফ্রি কোটা রয়েছে। অধিক স্বচ্ছতার জন্য, ক্লাউড বিল্ড আপনার অ্যাপ্লিকেশন ইমেজ তৈরি করে, যা পরবর্তীতে ক্লাউড কন্টেইনার রেজিস্ট্রি অথবা এর পরবর্তী সংস্করণ আর্টিফ্যাক্ট রেজিস্ট্রি- তে সংরক্ষণ করা হয়। সেই ইমেজটি সংরক্ষণ করতে এবং সার্ভিসে স্থানান্তরের সময় নেটওয়ার্ক ইগ্রেসের জন্য কোটার কিছু অংশ ব্যবহৃত হয়। তবে, আপনি এমন কোনো অঞ্চলে থাকতে পারেন যেখানে এই ধরনের কোনো ফ্রি টিয়ার নেই, তাই সম্ভাব্য খরচ কমাতে আপনার স্টোরেজ ব্যবহারের বিষয়ে সচেতন থাকুন।
৯. অতিরিক্ত সম্পদ
পরবর্তী বিভাগগুলিতে, এই টিউটোরিয়ালটি সম্পন্ন করে অর্জিত জ্ঞানকে আরও সমৃদ্ধ করার জন্য প্রস্তাবিত অনুশীলনী খুঁজে পাবেন।
অতিরিক্ত অধ্যয়ন
এখন যেহেতু ট্রান্সলেশন এপিআই (Translation API) নিয়ে আপনার কিছুটা অভিজ্ঞতা হয়েছে, চলুন আপনার দক্ষতা আরও বাড়ানোর জন্য কিছু অতিরিক্ত অনুশীলন করা যাক। আপনার শেখার পথ অব্যাহত রাখতে, আমাদের নমুনা অ্যাপটিকে নিম্নলিখিত কাজগুলো করার জন্য পরিবর্তন করুন:
- স্থানীয়ভাবে চালানোর জন্য অথবা গুগল ক্লাউড সার্ভারলেস কম্পিউট প্ল্যাটফর্মে স্থাপন করার জন্য এই কোডল্যাবের বাকি সমস্ত সংস্করণ সম্পূর্ণ করুন ( রিপো README দেখুন)।
- অন্য একটি প্রোগ্রামিং ভাষা ব্যবহার করে এই টিউটোরিয়ালটি সম্পূর্ণ করুন।
- বিভিন্ন উৎস বা লক্ষ্য ভাষা সমর্থন করার জন্য এই অ্যাপ্লিকেশনটি পরিবর্তন করুন।
- একাধিক ভাষায় পাঠ্য অনুবাদ করতে সক্ষম হওয়ার জন্য এই অ্যাপ্লিকেশনটি আপগ্রেড করুন; সমর্থিত লক্ষ্য ভাষাগুলোর একটি পুলডাউন তালিকা যুক্ত করতে টেমপ্লেট ফাইলটি পরিবর্তন করুন।
আরও জানুন
গুগল অ্যাপ ইঞ্জিন
- অ্যাপ ইঞ্জিন হোম পেজ
- অ্যাপ ইঞ্জিন ডকুমেন্টেশন
- পাইথন ৩ অ্যাপ ইঞ্জিন কুইকস্টার্ট
- অ্যাপ ইঞ্জিনের জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট
- পাইথন ২ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইম
- পাইথন ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইম
- পাইথন ২ এবং ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) রানটাইমের মধ্যে পার্থক্য
- পাইথন ২ থেকে ৩ অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) মাইগ্রেশন গাইড
গুগল ক্লাউড ফাংশন
- ক্লাউড ফাংশন হোম পেজ
- ক্লাউড ফাংশন ডকুমেন্টেশন
- পাইথন ক্লাউড ফাংশন কুইকস্টার্ট
- ক্লাউড ফাংশনের জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট
গুগল ক্লাউড রান
- ক্লাউড রান হোম পেজ
- ক্লাউড রান ডকুমেন্টেশন
- পাইথন ক্লাউড রান কুইকস্টার্ট
- ক্লাউড রানের জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট
গুগল ক্লাউড বিল্ডপ্যাকস, কন্টেইনার রেজিস্ট্রি, আর্টিফ্যাক্ট রেজিস্ট্রি
- ক্লাউড বিল্ডপ্যাক ঘোষণা
- ক্লাউড বিল্ডপ্যাকস রিপো
- ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি হোম পেজ
- ক্লাউড আর্টিফ্যাক্ট রেজিস্ট্রি ডকুমেন্টেশন
- ক্লাউড কন্টেইনার রেজিস্ট্রি হোম পেজ
- ক্লাউড কন্টেইনার রেজিস্ট্রি ডকুমেন্টেশন
গুগল ক্লাউড ট্রান্সলেশন এবং গুগল এমএল কিট
- ক্লাউড ট্রান্সলেশন হোম পেজ
- ক্লাউড অনুবাদ ডকুমেন্টেশন
- অনুবাদ এপিআই মূল্য নির্ধারণ পৃষ্ঠা
- সমস্ত ক্লাউড এআই/এমএল "বিল্ডিং ব্লক" এপিআই
- গুগল এমএল কিট (মোবাইলের জন্য ক্লাউড এআই/এমএল এপিআই-এর একটি উপসেট)
- গুগল এমএল কিট অনুবাদ এপিআই
অন্যান্য গুগল ক্লাউড পণ্য/পৃষ্ঠা
- গুগল ক্লাউড পাইথন সমর্থন
- গুগল ক্লাউড ক্লায়েন্ট লাইব্রেরি
- গুগল ক্লাউড "সর্বদা বিনামূল্যে" স্তর
- গুগল ক্লাউডের সমস্ত ডকুমেন্টেশন
পাইথন এবং ফ্লাস্ক
লাইসেন্স
এই টিউটোরিয়ালটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত, অপরদিকে রিপোজিটরিতে থাকা সোর্স কোডটি অ্যাপাচি ২ লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।