ความสามารถของ Firebase Genkit ออกแบบมาเพื่อเสริมด้วยปลั๊กอิน Genkit ปลั๊กอินคือโมดูลที่กำหนดค่าได้ ซึ่งสามารถให้โมเดล รีทรีฟเวอร์ ตัวจัดทำดัชนี ติดตามร้านค้า และอื่นๆ อีกมากมาย คุณได้เห็นการทำงานของปลั๊กอินแล้วโดยใช้ Genkit:
import {
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/plugins/vertexai"
}
// Default to the value of GCLOUD_PROJECT for the project,
// and "us-central1" for the location.
// To specify these values directly, pass a vertexai.Config value to Init.
if err := vertexai.Init(ctx, nil); err != nil {
return err
}
ปลั๊กอิน Vertex AI รับการกำหนดค่า (เช่น Google Cloud ของผู้ใช้ รหัสโปรเจ็กต์) และลงทะเบียนโมเดลใหม่ เครื่องมือฝัง และอื่นๆ ที่หลากหลายด้วย รีจิสทรี Genkit รีจิสทรีทำหน้าที่เป็นบริการค้นหาสำหรับการดำเนินการที่มีชื่อที่ รันไทม์ และจะขับเคลื่อน UI ในเครื่องของ Genkit สำหรับการเรียกใช้และตรวจสอบโมเดล ข้อความแจ้ง และอื่นๆ
การสร้างปลั๊กอิน
ใน Go ปลั๊กอิน Genkit เป็นแพ็กเกจที่ปฏิบัติตามกลุ่ม การประชุม โมดูลเดียวสามารถมีหลายปลั๊กอินได้
รหัสผู้ให้บริการ
ปลั๊กอินทุกรายการต้องมีสตริงตัวระบุที่ไม่ซ้ำกันซึ่งแตกต่างจาก ปลั๊กอินอื่นๆ Genkit ใช้ตัวระบุนี้เป็นเนมสเปซสำหรับทรัพยากรทั้งหมด ที่ปลั๊กอินของคุณกำหนด เพื่อป้องกันไม่ให้ชื่อขัดแย้งกับปลั๊กอินอื่นๆ
ตัวอย่างเช่น หากปลั๊กอินของคุณมีรหัส yourplugin
และมีโมเดลที่ชื่อว่า
text-generator
ตัวระบุโมเดลแบบเต็มจะเป็น yourplugin/text-generator
คุณไม่จำเป็นต้องส่งออกรหัสผู้ให้บริการ แต่ควรกำหนดรหัสดังกล่าวเพียงครั้งเดียวสำหรับ ปลั๊กอินของคุณและใช้งานอย่างต่อเนื่องเมื่อฟังก์ชัน Genkit ต้องใช้
const providerID = "yourplugin"
การส่งออกมาตรฐาน
ปลั๊กอินทุกตัวควรกำหนดและส่งออกสัญลักษณ์ต่อไปนี้
ฟังก์ชัน
Init()
ที่มีการประกาศดังนี้func Init(ctx context.Context, cfg *Config) (err error)
ละเว้นพารามิเตอร์ใดๆ ที่คุณไม่ได้ใช้ (เช่น คุณอาจไม่มี
cfg
หากปลั๊กอินไม่มีการกำหนดค่าสำหรับทั้งปลั๊กอิน ตัวเลือก)ในฟังก์ชันนี้ ให้ทำตามขั้นตอนการตั้งค่าที่ปลั๊กอินของคุณกำหนด สำหรับ ตัวอย่าง:
- ตรวจสอบว่าได้ระบุและกำหนดค่าที่จำเป็นแล้ว ค่าเริ่มต้นเป็นการตั้งค่าที่ไม่บังคับที่ไม่ได้ระบุไว้
- ตรวจสอบว่าตัวเลือกการกำหนดค่าดังกล่าวใช้ร่วมกันอย่างถูกต้อง
- สร้างทรัพยากรที่แชร์ตามที่ปลั๊กอินที่เหลือจำเป็นต้องใช้ สำหรับ เช่น สร้างไคลเอ็นต์สำหรับบริการใดๆ ที่ปลั๊กอินของคุณเข้าถึง
หากเป็นไปได้ ทรัพยากรที่ได้จากปลั๊กอินของคุณไม่ควร ถือว่าผู้ใช้ได้ดำเนินการใดๆ นอกเหนือไปจากการโทรหา
Init
คุณควรกำหนดและส่งออกฟังก์ชันนี้แม้ว่าปลั๊กอินของคุณจะไม่จำเป็นต้องใช้ การเริ่มต้นใดๆ ในกรณีนี้
Init
สามารถแสดงเพียงข้อผิดพลาดnil
ประเภทโครงสร้าง
Config
ประเภทนี้ควรรวมการกำหนดค่าทั้งหมดเอาไว้ ตัวเลือกที่ยอมรับโดยInit
สำหรับตัวเลือกปลั๊กอินใดๆ ที่เป็นค่าลับ เช่น คีย์ API คุณควร เสนอทั้งตัวเลือก
Config
และตัวแปรสภาพแวดล้อมเริ่มต้นเพื่อกำหนดค่า ได้ วิธีนี้จะช่วยให้ปลั๊กอินใช้ประโยชน์จากฟีเจอร์การจัดการข้อมูลลับได้ ที่ให้บริการโดยผู้ให้บริการโฮสติ้งหลายราย (เช่น Cloud Secret Manager ซึ่งคุณสามารถ ใช้กับ Cloud Run) เช่นtype Config struct { ExampleAPIKey string } func Init(cfg *Config) (err error) { apiKey := cfg.ExampleAPIKey if apiKey == "" { apiKey = os.Getenv("EXAMPLE_API_KEY") } if apiKey == "" { return fmt.Errorf(`the Example plug-in requires you to specify an API key for the Example service, either by passing it to example.Init() or by setting the EXAMPLE_API_KEY environment variable`) } return nil }
การสร้างฟีเจอร์ปลั๊กอิน
ปลั๊กอินเดียวก็เปิดใช้งานสิ่งใหม่ๆ มากมายใน Genkit ได้ ตัวอย่างเช่น พารามิเตอร์ ปลั๊กอิน Vertex AI เปิดใช้งานโมเดลใหม่หลายรายการและเครื่องมือฝังได้
ปลั๊กอินโมเดล
ปลั๊กอินโมเดล Genkit จะเพิ่มโมเดล Generative AI อย่างน้อย 1 รายการลงใน Genkit รีจิสทรี โมเดลแสดงถึงโมเดล Generative ทั้งหมดที่สามารถรับ พรอมต์เป็นอินพุตและสร้างข้อความ สื่อ หรือข้อมูลเป็นเอาต์พุต
โปรดดูการเขียนปลั๊กอินโมเดล Genkit
ปลั๊กอิน Telemetry
ปลั๊กอินการวัดและส่งข้อมูลทางไกล Genkit จะกำหนดค่าการวัดคุม OpenTelemetry ของ Genkit เป็น ส่งออกการติดตาม เมตริก และบันทึกไปยังการตรวจสอบหรือการแสดงภาพข้อมูลหนึ่งๆ ของ Google
โปรดดูการเขียนปลั๊กอินการวัดและส่งข้อมูลทางไกลของ Genkit
การเผยแพร่ปลั๊กอิน
ปลั๊กอิน Genkit เผยแพร่เป็นแพ็กเกจ Go ปกติได้ เพื่อเพิ่ม
การค้นพบได้ แพ็กเกจของคุณควรมี genkit
อยู่ในชื่อด้วยเพื่อให้
ด้วยการค้นหาง่ายๆ บน
pkg.go.dev
รายการใดรายการหนึ่งต่อไปนี้คือ
ตัวเลือกที่ดี:
github.com/yourorg/genkit-plugins/servicename
github.com/yourorg/your-repo/genkit/servicename