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 ক্লাউড প্রজেক্ট আইডি) এবং Genkit রেজিস্ট্রির সাথে বিভিন্ন ধরনের নতুন মডেল, এমবেডার এবং আরও অনেক কিছু নিবন্ধন করে। রেজিস্ট্রি রানটাইমে নামযুক্ত ক্রিয়াগুলির জন্য একটি সন্ধান পরিষেবা হিসাবে কাজ করে এবং মডেল, প্রম্পট এবং আরও অনেক কিছু চালানো এবং পরিদর্শনের জন্য Genkit এর স্থানীয় UI কে ক্ষমতা দেয়৷

একটি প্লাগইন তৈরি করা হচ্ছে

গো-তে, একটি জেনকিট প্লাগইন হল একটি প্যাকেজ যা নিয়মের একটি ছোট সেট মেনে চলে। একটি একক মডিউলে একাধিক প্লাগইন থাকতে পারে।

প্রদানকারী আইডি

প্রতিটি প্লাগইনের একটি অনন্য শনাক্তকারী স্ট্রিং থাকতে হবে যা এটিকে অন্যান্য প্লাগইন থেকে আলাদা করে। অন্যান্য প্লাগইনগুলির সাথে নামকরণের দ্বন্দ্ব প্রতিরোধ করতে আপনার প্লাগইন সংজ্ঞায়িত প্রতিটি সংস্থানের জন্য Genkit এই শনাক্তকারীটিকে একটি নামস্থান হিসাবে ব্যবহার করে৷

উদাহরণস্বরূপ, যদি আপনার প্লাগইনের yourplugin আইডি থাকে এবং text-generator নামে একটি মডেল প্রদান করে, তাহলে সম্পূর্ণ মডেল শনাক্তকারী হবে yourplugin/text-generator

আপনাকে আপনার সরবরাহকারী আইডি রপ্তানি করতে হবে না, তবে আপনার প্লাগইনের জন্য একবার এটি সংজ্ঞায়িত করা উচিত এবং একটি জেনকিট ফাংশনের প্রয়োজন হলে এটি ধারাবাহিকভাবে ব্যবহার করা উচিত।

const providerID = "yourplugin"

স্ট্যান্ডার্ড রপ্তানি

প্রতিটি প্লাগইনের নিম্নলিখিত চিহ্নগুলি সংজ্ঞায়িত এবং রপ্তানি করা উচিত:

  • নিম্নলিখিত মত একটি ঘোষণা সহ একটি Init() ফাংশন:

    func Init(ctx context.Context, cfg *Config) (err error)
    

    আপনি ব্যবহার করেন না এমন কোনো প্যারামিটার বাদ দিন (উদাহরণস্বরূপ, আপনার প্লাগইন কোনো প্লাগইন-ওয়াইড কনফিগারেশন বিকল্প প্রদান না করলে আপনার কাছে cfg প্যারামিটার নাও থাকতে পারে)।

    এই ফাংশনে, আপনার প্লাগইন দ্বারা প্রয়োজনীয় যেকোন সেটআপ পদক্ষেপগুলি সম্পাদন করুন৷ যেমন:

    • নিশ্চিত করুন যে কোনো প্রয়োজনীয় কনফিগারেশন মান নির্দিষ্ট করা হয়েছে এবং কোনো অনির্দিষ্ট ঐচ্ছিক সেটিংসে ডিফল্ট মান নির্ধারণ করুন।
    • প্রদত্ত কনফিগারেশন বিকল্পগুলি একসাথে বৈধ কিনা তা যাচাই করুন।
    • আপনার বাকি প্লাগইনের জন্য প্রয়োজনীয় কোনো শেয়ার করা সম্পদ তৈরি করুন। উদাহরণস্বরূপ, আপনার প্লাগইন অ্যাক্সেস করে এমন যেকোনো পরিষেবার জন্য ক্লায়েন্ট তৈরি করুন।

    যতটা সম্ভব, আপনার প্লাগইন দ্বারা প্রদত্ত সংস্থানগুলি অনুমান করা উচিত নয় যে ব্যবহারকারী Init কল করা ছাড়া অন্য কোনও পদক্ষেপ নিয়েছে।

    আপনার প্লাগইনটির কোনো আরম্ভ করার প্রয়োজন না থাকলেও আপনার এই ফাংশনটি সংজ্ঞায়িত এবং রপ্তানি করা উচিত। এই ক্ষেত্রে, Init শুধুমাত্র একটি nil ত্রুটি ফেরত দিতে পারে।

  • একটি Config স্ট্রাকট টাইপ। এই ধরনের Init দ্বারা গৃহীত সমস্ত কনফিগারেশন বিকল্পগুলিকে এনক্যাপসুলেট করা উচিত।

    যেকোন প্লাগইন বিকল্পের জন্য যা গোপন মান, যেমন API কী, আপনাকে কনফিগার করার জন্য একটি Config বিকল্প এবং একটি ডিফল্ট পরিবেশ পরিবর্তনশীল উভয়ই অফার করা উচিত। এটি আপনার প্লাগইনকে অনেক হোস্টিং প্রদানকারী (যেমন ক্লাউড সিক্রেট ম্যানেজার, যা আপনি ক্লাউড রানের সাথে ব্যবহার করতে পারেন) দ্বারা অফার করা গোপন ব্যবস্থাপনা বৈশিষ্ট্যগুলির সুবিধা নিতে দেয়৷ যেমন:

    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
    }
    

প্লাগইন বৈশিষ্ট্য নির্মাণ

একটি একক প্লাগইন জেনকিটের মধ্যে অনেক নতুন জিনিস সক্রিয় করতে পারে। উদাহরণস্বরূপ, Vertex AI প্লাগইনটি বেশ কয়েকটি নতুন মডেলের পাশাপাশি একটি এমবেডার সক্রিয় করে।

মডেল প্লাগইন

জেনকিট মডেল প্লাগইনগুলি জেনকিট রেজিস্ট্রিতে এক বা একাধিক জেনারেটিভ এআই মডেল যুক্ত করে। একটি মডেল এমন কোনো জেনারেটিভ মডেলকে উপস্থাপন করে যা ইনপুট হিসাবে একটি প্রম্পট গ্রহণ করতে এবং আউটপুট হিসাবে পাঠ্য, মিডিয়া বা ডেটা তৈরি করতে সক্ষম।

একটি জেনকিট মডেল প্লাগইন লেখা দেখুন।

টেলিমেট্রি প্লাগইন

Genkit টেলিমেট্রি প্লাগইনগুলি একটি নির্দিষ্ট মনিটরিং বা ভিজ্যুয়ালাইজেশন টুলে ট্রেস, মেট্রিক্স এবং লগগুলি রপ্তানি করতে জেনকিটের ওপেনটেলিমেট্রি ইন্সট্রুমেন্টেশন কনফিগার করে।

একটি জেনকিট টেলিমেট্রি প্লাগইন লেখা দেখুন।

একটি প্লাগইন প্রকাশ করা হচ্ছে

Genkit প্লাগইনগুলি সাধারণ Go প্যাকেজ হিসাবে প্রকাশ করা যেতে পারে। আবিষ্কারযোগ্যতা বাড়ানোর জন্য, আপনার প্যাকেজের নামের কোথাও genkit থাকা উচিত যাতে এটি pkg.go.dev এ একটি সাধারণ অনুসন্ধানের মাধ্যমে পাওয়া যায়। নিম্নলিখিত যে কোনো একটি ভাল পছন্দ:

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