البدء

لبدء استخدام Firebase Genkit، عليك تثبيت واجهة سطر الأوامر Genkit وتشغيل genkit init في مشروع Node.js. توضح لك بقية هذه الصفحة كيفية إجراء ذلك.

المتطلّبات

Node.js 20 أو أحدث.

الإجراء

  1. ثبِّت Genkit CLI من خلال تشغيل الأمر التالي:

    npm i -g genkit
    
  2. إنشاء مشروع عقدة جديد:

    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. حدد النموذج:

      Gemini (تكنولوجيات الذكاء الاصطناعي من Google)

      أبسط طريقة للبدء هي استخدام Google AI Gemini API. يُرجى التأكّد من أنّه متاح في منطقتك.

      أنشِئ مفتاح واجهة برمجة تطبيقات لواجهة Gemini API باستخدام Google AI Studio. بعد ذلك، اضبط متغيّر البيئة GOOGLE_GENAI_API_KEY على المفتاح:

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      إذا لم تكن واجهة برمجة التطبيقات Google AI Gemini API متاحة في منطقتك، ننصحك باستخدام Vertex AI API التي توفّر أيضًا Gemini ونماذج أخرى. عليك أن يكون لديك مشروع على Google Cloud تم تفعيل الفوترة فيه، وتفعيل AI Platform API، وضبط بعض متغيّرات البيئة الإضافية:

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

      يُرجى الانتقال إلى https://cloud.google.com/vertex-ai/generative-ai/pricing للاطّلاع على أسعار Vertex AI.

    3. اختر الإجابات الافتراضية لبقية الأسئلة، والتي ستهيئ مجلد مشروعك ببعض التعليمات البرمجية.

    ينشئ الأمر genkit init نموذج ملف مصدر، index.ts، ويحدّد مسارًا فرديًا، وهو menuSuggestionFlow، يطلب من النموذج اللغوي الكبير اقتراح عنصر لمطعم ذي مظهر محدّد.

    يبدو هذا الملف مشابهًا لما يلي (قد تبدو خطوات ضبط المكوّن الإضافي مختلفة إذا اخترت 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();
    

    عند إنشاء ميزات الذكاء الاصطناعي (AI) في تطبيقك باستخدام Genkit، ستنشئ على الأرجح تدفقات من خطوات متعددة، مثل المعالجة المسبقة للإدخال، وإنشاء الطلبات بشكل أكثر تعقيدًا، ودمج مصادر المعلومات الخارجية لتوليد البيانات المعزَّزة (RAG)، وغير ذلك.

  4. يمكنك الآن تشغيل واستكشاف ميزات Genkit ونموذج المشروع محليًا على جهازك. ابدأ تنزيل واجهة مستخدم مطوّري برامج Genkit:

    genkit start
    

    مرحبًا بك في واجهة مستخدم مطوّري برامج Genkit

    إنّ واجهة مستخدم المطوّرين Genkit قيد التشغيل الآن على جهازك. عند تشغيل نماذج أو مسارات في الخطوة التالية، سينفّذ جهازك مهام التنسيق اللازمة لضمان عمل خطوات التدفق بشكل سليم، وسيستمر إجراء الطلبات إلى الخدمات الخارجية مثل Gemini API على الخوادم المباشرة.

    ولأنّك في بيئة تطوير، ستخزِّن Genkit بيانات آثار الأنشطة وحالة التدفق في الملفات المحلية.

  5. يتم تنزيل واجهة مستخدم المطوّرين Genkit وفتحها تلقائيًا عند تشغيل الأمر genkit start.

    تتيح لك واجهة مستخدم المطور معرفة التدفقات التي حددتها والنماذج التي أعددتها، فضلاً عن تشغيلها، وفحص آثار عمليات التشغيل السابقة. يمكنك تجربة بعض هذه الميزات:

    • في علامة التبويب تشغيل، سترى قائمة بجميع التدفقات التي حددتها وأي نماذج تم ضبطها بواسطة المكونات الإضافية.

      انقر على mesuggestionFlow وجرِّب تشغيله مع نص إدخال (على سبيل المثال، "cat"). وإذا سارت الأمور على ما يرام، ستحصل على اقتراح لقائمة طعام من مطعم مستوحى من القطط.

    • في علامة التبويب فحص، سيظهر لك سجلّ عمليات تنفيذ التدفق. بالنسبة لكل تدفق، يمكنك رؤية المعلمات التي تم تمريرها إلى التدفق وتتبع كل خطوة أثناء تشغيلها.

الخطوات اللاحقة

يمكنك الاطّلاع على طريقة إنشاء تطبيق Genkit ونشره باستخدام Firebase أو Cloud Run أو أي نظام Node.js الأساسي.