প্রম্পট ম্যানিপুলেশন হল প্রাথমিক উপায় যা আপনি, একজন অ্যাপ ডেভেলপার হিসাবে, জেনারেটিভ এআই মডেলের আউটপুটকে প্রভাবিত করেন। উদাহরণস্বরূপ, এলএলএম ব্যবহার করার সময়, আপনি প্রম্পট তৈরি করতে পারেন যা মডেলের প্রতিক্রিয়াগুলির স্বর, বিন্যাস, দৈর্ঘ্য এবং অন্যান্য বৈশিষ্ট্যগুলিকে প্রভাবিত করে।
Genkit প্রম্পট কোড হয় যে ভিত্তি চারপাশে ডিজাইন করা হয়েছে. আপনি সোর্স ফাইলগুলিতে আপনার প্রম্পটগুলি লেখেন এবং বজায় রাখেন, আপনি আপনার কোডের জন্য যে সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করেন সেই একই সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করে সেগুলির পরিবর্তনগুলি ট্র্যাক করেন এবং আপনি সেগুলিকে আপনার জেনারেটিভ AI মডেলগুলিকে কল করার কোডের সাথে স্থাপন করেন৷
বেশিরভাগ বিকাশকারী দেখতে পাবেন যে অন্তর্ভুক্ত ডটপ্রম্পট লাইব্রেরি জেনকিটে প্রম্পটগুলির সাথে কাজ করার জন্য তাদের প্রয়োজনীয়তা পূরণ করে। যাইহোক, বিকল্প পদ্ধতিগুলি সরাসরি প্রম্পটের সাথে কাজ করেও সমর্থিত।
সংজ্ঞায়িত প্রম্পট
জেনকিটের জেনারেশন হেল্পার ফাংশনগুলি স্ট্রিং প্রম্পট গ্রহণ করে, এবং আপনি সরাসরি-আগামী ব্যবহারের ক্ষেত্রে এইভাবে মডেলগুলিকে কল করতে পারেন।
ai.Generate(context.Background(), model, ai.WithTextPrompt("You are a helpful AI assistant named Walt."))
বেশিরভাগ ক্ষেত্রে, আপনাকে আপনার প্রম্পটে কিছু ব্যবহারকারী-প্রদত্ত ইনপুট অন্তর্ভুক্ত করতে হবে। আপনি তাদের এই মত রেন্ডার করার জন্য একটি ফাংশন সংজ্ঞায়িত করতে পারেন:
func helloPrompt(name string) *ai.Part {
prompt := fmt.Sprintf("You are a helpful AI assistant named Walt. Say hello to %s.", name)
return ai.NewTextPart(prompt)
}
response, err := ai.GenerateText(context.Background(), model,
ai.WithMessages(ai.NewUserMessage(helloPrompt("Fred"))))
যাইহোক, আপনার কোডে প্রম্পট সংজ্ঞায়িত করার একটি ত্রুটি হল যে পরীক্ষার জন্য একটি প্রবাহের অংশ হিসাবে সেগুলি কার্যকর করা প্রয়োজন। আরও দ্রুত পুনরাবৃত্তির সুবিধার্থে, জেনকিট আপনার প্রম্পটগুলিকে সংজ্ঞায়িত করার এবং বিকাশকারী UI এ চালানোর একটি সুবিধা প্রদান করে।
Genkit এর সাথে আপনার প্রম্পট নিবন্ধন করতে DefinePrompt
ফাংশন ব্যবহার করুন।
type HelloPromptInput struct {
UserName string
}
helloPrompt := ai.DefinePrompt(
"prompts",
"helloPrompt",
nil, // Additional model config
jsonschema.Reflect(&HelloPromptInput{}),
func(ctx context.Context, input any) (*ai.GenerateRequest, error) {
params, ok := input.(HelloPromptInput)
if !ok {
return nil, errors.New("input doesn't satisfy schema")
}
prompt := fmt.Sprintf(
"You are a helpful AI assistant named Walt. Say hello to %s.",
params.UserName)
return &ai.GenerateRequest{Messages: []*ai.Message{
{Content: []*ai.Part{ai.NewTextPart(prompt)}},
}}, nil
},
)
একটি প্রম্পট অ্যাকশন এমন একটি ফাংশনকে সংজ্ঞায়িত করে যা একটি GenerateRequest
ফেরত দেয়, যা যেকোনো মডেলের সাথে ব্যবহার করা যেতে পারে। ঐচ্ছিকভাবে, আপনি প্রম্পটের জন্য একটি ইনপুট স্কিমাও সংজ্ঞায়িত করতে পারেন, যা একটি প্রবাহের জন্য ইনপুট স্কিমার সাথে সাদৃশ্যপূর্ণ। প্রম্পটগুলি সাধারণ মডেল কনফিগারেশন বিকল্পগুলির মধ্যে যেকোনও সংজ্ঞায়িত করতে পারে, যেমন তাপমাত্রা বা আউটপুট টোকেনের সংখ্যা।
আপনি প্রদত্ত হেল্পার ফাংশন সহ একটি মডেল অনুরোধে এই প্রম্পটটি রেন্ডার করতে পারেন। প্রম্পট দ্বারা প্রত্যাশিত ইনপুট ভেরিয়েবল এবং কল করার জন্য মডেল প্রদান করুন।
request, err := helloPrompt.Render(context.Background(), HelloPromptInput{UserName: "Fred"})
if err != nil {
return err
}
response, err := model.Generate(context.Background(), request, nil)
Genkit বিকাশকারী UI-তে, আপনি এইভাবে সংজ্ঞায়িত যেকোনো প্রম্পট চালাতে পারেন। এটি আপনাকে প্রবাহের সুযোগের বাইরে পৃথক প্রম্পট নিয়ে পরীক্ষা করার অনুমতি দেয় যেখানে সেগুলি ব্যবহার করা যেতে পারে।
ডটপ্রম্পট
জেনকিটে ডটপ্রম্পট লাইব্রেরি রয়েছে যা প্রম্পটে অতিরিক্ত কার্যকারিতা যোগ করে।
-
.prompt
সোর্স ফাইল থেকে প্রম্পট লোড করা হচ্ছে - হ্যান্ডেলবার-ভিত্তিক টেমপ্লেট
- মাল্টি-টার্ন প্রম্পট টেমপ্লেট এবং মাল্টিমিডিয়া সামগ্রীর জন্য সমর্থন
- সংক্ষিপ্ত ইনপুট এবং আউটপুট স্কিমা সংজ্ঞা
-
generate()
এর সাথে সাবলীল ব্যবহার