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

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

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

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

ข้อกำหนด

  • Go 1.22 ขึ้นไป โปรดดูดาวน์โหลดและติดตั้งในเอกสารอย่างเป็นทางการของ Go

  • Node.js 20 ขึ้นไป (สําหรับ Genkit CLI และ UI) ดูคำแนะนำสั้นๆ เกี่ยวกับการติดตั้ง Node ได้ที่ส่วนถัดไป

ติดตั้ง Genkit

  1. หากยังไม่มี Node 20 ขึ้นไปในระบบ ให้ติดตั้งเลย

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

    วิธีติดตั้ง nvm

    Linux, macOS ฯลฯ

    เรียกใช้คําสั่งต่อไปนี้

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

    Windows

    ดาวน์โหลดและเรียกใช้โปรแกรมติดตั้งตามที่อธิบายไว้ในเอกสาร nvm-windows

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

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

    npm i -g genkit

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

สร้างและสำรวจโปรเจ็กต์ตัวอย่าง

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

    mkdir genkit-intro && cd genkit-intro
  2. เริ่มต้นโปรเจ็กต์ 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 Platform 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 ตัวอย่างและติดตั้งข้อกำหนดที่จำเป็น ไฟล์ 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/googlegenai"
    )
    
    func main() {
    	ctx := context.Background()
    
    	// Initialize Genkit with 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.
    	g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}))
    	if err != nil {
    		log.Fatal(err)
    	}
    
    	// Define a simple flow that prompts an LLM to generate menu suggestions.
    	genkit.DefineFlow(g, "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 := googlegenai.GoogleAIModel(g, "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 := genkit.Generate(ctx, g,
    			ai.WithModel(m),
    			ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}),
    			ai.WithPromptText(fmt.Sprintf(`Suggest an item for the menu of a %s themed restaurant`, input)))
    		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 := resp.Text()
    		return text, nil
    	})
    
    	<-ctx.Done()
    }
    
    

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

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

    genkit start

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

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

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

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

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

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

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

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