১. এই কোডল্যাব সম্পর্কে
সর্বশেষ হালনাগাদ: ২০২৪-১০-১১
লিখেছেন: লরি হোয়াইট
চিত্র তৈরি
সত্যি বলতে, লার্জ ল্যাঙ্গুয়েজ মডেল (এলএলএম) দিয়ে ছবি তৈরি করাটা বেশ মজার হতে পারে। অবশ্যই, কোনো প্রম্পট থেকে ছবি তৈরির অনেক ব্যবসায়িক প্রয়োগ রয়েছে, যেমন কাস্টমাইজড বিজ্ঞাপন থেকে শুরু করে আকর্ষণীয় প্রেজেন্টেশন পর্যন্ত। ( গুগল ক্লাউড ওয়েবসাইটে ক্রিয়েটিভ এজেন্ট ব্যবহারকারী সংস্থাগুলোর জন্য এর অনেক নির্দিষ্ট ব্যবহারের কথা বলা আছে।) তবুও, যখন আপনি "মাঠে সুখী সবুজ কুকুর"-এর মতো একটি ছবি চান, তখন কী ফলাফল আসে তা দেখাটা বেশ মজাদার হতে পারে।
আপনি পেশাগত বা বিনোদনমূলক কারণে (কিংবা উভয় কারণেই!) ছবি তৈরিতে আগ্রহী হোন না কেন, একটি ইমেজ জেনারেশন প্রোগ্রাম ব্যবহার করা এবং সেটিকে একটি ওয়েব অ্যাপ্লিকেশনে প্রয়োগ করার মধ্যে কিছু প্রতিবন্ধকতা রয়েছে। এই ল্যাবটি আপনাকে সেই প্রতিবন্ধকতাগুলো কাটিয়ে উঠতে সাহায্য করবে।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি এমন একটি অ্যাপ তৈরি করবেন যা একটি টেক্সট প্রম্পট গ্রহণ করবে এবং সেই প্রম্পট ব্যবহার করে তৈরি করা একটি ছবিসহ একটি ওয়েব পেজ ফেরত দেবে।
আপনি যা শিখবেন
এই ল্যাবে আপনি শিখবেন:
- নোটবুক পরিবেশে টেক্সট প্রম্পট থেকে ছবি তৈরি করতে কীভাবে গুগল ইমেজ ব্যবহার করবেন
- নোটবুক থেকে ওয়েব অ্যাপে Imagen কোড স্থানান্তরের অসুবিধাগুলো
- Imagen ব্যবহার করে ছবি তৈরি করে এমন একটি Cloud Run অ্যাপ্লিকেশন কীভাবে ডেপ্লয় করবেন
- HTML-এ Imagen থেকে কীভাবে একটি ছবি অন্তর্ভুক্ত করবেন
এই কোডল্যাবটি ইমেজেন এবং ডিপ্লয়মেন্টের উপর কেন্দ্র করে তৈরি। অপ্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলো সংক্ষেপে আলোচনা করা হয়েছে এবং এগুলো শুধু কপি-পেস্ট করার জন্য দেওয়া হয়েছে।
আপনার যা যা লাগবে
- ক্রোম ব্রাউজারের একটি সাম্প্রতিক সংস্করণ।
- ক্লাউড রান সম্পর্কে কিছু ধারণা থাকা প্রয়োজন। আপনি এখান থেকে তুলনামূলকভাবে ছোট কোডল্যাবটি থেকে তা অর্জন করতে পারেন।
- ক্লাউড শেল অথবা ক্লাউড শেল এডিটর-এ ফাইল সম্পাদনা করার অভিজ্ঞতা থাকতে হবে। আপনি এই কোডল্যাব থেকে ক্লাউড শেল এবং ক্লাউড শেল এডিটর সম্পর্কে আরও জানতে পারবেন।
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট। এই নির্দেশিকাটি আপনাকে দেখাবে কীভাবে একটি প্রজেক্ট তৈরি করতে হয় । এখানে ফ্রি টিয়ার এবং ফ্রি ট্রায়াল সহ অসংখ্য প্রোডাক্ট উপলব্ধ রয়েছে।
এই কোডল্যাবের সম্পূর্ণ কোড https://github.com/Annie29/imagen-deployment -এ পাওয়া যাবে।
২. এপিআই সক্রিয় করুন
এই কোডল্যাবের জন্য একটি প্রজেক্ট বেছে নিন। কাজ শেষ হলে আপনার সমস্ত কাজ মুছে ফেলা সহজ করার জন্য আপনি একটি নতুন প্রজেক্ট তৈরি করতে পারেন।
Imagen ব্যবহার শুরু করার আগে, আপনাকে কিছু API সক্রিয় করতে হবে।
- গুগল ক্লাউড কনসোলে যান।
- ভার্টেক্স এআই ড্যাশবোর্ডে যান।
- 'সকল প্রস্তাবিত এপিআই সক্ষম করুন' নির্বাচন করুন

৩. গুগল ইমেজ অন্বেষণ (ঐচ্ছিক)
আপনি যদি Imagen-এর সাথে পরিচিত হন, তাহলে এই অংশটি বাদ দিতে পারেন।
Imagen ব্যবহার করে একটি ওয়েব অ্যাপ তৈরি করার চেষ্টা করার আগে, Imagen কী করতে পারে তা দেখে নেওয়া দরকারি। সৌভাগ্যবশত, এমন বেশ কিছু নোটবুক রয়েছে যেগুলোতে সাধারণ Imagen কোড চালানো যায়, তাই চলুন সেগুলোর একটি দিয়ে শুরু করা যাক।
- https://github.com/GoogleCloudPlatform/generative-ai/blob/main/vision/getting-started/image_generation.ipynb -এ অবস্থিত নোটবুকটিতে যান।
- নোটবুকটি গুগলের নোটবুক সার্ভারে খোলার জন্য ‘Open in Colab’ নির্বাচন করুন।
- এই নোটবুকটির নিজস্ব একটি অনুলিপি তৈরি করতে, 'ফাইল -> ড্রাইভে একটি অনুলিপি সংরক্ষণ করুন' নির্বাচন করুন অথবা পৃষ্ঠার শীর্ষে থাকা 'ড্রাইভে অনুলিপি করুন'-এ ক্লিক করুন।
- মূল কপিটি বন্ধ করুন (যাতে ভুল কপিতে কাজ করা এড়ানো যায়!)।
- উপরের ডানদিকে থাকা 'কানেক্ট' বোতামে ক্লিক করে আপনাকে রানটাইমের সাথে সংযোগ করতে হবে।

- নোটবুকের প্রতিটি ঘরে কাজ করা শুরু করুন।
- একটি সেল রান করতে, আপনি সেলটির বাম দিকের [] বা অ্যারোতে ক্লিক করতে পারেন অথবা রানটাইম মেনু থেকে রান সিলেকশন অপশনটি (বা এর শর্টকাট) ব্যবহার করতে পারেন:

- আপনি যখন বর্তমান রানটাইমটি পুনরায় চালু করবেন, তখন একটি বার্তা পাবেন যে আপনার সিস্টেম ক্র্যাশ করেছে। আতঙ্কিত হবেন না। এটি স্বাভাবিক।
- আপনাকে আপনার নোটবুক পরিবেশটি প্রমাণীকরণ করতে হবে।
- আপনি কোডের ডানদিকের বক্সগুলোতে আপনার প্রজেক্ট আইডি (নাম নয়) এবং লোকেশন (লোকেশন সেট না করে থাকলে us-central1 লিখলেও চলবে) প্রবেশ করাতে পারেন এবং কোলাব আপনার হয়ে সেগুলো কোডে যোগ করে দেবে।
- যখন আপনি "Generate an image" ধাপে পৌঁছাবেন, তখন Imagen কী করতে পারে তা দেখার সুযোগ পাবেন। আপনি নির্দ্বিধায় প্রম্পটটি পরিবর্তন করে সেলটি পুনরায় রান করতে পারেন এবং এর মাধ্যমে বিভিন্ন ধরণের ছবি দেখতে পারেন।
- এই পর্যায়ে Imagen কীভাবে একটি নোটবুক থেকে ছবি তৈরি করতে পারে সে সম্পর্কে আপনার একটি ভালো ধারণা হয়ে যাওয়ার কথা। ছবির প্যারামিটার সম্পর্কে আরও জানতে এখনই অথবা আপনার সুবিধামতো সময়ে এই নোটবুকটি সম্পূর্ণ করতে পারেন।
৪. একটি ছবি দেখানোর জন্য একটি ওয়েব অ্যাপ্লিকেশন তৈরি করা শুরু করুন।
আমরা ক্লাউড রানে ফ্লাস্ক ফ্রেমওয়ার্ক ব্যবহার করে পাইথনের সাহায্যে আমাদের অ্যাপটি তৈরি করব।
পাইথন ফ্লাস্ক অ্যাপগুলো একটি ফোল্ডারে নিম্নোক্তভাবে সেট আপ করা হয়:
app-folder
templates
template.html
(etc.)
anothertemplate.html
main.py
requirements.txt
টেমপ্লেট হলো HTML ধারণকারী ফাইল, যেখানে সাধারণত নামযুক্ত প্লেসহোল্ডার থাকে এবং প্রোগ্রামটি সেখানে তৈরি করা টেক্সট প্রবেশ করায়। main.py হলো মূল ওয়েব সার্ভার অ্যাপ, এবং requirements.txt হলো main.py ব্যবহৃত সমস্ত নন-স্ট্যান্ডার্ড লাইব্রেরির একটি তালিকা।
অ্যাপ্লিকেশনটিতে দুটি পৃষ্ঠা থাকবে—প্রথমটি একটি প্রম্পট পাওয়ার জন্য এবং দ্বিতীয়টি ছবিটি প্রদর্শন করার পাশাপাশি ব্যবহারকারীকে আরেকটি প্রম্পট প্রবেশ করানোর সুযোগ দেবে।
প্রথমে প্রকল্পের কাঠামো তৈরি করুন।
ফাইল কাঠামো তৈরি করা
এই কোডল্যাবটি ধরে নেয় যে আপনার প্রজেক্টটি imageapp ফোল্ডারে রয়েছে। আপনি যদি ভিন্ন কোনো নাম ব্যবহার করেন, তবে প্রয়োজন অনুযায়ী কমান্ডগুলো আপডেট করে নিতে ভুলবেন না।
স্ক্রিনের উপরের ডানদিকে থাকা প্রম্পট আইকনটি নির্বাচন করে ক্লাউড শেল-এ প্রবেশ করুন।

শেল উইন্ডোর উপরের তীর চিহ্নটি ব্যবহার করে শেলটিকে একটি নতুন ট্যাবে সরিয়ে নিলে আপনি কাজ করার জন্য আরও জায়গা পেতে পারেন:

ক্লাউড শেল-এ আপনার হোম ডিরেক্টরি থেকে imageapp ফোল্ডারটি তৈরি করুন, সেটিতে প্রবেশ করুন এবং templates ফোল্ডারগুলো তৈরি করুন। আপনি এই কাজটি কমান্ড লাইন অথবা ক্লাউড শেল এডিটর থেকে করতে পারেন।
টেমপ্লেটগুলো তৈরি করুন
অ্যাপ্লিকেশনটিতে দুটি পৃষ্ঠা থাকবে—প্রথমটি (যার নাম আমরা দেব home.html ) একটি প্রম্পট পাওয়ার জন্য এবং দ্বিতীয়টি (যার নাম আমরা দেব display.html ) ছবিটি প্রদর্শন করার জন্য ও ব্যবহারকারীকে আরেকটি প্রম্পট প্রবেশ করানোর সুযোগ দেওয়ার জন্য।
আপনার পছন্দের ক্লাউড শেল এডিটর বা লিনাক্স এডিটর ব্যবহার করে দুটি টেমপ্লেট তৈরি করুন। imageapp/templates ফোল্ডার থেকে, ব্যবহারকারী প্রথমে যে পৃষ্ঠাটি দেখবে, home.html তৈরি করুন। ব্যবহারকারীর দেওয়া বিবরণটি ফেরত পাঠানোর জন্য এটি prompt ভেরিয়েবলটি ব্যবহার করে।
টেমপ্লেট/হোম.html
<!DOCTYPE html>
<html>
<head>
<title>Let's draw a picture</title>
</head>
<body>
<h1>Let's draw a picture</h1>
<form action="/" method="post" >
<input type="text" id="prompt" name="prompt">
<input type="submit" value="Send">
</form>
</body>
</html>
এরপর display.html তৈরি করুন, যেটি ছবিটি প্রদর্শন করবে। লক্ষ্য করুন যে, ছবিটির অবস্থান image_url এ থাকবে।
টেমপ্লেট/ডিসপ্লে.এইচটিএমএল
<!DOCTYPE html>
<html>
<head>
<title>Let's draw a picture</title>
</head>
<body>
<h1>Let's draw a picture</h1>
<div>
<form action="/" method="post" >
<input type="text" id="prompt" name="prompt">
<input type="submit" value="Send">
</form>
<p></p>
</div>
<div id="picture">
<img id="pict" name="pict" alt="The created image" src="{{image_uri}}" style="width:100%;">
</div>
</body>
</html>
৫. কোড শুরু করা
আপনার প্রোগ্রামের প্রয়োজনীয় সমস্ত লাইব্রেরি যাতে উপলব্ধ থাকে, তা নিশ্চিত করতে আপনাকে requirements.txt ফাইলটি তৈরি করতে হবে। আপাতত, requirements.txt ফাইলে শুধু flask অন্তর্ভুক্ত করুন।
main.py ফাইলে ওয়েব রিকোয়েস্টগুলো পরিচালনা করার কোড রয়েছে। আমাদের কেবল দুটি রিকোয়েস্ট হ্যান্ডেল করতে হবে: হোম পেজের জন্য একটি GET রিকোয়েস্ট, এবং আমরা যে ছবিটি তৈরি করতে চাই তার বিবরণসহ ফর্মটি সাবমিট করার জন্য একটি POST রিকোয়েস্ট।
ক্লাউড শেল এডিটর অথবা আপনার পছন্দের লিনাক্স এডিটর ব্যবহার করে imageapp ফোল্ডারে main.py ফাইলটি তৈরি করুন। আমরা নিচের কাঠামোটি দিয়ে শুরু করব:
main.py
import flask
app = flask.Flask(__name__)
@app.route("/", methods=["GET"])
def home_page():
return flask.render_template("home.html")
@app.route("/", methods=["POST"])
def display_image():
# Code to get the prompt (called prompt) from the submitted form
# Code to generate the image
# Code to create a URL for the image (called image_url)
return flask.render_template("display.html", prompt=prompt, image_url=image_url)
# Initialize the web server app when the code locally (Cloud Run handles it in that environment)
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=8080)
আসলে, এটাই প্রায় পুরো অ্যাপ। display_image এর মধ্যে তিনটি কমেন্ট আছে যেগুলোকে পাইথন কোড দিয়ে বিস্তারিত করতে হবে, আর তাতেই কাজ শেষ।
চলুন, অনুপস্থিত অংশগুলো পূরণ করা শুরু করা যাক। ফ্লাস্ক প্রম্পট খুঁজে বের করা সহজ করে তোলে। নিচে দেখানো অনুযায়ী কমেন্টের পরে একটি লাইন যোগ করুন:
# Code to get the prompt (called prompt) from the submitted form
prompt = flask.request.form["prompt"]
আপনি যদি এখন অ্যাপটি পরীক্ষা করতে চান, তাহলে display_image এর return স্টেটমেন্টের আগে একটি লাইন যোগ করে image_url কে একটি ভ্যালু (একটি বৈধ URL যা একটি ছবিকে নির্দেশ করে) দিতে পারেন।
উদাহরণস্বরূপ: image_url="<your url here>"
আপনি ক্লাউড শেল থেকে ( python main.py কমান্ডটি ব্যবহার করে) প্রোগ্রামটি স্থানীয়ভাবে চালাতে পারেন এবং আপনার স্ক্রিনের উপরের ডানদিকে থাকা ৮০৮০ পোর্টের প্রিভিউ ব্যবহার করে এটির প্রিভিউ দেখতে পারেন।

প্রোগ্রামটি এখন যেমন আছে, তাতে আপনি আপনার দেওয়া URL-এ ছবিটি সবসময় দেখতে পাবেন। চলুন এবার দেখি অ্যাপ থেকে সেই মানটি কীভাবে পাওয়া যায়। image_url একটি স্থির মান দেওয়া লাইনটি অবশ্যই মুছে ফেলবেন।
৬. ছবিটি তৈরি করা
গুগল ক্লাউডের ভার্টেক্স এআই (Vertex AI)-তে জেনারেটিভ এআই (Generative AI) -এর জন্য একটি পাইথন এপিআই (Python API) রয়েছে। এটি ব্যবহার করার জন্য, আমাদের প্রোগ্রামের উপরের দিকে অন্যান্য ইম্পোর্টগুলোর সাথে এটিকে ইম্পোর্ট করে একটি লাইন যোগ করতে হবে:
from vertexai.vision_models import ImageGenerationModel
এবং requirements.txt ফাইলে vertexai অন্তর্ভুক্ত করুন।
ImageGenerationModel-এর ডকুমেন্টেশনে দেখানো হয়েছে এটি কীভাবে ব্যবহার করতে হয়। আমরা একটি মডেল তৈরি করব এবং তারপর একটি প্রম্পট পেলে তা থেকে একটি ইমেজ জেনারেট করব। দ্বিতীয় ধাপের জন্য, অর্থাৎ ইমেজটি তৈরি করে response সংরক্ষণ করার জন্য, main.py তে কোড যোগ করুন:
# Code to generate the image
model = ImageGenerationModel.from_pretrained("imagegeneration@006")
response = model.generate_images(prompt=prompt)[0]
generate_images এ পাঠানো প্যারামিটারের উপর নির্ভর করে একবারে সর্বোচ্চ ৪টি ছবি তৈরি করা যেতে পারে, তাই ফেরত আসা মানটি GeneratedImage এর একটি তালিকা হবে, এমনকি যদি কেবল একটি ছবিই ফেরত আসে, যেমনটি এই ক্ষেত্রে এসেছে।
এখন আমাদের একটি WWW পেজে ছবিটি প্রদর্শন করতে হবে। GeneratedImage এ ছবিটি show জন্য একটি মেথড আছে, কিন্তু সেটি শুধু নোটবুক পরিবেশে কাজ করে। তবে ছবিটি সংরক্ষণ করার জন্য একটি মেথড রয়েছে। আমরা ছবিটি সংরক্ষণ করব এবং টেমপ্লেটটি রেন্ডার করার সময় সংরক্ষিত ছবিটির URL পাঠিয়ে দেব।
এটা একটু জটিল এবং এটি করার অনেক উপায় আছে। চলুন, সহজ পদ্ধতিগুলোর মধ্যে একটি ধাপে ধাপে দেখে নেওয়া যাক। (আর আপনি যদি দেখে শিখতে বেশি পছন্দ করেন, তাহলে নিচে ধাপগুলোর একটি ছবিও দেওয়া আছে।)
প্রথমে আমাদের ছবিটি সংরক্ষণ করতে হবে। কিন্তু এটির নাম কী হবে? একটি নির্দিষ্ট নাম ব্যবহার করলে সমস্যা হতে পারে, কারণ প্রোগ্রামটি একই সময়ে অনেকে ব্যবহার করতে পারে। যদিও আমরা প্রতিটি ব্যবহারকারীর জন্য আলাদা ছবির নাম তৈরি করতে পারি (যেমন UUID ব্যবহার করে), একটি সহজ উপায় হলো পাইথনের tempfile ) লাইব্রেরি ব্যবহার করা, যা একটি অনন্য নামসহ একটি অস্থায়ী ফাইল তৈরি করবে। নিচের কোডটি একটি টেম্পফাইল তৈরি করবে, এর নাম নেবে এবং ছবি তৈরির ধাপের ফলাফলটি টেম্পফাইলে লিখবে। আমরা এখনই এটি আমাদের কোডে যুক্ত করব না, কারণ আমাদের প্রথমে একটি URL পেতে হবে।
with tempfile.NamedTemporaryFile("wb") as f:
filename = f.name
response.save(filename, include_generation_parameters=False)
# process the saved file here, before it goes away
সংরক্ষিত ফাইলটি প্রসেস করার বেশ কয়েকটি উপায় আছে, কিন্তু সবচেয়ে সহজ ও নিরাপদ উপায়গুলোর মধ্যে একটি হলো ডেটা ইউআরএল (data URL) ব্যবহার করা।
ডেটা ইউআরএল-এর মাধ্যমে শুধু ডেটার পাথ নয়, বরং সরাসরি ডেটাও ইউআরএল-এ পাঠানো যায়। ডেটা ইউআরএল-এর সিনট্যাক্স হলো:
data:[image/png][;base64],<data>
ছবিটির বেস৬৪ এনকোডিং পেতে, আমাদের tempfile দ্বারা সংরক্ষিত ফাইলটি খুলতে হবে এবং সেটিকে একটি ভেরিয়েবলে পড়তে হবে। হ্যাঁ, এটি একটি বড় স্ট্রিং হবে, কিন্তু আধুনিক ব্রাউজার এবং সার্ভারগুলোর জন্য তাতে কোনো সমস্যা হওয়ার কথা নয়। এরপর আমরা base64 লাইব্রেরি ব্যবহার করে সেটিকে এমন একটি স্ট্রিং-এ এনকোড করব যা আমরা ডেটা ইউআরএল-এ পাঠাতে পারব।
তৃতীয় ধাপটি (ইউআরএল তৈরি করা) সম্পন্ন করার জন্য আমাদের চূড়ান্ত কোডটি হবে:
# Code to create a URL for the image (called image_url)
with tempfile.NamedTemporaryFile("wb") as f:
filename = f.name
response.save(filename, include_generation_parameters=False)
# process the saved file here, before it goes away
with open(filename, "rb") as image_file:
binary_image = image_file.read()
base64_image = base64.b64encode(binary_image).decode("utf-8")
image_url = f"data:image/png;base64,{base64_image}"
আপনি নীচের ছবিতে এই সমস্ত ধাপগুলি দেখতে পারেন:

আপনার প্রোগ্রামের শুরুতে tempfile এবং base64 ইম্পোর্ট করতে হবে।
import tempfile
import base64
আপনার প্রোগ্রামটি ক্লাউড শেল থেকে চালানোর চেষ্টা করতে, নিশ্চিত হন যে আপনি main.py ফাইলটি থাকা ফোল্ডারে আছেন এবং নিম্নলিখিত কমান্ডটি চালান:
python main.py
এরপর আপনি আপনার স্ক্রিনের উপরের ডানদিকে থাকা ৮০৮০ পোর্টের প্রিভিউ ব্যবহার করে এটি দেখতে পারবেন।

৭. একটি সাধারণ ভুল
কোনো এক সময়ে, আপনি হয়তো লক্ষ্য করবেন যে প্রোগ্রামটি চালানোর সময় (পরীক্ষা করার সময় বা এটি স্থাপন করার পরে), আপনি নিম্নলিখিতের মতো একটি বার্তা পাচ্ছেন:

সম্ভবত এমন কোনো প্রম্পটের কারণে এটি হচ্ছে যা গুগলের দায়িত্বশীল এআই নীতিমালা লঙ্ঘন করে। ‘রঙিন বল নিয়ে খেলছে বিড়ালছানা’-র মতো একটি সাধারণ প্রম্পটও এই সমস্যাটি তৈরি করতে পারে। (তবে ভয়ের কিছু নেই, আপনি ‘রঙিন খেলনা নিয়ে খেলছে বিড়ালছানা’-র ছবিও পেতে পারেন ।)
এই ত্রুটিটি মোকাবেলা করার জন্য, আমরা ইমেজ জেনারেট করার চেষ্টার সময় সৃষ্ট এক্সেপশনটি ধরার জন্য কোড যোগ করব। যদি এমন কোনো এক্সেপশন ঘটে, তাহলে আমরা একটি বার্তা প্রদর্শনসহ home.html টেমপ্লেটটি পুনরায় রেন্ডার করব।
প্রথমে, home.html টেমপ্লেটে প্রথম ফর্মটির পরে একটি div যোগ করা যাক, যেটি কোনো ত্রুটি হলে প্রদর্শিত হবে:
<!DOCTYPE html>
<html>
<head>
<title>Let's draw a picture</title>
</head>
<body>
<h1>Let's draw a picture</h1>
<form action="/" method="post" >
<input type="text" id="prompt" name="prompt">
<input type="submit" value="Send">
</form>
{% if mistake %}
<div id="warning">
The prompt contains sensitive words that violate
<a href=\"https://ai.google/responsibility/responsible-ai-practices\">
Google's Responsible AI practices</a>.
Try rephrasing the prompt."</div>
{% endif %}
</body>
</html>
এরপর, main.py ফাইলে এমন কোড যোগ করুন যা display_image মধ্যে generate_images কোড কল করার সময় কোনো সম্ভাব্য এক্সেপশন ঘটলে তা ক্যাচ করবে। যদি কোনো এক্সেপশন ঘটে, তাহলে কোডটি একটি মেসেজসহ home.html টেমপ্লেটটি রেন্ডার করবে।
# Code to generate the image
model = ImageGenerationModel.from_pretrained("imagegeneration@006")
try:
response = model.generate_images(prompt=prompt)[0]
except:
# This is probably due to a questionable prompt
return flask.render_template("home.html", warning=True)
এটিই Imagen-এর একমাত্র দায়িত্বশীল এআই বৈশিষ্ট্য নয়। এতে এমন অনেক বৈশিষ্ট্য রয়েছে যা মানুষ ও শিশুদের প্রজন্মকে সুরক্ষিত রাখে এবং ছবিগুলোর উপর সাধারণ ফিল্টারও রয়েছে। আপনি এই সম্পর্কে আরও জানতে এখানে দেখতে পারেন।
৮. ওয়েবে অ্যাপটি স্থাপন করা
আপনি ক্লাউড শেলের imageapp ফোল্ডার থেকে কমান্ড ব্যবহার করে অ্যাপটি ওয়েবে ডেপ্লয় করতে পারেন। কমান্ডে আপনার আসল প্রজেক্ট আইডি ব্যবহার করতে ভুলবেন না।
gcloud run deploy imageapp \
--source . \
--region us-central1 \
--allow-unauthenticated \
--project your-project-id
আপনি নিচের মতো একটি উত্তর দেখতে পাবেন, যেখানে আপনার অ্যাপ্লিকেশনটি কোথায় পাবেন তা জানানো থাকবে:
Service [imageapp] revision [imageapp-00001-t48] has been deployed and is serving 100 percent of traffic. Service URL: https://imageapp-708208532564.us-central1.run.app```
৯. পরিষ্কার করা
পরিষেবাটি ব্যবহার না করা হলে ক্লাউড রান কোনো চার্জ না করলেও, আর্টিফ্যাক্ট রেজিস্ট্রি-তে কন্টেইনার ইমেজ সংরক্ষণের জন্য আপনাকে চার্জ করা হতে পারে। চার্জ এড়ানোর জন্য আপনি আপনার রিপোজিটরি অথবা ক্লাউড প্রজেক্ট ডিলিট করতে পারেন। আপনার ক্লাউড প্রজেক্ট ডিলিট করলে সেই প্রজেক্টের মধ্যে ব্যবহৃত সমস্ত রিসোর্সের জন্য বিলিং বন্ধ হয়ে যায়।
আপনার কন্টেইনার ইমেজ রিপোজিটরি মুছে ফেলতে:
gcloud artifacts repositories delete cloud-run-source-deploy \ --location $REGION
আপনার ক্লাউড রান পরিষেবা মুছে ফেলতে:
gcloud run services delete imageapp \ --platform managed \ --region $REGION
আপনার গুগল ক্লাউড প্রজেক্টটি ডিলিট করতে:
- আপনার বর্তমান প্রজেক্ট আইডি পুনরুদ্ধার করুন:
PROJECT_ID=$(gcloud config get-value core/project)
- নিশ্চিত করুন যে এটিই সেই প্রজেক্ট যা আপনি মুছে ফেলতে চান:
echo $PROJECT_ID
- প্রকল্পটি মুছে ফেলুন:
gcloud projects delete $PROJECT_ID
১০. অভিনন্দন
অভিনন্দন, আপনি Imagen দ্বারা তৈরি ছবি প্রদর্শন করার জন্য একটি ওয়েব অ্যাপ্লিকেশন সফলভাবে তৈরি করেছেন। আপনি আপনার অ্যাপ্লিকেশনে এটি কীভাবে ব্যবহার করতে পারেন?
এরপর কী?
এই কোডল্যাবগুলো দেখে নিন...
- GenAI - কীওয়ার্ড থেকে ছবি তৈরি
- স্প্যানার এবং ভার্টেক্স এআই ইমেজেন এপিআই ব্যবহার করে জেনারেটিভ এআই-তে ডেটা