Hướng dẫn này minh hoạ cách tạo một ứng dụng trò chuyện cho phép người dùng tóm tắt video trên YouTube và trò chuyện về nội dung của video bằng ngôn ngữ tự nhiên.
- Thiết lập dự án
- Nhập các phần phụ thuộc bắt buộc
- Định cấu hình Genkit và mô hình mặc định
- Lấy URL của video từ dòng lệnh
- Thiết lập lời nhắc
- Tạo phản hồi
- Chạy ứng dụng
Điều kiện tiên quyết
Trước khi bắt đầu, bạn nên thiết lập các điều kiện tiên quyết sau:
Các bước triển khai
Sau khi thiết lập các phần phụ thuộc, bạn có thể tạo dự án.
1. Thiết lập dự án
Tạo cấu trúc thư mục và tệp để lưu trữ mã nguồn.
$ mkdir -p summarize-a-video/src && \ cd summarize-a-video && \ touch src/index.ts
Khởi chạy một dự án TypeScript mới.
$ npm init -y
Cài đặt các phần phụ thuộc Genkit sau đây để sử dụng Genkit trong dự án:
$ npm i genkit @genkit-ai/googleai
genkit
cung cấp các tính năng cốt lõi của Genkit.@genkit-ai/googleai
cung cấp quyền truy cập vào các mô hình Gemini AI của Google.
Lấy và định cấu hình khoá API mô hình
Để sử dụng API Gemini mà hướng dẫn này sử dụng, trước tiên, bạn phải định cấu hình khoá API. Nếu bạn chưa có, hãy tạo một khoá trong Google AI Studio.
Gemini API cung cấp một cấp miễn phí hào phóng và không yêu cầu thẻ tín dụng để bắt đầu.
Sau khi tạo khoá API, hãy đặt biến môi trường
GEMINI_API_KEY
thành khoá của bạn bằng lệnh sau:$ export GEMINI_API_KEY=<your API key>
2. Nhập các phần phụ thuộc bắt buộc
Trong tệp index.ts
mà bạn đã tạo, hãy thêm các dòng sau để nhập các phần phụ thuộc cần thiết cho dự án này:
import { gemini, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
- Dòng đầu tiên nhập trình bổ trợ
googleAI
và hàm trình tải mô hìnhgemini
từ gói@genkit-ai/googleai
, cho phép truy cập vào các mô hình Gemini của Google.
3. Định cấu hình Genkit và mô hình mặc định
Thêm các dòng sau để định cấu hình Genkit và đặt Gemini 2.0 Flash làm mô hình mặc định.
const ai = genkit({
plugins: [googleAI()],
model: gemini('gemini-2.0-flash'),
});
Sau đó, bạn có thể thêm một khung cho mã và xử lý lỗi.
(async () => {
try {
// Step 1: get command line arguments
// Step 2: construct prompt
// Step 3: process video
} catch (error) {
console.error("Error processing video:", error);
}
})(); // <-- don't forget the trailing parentheses to call the function!
4. Phân tích cú pháp dòng lệnh và lấy URL video
Thêm mã để đọc URL của video được truyền vào từ dòng lệnh.
// Step 1: get command line arguments
const videoURL = process.argv[2];
if (!videoURL) {
console.error("Please provide a video URL as a command line argument.");
process.exit(1);
}
5. Thiết lập lời nhắc
Thêm mã để thiết lập lời nhắc:
// Step 2: construct prompt
const prompt = process.argv[3] || "Please summarize the following video:";
- Nội dung khai báo
const
này xác định một lời nhắc mặc định nếu người dùng không truyền một lời nhắc của riêng họ qua dòng lệnh.
6. Tạo phản hồi
Thêm mã sau để truyền lời nhắc đa phương thức vào mô hình:
// Step 3: process video
const { text } = await ai.generate({
prompt: [
{ text: prompt },
{ media: { url: videoURL, contentType: "video/mp4" } }
],
});
console.log(text);
Đoạn mã này gọi phương thức ai.generate
để gửi lời nhắc đa phương thức đến mô hình. Lời nhắc này bao gồm hai phần:
{ text: prompt }
: Đây là lời nhắc văn bản mà bạn đã xác định trước đó.{ media: { url: videoURL, contentType: "video/mp4" } }
: Đây là URL của video mà bạn đã cung cấp dưới dạng đối số dòng lệnh.contentType
được đặt thànhvideo/mp4
để cho biết URL trỏ đến tệp video MP4.
Phương thức ai.generate
trả về một đối tượng chứa văn bản đã tạo, sau đó được ghi nhật ký vào bảng điều khiển.
7. Chạy ứng dụng
Để chạy ứng dụng, hãy mở thiết bị đầu cuối trong thư mục gốc của dự án, sau đó chạy lệnh sau:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q
Sau một lát, bản tóm tắt về video bạn cung cấp sẽ xuất hiện.
Bạn cũng có thể truyền các câu lệnh khác. Ví dụ:
npx tsx src/index.ts https://www.youtube.com/watch\?v\=YUgXJkNqH9Q "Transcribe this video"