इस कोडलैब में, Genkit का इस्तेमाल करके ऐसा ऐप्लिकेशन बनाने का तरीका बताया गया है जिसकी मदद से PDF फ़ाइल के साथ चैट की जा सकती है.
ज़रूरी शर्तें
इस कोडलैब में यह माना गया है कि आपको Node.js की मदद से ऐप्लिकेशन बनाने के बारे में पता है. इस कोडलैब को पूरा करने के लिए, पक्का करें कि आपका डेवलपमेंट एनवायरमेंट इन ज़रूरी शर्तों को पूरा करता हो:
- Node.js v20+
- npm
नया प्रोजेक्ट बनाएं
एक नया खाली फ़ोल्डर बनाएं.
mkdir chat-with-a-pdf cd chat-with-a-pdf
नया TypeScript प्रोजेक्ट शुरू करें.
npm init -y
Genkit इंस्टॉल करना
अपने प्रोजेक्ट में Genkit का इस्तेमाल करने के लिए, Genkit की ये डिपेंडेंसी इंस्टॉल करें:
genkit
, Genkit की मुख्य सुविधाएं उपलब्ध कराता है.@genkit-ai/googleai
, Google के एआई Gemini मॉडल का ऐक्सेस देता है.
npm install genkit @genkit-ai/googleai
अपने मॉडल की एपीआई पासकोड कॉन्फ़िगर करना
इस गाइड में, हम आपको Gemini API का इस्तेमाल करने का तरीका बताएंगे. यह एपीआई, बिना किसी शुल्क के इस्तेमाल किया जा सकता है. साथ ही, इसका इस्तेमाल शुरू करने के लिए क्रेडिट कार्ड की ज़रूरत नहीं होती. Gemini API का इस्तेमाल करने के लिए, आपके पास एपीआई पासकोड होना चाहिए. अगर आपके पास पहले से कोई पासकोड नहीं है, तो Google AI Studio में जाकर पासकोड बनाएं.
Google AI Studio से एपीआई पासकोड पाना
एपीआई कुंजी बनाने के बाद, नीचे दिए गए निर्देश का इस्तेमाल करके, अपनी कुंजी में GOOGLE_GENAI_API_KEY
एनवायरमेंट वैरिएबल सेट करें:
export GOOGLE_GENAI_API_KEY=<your API key>
ध्यान दें: इस ट्यूटोरियल में, AI Studio के Gemini API का इस्तेमाल किया गया है. हालांकि, Genkit कई तरह के मॉडल उपलब्ध कराता है. इनमें ये शामिल हैं: * Vertex AI का Gemini * Vertex AI Model Garden की मदद से, Anthropic के Claude 3 मॉडल और Llama 3.1 * Ollama की मदद से ओपन सोर्स मॉडल * OpenAI और Cohere जैसे कम्यूनिटी के साथ काम करने वाले प्रोवाइडर.
Genkit को इंपोर्ट और शुरू करना
नया फ़ोल्डर
src
बनाएं और उसमें एक नई फ़ाइलindex.ts
बनाएं. Genkit और Google के एआई प्लग इन को इंपोर्ट करने के लिए, ये लाइनें जोड़ें.import {gemini15Flash, googleAI} from '@genkit-ai/googleai'; import {genkit} from 'genkit';
Genkit को कॉन्फ़िगर करने और Gemini 1.5 Flash को डिफ़ॉल्ट मॉडल के तौर पर सेट करने के लिए, ये लाइनें जोड़ें.
const ai = genkit({ plugins: [googleAI()], model: gemini15Flash, });
अपने ऐप्लिकेशन का मुख्य हिस्सा जोड़ें.
(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!
PDF फ़ाइल को लोड और पार्स करना
इस चरण में, आपको पीडीएफ़ फ़ाइल को लोड और पार्स करने के लिए कोड लिखना होगा.
pdf-parse
इंस्टॉल करें.npm i pdf-parse
PDF लाइब्रेरी को अपने ऐप्लिकेशन में इंपोर्ट करें.
import pdf from 'pdf-parse'; import fs from 'fs';
कमांड लाइन से पास की गई 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); }
PDF फ़ाइल का कॉन्टेंट लोड करें.
// 2: load PDF file let dataBuffer = fs.readFileSync(filename); const { text } = await pdf(dataBuffer);
प्रॉम्प्ट सेट अप करना
प्रॉम्प्ट सेट अप करने के लिए, यह तरीका अपनाएं.
उपयोगकर्ता को कमांड लाइन की मदद से, पसंद के मुताबिक प्रॉम्प्ट देने की अनुमति दें. अगर वे कोई प्रॉम्प्ट नहीं देते, तो डिफ़ॉल्ट प्रॉम्प्ट का इस्तेमाल करें.
const prefix = process.argv[3] || "Answer the user's questions about the contents of this PDF file.";
मॉडल के लिए प्रॉम्प्ट में, प्रॉम्प्ट प्रीफ़िक्स और PDF फ़ाइल का पूरा टेक्स्ट डालें.
const prompt = ` ${prefix} Context: ${data.text} `
चैट लूप लागू करना
chat
तरीके को कॉल करके, प्रॉम्प्ट (जिसमें PDF फ़ाइल का पूरा टेक्स्ट शामिल होता है) पास करके, मॉडल के साथ चैट शुरू करें.const chat = ai.chat({ system: prompt })
createInterface
इंपोर्ट करें; इससे आपको टेक्स्ट-आधारित यूज़र इंटरफ़ेस (यूआई) बनाने में मदद मिलेगी.import {createInterface} from "node:readline/promises";
टेक्स्ट इनपुट को इंस्टैंशिएट करें. इसके बाद, उपयोगकर्ता को एक मैसेज दिखाएं.
const readline = createInterface(process.stdin, process.stdout); console.log("You're chatting with Gemini. Ctrl-C to quit.\n");
उपयोगकर्ता का इनपुट पढ़ें. इसके बाद,
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 फ़ाइल के साथ चैट की जा सकती है.