เริ่มต้นใช้งาน 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 ฯลฯWindows

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

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

    ดาวน์โหลดและเรียกใช้โปรแกรมติดตั้งตามที่อธิบายไว้ในเอกสาร 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. เลือกรุ่นของคุณ

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

      สร้างคีย์ API สำหรับ Gemini API โดยใช้ Google AI Studio จากนั้นตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_GENAI_API_KEY เป็นคีย์ของคุณ

      export GOOGLE_GENAI_API_KEY=<your API key>

      หาก 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") หากทุกอย่างเรียบร้อยดี คุณจะได้รับรางวัลเป็นคำแนะนำเมนูสำหรับร้านอาหารธีมแมว

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