Gemini এর সাথে বাজার গবেষণা এজেন্ট এবং Vercel এর AI SDK

ভার্সেলের এআই এসডিকে হলো টাইপস্ক্রিপ্টে এআই-চালিত অ্যাপ্লিকেশন, ইউজার ইন্টারফেস এবং এজেন্ট তৈরির জন্য একটি শক্তিশালী ওপেন-সোর্স লাইব্রেরি।

এই নির্দেশিকাটি আপনাকে TypeScript ব্যবহার করে একটি Node.js অ্যাপ্লিকেশন তৈরি করার পদ্ধতি ধাপে ধাপে দেখাবে, যা AI SDK-এর সাহায্যে Google Generative AI Provider- এর মাধ্যমে Gemini API-এর সাথে সংযোগ স্থাপন করে স্বয়ংক্রিয়ভাবে বাজারের প্রবণতা বিশ্লেষণ করবে। চূড়ান্ত অ্যাপ্লিকেশনটি যা করতে পারবে:

  1. বর্তমান বাজার প্রবণতা সম্পর্কে জানতে গুগল সার্চের সাথে জেমিনি ব্যবহার করুন।
  2. চার্ট তৈরি করার জন্য গবেষণা থেকে কাঠামোগত ডেটা সংগ্রহ করুন।
  3. গবেষণা ও চার্টগুলোকে একত্রিত করে একটি পেশাদার এইচটিএমএল রিপোর্ট তৈরি করুন এবং এটিকে পিডিএফ হিসেবে সংরক্ষণ করুন।

পূর্বশর্ত

এই নির্দেশিকাটি সম্পূর্ণ করতে আপনার প্রয়োজন হবে:

  • একটি জেমিনি এপিআই কী। আপনি গুগল এআই স্টুডিও- তে বিনামূল্যে এটি তৈরি করতে পারেন।
  • Node.js ভার্সন ১৮ বা তার পরবর্তী সংস্করণ।
  • একটি প্যাকেজ ম্যানেজার, যেমন npm , pnpm , বা yarn

আপনার অ্যাপ্লিকেশনটি সেট আপ করুন

প্রথমে, আপনার প্রোজেক্টের জন্য একটি নতুন ডিরেক্টরি তৈরি করুন এবং সেটি চালু করুন।

এনপিএম

mkdir market-trend-app
cd market-trend-app
npm init -y

পিএনপিএম

mkdir market-trend-app
cd market-trend-app
pnpm init

সুতা

mkdir market-trend-app
cd market-trend-app
yarn init -y

নির্ভরতা ইনস্টল করুন

এরপরে, এআই এসডিকে, গুগল জেনারেটিভ এআই প্রোভাইডার এবং অন্যান্য প্রয়োজনীয় ডিপেন্ডেন্সিগুলো ইনস্টল করুন।

এনপিএম

npm install ai @ai-sdk/google zod
npm install -D @types/node tsx typescript && npx tsc --init

TypeScript কম্পাইলার ত্রুটি এড়াতে, তৈরি হওয়া tsconfig.json ফাইলে নিম্নলিখিত লাইনটি কমেন্ট আউট করুন:

//"verbatimModuleSyntax": true,

পিএনপিএম

pnpm add ai @ai-sdk/google zod
pnpm add -D @types/node tsx typescript

সুতা

yarn add ai @ai-sdk/google zod
yarn add -D @types/node tsx typescript && yarn tsc --init

TypeScript কম্পাইলার ত্রুটি এড়াতে, তৈরি হওয়া tsconfig.json ফাইলে নিম্নলিখিত লাইনটি কমেন্ট আউট করুন:

//"verbatimModuleSyntax": true,

এই অ্যাপ্লিকেশনটি চার্ট রেন্ডার করতে এবং পিডিএফ তৈরি করতে Puppeteer এবং Chart.js নামক থার্ড-পার্টি প্যাকেজগুলোও ব্যবহার করবে:

এনপিএম

npm install puppeteer chart.js
npm install -D @types/chart.js

পিএনপিএম

pnpm add puppeteer chart.js
pnpm add -D @types/chart.js

সুতা

yarn add puppeteer chart.js
yarn add -D @types/chart.js

puppeteer প্যাকেজটি ক্রোমিয়াম ব্রাউজার ডাউনলোড করার জন্য একটি স্ক্রিপ্ট চালানোর প্রয়োজন হয়। আপনার প্যাকেজ ম্যানেজার অনুমোদনের জন্য জিজ্ঞাসা করতে পারে, তাই অনুরোধ করা হলে স্ক্রিপ্টটি অনুমোদন করে নিন।

আপনার এপিআই কী কনফিগার করুন

আপনার Gemini API কী দিয়ে GOOGLE_GENERATIVE_AI_API_KEY এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন। Google Generative AI Provider স্বয়ংক্রিয়ভাবে এই এনভায়রনমেন্ট ভেরিয়েবলে আপনার API কী খুঁজে থাকে।

ম্যাকওএস/লিনাক্স

export GOOGLE_GENERATIVE_AI_API_KEY="YOUR_API_KEY_HERE"

পাওয়ারশেল

setx GOOGLE_GENERATIVE_AI_API_KEY "YOUR_API_KEY_HERE"

আপনার অ্যাপ্লিকেশন তৈরি করুন

এবার, চলুন আমাদের অ্যাপ্লিকেশনের জন্য মূল ফাইলটি তৈরি করি। আপনার প্রজেক্ট ডিরেক্টরিতে main.ts নামে একটি নতুন ফাইল তৈরি করুন। এই ফাইলে আপনি ধাপে ধাপে লজিকটি সাজিয়ে তুলবেন।

সবকিছু সঠিকভাবে সেট আপ করা হয়েছে কিনা তা দ্রুত পরীক্ষা করার জন্য, নিম্নলিখিত কোডটি main.ts এ যোগ করুন। এই সাধারণ উদাহরণটিতে Gemini থেকে একটি সহজ প্রতিক্রিয়া পাওয়ার জন্য generateText ব্যবহার করা হয়েছে।

import { google } from "@ai-sdk/google";
import { generateText } from "ai";

async function main() {
  const { text } = await generateText({
    model: google("gemini-3-flash-preview"),
    prompt: 'What is plant-based milk?',
  });

  console.log(text);
}

main().catch(console.error);

আরও জটিলতা যোগ করার আগে, আপনার পরিবেশ সঠিকভাবে কনফিগার করা হয়েছে কিনা তা যাচাই করতে এই স্ক্রিপ্টটি চালান। আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

এনপিএম

npx tsc && node main.js

পিএনপিএম

pnpm tsx main.ts

সুতা

yarn tsc && node main.js

সবকিছু সঠিকভাবে সেট আপ করা থাকলে, আপনি কনসোলে জেমিনির প্রতিক্রিয়া প্রিন্ট হতে দেখবেন।

গুগল সার্চের মাধ্যমে বাজার গবেষণা করুন।

সর্বশেষ তথ্য পেতে, আপনি জেমিনির জন্য গুগল সার্চ টুলটি চালু করতে পারেন। যখন এই টুলটি সক্রিয় থাকে, তখন মডেলটি প্রশ্নের উত্তর দেওয়ার জন্য ওয়েবে অনুসন্ধান করতে পারে এবং ব্যবহৃত উৎসগুলো দেখিয়ে দেবে।

আমাদের বিশ্লেষণের প্রথম ধাপটি সম্পন্ন করতে main.ts ফাইলের বিষয়বস্তু নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।

import { google } from "@ai-sdk/google";
import { generateText } from "ai";

async function main() {
  // Step 1: Search market trends
  const { text: marketTrends, sources } = await generateText({
    model: google("gemini-3-flash-preview"),
    tools: {
      google_search: google.tools.googleSearch({}),
    },
    prompt: `Search the web for market trends for plant-based milk in North America for 2024-2025.
          I need to know the market size, key players and their market share, and primary consumer drivers.
          `,
  });

  console.log("Market trends found:\n", marketTrends);
  // To see the sources, uncomment the following line:
  // console.log("Sources:\n", sources);
}

main().catch(console.error);

চার্ট ডেটা বের করুন

এরপরে, চার্টের জন্য উপযুক্ত কাঠামোগত ডেটা বের করতে গবেষণার লেখাটি প্রসেস করা যাক। ডেটার সঠিক কাঠামো নির্ধারণ করতে একটি zod স্কিমার সাথে AI SDK-এর generateObject ফাংশনটি ব্যবহার করুন।

এছাড়াও, এই স্ট্রাকচার্ড ডেটাকে এমন একটি কনফিগারেশনে রূপান্তর করার জন্য একটি হেল্পার ফাংশন তৈরি করুন যা Chart.js বুঝতে পারে।

main.ts ফাইলে নিম্নলিখিত কোডটি যোগ করুন। নতুন ইম্পোর্টগুলো এবং যোগ করা "Step 2" অংশটি লক্ষ্য করুন।

import { google } from "@ai-sdk/google";
import { generateText, generateObject } from "ai";
import { z } from "zod/v4";
import { ChartConfiguration } from "chart.js";

// Helper function to create Chart.js configurations
function createChartConfig({labels, data, label, type, colors,}: {
  labels: string[];
  data: number[];
  label: string;
  type: "bar" | "line";
  colors: string[];
}): ChartConfiguration {
  return {
    type: type,
    data: {
      labels: labels,
      datasets: [
        {
          label: label,
          data: data,
          borderWidth: 1,
          ...(type === "bar" && { backgroundColor: colors }),
          ...(type === "line" && colors.length > 0 && { borderColor: colors[0] }),
        },
      ],
    },
    options: {
      animation: { duration: 0 }, // Disable animations for static PDF rendering
    },
  };
}

async function main() {
  // Step 1: Search market trends
  const { text: marketTrends, sources } = await generateText({
    model: google("gemini-3-flash-preview"),
    tools: {
      google_search: google.tools.googleSearch({}),
    },
    prompt: `Search the web for market trends for plant-based milk in North America for 2024-2025.
          I need to know the market size, key players and their market share, and primary consumer drivers.
          `,
  });

  console.log("Market trends found.");

  // Step 2: Extract chart data
  const { object: chartData } = await generateObject({
    model: google("gemini-3-flash-preview"),
    schema: z.object({
      chartConfigurations: z
        .array(
          z.object({
            type: z.enum(["bar", "line"]).describe('The type of chart to generate. Either "bar" or "line"',),
            labels: z.array(z.string()).describe("A list of chart labels"),
            data: z.array(z.number()).describe("A list of the chart data"),
            label: z.string().describe("A label for the chart"),
            colors: z.array(z.string()).describe('A list of colors to use for the chart, e.g. "rgba(255, 99, 132, 0.8)"',),
          }),
        )
        .describe("A list of chart configurations"),
    }),
    prompt: `Given the following market trends text, come up with a list of 1-3 meaningful bar or line charts
    and generate chart data.
    
Market Trends:
${marketTrends}
`,
  });

  const chartConfigs = chartData.chartConfigurations.map(createChartConfig);

  console.log("Chart configurations generated.");
}

main().catch(console.error);

চূড়ান্ত প্রতিবেদন তৈরি করুন

চূড়ান্ত ধাপে, জেমিনিকে একজন বিশেষজ্ঞ প্রতিবেদন লেখক হিসেবে কাজ করার নির্দেশ দিন। এটিকে বাজার গবেষণা, চার্টের কনফিগারেশন এবং একটি এইচটিএমএল (HTML) প্রতিবেদন তৈরির জন্য সুস্পষ্ট নির্দেশাবলী প্রদান করুন। তারপর, পাপেটিয়ার (Puppeteer) ব্যবহার করে এই এইচটিএমএল (HTML) রেন্ডার করুন এবং এটিকে একটি পিডিএফ (PDF) হিসেবে সংরক্ষণ করুন।

আপনার main.ts ফাইলে চূড়ান্ত puppeteer ইম্পোর্ট এবং 'ধাপ ৩' যোগ করুন।

// ... (imports from previous step)
import puppeteer from "puppeteer";

// ... (createChartConfig helper function from previous step)

async function main() {
  // ... (Step 1 and 2 from previous step)

  // Step 3: Generate the final HTML report and save it as a PDF
  const { text: htmlReport } = await generateText({
    model: google("gemini-3-flash-preview"),
    prompt: `You are an expert financial analyst and report writer.
    Your task is to generate a comprehensive market analysis report in HTML format.

    **Instructions:**
    1.  Write a full HTML document.
    2.  Use the provided "Market Trends" text to write the main body of the report. Structure it with clear headings and paragraphs.
    3.  Incorporate the provided "Chart Configurations" to visualize the data. For each chart, you MUST create a unique <canvas> element and a corresponding <script> block to render it using Chart.js.
    4.  Reference the "Sources" at the end of the report.
    5.  Do not include any placeholder data; use only the information provided.
    6.  Return only the raw HTML code.

    **Chart Rendering Snippet:**
    Include this script in the head of the HTML: <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    For each chart, use a structure like below, ensuring the canvas 'id' is unique for each chart, and apply the correspinding config:

    ---
    <div style="width: 800px; height: 600px;">
      <canvas id="chart1"></canvas>
    </div>
    <script>
      new Chart(document.getElementById('chart1'), config);
    </script>
    ---
    (For the second chart, use 'chart2' and the corresponding config, and so on.)

    **Data:**
    - Market Trends: ${marketTrends}
    - Chart Configurations: ${JSON.stringify(chartConfigs)}
    - Sources: ${JSON.stringify(sources)}
    `,
  });

  // LLMs may wrap the HTML in a markdown code block, so strip it.
  const finalHtml = htmlReport.replace(/^```html\n/, "").replace(/\n```$/, "");

  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setContent(finalHtml);
  await page.pdf({ path: "report.pdf", format: "A4" });
  await browser.close();

  console.log("\nReport generated successfully: report.pdf");
}

main().catch(console.error);

আপনার অ্যাপ্লিকেশনটি চালান।

আপনি এখন অ্যাপ্লিকেশনটি চালানোর জন্য প্রস্তুত। আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

এনপিএম

npx tsc && node main.js

পিএনপিএম

pnpm tsx main.ts

সুতা

yarn tsc && node main.js

স্ক্রিপ্টটি প্রতিটি ধাপ সম্পন্ন করার সাথে সাথে আপনি আপনার টার্মিনালে লগিং দেখতে পাবেন। একবার সম্পূর্ণ হলে, আপনার প্রজেক্ট ডিরেক্টরিতে আপনার বাজার বিশ্লেষণ সম্বলিত একটি report.pdf ফাইল তৈরি হবে।

নিচে একটি নমুনা পিডিএফ রিপোর্টের প্রথম দুটি পৃষ্ঠা দেখানো হলো:

বাজার বিশ্লেষণ প্রতিবেদন

আরও তথ্যসূত্র

জেমিনি এবং এআই এসডিকে ব্যবহার করে বিল্ড করার বিষয়ে আরও তথ্যের জন্য, এই রিসোর্সগুলো দেখুন: