সামগ্রী তৈরি করা হচ্ছে

Firebase Genkit LLM-এর সাথে সামগ্রী তৈরি করার জন্য একটি সহজ ইন্টারফেস প্রদান করে।

মডেল

Firebase Genkit-এর মডেলগুলি হল লাইব্রেরি এবং বিমূর্ত যা বিভিন্ন Google এবং নন-Google LLM-এ অ্যাক্সেস প্রদান করে।

মডেলগুলি পর্যবেক্ষণযোগ্যতার জন্য সম্পূর্ণরূপে তৈরি করা হয় এবং Genkit বিকাশকারী UI দ্বারা প্রদত্ত টুলিং ইন্টিগ্রেশনের সাথে আসে -- আপনি মডেল রানার ব্যবহার করে যেকোনো মডেল চেষ্টা করতে পারেন।

জেনকিটে মডেলগুলির সাথে কাজ করার সময়, আপনাকে প্রথমে যে মডেলটির সাথে আপনি কাজ করতে চান সেটি কনফিগার করতে হবে। মডেল কনফিগারেশন প্লাগইন সিস্টেম দ্বারা সঞ্চালিত হয়. এই উদাহরণে আপনি Vertex AI প্লাগইন কনফিগার করছেন, যা জেমিনি মডেলগুলি প্রদান করে।

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
}

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

model := vertexai.Model("gemini-1.5-flash")

সমর্থিত মডেল

Genkit তার প্লাগইন সিস্টেমের মাধ্যমে মডেল সমর্থন প্রদান করে। নিম্নলিখিত প্লাগইনগুলি আনুষ্ঠানিকভাবে সমর্থিত:

প্লাগইন মডেল
গুগল জেনারেটিভ এআই জেমিনি প্রো, মিথুন প্রো ভিশন
গুগল ভার্টেক্স এআই Gemini Pro, Gemini Pro Vision, Gemini 1.5 Flash, Gemini 1.5 Pro, Imagen2
ওল্লামা Gemma, Llama 2, Mistral এবং আরও অনেক কিছু সহ অনেক স্থানীয় মডেল

সেটআপ এবং ব্যবহারের তথ্যের জন্য প্রতিটি প্লাগইনের ডক্স দেখুন।

কিভাবে কন্টেন্ট জেনারেট করতে হয়

Genkit মডেলগুলির সাথে সামগ্রী তৈরি করার জন্য একটি সহজ সহায়ক ফাংশন প্রদান করে।

শুধু মডেল কল করতে:

responseText, err := ai.GenerateText(ctx, model, ai.WithTextPrompt("Tell me a joke."))
if err != nil {
	return err
}
fmt.Println(responseText)

আপনি মডেল কল সহ বিকল্পগুলি পাস করতে পারেন। সমর্থিত বিকল্পগুলি মডেল এবং এর API এর উপর নির্ভর করে।

response, err := ai.Generate(ctx, model,
	ai.WithTextPrompt("Tell me a joke about dogs."),
	ai.WithConfig(ai.GenerationCommonConfig{
		Temperature:     1.67,
		StopSequences:   []string{"cat"},
		MaxOutputTokens: 3,
	}))

স্ট্রিমিং প্রতিক্রিয়া

জেনকিট মডেল প্রতিক্রিয়াগুলির খণ্ডিত স্ট্রিমিং সমর্থন করে। খণ্ডিত স্ট্রিমিং ব্যবহার করতে, Generate() এ একটি কলব্যাক ফাংশন পাস করুন :

response, err := ai.Generate(ctx, gemini15pro,
	ai.WithTextPrompt("Tell a long story about robots and ninjas."),
	// stream callback
	ai.WithStreaming(
		func(ctx context.Context, grc *ai.GenerateResponseChunk) error {
			fmt.Printf("Chunk: %s\n", grc.Text())
			return nil
		}))
if err != nil {
	return err
}

// You can also still get the full response.
fmt.Println(response.Text())

মাল্টিমোডাল ইনপুট

যদি মডেলটি মাল্টিমোডাল ইনপুট সমর্থন করে, আপনি ইমেজ প্রম্পট পাস করতে পারেন:

imageBytes, err := os.ReadFile("img.jpg")
if err != nil {
	return err
}
encodedImage := base64.StdEncoding.EncodeToString(imageBytes)

resp, err := ai.Generate(ctx, gemini15pro, ai.WithMessages(
	ai.NewUserMessage(
		ai.NewTextPart("Describe the following image."),
		ai.NewMediaPart("", "data:image/jpeg;base64,"+encodedImage))))

ইমেজ প্রম্পটের সঠিক বিন্যাস ( https URL, gs URL, data URI) মডেল-নির্ভর।

ফাংশন কলিং (সরঞ্জাম)

জেনকিট মডেলগুলি ফাংশন কলিংয়ের জন্য একটি ইন্টারফেস প্রদান করে, যেগুলি এটি সমর্থন করে।

myJokeTool := ai.DefineTool(
	"myJoke",
	"useful when you need a joke to tell",
	func(ctx context.Context, input *any) (string, error) {
		return "haha Just kidding no joke! got you", nil
	},
)

response, err := ai.Generate(ctx, gemini15pro,
	ai.WithTextPrompt("Tell me a joke."),
	ai.WithTools(myJokeTool))

ব্যবহারকারীর প্রম্পট পূরণ করার জন্য এটি স্বয়ংক্রিয়ভাবে সরঞ্জামগুলিকে কল করবে।

বার্তা ইতিহাস রেকর্ডিং

জেনকিট মডেলগুলি মডেলে প্রেরিত বার্তা এবং এর প্রতিক্রিয়াগুলির একটি ইতিহাস বজায় রাখতে সমর্থন করে, যা আপনি চ্যাটবটের মতো ইন্টারেক্টিভ অভিজ্ঞতা তৈরি করতে ব্যবহার করতে পারেন।

একটি সেশনের প্রথম প্রম্পটে, "ইতিহাস" হ'ল কেবল ব্যবহারকারীর প্রম্পট:

history := []*ai.Message{{
	Content: []*ai.Part{ai.NewTextPart(prompt)},
	Role:    ai.RoleUser,
}}

response, err := ai.Generate(context.Background(), gemini15pro, ai.WithMessages(history...))

যখন আপনি একটি প্রতিক্রিয়া পাবেন, এটি ইতিহাসে যোগ করুন:

history = append(history, response.Candidates[0].Message)

আপনি এই ইতিহাসকে সিরিয়ালাইজ করতে পারেন এবং এটি একটি ডাটাবেস বা সেশন স্টোরেজে চালিয়ে যেতে পারেন। পরবর্তী ব্যবহারকারীর প্রম্পটের জন্য, Generate() কল করার আগে ইতিহাসে তাদের যোগ করুন :

history = append(history, &ai.Message{
	Content: []*ai.Part{ai.NewTextPart(prompt)},
	Role:    ai.RoleUser,
})

response, err = ai.Generate(ctx, gemini15pro, ai.WithMessages(history...))

আপনি যে মডেলটি ব্যবহার করছেন সেটি যদি সিস্টেমের ভূমিকা সমর্থন করে, আপনি সিস্টেম বার্তা সেট করতে প্রাথমিক ইতিহাস ব্যবহার করতে পারেন:

history = []*ai.Message{{
	Content: []*ai.Part{ai.NewTextPart("Talk like a pirate.")},
	Role:    ai.RoleSystem,
}}