প্রোটোটাইপ থেকে ADK সহ এজেন্ট পর্যন্ত

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

আজকাল AI দিয়ে নির্মাণের শুরুটা কোথা থেকে হয়? আমাদের বেশিরভাগের জন্যই, এটি প্রায়শই একটি সাধারণ প্রশ্ন দিয়ে শুরু হয়, "আমি যে সমস্যাটি নিয়ে ভাবছি, মডেলটি কি তা সমাধানে সত্যিই সাহায্য করতে পারবে?"। ঠিক এখানেই Google AI Studio-র ভূমিকা। এটি এমন একটি জায়গা যেখানে আপনি দ্রুত যেকোনো কিছুর প্রোটোটাইপ তৈরি করতে পারেন। আমি আমার রান্নাঘরটি নতুন করে সাজাতে চাইছি এবং আমি নিশ্চিত যে Gemini সাহায্য করতে পারবে - কিন্তু আমি একজন ইঞ্জিনিয়ার, কোনো সাধারণ ঠিকাদার নই। আমি কী চাইব তা নিয়েও নিশ্চিত নই - অনেক কিছু বিবেচনা করার আছে: নিয়মকানুন, সরঞ্জাম ইত্যাদি। তাই চলুন বিষয়টিকে ছোট ছোট অংশে ভাগ করে নিই এবং Gemini-কে দিয়ে আমাদের জন্য একটি অত্যন্ত বিস্তারিত নির্দেশিকা তৈরি করাই, তারপর একটি সম্পূর্ণ সংস্কার পরিকল্পনা তৈরি করাই এবং সেই সাথে নতুন রূপটিকে দৃশ্যমানও করে তুলি! কিন্তু দাঁড়ান। এখান থেকে আমি আসলে কীভাবে ব্যবসাগুলোকে বড় হতে সাহায্য করতে পারি? এখানেই আসে এজেন্টদের ভূমিকা!!!

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

এজেন্ট ডেভেলপমেন্ট কিট (ADK)

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

ADK-তে, একটি মাল্টি-এজেন্ট সিস্টেম হলো এমন একটি অ্যাপ্লিকেশন যেখানে বিভিন্ন এজেন্ট, প্রায়শই একটি স্তরবিন্যাস গঠন করে, একটি বৃহত্তর লক্ষ্য অর্জনের জন্য সহযোগিতা বা সমন্বয় করে। আপনার অ্যাপ্লিকেশনকে এইভাবে গঠন করলে উল্লেখযোগ্য সুবিধা পাওয়া যায়, যার মধ্যে রয়েছে উন্নত মডুলারিটি, বিশেষীকরণ, পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং ডেডিকেটেড ওয়ার্কফ্লো এজেন্ট ব্যবহার করে কাঠামোগত নিয়ন্ত্রণ প্রবাহ সংজ্ঞায়িত করার ক্ষমতা।

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

আমাদের প্রোটোটাইপ PROMPT থেকে এজেন্ট তৈরির দিকে এগোতে প্রস্তুত??? আমরা রান্নাঘর সংস্কার প্রকল্পের প্রস্তাবনা নথি তৈরিতে সাহায্য করার জন্য একটি এজেন্ট তৈরি করব। এই ল্যাবের অংশ হিসেবে, আপনি যা যা করবেন:

  1. ADK ব্যবহার করে সংস্কার প্রস্তাবনা নথি তৈরি করার জন্য একটি সহজ এজেন্ট তৈরি করুন।
  2. তৈরি করা সংস্কার প্রস্তাব নথিটি একটি ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করুন।
  3. ক্লাউড শেল এবং এজেন্ট ওয়েব আউটপুটে এজেন্টটি পরীক্ষা করুন।

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

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

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

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

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

৩. প্রোটোটাইপ

Google AI Studio- তে যান। আপনার প্রম্পটটি টাইপ করা শুরু করুন। এই হলো আমার প্রম্পট:

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

সর্বোত্তম প্রতিক্রিয়া পেতে ডানদিকের প্যারামিটারগুলো সমন্বয় ও কনফিগার করুন।

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

আমরা জেমিনি ২.৫ প্রো বেছে নিয়েছি। এটি একটি থিঙ্কিং মডেল, যার মানে হলো আমরা দীর্ঘ বিশ্লেষণ এবং বিস্তারিত ডকুমেন্টেশনের জন্য আরও বেশি আউটপুট টোকেন পাই, এক্ষেত্রে যা ৬৫ হাজার পর্যন্ত টোকেন। আপনি যখন জেমিনি ২.৫ প্রো সক্রিয় করেন, তখন জেমিনি থিঙ্কিং বক্সটি আসে, যেটির নিজস্ব রিজনিং ক্ষমতা রয়েছে এবং এটি দীর্ঘ প্রেক্ষাপটের অনুরোধ গ্রহণ করতে পারে।

নিচে উত্তরের অংশবিশেষ দেখুন:

4e4361663df80964.png

এআই স্টুডিও আমার ডেটা বিশ্লেষণ করে ক্যাবিনেট, কাউন্টারটপ, ব্যাকস্প্ল্যাশ, ফ্লোরিং, সিঙ্ক, সামঞ্জস্য, কালার প্যালেট এবং উপকরণ নির্বাচনের মতো এই সমস্ত জিনিস তৈরি করেছে। জেমিনি এমনকি উৎসও উল্লেখ করছে!

এবার ভিন্ন কোনো নির্দেশনার সাহায্যে ধারণাটিকে বাস্তবে রূপ দেওয়ার চেষ্টা করুন।

  1. এই প্রম্পটটি কপি করে প্রম্পট এডিটরে পেস্ট করুন:
Add flat and circular light accessories above the island area for my current kitchen in the attached image.
  1. আপনার বর্তমান রান্নাঘরের একটি ছবি সংযুক্ত করুন (অথবা আপনি আমার নমুনা রান্নাঘরের ছবিটি ব্যবহার করতে পারেন)।
  2. মডেলটি 'Gemini 2.0 Flash Preview Image Generation'-এ পরিবর্তন করুন, যাতে আপনি ইমেজ জেনারেট করার অ্যাক্সেস পান।

আমি এই আউটপুটটি পেয়েছি:

fb33e7b1f6560a0c.png

এটাই মিথুন রাশির শক্তি!

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

এআই স্টুডিও থেকে, আপনি এই প্রোটোটাইপটি নিয়ে এপিআই কী সংগ্রহ করতে পারেন এবং ভার্টেক্স এআই এডিকে-এর শক্তি ব্যবহার করে এটিকে একটি পূর্ণাঙ্গ এজেন্টিক অ্যাপ্লিকেশনে রূপান্তর করতে পারেন।

৪. ADK সেটআপ

এবার চলুন সেই ক্লাউড শেল টার্মিনালটিতে যাওয়া যাক যা আমরা "শুরু করার আগে" অংশে সক্রিয় করেছিলাম:

  1. ভার্চুয়াল পরিবেশ তৈরি ও সক্রিয় করুন (প্রস্তাবিত)

আপনার ক্লাউড শেল টার্মিনাল থেকে একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন:

python -m venv .venv

ভার্চুয়াল পরিবেশ সক্রিয় করুন:

source .venv/bin/activate
  1. ADK ইনস্টল করুন
pip install google-adk

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

  1. ক্লাউড শেল টার্মিনাল থেকে, আপনার পছন্দের প্রজেক্ট লোকেশনে আপনার এজেন্টিক অ্যাপগুলোর জন্য একটি রুট ডিরেক্টরি তৈরি করুন:
mkdir agentic-apps
  1. মূল ডিরেক্টরির ভিতরে, আমাদের বর্তমান প্রজেক্টের জন্য নির্দিষ্ট একটি ফোল্ডার তৈরি করুন:
mkdir renovation-agent
  1. ক্লাউড শেল এডিটরে যান এবং নিম্নলিখিত ফাইলগুলি তৈরি করে প্রজেক্ট কাঠামোটি তৈরি করুন (শুরুতে ফাইলগুলি খালি রাখতে হবে):
renovation-agent/
        __init__.py
        agent.py
        requirements.txt
        .env

৬. সোর্স কোড

  1. ' init.py'- তে যান এবং নিম্নলিখিত বিষয়বস্তু দিয়ে আপডেট করুন:
from . import agent
  1. agent.py ফাইলে যান এবং নিম্নলিখিত পাথ থেকে নিচের কন্টেন্ট দিয়ে ফাইলটি আপডেট করুন:

agent.py ফাইলে আমরা প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ইম্পোর্ট করি, .env ফাইল থেকে কনফিগারেশন প্যারামিটারগুলো সংগ্রহ করি এবং root_agent-কে সংজ্ঞায়িত করি, যেটি একটি প্রস্তাবনা ডকুমেন্ট তৈরি করে এবং তা একটি ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করে। ক্লাউড স্টোরেজের ধাপটি সম্পন্ন করার জন্য আমরা store_pdf নামক একটি টুল ব্যবহার করি।

দ্রষ্টব্য: বর্তমানে পিডিএফটি ফরম্যাটবিহীন! কমিউনিটি ডেভেলপারদের পুল রিকোয়েস্ট (PR)- এর উপর ভিত্তি করে , নিম্নলিখিত কোড স্নিপেটটি এখানে অন্তর্ভুক্ত করা হয়েছে [পরীক্ষা করা হয়নি], আপনি নির্দ্বিধায় এটি store_pdf মেথডের ভিতরে ব্যবহার করতে পারেন:

doc = SimpleDocTemplate(
        pdf_buffer,
        pagesize=letter,
        rightMargin=0.75 * inch,
        leftMargin=0.75 * inch,
        topMargin=0.75 * inch,
        bottomMargin=0.75 * inch
    )

    styles = getSampleStyleSheet()
    story = []

    # --- CUSTOM STYLES FOR HEADERS ---
    # Define a new style for section headers
    styles.add(ParagraphStyle(name='SectionHeader',
                              parent=styles['Normal'],
                              fontName='Helvetica-Bold', # Make it bolder
                              fontSize=14,               # Make it slightly larger
                              leading=16,                # Line spacing
                              spaceAfter=0.15 * inch,    # Space after the header
                              spaceBefore=0.25 * inch,   # Space before the header
                              textColor=black            # Ensure color is bright/black (default is usually black, but explicit is good)
                             ))

    # Define a style for the main document title
    styles.add(ParagraphStyle(name='DocumentTitle',
                              parent=styles['Normal'],
                              fontName='Helvetica-Bold',
                              fontSize=20,
                              leading=24,
                              spaceAfter=0.25 * inch,
                              alignment=TA_CENTER, # Center align the title
                              textColor=black
                             ))
    # ---------------------------------

    paragraphs_raw = pdf_text.split('\n\n')

    # Heuristic for the garbled line issue (as before, temporary)
    if paragraphs_raw and len(paragraphs_raw[-1]) < 50 and any(char in paragraphs_raw[-1] for char in ['io', 'og', 'al', 'op']):
         logger.warning("Detected potentially garbled last paragraph. Attempting to trim/omit.")
         paragraphs_raw[-1] = "11. Entire Agreement:\nThis proposal constitutes the entire agreement between the parties and supersedes all prior discussions and agreements."


    for i, para_text in enumerate(paragraphs_raw):
        para_text = para_text.strip()
        if not para_text:
            continue

        # Special handling for the main document title (PROPOSAL DOCUMENT)
        if i == 0 and "PROPOSAL DOCUMENT" in para_text.upper():
            p = Paragraph("PROPOSAL DOCUMENT", styles['DocumentTitle'])
            story.append(p)
            story.append(Spacer(1, 0.15 * inch)) # Add space after the title
            # Skip the rest of this initial block if it's just the title
            remaining_text_lines = para_text.splitlines()[1:]
            if remaining_text_lines:
                formatted_text = "<br/>".join(remaining_text_lines)
                p = Paragraph(formatted_text, styles['Normal'])
                story.append(p)
                story.append(Spacer(1, 0.1 * inch))
            continue # Move to the next paragraph

        # Check if the paragraph looks like a section header (e.g., starts with a number and dot or just bold text)
        # This is a heuristic and might need fine-tuning based on actual proposal content variability.
        is_section_header = False
        # Check for numbered sections (e.g., "1. Scope of Work:")
        if para_text.startswith(('1.', '2.', '3.', '4.', '5.', '6.', '7.', '8.', '9.', '10.', '11.')):
            is_section_header = True
        # Check for Exhibit headers (e.g., "Exhibit A: Cabinet Design") or Roman numeral headings
        elif para_text.startswith(('Exhibit ', 'I.', 'II.', 'III.', 'IV.', 'V.', 'VI.', 'VII.')):
            is_section_header = True
        # Check for specific known headers
        elif para_text.strip().upper() in ["IN WITNESS WHEREOF,", "EXHIBITS:"]:
            is_section_header = True


        if is_section_header:
            p = Paragraph(para_text, styles['SectionHeader'])
            story.append(p)
            # No additional Spacer here, as SectionHeader style has spaceAfter
        else:
            formatted_text = para_text.replace('\n', '<br/>')
            p = Paragraph(formatted_text, styles['Normal'])
            story.append(p)
            story.append(Spacer(1, 0.1 * inch)) # Standard space after body paragraphs

    doc.build(story)

    pdf_buffer.seek(0)

    # Upload the PDF to GCS
    storage_client = storage.Client()
    bucket = storage_client.bucket(STORAGE_BUCKET)
    blob = bucket.blob(PROPOSAL_DOCUMENT_FILE_NAME)

    blob.upload_from_file(pdf_buffer, content_type="application/pdf")

    logger.info(f"Successfully uploaded PDF to gs://{STORAGE_BUCKET}/{PROPOSAL_DOCUMENT_FILE_NAME}")

except Exception as e:
    logger.error(f"Error writing text to PDF and uploading: {e}")
    raise
finally:
    if 'pdf_buffer' in locals():
        pdf_buffer.close()
return "Successfully uploaded PDF to GCS!!"
  1. আপনার ক্লাউড স্টোরেজ বাকেট আছে কিনা তা নিশ্চিত করুন।

এটি এজেন্টের তৈরি করা প্রস্তাবনা নথিটি সংরক্ষণ করার জন্য। এটি তৈরি করুন এবং অ্যাক্সেস প্রদান করুন যাতে আমরা Vertex AI দিয়ে যে এজেন্টিক সিস্টেমটি তৈরি করব তা এটি অ্যাক্সেস করতে পারে। আপনি যেভাবে এটি করতে পারেন তা নিচে দেওয়া হলো:

https://cloud.google.com/storage/docs/creating-buckets#console

আপনার বাকেটটির নাম দিন " next-demo-store "। যদি আপনি এর অন্য কোনো নাম দেন, তাহলে .env ফাইলের STORAGE_BUCKET-এর মানটি আপডেট করতে মনে রাখবেন (ENV Variables Setup ধাপে)।

  1. বাকেটে অ্যাক্সেস সেট আপ করতে, ক্লাউড স্টোরেজ কনসোলে এবং আপনার স্টোরেজ বাকেটে যান (আমাদের ক্ষেত্রে বাকেটের নাম 'next-demo-storage'): https://console.cloud.google.com/storage/browser/next-demo-storage

Permissions -> View Principals -> Grant Access-এ যান। Principals হিসেবে 'allUsers' এবং Role হিসেবে 'Storage Object User' নির্বাচন করুন।

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.
  1. নির্ভরতার তালিকা তৈরি করুন

requirements.txt ফাইলে সমস্ত ডিপেন্ডেন্সি তালিকাভুক্ত করুন। আপনি এটি রিপো থেকে কপি করতে পারেন।

একক এজেন্ট সিস্টেমের সোর্স কোডের ব্যাখ্যা

agent.py ফাইলটি এজেন্ট ডেভেলপমেন্ট কিট (ADK) ব্যবহার করে আমাদের রান্নাঘর সংস্কার মাল্টি-এজেন্ট সিস্টেমের গঠন ও আচরণ নির্ধারণ করে। চলুন এর মূল উপাদানগুলো বিশদভাবে আলোচনা করা যাক:

এজেন্টের সংজ্ঞা

রুট এজেন্ট (অর্কেস্ট্রেটর): প্রস্তাব_এজেন্ট

রুট_এজেন্ট এই একক-এজেন্ট সিস্টেমের অর্কেস্ট্রেটর হিসেবে কাজ করে। এটি প্রাথমিক সংস্কারের অনুরোধ গ্রহণ করে এবং অনুরোধের প্রয়োজনের ভিত্তিতে কোন টুলগুলো চালু করতে হবে তা নির্ধারণ করে।

এরপর root_agent টুলগুলো থেকে পাওয়া প্রতিক্রিয়াগুলো সংগ্রহ করে এবং সেগুলোকে একত্রিত করে ব্যবহারকারীকে একটি পূর্ণাঙ্গ প্রতিক্রিয়া প্রদান করে। এক্ষেত্রে আমাদের কাছে কেবল একটিই টুল আছে, যার নাম "store_pdf"।

৭. ডেটা প্রবাহ ও মূল ধারণা

ব্যবহারকারী ADK ইন্টারফেসের (টার্মিনাল অথবা ওয়েব UI) মাধ্যমে একটি অনুরোধ শুরু করেন।

  1. অনুরোধটি root_agent দ্বারা গৃহীত হয়।
  2. রুট_এজেন্ট অনুরোধটি বিশ্লেষণ করে এবং প্রয়োজন অনুযায়ী সেটিকে টুলের কাছে পাঠিয়ে দেয়।
  3. 'store_pdf' টুলটি পরিমার্জিত টেক্সট কন্টেন্টকে একটি পিডিএফ ফাইলে লিখে, তারপর সেটি গুগল ক্লাউড স্টোরেজে আপলোড করার জন্য ডিজাইন করা হয়েছে।
  4. এরপর এটি root_agent-কে প্রতিক্রিয়াটি ফেরত পাঠায়।
  5. root_agent প্রতিক্রিয়াগুলো একত্রিত করে ব্যবহারকারীকে একটি চূড়ান্ত আউটপুট প্রদান করে।

এলএলএম (বৃহৎ ভাষা মডেল)

এজেন্টরা টেক্সট তৈরি করতে, প্রশ্নের উত্তর দিতে এবং যুক্তিমূলক কাজ সম্পাদন করতে এলএলএম-এর উপর ব্যাপকভাবে নির্ভর করে। ব্যবহারকারীর অনুরোধ বোঝা এবং তাতে সাড়া দেওয়ার ক্ষেত্রে এজেন্টদের ক্ষমতার পেছনের 'মস্তিষ্ক' হলো এই এলএলএম-গুলো। আমরা এই অ্যাপ্লিকেশনটিতে জেমিনি ২.৫ ব্যবহার করছি।

গুগল ক্লাউড স্টোরেজ

তৈরি করা সংস্কার প্রস্তাবনা নথিগুলো সংরক্ষণ করতে ব্যবহৃত হয়। আপনাকে একটি বাকেট তৈরি করতে হবে এবং এজেন্টদের এটি অ্যাক্সেস করার জন্য প্রয়োজনীয় অনুমতি প্রদান করতে হবে।

ক্লাউড রান (ঐচ্ছিক)

অর্ডারিংএজেন্ট অ্যালয়ডিবি-র সাথে ইন্টারফেস করার জন্য একটি ক্লাউড রান ফাংশন ব্যবহার করে। ক্লাউড রান এইচটিটিপি অনুরোধের জবাবে কোড কার্যকর করার জন্য একটি সার্ভারবিহীন পরিবেশ প্রদান করে।

অ্যালয়ডিবি

আপনি যদি অর্ডারিংএজেন্ট ব্যবহার করেন, তাহলে অর্ডারের তথ্য সংরক্ষণের জন্য আপনাকে একটি অ্যালয়ডিবি (AlloyDB) ডেটাবেস সেট আপ করতে হবে।

.env ফাইল

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

৮. মডেল সেটআপ

ব্যবহারকারীর অনুরোধ বোঝা এবং প্রতিক্রিয়া তৈরি করার জন্য আপনার এজেন্টের ক্ষমতা একটি লার্জ ল্যাঙ্গুয়েজ মডেল (LLM) দ্বারা চালিত হয়। আপনার এজেন্টকে এই বাহ্যিক LLM পরিষেবাতে সুরক্ষিত কল করতে হয়, যার জন্য প্রমাণীকরণ ক্রেডেনশিয়াল প্রয়োজন। বৈধ প্রমাণীকরণ ছাড়া, LLM পরিষেবাটি এজেন্টের অনুরোধ প্রত্যাখ্যান করবে এবং এজেন্ট কাজ করতে পারবে না।

  1. গুগল এআই স্টুডিও থেকে একটি এপিআই কী সংগ্রহ করুন।
  2. পরবর্তী ধাপে .env ফাইলটি সেট আপ করার সময়, <<your API KEY>> এর জায়গায় আপনার আসল API KEY-এর মানটি বসান।

৯. ENV ভেরিয়েবল সেটআপ

  1. এই রিপোজিটরিতে থাকা টেমপ্লেট .env ফাইলে প্যারামিটারগুলোর জন্য আপনার মানগুলো সেট করুন। আমার ক্ষেত্রে, .env ফাইলটিতে এই ভেরিয়েবলগুলো রয়েছে:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION = us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT = <<your project id>>
PROJECT_ID = <<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>
STORAGE_BUCKET = next-demo-store <<or your storage bucket name>>

প্লেসহোল্ডারগুলো আপনার মান দিয়ে প্রতিস্থাপন করুন।

১০. আপনার এজেন্ট চালান

  1. টার্মিনাল ব্যবহার করে আপনার এজেন্ট প্রজেক্টের প্যারেন্ট ডিরেক্টরিতে যান:
cd agentic-apps/renovation-agent
  1. সমস্ত নির্ভরতা ইনস্টল করুন
pip install -r requirements.txt
  1. এজেন্টটি চালু করার জন্য আপনি আপনার ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালাতে পারেন:
adk run .
  1. ADK দ্বারা সরবরাহকৃত ওয়েব UI-তে এটি চালানোর জন্য আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

দ্রষ্টব্য: আপনাকে এই কমান্ডটি আপনার এজেন্ট প্রজেক্ট ফোল্ডারের বাইরে থেকে চালাতে হবে এবং এর থেকে এক ধাপ বাইরে এসে তারপর এটি চালাতে হবে:

adk web
  1. নিম্নলিখিত নির্দেশাবলী দিয়ে পরীক্ষা করুন:
user>> 

Hello. Generate Proposal Document for the kitchen remodel requirement in a proper format that applies to a renovation contract. Remember this text will eventually be stored as a pdf file so make sure to have the formatting appropriate. I have no other specification.

১১. ফলাফল

`adk run .` কমান্ডের ফলাফল নিম্নরূপ।

2703603a907329ae.png

ae56b38cc6da9afe.png

...

91452a4de933a75b.png

ক্লাউড স্টোরেজ বাকেটে রিনোভেশন প্রপোজাল ডকুমেন্টটি তৈরি হয়েছে কিনা, তা আপনি যাচাই করতে পারেন।

১২. ক্লাউড রানে স্থাপন করুন

  1. প্রজেক্ট রুট ফোল্ডারের ভিতরে Dockerfile নামে একটি ফাইল তৈরি করুন:
cd agentic-apps/renovation-agent
  1. গিটহাব রিপো থেকে কন্টেন্ট কপি করুন
https://github.com/AbiramiSukumaran/adk-renovation-single-agent/blob/main/Dockerfile

এই Dockerfile ফাইলে।

  1. নিম্নলিখিত কমান্ড ব্যবহার করে ক্লাউড রান-এ স্থাপন করুন:
adk deploy cloud_run --project=abis-345004 --region=us-central1 --service_name=renovation-agent --app_name=renovation-app --with_ui .

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

১৩. পরিষ্কার করা

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

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

১৪. অভিনন্দন

অভিনন্দন! আপনি ADK ব্যবহার করে সফলভাবে আপনার মাল্টি-এজেন্ট অ্যাপ তৈরি করেছেন এবং এটি ব্যবহার করতে পেরেছেন! মাল্টি-এজেন্ট সিস্টেমটি প্রস্তাবনা তৈরি, অনুমতি যাচাই এবং অর্ডারের অবস্থা ট্র্যাক করার মতো কাজগুলোকে স্বয়ংক্রিয় করার মাধ্যমে রান্নাঘর সংস্কার প্রক্রিয়াকে সহজ করার জন্য ডিজাইন করা হয়েছে। প্রতিটি এজেন্টের একটি নির্দিষ্ট ভূমিকা রয়েছে এবং রুট_এজেন্ট একটি সমন্বিত সমাধান প্রদানের জন্য তাদের কার্যক্রম সমন্বয় করে। সিস্টেমটি তার কার্যকারিতা প্রদানের জন্য এলএলএম (LLM), গুগল ক্লাউড পরিষেবা এবং সম্ভাব্য বাহ্যিক এপিআই (API) ব্যবহার করে। এখানে প্রোডাক্ট ডকুমেন্টেশনের একটি লিঙ্ক দেওয়া হলো।