Bắt đầu

Để bắt đầu sử dụng Firebase Genkit, hãy cài đặt Genkit CLI rồi chạy genkit init trong dự án Node.js. Phần còn lại của trang này sẽ hướng dẫn bạn cách thực hiện.

Yêu cầu

Node.js 20 trở lên.

Đề xuất: nvm và Công cụ của nvm-windows là thuận tiện để cài đặt Nút.

Cài đặt Genkit

Cài đặt Genkit CLI bằng cách chạy lệnh sau:

npm i -g genkit

Lệnh này sẽ cài đặt Genkit CLI vào thư mục cài đặt Nút để có thể sử dụng bên ngoài dự án Nút.

Tạo và khám phá một dự án mẫu

  1. Tạo một dự án Nút mới:

    mkdir genkit-intro && cd genkit-intro
    npm init -y
    

    Xem package.json và đảm bảo trường main được đặt thành lib/index.js

  2. Khởi chạy dự án Genkit:

    genkit init
    
    1. Chọn Nền tảng khác làm lựa chọn nền tảng triển khai (mẫu cho Bạn cũng có thể sử dụng Firebase Cloud Functions và Google Cloud Run).

    2. Chọn mô hình của bạn:

      Gemini (AI của Google)

      Cách đơn giản nhất để bắt đầu là sử dụng Gemini API của Google AI. Đảm bảo đó là hoạt động ở khu vực của bạn.

      Tạo khoá API cho Gemini API thông qua Google AI Studio. Sau đó, đặt giá trị GOOGLE_GENAI_API_KEY biến môi trường vào khoá của bạn:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (AI Vertex)

      Nếu Gemini API của Google AI không có ở khu vực của bạn, hãy cân nhắc dùng Vertex AI API, vốn cũng cung cấp Gemini và các mô hình khác. Bạn sẽ cần có một dự án Google Cloud có hỗ trợ thanh toán, bật AI API Nền tảng và đặt một số biến môi trường bổ sung:

      gcloud services enable aiplatform.googleapis.com
      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      

      Xem tại https://cloud.google.com/vertex-ai/generative-ai/pricing để biết giá của Vertex AI.

    3. Chọn câu trả lời mặc định cho các câu hỏi còn lại. Điều này sẽ khởi chạy thư mục dự án của bạn với một số mã mẫu.

    Lệnh genkit init tạo một tệp nguồn mẫu index.ts. Tệp này xác định một luồng duy nhất (menuSuggestionFlow) để nhắc một mô hình ngôn ngữ lớn (LLM) đề xuất một mặt hàng của một nhà hàng theo một chủ đề nhất định.

    Tệp này có dạng như sau (các bước định cấu hình trình bổ trợ có thể trông khác nếu bạn chọn Vertex AI):

    import * as z from 'zod';
    
    // Import the Genkit core libraries and plugins.
    import { generate } from '@genkit-ai/ai';
    import { configureGenkit } from '@genkit-ai/core';
    import { defineFlow, startFlowsServer } from '@genkit-ai/flow';
    import { googleAI } from '@genkit-ai/googleai';
    
    // Import models from the Google AI plugin. The Google AI API provides access to
    // several generative models. Here, we import Gemini 1.5 Flash.
    import { gemini15Flash } from '@genkit-ai/googleai';
    
    configureGenkit({
      plugins: [
        // Load the Google AI plugin. You can optionally specify your API key
        // by passing in a config object; if you don't, the Google AI plugin uses
        // the value from the GOOGLE_GENAI_API_KEY environment variable, which is
        // the recommended practice.
        googleAI(),
      ],
      // Log debug output to tbe console.
      logLevel: 'debug',
      // Perform OpenTelemetry instrumentation and enable trace collection.
      enableTracingAndMetrics: true,
    });
    
    // Define a simple flow that prompts an LLM to generate menu suggestions.
    export const menuSuggestionFlow = defineFlow(
      {
        name: 'menuSuggestionFlow',
        inputSchema: z.string(),
        outputSchema: z.string(),
      },
      async (subject) => {
        // Construct a request and send it to the model API.
        const llmResponse = await generate({
          prompt: `Suggest an item for the menu of a ${subject} themed restaurant`,
          model: gemini15Flash,
          config: {
            temperature: 1,
          },
        });
    
        // Handle the response from the model API. In this sample, we just convert
        // it to a string, but more complicated flows might coerce the response into
        // structured output or chain the response into another LLM call, etc.
        return llmResponse.text();
      }
    );
    
    // Start a flow server, which exposes your flows as HTTP endpoints. This call
    // must come last, after all of your plug-in configuration and flow definitions.
    // You can optionally specify a subset of flows to serve, and configure some
    // HTTP server options, but by default, the flow server serves all defined flows.
    startFlowsServer();
    

    Khi xây dựng các tính năng AI cho ứng dụng của mình bằng Genkit, có thể bạn sẽ tạo luồng gồm nhiều bước như xử lý trước đầu vào, tạo câu lệnh tinh vi, tích hợp thông tin bên ngoài để tạo dữ liệu tăng cường truy xuất (RAG), v.v.

  3. Giờ đây, bạn có thể chạy và khám phá các tính năng của Genkit cũng như dự án mẫu trên thiết bị trên máy của bạn. Tải xuống và khởi động giao diện người dùng dành cho nhà phát triển Genkit:

    genkit start
    

    Chào mừng bạn đến với giao diện người dùng dành cho nhà phát triển Genkit

    Giao diện người dùng dành cho nhà phát triển Genkit hiện đang chạy trên máy của bạn. Khi bạn chạy mô hình hoặc luồng ở bước tiếp theo, máy của bạn sẽ thực hiện các nhiệm vụ điều phối cần thiết để các bước trong quy trình hoạt động cùng nhau; lệnh gọi đến các nguồn bên ngoài các dịch vụ như Gemini API sẽ tiếp tục được triển khai để so sánh máy chủ.

    Ngoài ra, do bạn đang ở trong môi trường nhà phát triển, nên Genkit sẽ lưu trữ dấu vết và trạng thái luồng trong tệp cục bộ.

  4. Giao diện người dùng dành cho nhà phát triển Genkit sẽ tự động tải xuống và mở khi bạn chạy Lệnh genkit start.

    Giao diện người dùng dành cho nhà phát triển cho phép bạn xem những quy trình mà bạn đã xác định và các mô hình mà bạn đã định cấu hình, chạy chúng và kiểm tra dấu vết của các lần chạy trước đó. Hãy thử một vài các tính năng này:

    • Trên thẻ Run (Chạy), bạn sẽ thấy danh sách tất cả các quy trình mà bạn có đã xác định và bất kỳ mô hình nào đã được định cấu hình bởi trình bổ trợ.

      Nhấp vào menusuggestedionFlow rồi thử chạy với một số văn bản đầu vào (ví dụ: "cat"). Nếu mọi việc suôn sẻ, bạn sẽ nhận được một đề xuất thực đơn dành cho một chú mèo nhà hàng theo chủ đề.

    • Trên thẻ Inspect (Kiểm tra), bạn sẽ thấy nhật ký thực thi luồng. Đối với mỗi luồng, bạn có thể thấy các thông số đã được chuyển đến luồng và dấu vết của từng bước trong quá trình chạy.

Các bước tiếp theo

Xem cách xây dựng và triển khai ứng dụng Genkit của bạn bằng Firebase, Cloud Run hoặc bất kỳ nền tảng Node.js nào.