Genkit प्लगिन लिखना

Firebase 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 रजिस्ट्री. रजिस्ट्री, यहां दी गई कार्रवाइयों के लिए लुकअप सेवा के तौर पर काम करती है और मॉडल को चलाने और उसकी जांच करने के लिए, 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 ने विकल्प स्वीकार किए.

    एपीआई पासकोड जैसे सीक्रेट वैल्यू वाले किसी भी प्लगिन विकल्प के लिए आपको कॉन्फ़िगर करने के लिए, 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 मॉडल के प्लगिन, Genkit में एक या एक से ज़्यादा जनरेटिव एआई मॉडल जोड़ते हैं रजिस्ट्री. मॉडल, ऐसे किसी भी जनरेटिव मॉडल को दिखाता है जो प्रॉम्प्ट को इनपुट के तौर पर और टेक्स्ट, मीडिया या डेटा को आउटपुट के तौर पर जनरेट किया जा सकता है.

Genkit मॉडल प्लगिन लिखना लेख पढ़ें.

टेलीमेट्री प्लगिन

Genkit टेलीमेट्री प्लगिन, Genkit के OpenTelemetry इंस्ट्रुमेंट को कॉन्फ़िगर करता है किसी खास मॉनिटरिंग या विज़ुअलाइज़ेशन में ट्रेस, मेट्रिक, और लॉग एक्सपोर्ट करें टूल.

Genkit टेलीमेट्री प्लगिन लिखना लेख पढ़ें.

प्लग इन प्रकाशित करना

Genkit प्लगिन को सामान्य Go पैकेज के तौर पर पब्लिश किया जा सकता है. बढ़ाने के लिए खोजे जाने लायक है, तो आपके पैकेज के नाम में कहीं genkit होना चाहिए, ताकि यह इन पर बस एक आसान से खोज करके पहुंचा जा सकता है pkg.go.dev. इनमें से कोई भी अच्छे विकल्प:

  • github.com/yourorg/genkit-plugins/servicename
  • github.com/yourorg/your-repo/genkit/servicename