একটি পিডিএফ ফাইলের সাথে চ্যাট করুন

এই কোডল্যাবটি আপনাকে দেখায় যে কীভাবে একটি অ্যাপ বাস্তবায়ন করতে জেনকিট ব্যবহার করবেন যা আপনাকে একটি পিডিএফ ফাইলের সাথে চ্যাট করতে দেয়।

পূর্বশর্ত

এই কোডল্যাব অনুমান করে যে আপনি Node.js এর সাথে অ্যাপ্লিকেশন তৈরি করার সাথে পরিচিত। এই কোডল্যাবটি সম্পূর্ণ করতে, নিশ্চিত করুন যে আপনার উন্নয়ন পরিবেশ নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করে:

  • Node.js v20+
  • npm

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

  1. একটি নতুন খালি ফোল্ডার তৈরি করুন।

    mkdir chat-with-a-pdf
    cd chat-with-a-pdf
    
  2. একটি নতুন TypeScript প্রকল্প শুরু করুন।

    npm init -y
    

Genkit ইনস্টল করুন

আপনার প্রকল্পে Genkit ব্যবহার করতে নিম্নলিখিত Genkit নির্ভরতাগুলি ইনস্টল করুন:

  • genkit Genkit মূল ক্ষমতা প্রদান করে।
  • @genkit-ai/googleai Google AI জেমিনি মডেলগুলিতে অ্যাক্সেস প্রদান করে৷
npm install genkit @genkit-ai/googleai

আপনার মডেল API কী কনফিগার করুন

এই গাইডের জন্য, আমরা আপনাকে দেখাব কিভাবে Gemini API ব্যবহার করতে হয়, যা একটি উদার বিনামূল্যের স্তর প্রদান করে এবং শুরু করার জন্য ক্রেডিট কার্ডের প্রয়োজন হয় না। Gemini API ব্যবহার করতে, আপনার একটি API কী প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে Google AI স্টুডিওতে একটি কী তৈরি করুন৷

Google AI স্টুডিও থেকে একটি API কী পান

আপনি একটি API কী তৈরি করার পরে, নিম্নলিখিত কমান্ডের সাহায্যে আপনার কী-তে GOOGLE_GENAI_API_KEY এনভায়রনমেন্ট ভেরিয়েবল সেট করুন:

export GOOGLE_GENAI_API_KEY=<your API key>

দ্রষ্টব্য: যদিও এই টিউটোরিয়ালটি AI স্টুডিও থেকে Gemini API ব্যবহার করে, Genkit বিভিন্ন ধরণের মডেল প্রদানকারীকে সমর্থন করে, যার মধ্যে রয়েছে: * Vertex AI থেকে Gemini * Anthropic's Claude 3 মডেল এবং Llama 3.1 Vertex AI মডেল গার্ডেনের মাধ্যমে * Ollama এর মাধ্যমে ওপেন সোর্স মডেল * সম্প্রদায়-সমর্থিত প্রদানকারী যেমন OpenAI এবং Cohere.

Genkit আমদানি করুন এবং শুরু করুন

  1. একটি নতুন ফোল্ডার src তৈরি করুন এবং এর ভিতরে একটি নতুন ফাইল index.ts . Genkit এবং Google AI প্লাগইন আমদানি করতে নিম্নলিখিত লাইন যোগ করুন।

    import {gemini15Flash, googleAI} from '@genkit-ai/googleai';
    import {genkit} from 'genkit';
    
  2. Genkit কনফিগার করতে নিম্নলিখিত লাইন যোগ করুন এবং ডিফল্ট মডেল হিসাবে Gemini 1.5 Flash সেট করুন।

    const ai = genkit({
      plugins: [googleAI()],
      model: gemini15Flash,
    });
    
  3. আপনার অ্যাপের মূল অংশ যোগ করুন।

    (async () => {
      try {
        // 1: get command line arguments
        // 2: load PDF file
        // 3: construct prompt
        // 4: start chat
        // 5: chat loop
      } catch (error) {
        console.error("Error parsing PDF or interacting with Genkit:", error);
      }
    })(); // <-- don't forget the trailing parentheses to call the function!
    

একটি পিডিএফ ফাইল লোড এবং পার্স করুন

এই ধাপে, আপনি একটি পিডিএফ ফাইল লোড এবং পার্স করার জন্য কোড লিখবেন।

  1. pdf-parse ইনস্টল করুন।

    npm i pdf-parse
    
  2. আপনার অ্যাপে পিডিএফ লাইব্রেরি আমদানি করুন।

    import pdf from 'pdf-parse';
    import fs from 'fs';
    
  3. কমান্ড লাইন থেকে পাস করা PDF ফাইলের নামটি পড়ুন।

      // 1: get command line arguments
      const filename = process.argv[2];
      if (!filename) {
        console.error("Please provide a filename as a command line argument.");
        process.exit(1);
      }
    
  4. পিডিএফ ফাইলের বিষয়বস্তু লোড করুন।

      // 2: load PDF file
      let dataBuffer = fs.readFileSync(filename);
      const { text } = await pdf(dataBuffer);
    

প্রম্পট সেট আপ করুন

প্রম্পট সেট আপ করতে এই পদক্ষেপগুলি অনুসরণ করুন।

  1. ব্যবহারকারীকে কমান্ড লাইনের মাধ্যমে একটি কাস্টম প্রম্পট প্রদান করার অনুমতি দিন। যদি তারা একটি প্রম্পট প্রদান না করে, একটি ডিফল্ট ব্যবহার করুন.

    const prefix = process.argv[3] || "Answer the user's questions about the contents of this PDF file.";
    
  2. মডেলের জন্য প্রম্পটে প্রম্পট উপসর্গ এবং PDF ফাইলের সম্পূর্ণ পাঠ্যটি ইনজেক্ট করুন।

        const prompt = `
          ${prefix}
          Context:
          ${data.text}
        `
    

চ্যাট লুপ প্রয়োগ করুন

  1. chat পদ্ধতিতে কল করে, প্রম্পটটি পাস করে মডেলের সাথে চ্যাট শুরু করুন (যাতে PDF ফাইলের সম্পূর্ণ পাঠ্য রয়েছে)।

    const chat = ai.chat({ system: prompt })
    
  2. createInterface আমদানি করুন; এটি আপনাকে একটি পাঠ্য-ভিত্তিক UI তৈরি করার অনুমতি দেবে।

    import {createInterface} from "node:readline/promises";
    
  3. একটি পাঠ্য ইনপুট তাত্ক্ষণিক করুন, তারপর ব্যবহারকারীকে একটি বার্তা প্রদর্শন করুন৷

        const readline = createInterface(process.stdin, process.stdout);
        console.log("You're chatting with Gemini. Ctrl-C to quit.\n");
    
  4. ব্যবহারকারীর ইনপুট পড়ুন, তারপর chat.send ব্যবহার করে মডেলে পাঠান। ব্যবহারকারী CTRL + C প্রেস না করা পর্যন্ত অ্যাপটির এই অংশটি লুপ হবে।

        while (true) {
          const userInput = await readline.question("> ");
          const {text} = await chat.send(userInput);
          console.log(text);
        }
    

অ্যাপটি চালান

আপনি এখন আপনার টার্মিনাল থেকে অ্যাপটি চালাতে পারেন। আপনার প্রকল্পের রুট ফোল্ডারে টার্মিনাল খুলুন, তারপর নিম্নলিখিত কমান্ড চালান:

npx tsx src/index.ts path/to/some.pdf

তারপর আপনি PDF ফাইলের সাথে চ্যাটিং শুরু করতে পারেন।