این کد لبه به شما نشان می دهد که چگونه از Genkit برای پیاده سازی برنامه ای استفاده کنید که به شما امکان می دهد با یک فایل PDF چت کنید.
پیش نیازها
این کد لبه فرض می کند که شما با ساختن برنامه های کاربردی با Node.js آشنا هستید. برای تکمیل این کد لبه، مطمئن شوید که محیط توسعه شما شرایط زیر را برآورده می کند:
- Node.js نسخه 20+
- npm
یک پروژه جدید ایجاد کنید
یک پوشه خالی جدید ایجاد کنید.
mkdir chat-with-a-pdf cd chat-with-a-pdf
یک پروژه TypeScript جدید را راه اندازی کنید.
npm init -y
Genkit را نصب کنید
برای استفاده از Genkit در پروژه خود، وابستگی های Genkit زیر را نصب کنید:
-
genkit
قابلیت های اصلی Genkit را فراهم می کند. -
@genkit-ai/googleai
دسترسی به مدلهای Google AI Gemini را فراهم میکند.
npm install genkit @genkit-ai/googleai
کلید API مدل خود را پیکربندی کنید
برای این راهنما، نحوه استفاده از Gemini API را به شما نشان میدهیم که یک ردیف رایگان سخاوتمندانه ارائه میکند و برای شروع به کارت اعتباری نیاز ندارد. برای استفاده از Gemini API، به یک کلید API نیاز دارید. اگر قبلاً یکی ندارید، یک کلید در Google AI Studio ایجاد کنید.
یک کلید API از Google AI Studio دریافت کنید
پس از ایجاد یک کلید API، متغیر محیطی GOOGLE_GENAI_API_KEY
را با دستور زیر روی کلید خود تنظیم کنید:
export GOOGLE_GENAI_API_KEY=<your API key>
توجه: در حالی که این آموزش از Gemini API از استودیو AI استفاده می کند، Genkit از ارائه دهندگان مدل های متنوعی پشتیبانی می کند، از جمله: * Gemini از Vertex AI * مدل های Anthropic's Claude 3 و Llama 3.1 از طریق Vertex AI Model Garden * مدل های منبع باز از طریق Ollama * ارائه دهندگان مورد حمایت جامعه مانند OpenAI و Cohere.
Genkit را وارد و مقداردهی اولیه کنید
یک پوشه جدید
src
ایجاد کنید و در داخل آن یک فایل جدیدindex.ts
ایجاد کنید. خطوط زیر را برای وارد کردن Genkit و افزونه Google AI اضافه کنید.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 می نویسید.
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.";
پیشوند prompt و متن کامل فایل PDF را به درخواست مدل تزریق کنید.
const prompt = ` ${prefix} Context: ${data.text} `
حلقه چت را پیاده سازی کنید
چت را با مدل با فراخوانی روش
chat
، عبور دادن فرمان (که شامل متن کامل فایل PDF است) شروع کنید.const chat = ai.chat({ system: prompt })
وارد کردن
createInterface
این به شما این امکان را می دهد که یک UI مبتنی بر متن بسازید.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 شروع کنید.