Bắt đầu

Để bắt đầu sử dụng Firebase Genkit, hãy cài đặt Genkit CLI và 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.

Cách thực hiện

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

    npm i -g genkit
    
  2. 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.

  3. 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 (các mẫu dành cho Firebase Cloud Functions và Google Cloud Run cũng có sẵn).

    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. Hãy đảm bảo ứng dụng này được cung cấp ở khu vực của bạn.

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

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (AI Vertex)

      Nếu Google AI Gemini API chưa có ở khu vực của bạn, hãy cân nhắc việc sử dụng Vertex AI API (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ợ tính năng thanh toán, bật API Nền tảng AI 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. Thao tác này sẽ khởi động thư mục dự án của bạn bằng một số mã mẫu.

    Lệnh genkit init tạo một tệp nguồn mẫu (index.ts) xác định một luồng duy nhất (menuSuggestionFlow). Tệp này sẽ nhắc một mô hình ngôn ngữ lớn (LLM) đề xuất một món ăn cho 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 sẽ 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 bằng Genkit, có thể bạn sẽ tạo các luồng qua nhiều bước như xử lý trước dữ liệu đầu vào, xây dựng câu lệnh tinh vi hơn, tích hợp các nguồn thông tin bên ngoài để tạo tăng cường truy xuất (RAG), v.v.

  4. Bây giờ, 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 máy của mình. 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 tác vụ điều phối cần thiết để các bước trong luồng hoạt động cùng nhau; các lệnh gọi đến các dịch vụ bên ngoài như Gemini API sẽ tiếp tục được thực hiện đối với các máy chủ đang hoạt động.

    Ngoài ra, vì 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 các tệp cục bộ.

  5. Giao diện người dùng của 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 luồng mà bạn đã xác định và các mô hình mà bạn đã định cấu hình, chạy các luồng đó cũng như kiểm tra dấu vết của các lần chạy trước đó. Hãy dùng thử một số tính năng sau:

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

      Nhấp vào menusuggestedionFlow và thử chạy với một số văn bản nhập (ví dụ: "cat"). Nếu không có vấn đề gì, bạn sẽ nhận được một đề xuất thực đơn cho một nhà hàng có chủ đề mèo.

    • 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 flow, bạn có thể xem các tham số đã được truyền đến flow và dấu vết của từng bước khi các flow này 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.