Genkit با Cloud Run، Genkit با Cloud Run، Genkit با Cloud Run، Genkit با Cloud Run

شما می توانید جریان های Genkit را به عنوان سرویس های وب با استفاده از Cloud Run مستقر کنید. این صفحه، به عنوان مثال، شما را در فرآیند استقرار جریان نمونه پیش‌فرض راهنمایی می‌کند.

  1. اگر قبلاً Google Cloud CLI را نصب نکرده اید، نصب کنید.

  2. با استفاده از کنسول Cloud یک پروژه جدید Google Cloud ایجاد کنید یا یک پروژه موجود را انتخاب کنید. پروژه باید به یک حساب صورتحساب مرتبط باشد.

    پس از ایجاد یا انتخاب پروژه، Google Cloud CLI را برای استفاده از آن پیکربندی کنید:

    gcloud auth login
    gcloud init
  3. یک دایرکتوری برای پروژه نمونه Genkit ایجاد کنید:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project

    اگر می خواهید از یک IDE استفاده کنید، آن را در این دایرکتوری باز کنید.

  4. یک ماژول Go را در فهرست پروژه خود راه اندازی کنید:

    go mod init example/cloudrun
    go mod get github.com/firebase/genkit/go
  5. با استفاده از Genkit یک برنامه نمونه ایجاد کنید:

    package main
    
    import (
        "context"
        "fmt"
        "log"
        "net/http"
        "os"
    
        "github.com/firebase/genkit/go/ai"
        "github.com/firebase/genkit/go/genkit"
        "github.com/firebase/genkit/go/plugins/googlegenai"
        "github.com/firebase/genkit/go/plugins/server"
    )
    
    func main() {
        ctx := context.Background()
    
        // Initialize Genkit with the Google AI plugin and Gemini 2.0 Flash.
        // Alternatively, use &googlegenai.VertexAI{} and "vertexai/gemini-2.0-flash"
        // to use Vertex AI as the provider instead.
        g, err := genkit.Init(ctx,
            genkit.WithPlugins(&googlegenai.GoogleAI{}),
            genkit.WithDefaultModel("googleai/gemini-2.0-flash"),
        )
        if err != nil {
            log.Fatalf("failed to initialize Genkit: %w", err)
        }
    
        flow := genkit.DefineFlow(g, "jokesFlow", func(ctx context.Context, topic string) (string, error) {
            resp, err := genkit.Generate(ctx, g,
                ai.WithPrompt(`Tell a short joke about %s. Be creative!`, topic),
            )
            if err != nil {
                return "", fmt.Errorf("failed to generate joke: %w", err)
            }
    
            return resp.Text(), nil
        })
    
        mux := http.NewServeMux()
        mux.HandleFunc("POST /jokesFlow", genkit.Handler(flow))
        log.Fatal(server.Start(ctx, "127.0.0.1:"+os.Getenv("PORT"), mux))
    }
    
  6. اعتبارنامه های API را در دسترس تابع مستقر خود قرار دهید. بر اساس انتخاب خود در نمونه بالا، اعتبار مورد نیاز خود را انتخاب کنید:

    جمینی (گوگل هوش مصنوعی)

    1. مطمئن شوید که Google AI در منطقه شما در دسترس است.

    2. با استفاده از Google AI Studio یک کلید API برای Gemini API ایجاد کنید .

    3. کلید API را در محیط Cloud Run در دسترس قرار دهید:

      1. در کنسول Cloud، Secret Manager API را فعال کنید.
      2. در صفحه Secret Manager ، یک رمز جدید حاوی کلید API خود ایجاد کنید.
      3. پس از ایجاد راز، در همان صفحه، به حساب سرویس محاسباتی پیش‌فرض خود به راز با نقش Secret Manager Secret Accessor دسترسی بدهید. (می توانید نام حساب پیش فرض سرویس محاسباتی را در صفحه IAM جستجو کنید.)

      در مرحله بعد، هنگام استقرار سرویس خود، باید نام این راز را ارجاع دهید.

    Gemini (Vertex AI)

    1. در کنسول Cloud، Vertex AI API را برای پروژه خود فعال کنید .

    2. در صفحه IAM ، اطمینان حاصل کنید که به حساب پیش‌فرض خدمات محاسباتی نقش Vertex AI User اعطا شده است.

    تنها رازی که باید برای این آموزش راه اندازی کنید، مربوط به ارائه دهنده مدل است، اما به طور کلی، باید برای هر سرویسی که جریان شما استفاده می کند، کاری مشابه انجام دهید.

  7. اختیاری : جریان خود را در رابط کاربری توسعه‌دهنده امتحان کنید:

    1. محیط محلی خود را برای ارائه دهنده مدلی که انتخاب کرده اید تنظیم کنید:

      جمینی (گوگل هوش مصنوعی)

      export GEMINI_API_KEY=<your API key>

      Gemini (Vertex AI)

      export GOOGLE_CLOUD_PROJECT=<your project ID>
      export GOOGLE_CLOUD_LOCATION=us-central1
      gcloud auth application-default login
    2. UI را شروع کنید:

      genkit start -- go run .
    3. در رابط کاربری توسعه دهنده (http://localhost:4000/)، جریان را اجرا کنید:

      1. jokesFlow را کلیک کنید.

      2. در زبانه ورودی JSON ، موضوعی را برای مدل ارائه دهید:

        "bananas"
        
      3. روی Run کلیک کنید.

  8. اگر تا کنون همه چیز همانطور که انتظار می رود کار می کند، می توانید جریان را بسازید و اجرا کنید:

    جمینی (گوگل هوش مصنوعی)

    gcloud run deploy --port 3400 \
      --update-secrets=GEMINI_API_KEY=<your-secret-name>:latest

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GOOGLE_CLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GOOGLE_CLOUD_LOCATION=us-central1

    ( GOOGLE_CLOUD_LOCATION ناحیه Vertex API را که می خواهید استفاده کنید پیکربندی می کند.)

    وقتی از شما پرسیده شد که آیا می‌خواهید فراخوان‌های احراز هویت نشده را مجاز کنید، N را انتخاب کنید. پاسخ دادن به N سرویس شما را طوری پیکربندی می‌کند که به اعتبارنامه IAM نیاز دارد. برای اطلاعات در مورد ارائه این اعتبارنامه ها به احراز هویت در اسناد Cloud Run مراجعه کنید.

پس از اتمام استقرار، ابزار URL سرویس را چاپ می کند. می توانید آن را با curl تست کنید:

curl -X POST https://<service-url>/menuSuggestionFlow \
  -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  -H "Content-Type: application/json" -d '"bananas"'