प्रॉम्प्ट

प्रॉम्प्ट में बदलाव करना ऐसा मुख्य तरीका है जिससे आप ऐप्लिकेशन डेवलपर के तौर पर, लोगों पर असर डालते हैं जनरेटिव एआई मॉडल का आउटपुट होना चाहिए. उदाहरण के लिए, एलएलएम इस्तेमाल करते समय, प्रॉम्प्ट के टोन, फ़ॉर्मैट, लंबाई, और अन्य विशेषताओं पर असर डालते हैं मॉडल के जवाब नहीं मिलते.

Genkit को इस आधार पर डिज़ाइन किया गया है कि प्रॉम्प्ट, कोड होते हैं. आपने लिखा और सोर्स फ़ाइलों में अपने प्रॉम्प्ट बनाए रखें, उसी वर्शन का इस्तेमाल करके उनमें किए गए बदलावों को ट्रैक करें किस सिस्टम का उपयोग किया जा सकता है, और आप उन्हें कोड के साथ डिप्लॉय कर सकते हैं जो आपके जनरेटिव एआई मॉडल को कॉल करते हैं.

ज़्यादातर डेवलपर को, शामिल की गई Dotprompt लाइब्रेरी मिलेगी Genkit में प्रॉम्प्ट के साथ काम करने की उनकी ज़रूरतों को पूरा करती है. हालांकि, वैकल्पिक इन तरीकों का इस्तेमाल, सीधे तौर पर प्रॉम्प्ट के साथ काम करके भी किया जा सकता है.

प्रॉम्प्ट तय करना

Genkit के जनरेशन हेल्पर फ़ंक्शन, स्ट्रिंग प्रॉम्प्ट स्वीकार करते हैं. इससे आपको मॉडल को कारगर कहा जाता है.

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"))))

हालांकि, आपके कोड में प्रॉम्प्ट तय करने में एक कमी यह है कि टेस्टिंग के लिए प्रक्रिया में शामिल किया जा सकता है. तेज़ी से टास्क पूरा करने के लिए, Genkit ऐसी सुविधा देता है का इस्तेमाल करें.

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

डॉटप्रॉम्प्ट

Genkit में Dotprompt लाइब्रेरी शामिल है, जिससे के फ़ंक्शन का इस्तेमाल करना चाहिए.

  • .prompt सोर्स फ़ाइलों से प्रॉम्प्ट लोड हो रहे हैं
  • हैंडलबार पर आधारित टेंप्लेट
  • मल्टी-टर्न प्रॉम्प्ट टेंप्लेट और मल्टीमीडिया कॉन्टेंट के लिए सहायता
  • इनपुट और आउटपुट स्कीमा की कम शब्दों में परिभाषाएं
  • generate() के साथ धाराप्रवाह उपयोग