এলএলএম-এর সাথে কাজ করা একজন বিকাশকারী একই সাথে পরিচালনা করতে পারে এমন তথ্যের বিভিন্ন বিভাগ রয়েছে:
- ইনপুট: একটি নির্দিষ্ট কলের জন্য এলএলএম-এর প্রতিক্রিয়া নির্দেশ করার জন্য সরাসরি প্রাসঙ্গিক তথ্য। এর একটি উদাহরণ হল পাঠ্য যা সংক্ষিপ্ত করা প্রয়োজন।
- জেনারেশন কনটেক্সট: এমন তথ্য যা এলএলএম-এর সাথে প্রাসঙ্গিক, কিন্তু কলের জন্য নির্দিষ্ট নয়। এর একটি উদাহরণ বর্তমান সময় বা ব্যবহারকারীর নাম।
- এক্সিকিউশন কনটেক্সট: এমন তথ্য যা এলএলএম কলের আশেপাশের কোডের জন্য গুরুত্বপূর্ণ কিন্তু এলএলএমের জন্য নয়। এর একটি উদাহরণ হল একজন ব্যবহারকারীর বর্তমান প্রমাণীকরণ টোকেন।
জেনকিট একটি সামঞ্জস্যপূর্ণ context
অবজেক্ট প্রদান করে যা পুরো প্রক্রিয়া জুড়ে জেনারেশন এবং এক্সিকিউশন প্রসঙ্গ প্রচার করতে পারে। এই প্রসঙ্গটি ফ্লো , টুলস এবং প্রম্পট সহ সমস্ত অ্যাকশনের জন্য উপলব্ধ করা হয়েছে।
প্রসঙ্গটি কার্যকর করার সুযোগের মধ্যে বলা সমস্ত ক্রিয়াগুলিতে স্বয়ংক্রিয়ভাবে প্রচারিত হয়: প্রবাহে প্রবাহিত প্রসঙ্গটি প্রবাহের মধ্যে কার্যকর করা প্রম্পটগুলির জন্য উপলব্ধ করা হয়। generate()
পদ্ধতিতে পাঠানো প্রসঙ্গ জেনারেশন লুপের মধ্যে কল করা টুলগুলিতে উপলব্ধ।
কেন প্রসঙ্গ গুরুত্বপূর্ণ?
একটি সর্বোত্তম অনুশীলন হিসাবে, আপনাকে LLM-কে ন্যূনতম পরিমাণ তথ্য প্রদান করা উচিত যা এটি একটি টাস্ক সম্পূর্ণ করার জন্য প্রয়োজন। এটি একাধিক কারণে গুরুত্বপূর্ণ:
- এলএলএম-এর কাছে যত কম বহিরাগত তথ্য রয়েছে, তার কার্য সম্পাদনের সম্ভাবনা তত বেশি।
- যদি কোনও LLM-এর ব্যবহারকারী বা অ্যাকাউন্ট আইডি-এর মতো তথ্য টুলগুলিতে পাঠানোর প্রয়োজন হয়, তাহলে এটি সম্ভাব্য তথ্য ফাঁস করার জন্য প্রতারিত হতে পারে।
প্রসঙ্গ আপনাকে তথ্যের একটি পার্শ্ব চ্যানেল দেয় যা আপনার যেকোন কোড দ্বারা ব্যবহার করা যেতে পারে কিন্তু অগত্যা LLM-এ পাঠাতে হবে না। একটি উদাহরণ হিসাবে, এটি আপনাকে বর্তমান ব্যবহারকারীর উপলব্ধ সুযোগে টুল প্রশ্নগুলিকে সীমাবদ্ধ করার অনুমতি দিতে পারে।
প্রসঙ্গ কাঠামো
প্রসঙ্গ একটি বস্তু হতে হবে, কিন্তু এর বৈশিষ্ট্য আপনার সিদ্ধান্ত নিতে হবে. কিছু পরিস্থিতিতে জেনকিট স্বয়ংক্রিয়ভাবে প্রসঙ্গটি তৈরি করে। উদাহরণস্বরূপ, স্থায়ী সেশন ব্যবহার করার সময় state
সম্পত্তি স্বয়ংক্রিয়ভাবে প্রসঙ্গে যোগ করা হয়।
বর্তমান ব্যবহারকারী সম্পর্কে তথ্য সঞ্চয় করা প্রসঙ্গের সবচেয়ে সাধারণ ব্যবহারগুলির মধ্যে একটি। আমরা নিম্নলিখিত বিন্যাসে প্রমাণীকরণের প্রসঙ্গ যোগ করার পরামর্শ দিই:
{
auth: {
uid: "...", // the user's unique identifier
token: {...}, // the decoded claims of a user's id token
rawToken: "...", // the user's raw encoded id token
// ...any other fields
}
}
কনটেক্সট অবজেক্ট এমন যেকোন তথ্য সঞ্চয় করতে পারে যা সম্পাদনের প্রবাহে আপনার অন্য কোথাও জানার প্রয়োজন হতে পারে।
একটি কর্মে প্রসঙ্গ ব্যবহার করুন
একটি কর্মের মধ্যে প্রসঙ্গ ব্যবহার করতে, আপনি প্রসঙ্গ সহায়ক অ্যাক্সেস করতে পারেন যা স্বয়ংক্রিয়ভাবে আপনার ফাংশন সংজ্ঞাতে সরবরাহ করা হয়:
প্রবাহ
const summarizeHistory = ai.defineFlow({
name: 'summarizeMessages',
inputSchema: z.object({friendUid: z.string()}),
outputSchema: z.string();
}, async ({friendUid}, {context}) => {
if (!context.auth?.uid) throw new Error("Must supply auth context.");
const messages = await listMessagesBetween(friendUid, context.auth.uid);
const {text} = await ai.generate({
prompt:
`Summarize the content of these messages: ${JSON.stringify(messages)}`,
});
return text;
});
টুল
const searchNotes = ai.defineTool({
name: 'searchNotes',
description: "search the current user's notes for info",
inputSchema: z.object({query: z.string()}),
outputSchmea: z.array(NoteSchema);
}, async ({query}, {context}) => {
if (!context.auth?.uid) throw new Error("Must be called by a signed-in user.");
return searchUserNotes(context.auth.uid, query);
});
প্রম্পট ফাইল
ডটপ্রম্পট টেমপ্লেট ব্যবহার করার সময়, প্রসঙ্গটি @
পরিবর্তনশীল উপসর্গের সাথে উপলব্ধ করা হয়। উদাহরণস্বরূপ, {auth: {name: 'Michael'}}
এর একটি প্রসঙ্গ বস্তু প্রম্পট টেমপ্লেটে অ্যাক্সেস করা যেতে পারে যেমন:
---
input:
schema:
pirateStyle?: boolean
---
{{#if pirateStyle}}
Avast, {{@auth.name}}, how be ye today?
{{else}}
Hello, {{@auth.name}}, how are you today?
{{/if}}
রানটাইমে প্রসঙ্গ প্রদান করুন
একটি কর্মের প্রসঙ্গ প্রদান করতে, আপনি কর্মটি কল করার সময় একটি বিকল্প হিসাবে প্রসঙ্গ বস্তুটি পাস করেন।
প্রবাহিত হয়
const summarizeHistory = ai.defineFlow(/* ... */);
const summary = await summarizeHistory(friend.uid, {context: {auth: currentUser}});
প্রজন্ম
const {text} = await ai.generate({
prompt: "Find references to ocelots in my notes.",
// the context will propagate to tool calls
tools: [searchNotes],
context: {auth: currentUser},
});
প্রম্পট
const helloPrompt = ai.prompt('sayHello');
helloPrompt({pirateStyle: true}, {context: {auth: currentUser}});
প্রসঙ্গ প্রচার এবং ওভাররাইড
ডিফল্টরূপে, আপনি যখন প্রসঙ্গ প্রদান করেন তখন এটি স্বয়ংক্রিয়ভাবে আপনার আসল কলের ফলে বলা সমস্ত অ্যাকশনে প্রচারিত হয়। যদি আপনার ফ্লো অন্য ফ্লোকে কল করে, বা আপনার প্রজন্মের কল টুলস, একই প্রসঙ্গ প্রদান করা হয়।
আপনি যদি একটি কর্মের মধ্যে প্রসঙ্গ ওভাররাইড করতে চান, তাহলে আপনি বিদ্যমান একটি প্রতিস্থাপন করতে একটি ভিন্ন প্রসঙ্গ বস্তু পাস করতে পারেন:
const otherFlow = ai.defineFlow(/* ... */);
const myFlow = ai.defineFlow({
// ...
}, (input, {context}) => {
// override the existing context completely
otherFlow({/*...*/}, {context: {newContext: true}});
// or selectively override
otherFlow({/*...*/}, {context: {...context, updatedContext: true}});
});
প্রসঙ্গ প্রতিস্থাপিত হলে, এটি একইভাবে প্রচার করে। এই উদাহরণে, otherFlow
তার সম্পাদনের সময় যে কোনও ক্রিয়াকলাপকে ওভাররাইড করা প্রসঙ্গের উত্তরাধিকারী হবে।