كتابة مكونات Genkit الإضافية

تم تصميم إمكانات Firebase 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. يعمل السجل كخدمة بحث عن الإجراءات المحددة في ويدعم واجهة المستخدم المحلية لـ 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 على ضبط أداة OpenTelemetry في Genkit على تصدير الآثار والمقاييس والسجلات إلى أداة مراقبة أو تصورات معينة .

راجِع كتابة مكوّن إضافي للقياس عن بُعد من Genkit.

نشر مكوّن إضافي

ويمكن نشر مكوّنات Genkit الإضافية كحزم Go عادية. لزيادة قابلية الاكتشاف، يجب أن يتضمن اسم الحزمة genkit في مكان ما لكي عن طريق البحث البسيط على pkg.go.dev ينطبق أي مما يلي: خيارات جيدة:

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