Codelab ini menunjukkan cara menggunakan Genkit untuk menerapkan aplikasi yang memungkinkan Anda melakukan chat dengan file PDF.
Prasyarat
Codelab ini mengasumsikan bahwa Anda sudah terbiasa mem-build aplikasi dengan Node.js. Untuk menyelesaikan codelab ini, pastikan lingkungan pengembangan Anda memenuhi persyaratan berikut:
- Node.js v20+
- npm
Membuat project baru
Buat folder kosong baru.
mkdir chat-with-a-pdf cd chat-with-a-pdf
Lakukan inisialisasi project TypeScript baru.
npm init -y
Menginstal Genkit
Instal dependensi Genkit berikut untuk menggunakan Genkit dalam project Anda:
genkit
menyediakan kemampuan inti Genkit.@genkit-ai/googleai
memberikan akses ke model Gemini Google AI.
npm install genkit @genkit-ai/googleai
Mengonfigurasi kunci API model
Untuk panduan ini, kami akan menunjukkan cara menggunakan Gemini API, yang menyediakan paket gratis yang cukup besar dan tidak memerlukan kartu kredit untuk memulai. Untuk menggunakan Gemini API, Anda memerlukan kunci API. Jika Anda belum memilikinya, buat kunci di Google AI Studio.
Mendapatkan kunci API dari Google AI Studio
Setelah membuat kunci API, tetapkan variabel lingkungan GOOGLE_GENAI_API_KEY
ke kunci Anda dengan perintah berikut:
export GOOGLE_GENAI_API_KEY=<your API key>
Catatan: Meskipun tutorial ini menggunakan Gemini API dari AI Studio, Genkit mendukung berbagai penyedia model, termasuk: * Gemini dari Vertex AI * Model Claude 3 dari Anthropic dan Llama 3.1 melalui Vertex AI Model Garden * Model open source melalui Ollama * Penyedia yang didukung komunitas seperti OpenAI dan Cohere.
Mengimpor dan melakukan inisialisasi Genkit
Buat folder baru
src
, dan di dalamnya, file baruindex.ts
. Tambahkan baris berikut untuk mengimpor Genkit dan plugin Google AI.import {gemini15Flash, googleAI} from '@genkit-ai/googleai'; import {genkit} from 'genkit';
Tambahkan baris berikut untuk mengonfigurasi Genkit dan menetapkan Gemini 1.5 Flash sebagai model default.
const ai = genkit({ plugins: [googleAI()], model: gemini15Flash, });
Tambahkan isi utama aplikasi Anda.
(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!
Memuat dan mengurai file PDF
Pada langkah ini, Anda akan menulis kode untuk memuat dan menguraikan file PDF.
Instal
pdf-parse
.npm i pdf-parse
Impor library PDF ke aplikasi Anda.
import pdf from 'pdf-parse'; import fs from 'fs';
Baca nama file PDF yang diteruskan dari command line.
// 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); }
Muat konten file PDF.
// 2: load PDF file let dataBuffer = fs.readFileSync(filename); const { text } = await pdf(dataBuffer);
Menyiapkan dialog
Ikuti langkah-langkah berikut untuk menyiapkan perintah.
Izinkan pengguna memberikan perintah kustom melalui command line. Jika tidak memberikan perintah, gunakan default.
const prefix = process.argv[3] || "Answer the user's questions about the contents of this PDF file.";
Masukkan awalan perintah dan teks lengkap file PDF ke dalam perintah untuk model.
const prompt = ` ${prefix} Context: ${data.text} `
Mengimplementasikan loop chat
Mulai chat dengan model dengan memanggil metode
chat
, meneruskan perintah (yang menyertakan teks lengkap file PDF).const chat = ai.chat({ system: prompt })
Impor
createInterface
; tindakan ini akan memungkinkan Anda mem-build UI berbasis teks.import {createInterface} from "node:readline/promises";
Buat instance input teks, lalu tampilkan pesan kepada pengguna.
const readline = createInterface(process.stdin, process.stdout); console.log("You're chatting with Gemini. Ctrl-C to quit.\n");
Baca input pengguna, lalu kirim ke model menggunakan
chat.send
. Bagian aplikasi ini akan berulang hingga pengguna menekan CTRL + C.while (true) { const userInput = await readline.question("> "); const {text} = await chat.send(userInput); console.log(text); }
Menjalankan aplikasi
Sekarang Anda dapat menjalankan aplikasi dari terminal. Buka terminal di folder root project Anda, lalu jalankan perintah berikut:
npx tsx src/index.ts path/to/some.pdf
Kemudian, Anda dapat mulai melakukan chat dengan file PDF.