Firebase Genkit tích hợp sẵn các công cụ tích hợp giúp bạn triển khai luồng đến Cloud Functions cho Firebase và Google Cloud Run, nhưng bạn cũng có thể triển khai luồng đến bất kỳ nền tảng nào có thể phân phát ứng dụng Express.js, cho dù đó là dịch vụ được lưu trữ trên đám mây hay tự lưu trữ.
Ví dụ: trang này sẽ hướng dẫn bạn quy trình triển khai quy trình mẫu mặc định.
Trước khi bắt đầu
- Node.js 20 trở lên: Xác nhận rằng môi trường của bạn đang sử dụng Node.js phiên bản 20 trở lên (node --version).
- Bạn phải nắm rõ khái niệm về luồng của Genkit.
1. Thiết lập dự án
Tạo thư mục cho dự án:
export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
mkdir -p $GENKIT_PROJECT_HOME
cd $GENKIT_PROJECT_HOME
Khởi chạy dự án Node.js:
npm init -y
Cài đặt Genkit và các phần phụ thuộc cần thiết:
npm install --save genkit @genkit-ai/googleai
npm install -D genkit-cli typescript tsx
2. Định cấu hình ứng dụng Genkit
Thiết lập quy trình và máy chủ mẫu:
Trong
src/index.ts
, hãy xác định một flow mẫu và định cấu hình máy chủ flow:import { genkit } from 'genkit'; import { googleAI, gemini15Flash } from '@genkit-ai/googleai'; const ai = genkit({ plugins: [googleAI()], model: gemini15Flash, }); const helloFlow = ai.defineFlow( { name: 'helloFlow', inputSchema: z.object({ name: z.string() }), outputSchema: z.string(), }, async (input) => { const { text } = ai.generate('Say hello to ${input.name}'); return text; } ); ai.startFlowServer({ flows: [menuSuggestionFlow], });
Bạn cũng có thể chỉ định một số tham số không bắt buộc cho
startFlowServer
:port
: cổng mạng để nghe. Nếu không chỉ định, máy chủ sẽ nghe trên cổng được xác định trong biến môi trường PORT và nếu không đặt PORT, giá trị mặc định sẽ là 3400.cors
: Chính sách CORS của máy chủ luồng. Nếu sẽ truy cập vào các điểm cuối này từ một ứng dụng web, bạn có thể cần phải chỉ định điều này.pathPrefix
: tiền tố đường dẫn không bắt buộc để thêm vào trước các điểm cuối của luồng.jsonParserOptions
: các tuỳ chọn để truyền đến trình phân tích cú pháp nội dung JSON của Express
Thiết lập thông tin xác thực của nhà cung cấp mô hình:
Định cấu hình các biến môi trường bắt buộc cho nhà cung cấp mô hình. Trong hướng dẫn này, chúng ta sẽ lấy Gemini API từ Google AI Studio làm ví dụ.
Lấy khoá API từ Google AI Studio
Sau khi bạn tạo khoá API, hãy đặt biến môi trường
GOOGLE_GENAI_API_KEY
thành khoá của bạn bằng lệnh sau:export GOOGLE_GENAI_API_KEY=<your API key>
Mỗi nhà cung cấp triển khai sẽ có cách bảo mật khoá API riêng trong môi trường của họ. Để đảm bảo an toàn, hãy đảm bảo khoá API của bạn không bị công khai.
3. Chuẩn bị dự án Node.js để triển khai
Thêm tập lệnh bắt đầu và bản dựng vào package.json
Để triển khai dự án Node.js, hãy xác định tập lệnh start
và build
trong package.json
. Đối với dự án TypeScript, các tập lệnh này sẽ có dạng như sau:
"scripts": {
"start": "node --watch lib/index.js",
"build": "tsc"
},
Tạo bản dựng và kiểm thử cục bộ
Chạy lệnh bản dựng, sau đó khởi động máy chủ và kiểm thử máy chủ trên máy để xác nhận máy chủ hoạt động như mong đợi.
npm run build
npm start
Trong một cửa sổ dòng lệnh khác, hãy kiểm thử điểm cuối:
curl -X POST "http://127.0.0.1:3400/menuSuggestionFlow" \
-H "Content-Type: application/json" \
-d '{"data": "banana"}'
Không bắt buộc: Khởi động Giao diện người dùng dành cho nhà phát triển
Bạn có thể sử dụng Giao diện người dùng dành cho nhà phát triển để kiểm thử các luồng một cách tương tác trong quá trình phát triển:
npx genkit start -- npm run start
Chuyển đến http://localhost:4000/flows để kiểm thử luồng trong giao diện người dùng.
4. Triển khai dự án
Sau khi định cấu hình và kiểm thử dự án trên máy, bạn đã sẵn sàng triển khai dự án đó trên bất kỳ nền tảng nào tương thích với Node.js. Các bước triển khai sẽ khác nhau tuỳ theo nhà cung cấp, nhưng nhìn chung, bạn sẽ định cấu hình các chế độ cài đặt sau:
Cài đặt | Giá trị |
---|---|
Thời gian chạy | Node.js 20 trở lên |
Lệnh tạo bản dựng | npm run build |
Lệnh bắt đầu | npm start |
Biến môi trường | Đặt GOOGLE_GENAI_API_KEY=<your-api-key> và các bí mật cần thiết khác |
Lệnh start
(npm start
) phải trỏ đến điểm truy cập đã biên dịch, thường là lib/index.js
. Hãy nhớ thêm tất cả biến môi trường cần thiết cho nền tảng triển khai của bạn.
Sau khi triển khai, bạn có thể sử dụng URL dịch vụ được cung cấp để gọi flow dưới dạng điểm cuối HTTPS.