ক্লাউড রানে ল্যাংচেইন এজেন্ট স্থাপন করুন

১. সংক্ষিপ্ত বিবরণ

এজেন্ট হলো একটি স্বায়ত্তশাসিত প্রোগ্রাম যা তার কাছে থাকা সরঞ্জাম ও প্রেক্ষাপট ব্যবহার করে একটি লক্ষ্য-ভিত্তিক কাজ সম্পাদন করার জন্য একটি এআই মডেলের সাথে যোগাযোগ করে এবং সত্যের উপর ভিত্তি করে স্বায়ত্তশাসিত সিদ্ধান্ত নিতে সক্ষম।

এজেন্ট ডেভেলপমেন্ট কিট (ADK), ল্যাংচেইন, স্মোলাজেন্টস-এর মতো এজেন্ট ফ্রেমওয়ার্কগুলো এজেন্ট তৈরি করতে ব্যবহৃত হয়। এই ধরনের ফ্রেমওয়ার্কের মাধ্যমে তৈরি এজেন্ট অ্যাপ্লিকেশনগুলো ক্লাউড রান-এ ডেপ্লয় করা যায় এবং সার্ভারলেস অ্যাপ্লিকেশন হিসেবে ব্যবহারকারীদের জন্য উপলব্ধ করা যায়।

এই কোডল্যাবে আমরা LangChain ব্যবহার করে একটি এজেন্ট তৈরি করব এবং সেটিকে Cloud Run-এ ডেপ্লয় করব।

আপনি যা তৈরি করবেন

প্রোটোটাইপ প্রম্পট থেকে এজেন্ট তৈরিতে এগিয়ে যেতে প্রস্তুত??? আমরা ল্যাংচেইন (LangChain) ব্যবহার করে একটি এজেন্ট তৈরি করব যা ঐতিহাসিক ব্যক্তিত্বদের সম্পর্কে একটি কাঠামোগত বিন্যাসে তথ্য সংগ্রহ করবে। এই ল্যাবের অংশ হিসেবে, আপনি যা যা করবেন:

  1. LangChain ব্যবহার করে ঐতিহাসিক ব্যক্তিত্ব সম্পর্কে তথ্য একটি কাঠামোগত বিন্যাসে তৈরি করার জন্য একটি সহজ এজেন্ট তৈরি করুন।
  2. এজেন্টটি স্থানীয়ভাবে চালান এবং নিশ্চিত করুন যে এটি প্রত্যাশিতভাবে কাজ করছে।
  3. এজেন্টটিকে ক্লাউড রান-এ স্থাপন করুন এবং ক্লাউড রান ইউআরএল ব্যবহার করে এটিকে চালু করুন।

প্রয়োজনীয়তা

২. শুরু করার আগে

একটি প্রকল্প তৈরি করুন

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. এই লিঙ্কে ক্লিক করে ক্লাউড শেল সক্রিয় করুন। ক্লাউড শেল থেকে সংশ্লিষ্ট বোতামে ক্লিক করে আপনি ক্লাউড শেল টার্মিনাল (ক্লাউড কমান্ড চালানোর জন্য) এবং এডিটর (প্রজেক্ট তৈরির জন্য) এর মধ্যে পরিবর্তন করতে পারবেন।
  4. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
  1. আপনার পাইথন ৩.১৩ বা তার পরবর্তী সংস্করণ থাকা নিশ্চিত করুন।

অন্যান্য gcloud কমান্ড এবং তাদের ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।

৩. ল্যাংচেইন এজেন্ট তৈরি করা

প্রকল্পের কাঠামো

আপনার ক্লাউড শেলে, langchain-app নামে একটি ফোল্ডার তৈরি করুন এবং এর ভিতরে নিম্নলিখিত ফাইলগুলি যুক্ত করুন:

langchain-gemini-fastapi-app/
├── main.py
├── requirements.txt

অ্যাপ্লিকেশন কোড

নিম্নলিখিত নির্ভরতাগুলি আপনাকে requirements.txt ফাইলে যোগ করতে হবে:

fastapi
uvicorn
langchain
langchain-google-genai
python-dotenv

main.py ফাইলে আমরা এজেন্ট কোড লিখব, যা জেমিনি মডেল ব্যবহার করে ঐতিহাসিক ব্যক্তিত্বের তথ্য সংগ্রহ করে। তথ্য সংগ্রহ করার পর, নির্দেশনা অনুযায়ী সেটিকে একটি কাঠামোগত বিন্যাসে সাজিয়ে নেয়।

এই বাস্তবায়নে আধুনিক LCEL (LangChain Expression Language) সিনট্যাক্স ব্যবহার করা হয়েছে।

import os
import uvicorn
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import JsonOutputParser

# Initialize FastAPI
app = FastAPI(title="LangChain App for Historical Figures")

# 1. Setup Gemini Model
# We expect GOOGLE_API_KEY to be set in the environment variables
llm = ChatGoogleGenerativeAI(
    model="gemini-2.5-flash",
    temperature=0.7
)

# 2. Define the Prompt
prompt = ChatPromptTemplate.from_template("You are an expert Historian. For the historical personality {name}, you are able to accurately tell their birth date and birth country. Return the output in the JSON format containing name, birthDate, birthCountry. In case you are unable to retrieve birthDate or birthCountry, just have the unknown values as null. ensure the response is a valid json object only.")
output_parser = JsonOutputParser()

# Chain: Prompt -> Model -> Json Output Parser
chain = prompt | llm | output_parser

# 3. Define Request Model
class QueryRequest(BaseModel):
    name: str

# 4. Define Endpoint
@app.post("/chat")
async def chat(request: QueryRequest):
    try:
        response = await chain.ainvoke({"name": request.name})
        return response
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.get("/")
def health_check():
    return {"status": "ok", "service": "LangChain-Gemini-FastAPI"}

৪. এজেন্টকে পরীক্ষা করুন

স্থাপন করার আগে, আপনি এটি স্থানীয়ভাবে পরীক্ষা করে দেখতে পারেন।

  1. এআই স্টুডিও -তে একটি জেমিনি এপিআই কী তৈরি করুন।
  2. জেমিনি এপিআই কী নিম্নরূপে রপ্তানি করুন:
export GOOGLE_API_KEY="AIzaSy..."
  1. সার্ভারটি চালু করুন।
uvicorn main:app --port 8080 --host 0.0.0.0
  1. নিম্নলিখিত curl কমান্ড ব্যবহার করে এজেন্টটি পরীক্ষা করুন:
curl -X POST http://localhost:8080/chat \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

যাচাই করুন যে আপনি নাম, জন্মতারিখ এবং জন্মদেশ সম্বলিত একটি JSON কাঠামোযুক্ত আউটপুট পাচ্ছেন।

৫. ক্লাউড রান-এ ডেপ্লয় করুন

আমরা এজেন্ট অ্যাপ্লিকেশনটি ক্লাউড রানে ডেপ্লয় করার জন্য gcloud run deploy কমান্ডটি ব্যবহার করব। নিচের কমান্ডটি ক্লাউড বিল্ড ব্যবহার করে কন্টেইনারটি তৈরি করে এবং এক ধাপেই ক্লাউড রানে ডেপ্লয় করে।

YOUR_API_KEY জায়গায় আপনার আসল জেমিনি এপিআই কী (Gemini API key) বসান।

gcloud run deploy gemini-fastapi-service \
  --source . \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_API_KEY=<YOUR_API_KEY>

একবার এটি ডেপ্লয় করা হয়ে গেলে আপনি টার্মিনালে আপনার এন্ডপয়েন্টটি দেখতে পাবেন, যা আপনার ব্যবহারের জন্য প্রস্তুত থাকবে।

৬. ডেপ্লয়মেন্টটি পরীক্ষা করুন

ক্লাউড রান এন্ডপয়েন্ট ব্যবহার করুন এবং প্রত্যাশিত ফলাফল নিশ্চিত করতে curl কমান্ডটি চালান।

curl -X POST <CLOUD_RUN_ENDPOINT> \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

আপনার স্থানীয়ভাবে চলমান অ্যাপ্লিকেশনটিতে আপনি যে ফলাফল পেয়েছিলেন, এখানেও ঠিক একই ফলাফল পাওয়া উচিত।

৭. পরিষ্কার করুন

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

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
  2. প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট বোতামে ক্লিক করুন।
  3. ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।

৮. অভিনন্দন

অভিনন্দন! আপনি সফলভাবে ক্লাউড রান-এ স্থাপন করা আপনার ল্যাংচেইন এজেন্টটি তৈরি করেছেন এবং এর সাথে যোগাযোগ স্থাপন করেছেন!