ไลบรารี Firebase Genkit สำหรับ Go พร้อมให้ดูตัวอย่างแล้ว เนื่องจาก ขณะนี้ไลบรารี Go ยังอยู่ในรุ่นอัลฟ่า คุณอาจเห็นการเปลี่ยนแปลงของ API และฟังก์ชันเป็น ในระหว่างการพัฒนา เราขอแนะนำให้ใช้รายงานนี้เพื่อสร้างต้นแบบและ การสำรวจ
หากคุณพบปัญหาเกี่ยวกับไลบรารีหรือเอกสารนี้ โปรดรายงาน ในที่เก็บของ GitHub
หากต้องการเริ่มต้นใช้งาน Genkit ให้ติดตั้ง Genkit CLI แล้วเรียกใช้
genkit init
ในโปรเจ็กต์ Go เนื้อหาที่เหลือของหน้านี้จะแสดงวิธีการ
ข้อกำหนด
ใช้เวอร์ชัน 1.22 ขึ้นไป โปรดดูที่ดาวน์โหลดและติดตั้งใน เอกสารอย่างเป็นทางการของ Go
Node.js 20 ขึ้นไป (สำหรับ Genkit CLI และ UI) โปรดดูส่วนถัดไปสำหรับ คำแนะนำโดยย่อเกี่ยวกับการติดตั้งโหนด
ติดตั้ง Genkit
หากคุณยังไม่มีโหนด 20 หรือใหม่กว่าในระบบ ให้ติดตั้งเลย
คำแนะนำ:
nvm
และ เครื่องมือของnvm-windows
วิธีที่สะดวกในการติดตั้งโหนดเฉพาะเวอร์ชันหากยังไม่มี ที่ติดตั้งในระบบของคุณ เครื่องมือเหล่านี้จะติดตั้งโหนด ตามผู้ใช้ เพื่อให้คุณ จะไม่ต้องทำการเปลี่ยนแปลงทั้งระบบวิธีติดตั้ง
nvm
Linux, macOS ฯลฯ
เรียกใช้คำสั่งต่อไปนี้
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
Windows
ดาวน์โหลดและเรียกใช้โปรแกรมติดตั้งตามที่อธิบายไว้ในเอกสาร nvm-windows
จากนั้นหากต้องการติดตั้งโหนดและ
npm
ให้เปิด Shell ใหม่และเรียกใช้ดังนี้ คำสั่ง:nvm install 20
ติดตั้ง Genkit CLI โดยเรียกใช้คำสั่งต่อไปนี้:
npm i -g genkit
คำสั่งนี้จะติดตั้ง Genkit CLI ลงในไดเรกทอรีการติดตั้งโหนด เพื่อให้ใช้งานนอกโปรเจ็กต์โหนดได้
สร้างและสำรวจโปรเจ็กต์ตัวอย่าง
สร้างไดเรกทอรีโปรเจ็กต์ใหม่:
mkdir genkit-intro && cd genkit-intro
เริ่มต้นโปรเจ็กต์ Genkit โดยทำดังนี้
genkit init
เลือก
Go
เป็นสภาพแวดล้อมรันไทม์เลือกรุ่นของคุณ:
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
ระบุอะไรก็ได้สำหรับชื่อโมดูล เช่น
example/genkit-intro
เลือกคำตอบเริ่มต้นสำหรับคำถามที่เหลือ ซึ่งจะ เริ่มต้นโฟลเดอร์โปรเจ็กต์ด้วยโค้ดตัวอย่าง
คำสั่ง
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 := ai.Generate(ctx, m, ai.WithConfig(&ai.GenerationCommonConfig{Temperature: 1}), ai.WithTextPrompt(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 }) // 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) และอีกมากมาย
ตอนนี้คุณเรียกใช้และสำรวจฟีเจอร์ Genkit และโปรเจ็กต์ตัวอย่างในเครื่องได้แล้ว ในเครื่องของคุณ ดาวน์โหลดและเริ่ม UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit โดยทำดังนี้
genkit start
UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit กำลังทำงานอยู่ในเครื่องของคุณ เมื่อคุณเรียกใช้โมเดล หรือโฟลว์ในขั้นตอนถัดไป เครื่องจะดำเนินการจัดการเป็นกลุ่ม ที่จำเป็นต่อการทำให้ขั้นตอนของขั้นตอนการทำงานทำงานร่วมกัน การโทรไปยังภายนอก เช่น Gemini API จะยังคงเผยแพร่ เซิร์ฟเวอร์
นอกจากนี้ เนื่องจากคุณอยู่ในสภาพแวดล้อมสำหรับนักพัฒนาซอฟต์แวร์ Genkit จึงจัดเก็บการติดตามและ สถานะโฟลว์ในไฟล์ในเครื่อง
UI นักพัฒนาซอฟต์แวร์ Genkit จะดาวน์โหลดและเปิดขึ้นโดยอัตโนมัติเมื่อคุณเรียกใช้ คำสั่ง
genkit start
UI นักพัฒนาซอฟต์แวร์จะให้คุณดูว่าขั้นตอนใดที่คุณได้กำหนดไว้และสร้างแบบจำลอง กำหนดค่า เรียกใช้ และตรวจสอบการติดตามการเรียกใช้ก่อนหน้านี้ ลองใช้ ฟีเจอร์เหล่านี้
ในแท็บเรียกใช้ คุณจะเห็นรายการขั้นตอนทั้งหมดที่คุณมี ที่กำหนดไว้ และโมเดลใดก็ตามที่กำหนดค่าโดยปลั๊กอิน
คลิก MenuRecommendationionFlow แล้วลองเรียกใช้กับข้อความอินพุต (สำหรับ เช่น
"cat"
) หากทุกอย่างเป็นไปด้วยดี คุณจะได้รับรางวัลเป็นเมนู สำหรับร้านอาหารธีมแมวในแท็บตรวจสอบ คุณจะเห็นประวัติการดำเนินการตามโฟลว์ สำหรับแต่ละรายการ คุณจะเห็นพารามิเตอร์ที่ส่งไปยังโฟลว์และการติดตาม ของแต่ละขั้นตอนขณะวิ่ง