কীভাবে Semantic Kernel ব্যবহার করবেন: প্যাটার্ন, প্রম্পট এবং প্লাগইন সহ একটি ব্যবহারিক গাইড
কখনও কি আপনার অ্যাপের সাথে একটি LLM জুড়তে চেষ্টা করেছেন এবং শেষ পর্যন্ত প্রম্পট, সহায়ক ফাংশন এবং স্টেটের একটি ভঙ্গুর জট তৈরি হয়েছে? Semantic Kernel (SK) ঠিক এটি সমাধানের জন্যই বিদ্যমান। এটি Microsoft-এর একটি হালকা ওজনের, ওপেন-সোর্স অর্কেস্ট্রেশন ফ্রেমওয়ার্ক যা AI-first অ্যাপ তৈরির জন্য তৈরি করা হয়েছে। এটি স্বাভাবিক ভাষা, সরঞ্জাম এবং মেমরিকে একত্রিত করে আপনার কোডবেসকে প্রম্পট স্প্যাগেটি বোলে পরিণত না করেই।
এই গাইডে, আমরা জিরো থেকে প্রোডাকশন প্যাটার্ন পর্যন্ত Semantic Kernel কীভাবে ব্যবহার করতে হয় তার একটি ব্যবহারিক, সমাধান-ভিত্তিক ভ্রমণ করব। আপনি প্রম্পট তৈরি, সরঞ্জাম যুক্ত, মেমরি যোগ, একাধিক মডেল কল এবং এজেন্ট স্থাপন করতে শিখবেন যা ধারাবাহিকভাবে কাজ করে। আমরা উদাহরণগুলোকে বাস্তবভিত্তিক রাখব এবং আপনাকে দেখাব যে কোনগুলো গুরুত্বপূর্ণ।
Semantic Kernel কী—এবং কেন এটি ব্যবহার করবেন?
Semantic Kernel হল একটি SDK যা আপনাকে সাহায্য করে:
- প্রম্পট এবং ফাংশন ("স্কিল"/প্লাগইন) পাইপলাইনে কম্পোজ (compose) করতে।
- একাধিক মডেল কল (OpenAI, Azure OpenAI, স্থানীয় মডেল) পরিবর্তনযোগ্যভাবে ব্যবহার করতে।
- কনটেক্সট এবং দীর্ঘমেয়াদী স্মৃতির জন্য মেমরি যোগ করতে এম্বেডিংয়ের মাধ্যমে।
- নির্ভরযোগ্য স্টেটের সাথে মাল্টি-স্টেপ টাস্ক প্ল্যান এবং অর্কেস্ট্রেট করতে।
- নিরাপদে এবং নিশ্চিতভাবে ইন্টিগ্রেট (API, ডাটাবেস, ফাইল I/O) ইন্টিগ্রেট করতে।
SK কে কন্ট্রোলার হিসাবে ভাবুন যা LLM, আপনার অ্যাপের লজিক এবং ব্যবহারকারীর ডেটা সমন্বিত করে। দীর্ঘ প্রম্পট এবং বিশেষ টুল কলগুলি হার্ড-কোড করার পরিবর্তে, আপনি সুস্পষ্ট ইনপুট/আউটপুট সহ পুনরায় ব্যবহারযোগ্য সিমান্টিক ফাংশন এবং নেটিভ ফাংশন সংজ্ঞায়িত করেন।
সাধারণ ব্যবহারের ক্ষেত্র:
- রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) সহ গ্রাহক সহায়তা কোপাইলট
- ওয়ার্কফ্লো এজেন্ট (সংক্ষিপ্তকরণ → শ্রেণীবদ্ধকরণ → পদক্ষেপ নেওয়া)
- মেমরি এবং উদ্ধৃতি সহ ডকুমেন্ট প্রশ্নোত্তর
- ক্রিয়েটিভ কন্টেন্ট এবং কোড জেনারেশন পাইপলাইন
দ্রুত শুরু: আপনার প্রথম Semantic Kernel অ্যাপ
একটি চ্যাট মডেল এবং একটি সাধারণ প্রম্পট সহ কীভাবে Semantic Kernel ব্যবহার করতে হয় তা দেখানোর জন্য নিচে একটি সংক্ষিপ্ত ফ্লো দেওয়া হল। স্পষ্টতার জন্য আমরা C# ব্যবহার করব; আপনি পাইথন বা জাভাতেও এটি করতে পারেন।
১) প্যাকেজ ইনস্টল করুন
# .NET
dotnet add package Microsoft.SemanticKernel
# ঐচ্ছিক: সংযোগকারী এবং পরিকল্পনাকারী সংস্করণ অনুসারে পরিবর্তিত হয়
২) কার্নেল এবং মডেল কনফিগার করুন
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var builder = Kernel.CreateBuilder;
// আপনার প্রদানকারী চয়ন করুন: OpenAI বা Azure OpenAI
builder.AddOpenAIChatCompletion(
modelId: "gpt-4o-mini", // অথবা আপনার পছন্দের মডেল
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
var kernel = builder.Build;
৩) একটি সিমান্টিক ফাংশন (প্রম্পট) সংজ্ঞায়িত করুন
using Microsoft.SemanticKernel.SemanticFunctions;
var prompt = @"আপনি একজন সংক্ষিপ্ত ব্যাখ্যাকারী।
একজনBeginner-এর জন্য 3টি বুলেট পয়েন্টে '{topic}' ধারণাটি ব্যাখ্যা করুন।";
var explainFunc = kernel.CreateFunctionFromPrompt(prompt);
var result = await explainFunc.InvokeAsync(kernel, new { ["topic"] = "vector embeddings" });
Console.WriteLine(result);
এটিই মূল বিষয়: একটি কার্নেল, একটি মডেল এবং একটি প্রম্পট যা ইনপুট সহ পুনরায় ব্যবহারযোগ্য ফাংশনে পরিণত হয়েছে।
সিমান্টিক ফাংশন বনাম নেটিভ ফাংশন
- সিমান্টিক ফাংশন: প্রম্পট-চালিত। আপনি টেমপ্লেট থেকে এগুলি তৈরি করেন, ভেরিয়েবল পাস করেন এবং টেক্সট বা স্ট্রাকচার্ড আউটপুট পান।
- নেটিভ ফাংশন: নিয়মিত কোড ফাংশন যা SK টুলের ব্যবহারের জন্য LLM-এর কাছে প্রকাশ করে।
উদাহরণস্বরূপ নেটিভ ফাংশন যা আপনার API থেকে আবহাওয়া পুনরুদ্ধার করে এবং মডেলের কাছে প্রকাশ করে:
public class WeatherPlugin
{
[KernelFunction, Description("একটি শহরের জন্য আবহাওয়া পান")]
public async Task<string> GetWeatherAsync(
[Description("শহরের নাম")] string city)
{
// এখানে আপনার আবহাওয়া API কল করুন
var temp = 22; // placeholder
return $"Weather in {city}: {temp}°C and clear";
}
}
// প্লাগইন রেজিস্টার করুন
var weather = new WeatherPlugin;
kernel.Plugins.AddFromObject(weather, pluginName: "weather");
এখন আপনার প্রম্পটগুলি একটি সরঞ্জাম হিসাবে weather.GetWeatherAsync কল করতে পারে, যা মডেলকে বাস্তব ডেটাতে প্রতিক্রিয়া জানাতে দেয়।
প্রম্পট প্যাটার্ন যা আসলে কাজ করে
কীভাবে Semantic Kernel ব্যবহার করতে হয় তা শেখার সময়, দ্রুততম জয় আসে নিয়মানুবর্তিত প্রম্পট প্যাটার্ন থেকে:
- সিস্টেম-ফার্স্ট: সুর, ব্যক্তিত্ব, সুরক্ষা এবং আউটপুট বিন্যাস লক করতে একটি শক্তিশালী সিস্টেম বার্তা ব্যবহার করুন।
- ভেরিয়েবল স্লট: প্লেসহোল্ডারগুলির স্পষ্টভাবে নামকরণ করুন (যেমন,
{topic}, {audience}) এবং ইনপুট যাচাই করুন।
- আউটপুট চুক্তি: JSON-এর মতো স্ট্রাকচার্ড বিন্যাসের জন্য জিজ্ঞাসা করুন; প্রম্পটে একটি স্কিমা অন্তর্ভুক্ত করুন।
- ফিউ-শট: শৈলী এবং বিন্যাসের জন্য সংক্ষিপ্ত উদাহরণ দিন, কন্টেন্ট bloat নয়।
- গার্ডরেল: সীমাবদ্ধতা অন্তর্ভুক্ত করুন ("যদি ডেটা অনুপস্থিত থাকে, প্রথমে একটি স্পষ্টীকরণ প্রশ্ন জিজ্ঞাসা করুন")।
SK এর ভিতরে উদাহরণস্বরূপ স্ট্রাকচার্ড প্রম্পট:
var prompt = @"
আপনি একটি শ্রেণীবিভাগ ইঞ্জিন।
কাজ: `message`-টিকে [Billing, Tech Support, Sales] এর মধ্যে একটিতে শ্রেণীবদ্ধ করুন।
কঠোর JSON ফেরত দিন: { \"label\": string, \"confidence\": number }
message: {message}
";
var classify = kernel.CreateFunctionFromPrompt(prompt);
var output = await classify.InvokeAsync(kernel, new { ["message"] = "আমি আমার অ্যাকাউন্টে লগইন করতে পারছি না।" });
Console.WriteLine(output); // {"label":"Tech Support","confidence":0.89}
মেমরি যোগ করা: এম্বেডিং, RAG এবং কনটেক্সট উইন্ডোজ
LLM ভুলে যায়। মেমরি তাদের দরকারী করে তোলে।
- স্বল্পমেয়াদী কনটেক্সট: কথোপকথনের ইতিহাসের মাধ্যমে স্বয়ংক্রিয়।
- দীর্ঘমেয়াদী মেমরি: ব্যবহারকারীর নোট, ডক্স বা ইভেন্টের এম্বেডিং সংরক্ষণ করুন এবং কনটেক্সটের জন্য প্রাসঙ্গিক অংশগুলি পুনরুদ্ধার করুন।
- RAG: একটি জেনারেশন ফাংশন কল করার আগে, আপনার ভেক্টর স্টোর জিজ্ঞাসা করুন এবং প্রম্পটে ফলাফল ইনজেক্ট করুন।
উদাহরণ: এম্বেডিং সহ টেক্সট মেমরি যোগ করুন এবং কনটেক্সট পুনরুদ্ধার করুন।
using Microsoft.SemanticKernel.Memory;
var memory = new MemoryBuilder
.WithMemoryStore(new VolatileMemoryStore) // একটি ভেক্টর DB (Qdrant, Pinecone, Azure AI Search) এর জন্য অদলবদল করুন
.WithTextEmbeddingGeneration(
new OpenAITextEmbeddingGeneration("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY")))
.Build;
await memory.SaveInformationAsync(
collection: "policies", id: "refund-policy",
text: "গ্রাহকরা রসিদ প্রমাণের সাথে ক্রয়ের 30 দিনের মধ্যে রিফান্ডের জন্য অনুরোধ করতে পারেন।"
);
// পরে: পুনরুদ্ধার করুন এবং প্রম্পটে স্টাফ করুন
var results = memory.SearchAsync("রিফান্ড উইন্ডো", collection: "policies", limit: 3, minRelevanceScore: 0.7);
await foreach (var item in results)
{
Console.WriteLine($"Relevant: {item.Metadata.Text}");
}
তারপরে আপনার সিমান্টিক ফাংশনে শীর্ষস্থানীয় ম্যাচগুলিকে কনটেক্সট ভেরিয়েবল হিসাবে ফিড করুন। টিপ: অংশগুলিকে ছোট (200-400 টোকেন) রাখুন এবং ডিডুপ্লিকেট করুন।
টুল ব্যবহার এবং পরিকল্পনা: মাল্টি-স্টেপ ওয়ার্কফ্লো
Semantic Kernel প্ল্যানার সমর্থন করে যা ব্যবহারকারীর লক্ষ্যকে ধাপে ধাপে ভেঙে ফেলতে পারে এবং কোন ফাংশন কল করতে হবে তা চয়ন করতে পারে। আপনার কাছে নেটিভ এবং সিমান্টিক ফাংশনের একটি টুলবক্স থাকলে এটি উপযুক্ত।
প্যাটার্ন:
- ব্যবহারকারীর কাছ থেকে লক্ষ্য এবং সীমাবদ্ধতা সংগ্রহ করুন।
- একটি পরিকল্পনা খসড়া করুন (আর্গুমেন্ট সহ ফাংশন কলের ক্রম)।
- ধাপে ধাপে সম্পাদন করুন, আউটপুট যাচাই করুন এবং ত্রুটি থেকে পুনরুদ্ধার করুন।
সিউডোকোড উদাহরণ:
// 1) আগের মতো প্লাগইন (সিমান্টিক + নেটিভ) সংজ্ঞায়িত করুন
// 2) একটি প্ল্যানার ব্যবহার করুন (API সারফেস সংস্করণ অনুসারে পরিবর্তিত হতে পারে)
var goal = "সংযুক্ত নীতি সংক্ষিপ্ত করুন, ঝুঁকি শ্রেণীবদ্ধ করুন এবং একটি ইমেল রিপোর্ট করুন";
// ধরে নিন আমাদের কাছে প্লাগইন রয়েছে: ফাইল, সংক্ষিপ্তকরণ, শ্রেণীবদ্ধকরণ, ইমেল
// প্ল্যানার একটি পরিকল্পনা একত্রিত করবে: files.Load → summarize.Run → classify.Run → email.Send
// ক্রমানুসারে পরিকল্পনাটি সম্পাদন করুন, পদক্ষেপগুলির মধ্যে JSON আউটপুট যাচাই করুন
সেরা উপায়:
- পদক্ষেপগুলিকে idempotent এবং testable করুন।
- ধাপগুলির মধ্যে সুস্পষ্ট আউটপুট স্কিমা সেট করুন।
- নেটওয়ার্কযুক্ত সরঞ্জামগুলিতে পুনরায় চেষ্টা/ব্যাকঅফ ব্যবহার করুন।
- পর্যবেক্ষণের জন্য ইনপুট/আউটপুট লগ করুন (তবে PII স্ক্রাব করুন)।
মাল্টি-মডেল কৌশল: কাজের জন্য সঠিক মডেলটি বেছে নিন
Semantic Kernel ব্যবহার করে, আপনি বিভিন্ন মডেলে কাজগুলি রুট করতে পারেন:
- দ্রুত খসড়া → ছোট, সস্তা মডেল
- যুক্তি-ভারী পদক্ষেপ → বৃহত্তর মডেল
- এম্বেডিং → বিশেষ এম্বেডিং মডেল
- কোড → কোড-অপ্টিমাইজড মডেল
বাস্তবে:
var kernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey)
.Build;
var fastKernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey) // গতি-অপ্টিমাইজড
.Build;
// সহজ প্রম্পটগুলি fastKernel এ রুট করুন; জটিল কাজগুলি কার্নেলে
অথবা, একই কার্নেলে একাধিক পরিষেবা কনফিগার করুন এবং ফাংশন অনুসারে নির্বাচন করুন।
প্রোটোটাইপ থেকে প্রোডাকশন: গার্ডরেল এবং টেস্টিং
আপনি যখন বাস্তব অ্যাপে Semantic Kernel কীভাবে ব্যবহার করতে হয় তা শিখবেন, তখন নির্ভরযোগ্যতা গুরুত্বপূর্ণ:
- স্কিমা-ফার্স্ট আউটপুট: JSON স্কিমা এবং
TryParse গেট ব্যবহার করুন।
- প্রয়োজন অনুযায়ী ডিটারমিনিজম: তাপমাত্রা কম সেট করুন এবং আউটপুট সীমাবদ্ধ করুন।
- সুরক্ষা ফিল্টার: কন্টেন্ট ফিল্টার এবং রেড-টিম প্রম্পট যুক্ত করুন।
- ক্যাশিং: RAG ফলাফল এবং স্থিতিশীল জেনারেশন ক্যাশে করুন।
- পর্যবেক্ষণযোগ্যতা: প্রম্পট টেমপ্লেট, ভেরিয়েবল, লেটেন্সি, টোকেন ব্যবহার লগ করুন।
- ইউনিট পরীক্ষা: স্ন্যাপশট তুলনা সহ গোল্ডেন টেস্ট প্রম্পট।
উদাহরণ: JSON আউটপুট যাচাই করুন।
record Classification(string label, double confidence);
bool TryParseClassification(string text, out Classification cls)
{
try { cls = System.Text.Json.JsonSerializer.Deserialize<Classification>(text)!; return true; }
catch { cls = default!; return false; }
}
বাস্তব-বিশ্বের প্যাটার্ন যা আপনি পুনরায় ব্যবহার করতে পারেন
- RAG চ্যাটবট: উদ্ধৃতি সহ
retrieve(context) → answer(question, context)।
- অনুমোদন ওয়ার্কফ্লো: শ্রেণীবদ্ধ করুন → খসড়া তৈরি করুন → মানুষের পর্যালোচনা → পাঠান।
- কন্টেন্ট অপস: রূপরেখা → খসড়া → ফ্যাক্ট-চেক → সুর সামঞ্জস্য করুন → প্রকাশ করুন।
- সরঞ্জাম সহ এজেন্ট: calendar.lookup, docs.search, email.send; পরিকল্পনা এবং মেমরি সহ।
টিপ: প্রতিটি পদক্ষেপকে একটি ফাংশন (সিমান্টিক বা নেটিভ) হিসাবে এনক্যাপসুলেট করুন এবং সেগুলিকে পাইপলাইনে রচনা করুন।
উদাহরণ: উদ্ধৃতি সহ ডকুমেন্ট প্রশ্নোত্তর
আসুন RAG ব্যবহার করে উৎস উদ্ধৃত করে এমন একটি সাধারণ প্রশ্নোত্তর পাইপলাইন তৈরি করি।
// 1) মেমরিতে ডক্স ইনজেস্ট করুন
await memory.SaveInformationAsync("handbook", "vacation-policy",
"কর্মচারীরা প্রতি মাসে 1.5 দিন PTO জমা করে এবং 5 দিন পর্যন্ত বহন করতে পারে।");
// 2) একটি প্রশ্নের জন্য কনটেক্সট পুনরুদ্ধার করুন
var top = memory.SearchAsync("PTO বহন করুন", "handbook", limit: 3, minRelevanceScore: 0.75);
var contexts = new List<string>;
await foreach (var r in top) contexts.Add(r.Metadata.Text);
// 3) কনটেক্সট সহ জিজ্ঞাসা করুন এবং উদ্ধৃতিগুলির জন্য অনুরোধ করুন
var qaPrompt = @"
আপনি প্রদত্ত কনটেক্সট থেকে কঠোরভাবে উত্তর দিন। অনুপস্থিত থাকলে, বলুন আপনি জানেন না।
1 থেকে শুরু করে কনটেক্সট আইটেমগুলির সূচক ব্যবহার করে ইনলাইন উদ্ধৃতিগুলি [source i] অন্তর্ভুক্ত করুন।
কনটেক্সট:
1) {{ctx1}}
2) {{ctx2}}
প্রশ্ন: {{q}}
";
var qa = kernel.CreateFunctionFromPrompt(qaPrompt);
var variables = new KernelArguments
{
["ctx1"] = contexts.ElementAtOrDefault(0) ?? "",
["ctx2"] = contexts.ElementAtOrDefault(1) ?? "",
["q"] = "আমি কত PTO দিন বহন করতে পারি?"
};
var answer = await qa.InvokeAsync(kernel, variables);
Console.WriteLine(answer);
সাধারণ ভুল (এবং কীভাবে সেগুলি এড়ানো যায়)
- একটি একক বিশাল প্রম্পট: ফাংশনে বিভক্ত করুন; আপনার প্রয়োজনীয় কনটেক্সটটি কেবল পাস করুন।
- কোনও আউটপুট চুক্তি নেই: মেশিন-পঠনযোগ্য পদক্ষেপগুলির জন্য সর্বদা স্কিমা সংজ্ঞায়িত করুন।
- পরিষ্কারবিহীন RAG: ভালভাবে ভাগ করুন, ডিডুপ করুন এবং প্রাসঙ্গিকতা এবং নতুনত্বের ভিত্তিতে র্যাঙ্ক করুন।
- টুল স্প্রল: প্লাগইন ইন্টারফেসগুলি ছোট এবং ডকুমেন্টেড রাখুন।
- মানুষের-ইন-দ্য-লুপ নেই: উচ্চ-ঝুঁকির ক্রিয়াকলাপের জন্য অনুমোদন যুক্ত করুন।
ফ্রন্টেন্ডের সাথে Semantic Kernel কীভাবে ব্যবহার করবেন
- ওয়েব অ্যাপ্লিকেশন: একটি API স্তরে আপনার SK অর্কেস্ট্রেশন হোস্ট করুন; UI তে টোকেন স্ট্রিম করুন।
- চ্যাট UI: কথোপকথনের অবস্থা সার্ভার-সাইডে বজায় রাখুন; ছাঁটাই এবং সংক্ষিপ্ত করুন।
- অথ: ছদ্মবেশ-সুরক্ষিত কল—মডেলকে কখনই টোকেন তৈরি করতে দেবেন না। আপনার ব্যাকএন্ডের মাধ্যমে গেট টুল কল।
স্থাপনার চেকলিস্ট
- কী এবং এন্ডপয়েন্টের জন্য পরিবেশ ভেরিয়েবল
- মডেল/টুল কলের জন্য রেট সীমিতকরণ এবং পুনরায় চেষ্টা
- প্রম্পট টেমপ্লেট উৎস নিয়ন্ত্রণ
- ভেক্টর স্টোর ব্যাকআপ এবং PII পরিচালনা
- পর্যবেক্ষণযোগ্যতা ড্যাশবোর্ড (লেটেন্সি, খরচ, ত্রুটি)
- প্রম্পট এবং রাউটিংয়ের জন্য A/B টেস্টিং
FAQ-স্টাইল সমস্যা সমাধান
- “RAG থাকা সত্ত্বেও মডেল হ্যালুসিনেশন করে।” নির্দেশাবলী কঠোর করুন: "কেবল কনটেক্সট থেকে উত্তর দিন" এবং একটি প্রত্যাখ্যান উদাহরণ অন্তর্ভুক্ত করুন। পুনরুদ্ধারের নির্দিষ্টতা বাড়ান এবং তাপমাত্রা হ্রাস করুন।
- “JSON ক্রমাগত ভেঙে যাচ্ছে।” বৈধ JSON এর একটি ছোট উদাহরণ যুক্ত করুন এবং ভাষ্য নিষিদ্ধ করুন। ব্যর্থতার পরে পোস্ট-যাচাই করুন এবং পুনরায় ব্যাখ্যা করুন।
- “লেটেন্সি বেশি।” কম, আরও প্রাসঙ্গিক অংশ পুনরুদ্ধার করুন; ছোট মডেলগুলিতে সরল পদক্ষেপগুলি স্যুইচ করুন; স্বতন্ত্র পদক্ষেপগুলি সমান্তরাল করুন।
- “খরচ বাড়ছে।” ক্যাশে করুন, কনটেক্সট সংকুচিত করুন এবং সস্তা মডেলগুলিতে সহজ কাজগুলি রুট করুন।
লক্ষ্য করার মতো: Sider.AI দিয়ে দ্রুত তৈরি করুন
আপনি যদি প্রম্পটগুলির প্রোটোটাইপিং, সরঞ্জাম প্রবাহ পরীক্ষা বা মডেলগুলিতে প্রতিক্রিয়াগুলির তুলনা করছেন, তবে Sider.ai এর মতো একটি সহযোগী পুনরাবৃত্তি দ্রুত করতে পারে। আপনি প্রম্পটগুলি খসড়া করতে পারেন, A/B তুলনা চালাতে পারেন এবং Semantic Kernel টেম্পলেটগুলিতে সরানোর আগে পুনরায় ব্যবহারযোগ্য স্নিপেটগুলি ক্যাপচার করতে পারেন—নির্দেশাবলী এবং আউটপুট স্কিমাগুলিকে তীক্ষ্ণ করার জন্য দুর্দান্ত। পরবর্তী পদক্ষেপ: এটিকে একটি কার্যকরী এজেন্টে পরিণত করুন
- একটি স্পষ্ট কাজ দিয়ে শুরু করুন (যেমন, সমর্থন ইমেল শ্রেণীবদ্ধ করুন)।
- কঠোর ইনপুট/আউটপুট সহ সিমান্টিক/নেটিভ ফাংশন সংজ্ঞায়িত করুন।
- কেবলমাত্র সেখানেই মেমরি যুক্ত করুন যেখানে এটি পরিমাপযোগ্যভাবে উত্তরগুলিকে উন্নত করে।
- সবকিছু ইনস্ট্রুমেন্ট করুন; বাস্তব-বিশ্বের নমুনাগুলির সাথে পরীক্ষা করুন।
- একটি স্যান্ডবক্স ব্যবহার করে প্রম্পটগুলিতে পুনরাবৃত্তি করুন, তারপরে SK তে কোডিফাই করুন।
মূল বিষয়গুলি:
- Semantic Kernel আপনাকে নির্ভরযোগ্য ওয়ার্কফ্লোতে প্রম্পট, সরঞ্জাম এবং মেমরি রচনা করতে সহায়তা করে।
- দৃঢ়তা এবং ব্যয় নিয়ন্ত্রণের জন্য আউটপুট স্কিমা, প্ল্যানার এবং মাল্টি-মডেল রাউটিং ব্যবহার করুন।
- RAG প্লাস গার্ডরেল প্রতিটি সময় বিশাল প্রম্পটকে হার মানায়।
একবার আপনি এই প্যাটার্নগুলির সাথে Semantic Kernel কীভাবে ব্যবহার করতে হয় তা আয়ত্ত করার পরে, আপনি AI বৈশিষ্ট্যগুলি প্রেরণ করবেন যা কেবল চিত্তাকর্ষক ডেমো নয়—নির্ভরযোগ্য সিস্টেম।
FAQ
Q1: AI অ্যাপে Semantic Kernel কীসের জন্য ব্যবহৃত হয়?
Semantic Kernel হল AI ওয়ার্কফ্লো তৈরির জন্য একটি অর্কেস্ট্রেশন SDK যা LLM প্রম্পট, সরঞ্জাম (নেটিভ ফাংশন) এবং মেমরিকে একত্রিত করে। এটি আপনাকে কাজগুলি গঠন করতে, RAG যুক্ত করতে এবং নির্ভরযোগ্যভাবে একাধিক মডেল কল করতে সহায়তা করে।
Q2: আমি আমার ডকুমেন্টগুলির সাথে RAG এর জন্য Semantic Kernel কীভাবে ব্যবহার করব?
SK-এর মেমরি API-এর মাধ্যমে আপনার ডকুমেন্টগুলিকে একটি ভেক্টর স্টোরে ইনজেস্ট করুন, তারপরে প্রতিটি প্রশ্নের জন্য সবচেয়ে প্রাসঙ্গিক অংশগুলি পুনরুদ্ধার করুন এবং সেগুলিকে আপনার প্রম্পটে ইনজেক্ট করুন। এটি নির্ভুলতা উন্নত করে এবং হ্যালুসিনেশন হ্রাস করে।
Q3: Semantic Kernel কি বহিরাগত API এবং পরিষেবা কল করতে পারে?
হ্যাঁ। একটি প্লাগইনে নেটিভ ফাংশন হিসাবে API মোড়ানো এবং কার্নেলের সাথে নিবন্ধন করুন যাতে মডেলটি তাদের সরঞ্জাম হিসাবে ব্যবহার করতে পারে। ইন্টারফেসগুলি ছোট রাখুন এবং ইনপুট/আউটপুট বৈধতা প্রয়োগ করুন।
Q4: কোন মডেলগুলি Semantic Kernel এর সাথে কাজ করে?
Semantic Kernel OpenAI, Azure OpenAI এবং অন্যান্য সংযোগকারী সমর্থন করে। আপনি বিভিন্ন মডেলে কাজগুলি রুট করতে পারেন—উদাহরণস্বরূপ, খসড়ার জন্য ছোট মডেল এবং যুক্তি-নিবিড় পদক্ষেপের জন্য বৃহত্তর মডেল।
Q5: আমি কীভাবে Semantic Kernel আউটপুটগুলিকে সামঞ্জস্যপূর্ণ করব (যেমন, JSON)?
স্ট্রাকচার্ড প্রম্পট ব্যবহার করুন যা কঠোর JSON এর দাবি করে এবং একটি ন্যূনতম উদাহরণ বা স্কিমা অন্তর্ভুক্ত করে। কম তাপমাত্রা সেট করুন, কল করার পরে আউটপুটগুলি যাচাই করুন এবং পার্সিং ব্যর্থ হলে পুনরায় চেষ্টা করুন বা মেরামত করুন।