เริ่มต้นใช้งาน Genkit โดยใช้ Go (อัลฟ่า)

ไลบรารี Firebase Genkit สำหรับ Go พร้อมให้ดูตัวอย่างแล้ว เนื่องจาก ขณะนี้ไลบรารี Go ยังอยู่ในรุ่นอัลฟ่า คุณอาจเห็นการเปลี่ยนแปลงของ API และฟังก์ชันเป็น ในระหว่างการพัฒนา เราขอแนะนำให้ใช้แอตทริบิวต์นี้เพื่อสร้างต้นแบบและ การสำรวจ

หากคุณพบปัญหาเกี่ยวกับไลบรารีหรือเอกสารนี้ โปรดรายงาน ในที่เก็บของ GitHub

หากต้องการเริ่มต้นใช้งาน Genkit ให้ติดตั้ง Genkit CLI แล้วเรียกใช้ genkit init ในโปรเจ็กต์ Go เนื้อหาที่เหลือของหน้านี้จะแสดงวิธีการ

ข้อกำหนด

  • ใช้เวอร์ชัน 1.22 ขึ้นไป

  • Node.js 20 ขึ้นไป (สำหรับ Genkit CLI และ UI)

    คำแนะนำ: nvm และ เครื่องมือของ nvm-windows วิธีที่สะดวกในการติดตั้งโหนดเฉพาะเวอร์ชันหากยังไม่มี ที่ติดตั้งในระบบของคุณ เครื่องมือเหล่านี้จะติดตั้งโหนด ตามผู้ใช้ เพื่อให้คุณ จะไม่ต้องทำการเปลี่ยนแปลงทั้งระบบ

    หากต้องการติดตั้ง nvm ในระบบที่คล้าย Unix เช่น macOS หรือ Linux ให้เรียกใช้คำสั่งต่อไปนี้ คำสั่ง:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    

    จากนั้น หากต้องการติดตั้งโหนดโดยใช้ nvm ให้เปิด Shell ใหม่และเรียกใช้ดังนี้ คำสั่ง:

    nvm install 20
    

ขั้นตอน

  1. ติดตั้ง Genkit CLI โดยเรียกใช้คำสั่งต่อไปนี้:

    npm i -g genkit
    

    คำสั่งนี้จะติดตั้ง Genkit CLI ลงในไดเรกทอรีการติดตั้งโหนด เพื่อให้ใช้งานนอกโปรเจ็กต์โหนดได้

  2. สร้างไดเรกทอรีโปรเจ็กต์ใหม่:

    mkdir genkit-intro && cd genkit-intro
    
  3. เริ่มต้นโปรเจ็กต์ Genkit โดยทำดังนี้

    genkit init
    
    1. เลือก Go เป็นสภาพแวดล้อมรันไทม์

    2. เลือกรุ่นของคุณ:

      Gemini (AI ของ Google)

      วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งานคือการใช้ Google AI Gemini API ตรวจสอบว่า คือ พร้อมให้บริการในภูมิภาคของคุณ

      สร้างคีย์ 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 API ของแพลตฟอร์ม และตั้งค่าตัวแปรสภาพแวดล้อมเพิ่มเติมดังนี้

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

      ดูราคา Vertex AI

    3. ระบุอะไรก็ได้สำหรับชื่อโมดูล เช่น example/genkit-intro

    4. เลือกคำตอบเริ่มต้นสำหรับคำถามที่เหลือ ซึ่งจะ เริ่มต้นโฟลเดอร์โปรเจ็กต์ด้วยโค้ดตัวอย่าง

    คำสั่ง genkit init จะสร้างโมดูล Go ตัวอย่างและติดตั้ง ทรัพยากร Dependency ที่จำเป็น ไฟล์ main.go ประกอบด้วยขั้นตอนเดียว menuSuggestionFlow ซึ่งจะแจ้งให้ LLM แนะนำรายการสำหรับ ร้านอาหารตามธีมที่กำหนดไว้

    ไฟล์นี้มีลักษณะคล้ายกับด้านล่างนี้ (ขั้นตอนการกำหนดค่าปลั๊กอิน อาจดูแตกต่างออกไปหากคุณเลือก Vertex AI ดังนี้

    package main
    
    import (
        "context"
        "errors"
        "fmt"
        "log"
    
        // Import Genkit and the Google AI plugin
        "github.com/firebase/genkit/go/ai"
        "github.com/firebase/genkit/go/genkit"
        "github.com/firebase/genkit/go/plugins/googleai"
    )
    
    func main() {
        ctx := context.Background()
    
        // Initialize the Google AI plugin. When you pass nil for the
        // Config parameter, the Google AI plugin will get the API key from the
        // GOOGLE_GENAI_API_KEY environment variable, which is the recommended
        // practice.
        if err := googleai.Init(ctx, nil); err != nil {
            log.Fatal(err)
        }
    
        // Define a simple flow that prompts an LLM to generate menu suggestions.
        genkit.DefineFlow("menuSuggestionFlow", func(ctx context.Context, input string) (string, error) {
            // The Google AI API provides access to several generative models. Here,
            // we specify gemini-1.5-flash.
            m := googleai.Model("gemini-1.5-flash")
            if m == nil {
                return "", errors.New("menuSuggestionFlow: failed to find model")
            }
    
            // Construct a request and send it to the model API (Google AI).
            resp, err := m.Generate(ctx,
                ai.NewGenerateRequest(
                    &ai.GenerationCommonConfig{Temperature: 1},
                    ai.NewUserTextMessage(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input))),
                nil)
            if err != nil {
                return "", err
            }
    
            // 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.
            text, err := resp.Text()
            if err != nil {
                return "", fmt.Errorf("menuSuggestionFlow: %v", err)
            }
            return text, nil
        })
    
        // Initialize Genkit and start a flow server. This call must come last,
        // after all of your plug-in configuration and flow definitions. When you
        // pass a nil configuration to Init, Genkit starts a local flow server,
        // which you can interact with using the developer UI.
        if err := genkit.Init(ctx, nil); err != nil {
            log.Fatal(err)
        }
    }
    

    เมื่อสร้างฟีเจอร์ AI ของแอปด้วย Genkit คุณมีแนวโน้มที่จะ โฟลว์ที่มีหลายขั้นตอน เช่น การประมวลผลอินพุตล่วงหน้า ซึ่งมีความซับซ้อนมากยิ่งขึ้น การสร้างข้อความแจ้ง การผสานรวมแหล่งข้อมูลภายนอก Retrieval-Augmented Generation (RAG) และอีกมากมาย

  4. ตอนนี้คุณเรียกใช้และสำรวจฟีเจอร์ Genkit และโปรเจ็กต์ตัวอย่างในเครื่องได้แล้ว ในเครื่องของคุณ ดาวน์โหลดและเริ่ม UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit โดยทำดังนี้

    genkit start
    

    ยินดีต้อนรับสู่
UI ของนักพัฒนาซอฟต์แวร์ Genkit

    UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit กำลังทำงานอยู่ในเครื่องของคุณ เมื่อคุณเรียกใช้โมเดล หรือโฟลว์ในขั้นตอนถัดไป เครื่องจะดำเนินการจัดการเป็นกลุ่ม ที่จำเป็นต่อการทำให้ขั้นตอนของขั้นตอนการทำงานทำงานร่วมกัน การโทรไปยังภายนอก เช่น Gemini API จะดำเนินการเผยแพร่ เซิร์ฟเวอร์

    นอกจากนี้ เนื่องจากคุณอยู่ในสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์ Genkit จึงจัดเก็บการติดตามและ สถานะโฟลว์ในไฟล์ในเครื่อง

  5. UI นักพัฒนาซอฟต์แวร์ Genkit จะดาวน์โหลดและเปิดขึ้นโดยอัตโนมัติเมื่อคุณเรียกใช้ คำสั่ง genkit start

    UI นักพัฒนาซอฟต์แวร์จะให้คุณดูว่าขั้นตอนใดที่คุณได้กำหนดไว้และสร้างแบบจำลอง กำหนดค่า เรียกใช้ และตรวจสอบการติดตามการเรียกใช้ก่อนหน้านี้ ลองใช้ ฟีเจอร์เหล่านี้

    • ในแท็บเรียกใช้ คุณจะเห็นรายการขั้นตอนทั้งหมดที่คุณมี ที่กำหนดไว้ และโมเดลใดก็ตามที่กำหนดค่าโดยปลั๊กอิน

      คลิก MenuRecommendationionFlow แล้วลองเรียกใช้กับข้อความอินพุต (สำหรับ เช่น "cat") หากทุกอย่างเป็นไปด้วยดี คุณจะได้รับรางวัลเป็นเมนู คำแนะนำสำหรับร้านอาหารธีมแมว

    • ในแท็บตรวจสอบ คุณจะเห็นประวัติการดำเนินการตามโฟลว์ สำหรับแต่ละรายการ คุณจะเห็นพารามิเตอร์ที่ส่งไปยังโฟลว์และการติดตาม ของแต่ละขั้นตอนขณะวิ่ง