Начало работы

Чтобы начать работу с Firebase Genkit, установите Genkit CLI и запустите genkit init в проекте Node.js. Оставшаяся часть этой страницы покажет вам, как это сделать.

Требования

Node.js 20 или новее.

Процедура

  1. Установите Genkit CLI, выполнив следующую команду:

    npm i -g genkit
    
  2. Создайте новый проект Node:

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

    Посмотрите package.json и убедитесь, что для main поля установлено значение lib/index.js .

  3. Инициализируйте проект Genkit:

    genkit init
    
    1. Выберите «Другая платформа» в качестве варианта платформы развертывания (также доступны шаблоны для облачных функций Firebase и Google Cloud Run).

    2. Выберите свою модель:

      Близнецы (ИИ Google)

      Самый простой способ начать — использовать Google AI Gemini API. Убедитесь, что оно доступно в вашем регионе .

      Создайте ключ API для Gemini API с помощью Google AI Studio. Затем установите для переменной среды GOOGLE_GENAI_API_KEY свой ключ:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Близнецы (Vertex AI)

      Если API Google AI Gemini недоступен в вашем регионе, рассмотрите возможность использования API Vertex AI, который также предлагает модели Gemini и другие модели. Вам потребуется иметь проект Google Cloud с поддержкой биллинга, включить API платформы AI и установить некоторые дополнительные переменные среды:

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

      Цены на Vertex AI см. на странице https://cloud.google.com/vertex-ai/generative-ai/pricing.

    3. Выберите ответы по умолчанию на остальные вопросы, которые инициализируют папку вашего проекта с помощью примера кода.

    Команда genkit init создает пример исходного файла index.ts , который определяет один поток, menuSuggestionFlow , который предлагает LLM предложить элемент для ресторана с заданной темой.

    Этот файл выглядит примерно следующим образом (этапы настройки плагина могут выглядеть иначе, если вы выбрали 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();
    

    Создавая функции искусственного интеллекта вашего приложения с помощью Genkit, вы, скорее всего, будете создавать потоки с несколькими этапами, такими как предварительная обработка входных данных, более сложное построение подсказок, интеграция внешних источников информации для генерации с расширенным поиском (RAG) и многое другое.

  4. Теперь вы можете запустить и изучить функции Genkit и пример проекта локально на своем компьютере. Загрузите и запустите пользовательский интерфейс разработчика Genkit:

    genkit start
    

    Добро пожаловать в пользовательский интерфейс разработчика Genkit

    Пользовательский интерфейс разработчика Genkit теперь работает на вашем компьютере. Когда вы запускаете модели или потоки на следующем этапе, ваша машина будет выполнять задачи оркестрации, необходимые для совместной работы этапов вашего потока; вызовы внешних сервисов, таких как API Gemini, по-прежнему будут выполняться на действующих серверах.

    Кроме того, поскольку вы находитесь в среде разработки, Genkit будет хранить трассировки и состояние потока в локальных файлах.

  5. Пользовательский интерфейс разработчика Genkit загружается и открывается автоматически при запуске команды genkit start .

    Пользовательский интерфейс разработчика позволяет вам увидеть, какие потоки вы определили и модели, которые вы настроили, запустить их и изучить следы предыдущих запусков. Попробуйте некоторые из этих функций:

    • На вкладке «Выполнить» вы увидите список всех определенных вами потоков и всех моделей, настроенных с помощью плагинов.

      Нажмите менюSuggestionFlow и попробуйте запустить его с каким-нибудь входным текстом (например, "cat" ). Если все пройдет хорошо, вы будете вознаграждены предложением меню для ресторана, оформленного в кошачьей тематике.

    • На вкладке «Проверка» вы увидите историю выполнения потока. Для каждого потока вы можете увидеть параметры, которые были переданы в поток, и трассировку каждого шага во время их выполнения.

Следующие шаги

Узнайте, как создать и развернуть приложение Genkit с помощью Firebase , Cloud Run или любой платформы Node.js.