Semantic Kernel استعمال کرنے کا طریقہ: پیٹرنز، پرومٹس، اور پلگ انز کے ساتھ ایک عملی رہنما
کبھی کوشش کی کہ LLM کو اپنی ایپ کے ساتھ جوڑیں اور آخرکار پرومٹس، ہیلپر فنکشنز، اور اسٹیٹ کا ایک نازک الجھاؤ بن گیا؟ Semantic Kernel (SK) بالکل اسی مسئلے کو حل کرنے کے لیے موجود ہے۔ یہ Microsoft کا ایک ہلکا پھلکا، اوپن سورس آرکیسٹریشن فریم ورک ہے جو AI-فرسٹ ایپس بنانے کے لیے ہے جو قدرتی زبان، ٹولز، اور میموری کو ملاتے ہیں—بغیر آپ کے کوڈ بیس کو پرومپٹ اسپگیٹی میں تبدیل کیے۔
اس رہنما میں، ہم عملی اور حل پر مبنی انداز میں Semantic Kernel کو صفر سے پروڈکشن پیٹرنز تک استعمال کرنے کا طریقہ دیکھیں گے۔ آپ سیکھیں گے کہ پرومٹس کو کیسے منظم کیا جائے، ٹولز کو کیسے پلگ ان کیا جائے، میموری کیسے شامل کی جائے، متعدد ماڈلز کو کیسے کال کیا جائے، اور مستقل مزاجی سے کام کرنے والے ایجنٹس کو کیسے تعینات کیا جائے۔ ہم مثالوں کو حقیقت پسندانہ رکھیں گے اور آپ کو وہ دکھائیں گے جو واقعی اہم ہے۔
Semantic Kernel کیا ہے—اور اسے کیوں استعمال کریں؟
Semantic Kernel ایک SDK ہے جو آپ کی مدد کرتا ہے:
- پرومٹس اور فنکشنز ("skills"/پلگ انز) کو پائپ لائنز میں کمپوز کریں۔
- متعدد ماڈلز کو کال کریں (OpenAI, Azure OpenAI, لوکل ماڈلز) بآسانی۔
- میموری شامل کریں سیاق و سباق اور طویل مدتی یادداشت کے لیے ایمبیڈنگز کے ذریعے۔
- منصوبہ بندی اور آرکیسٹریٹ کریں قابل اعتماد اسٹیٹ کے ساتھ کثیر مرحلہ ٹاسکس۔
- ٹولز کو انٹیگریٹ کریں (APIs, ڈیٹا بیسز، فائل I/O) محفوظ اور متعین طریقے سے۔
SK کو اس کنٹرولر کے طور پر سوچیں جو LLMs، آپ کی ایپ لاجک، اور یوزر ڈیٹا کو مربوط کرتا ہے۔ طویل پرومٹس اور عارضی ٹول کالز کو ہارڈ کوڈ کرنے کے بجائے، آپ دوبارہ استعمال ہونے والے سیمانٹک فنکشنز اور نیٹیو فنکشنز واضح ان پٹ/آؤٹ پٹ کے ساتھ ڈیفائن کرتے ہیں۔
عام استعمال کے کیسز:
- کسٹمر سپورٹ کوپائلٹس ریٹریول-آگمینٹڈ جنریشن (RAG) کے ساتھ
- ورک فلو ایجنٹس (خلاصہ → درجہ بندی → کارروائی)
- دستاویزات کے سوال و جواب میموری اور حوالہ جات کے ساتھ
- تخلیقی مواد اور کوڈ جنریشن پائپ لائنز
فوری آغاز: آپ کی پہلی Semantic Kernel ایپ
نیچے ایک مختصر فلو ہے جو دکھاتا ہے کہ Semantic Kernel کو چیٹ ماڈل اور ایک سادہ پرومٹ کے ساتھ کیسے استعمال کریں۔ ہم وضاحت کے لیے C# استعمال کریں گے؛ آپ Python یا Java میں بھی ایسا کر سکتے ہیں۔
1) پیکجز انسٹال کریں
# .NET
dotnet add package Microsoft.SemanticKernel
# اختیاری: کنیکٹرز اور پلانرز ورژن کے مطابق مختلف ہوتے ہیں
2) کرنل اور ماڈل کو کنفیگر کریں
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;
3) ایک سیمانٹک فنکشن (پرومٹ) ڈیفائن کریں
using Microsoft.SemanticKernel.SemanticFunctions;
var prompt = @"آپ ایک مختصر وضاحتی ہیں۔
نئے سیکھنے والے کے لیے '{topic}' کے تصور کی 3 اہم نکات میں وضاحت کریں۔";
var explainFunc = kernel.CreateFunctionFromPrompt(prompt);
var result = await explainFunc.InvokeAsync(kernel, new { ["topic"] = "vector embeddings" });
Console.WriteLine(result);
یہ بنیادی ہے: ایک کرنل، ایک ماڈل، اور ایک پرومٹ جو ان پٹ کے ساتھ دوبارہ قابل استعمال فنکشن میں تبدیل ہو گیا۔
سیمانٹک فنکشنز بمقابلہ نیٹیو فنکشنز
- سیمانٹک فنکشنز: پرومٹ پر مبنی۔ آپ انہیں ٹیمپلیٹس سے بناتے ہیں، متغیرات پاس کرتے ہیں، اور ٹیکسٹ یا ساختہ آؤٹ پٹ حاصل کرتے ہیں۔
- نیٹیو فنکشنز: عام کوڈ فنکشنز جو SK ماڈل کو ٹول کے طور پر فراہم کرتا ہے۔
مثال: ایک نیٹیو فنکشن جو آپ کے API سے موسم کا حال حاصل کرتا ہے اور ماڈل کو فراہم کرتا ہے:
public class WeatherPlugin
{
[KernelFunction, Description("کسی شہر کا موسم حاصل کریں")]
public async Task<string> GetWeatherAsync(
[Description("شہر کا نام")] string city)
{
// یہاں اپنا موسم API کال کریں
var temp = 22; // جگہ ہولڈر
return $"{city} میں موسم: {temp}°C اور صاف ہے";
}
}
// پلگ ان رجسٹر کریں
var weather = new WeatherPlugin;
kernel.Plugins.AddFromObject(weather, pluginName: "weather");
اب آپ کے پرومٹس weather.GetWeatherAsync کو ٹول کے طور پر کال کر سکتے ہیں، جو ماڈل کو حقیقی ڈیٹا پر مبنی جوابات دینے دیتا ہے۔
پرومٹ پیٹرنز جو واقعی کام کرتے ہیں
جب Semantic Kernel سیکھ رہے ہوں، تیز ترین کامیابیاں منظم پرومٹ پیٹرنز سے آتی ہیں:
- سسٹم-فرسٹ: ایک مضبوط سسٹم پیغام استعمال کریں تاکہ لہجہ، شخصیت، حفاظت، اور آؤٹ پٹ فارمیٹ طے ہو جائے۔
- متغیر سلاٹس: جگہ ہولڈرز کے نام واضح رکھیں (مثلاً
{topic}, {audience}) اور ان پٹ کی تصدیق کریں۔
- آؤٹ پٹ کنٹریکٹس: JSON جیسے ساختہ فارمیٹس طلب کریں؛ پرومٹ میں اسکیمہ شامل کریں۔
- فیو-شاٹ: انداز اور فارمیٹ کے لیے مختصر مثالیں دیں، مواد کا بوجھ نہیں۔
- گارڈریلز: پابندیاں شامل کریں (“اگر ڈیٹا غائب ہو، تو پہلے وضاحت طلب کریں”)۔
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، اور کانٹیکسٹ ونڈوز
LLMs بھول جاتے ہیں۔ میموری انہیں مفید بناتی ہے۔
- مختصر مدتی کانٹیکسٹ: گفتگو کی تاریخ کے ذریعے خودکار۔
- طویل مدتی میموری: یوزر نوٹس، دستاویزات، یا واقعات کے ایمبیڈنگز محفوظ کریں اور متعلقہ حصے سیاق و سباق کے لیے بازیافت کریں۔
- RAG: جنریشن فنکشن کال کرنے سے پہلے، اپنے ویکٹر اسٹور سے سوال کریں اور نتائج پرومٹ میں شامل کریں۔
مثال: ایمبیڈنگز کے ساتھ ٹیکسٹ میموری شامل کریں اور کانٹیکسٹ بازیافت کریں۔
using Microsoft.SemanticKernel.Memory;
var memory = new MemoryBuilder
.WithMemoryStore(new VolatileMemoryStore) // ویکٹر ڈی بی (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("refund window", collection: "policies", limit: 3, minRelevanceScore: 0.7);
await foreach (var item in results)
{
Console.WriteLine($"متعلقہ: {item.Metadata.Text}");
}
پھر اوپر کے میچز کو اپنے سیمانٹک فنکشن میں کانٹیکسٹ ویریبلز کے طور پر دیں۔ ٹپ: ٹکڑوں کو چھوٹا رکھیں (200–400 ٹوکن) اور دہراؤ ختم کریں۔
ٹول استعمال اور منصوبہ بندی: کثیر مرحلہ ورک فلو
Semantic Kernel پلانرز کو سپورٹ کرتا ہے جو یوزر کے مقصد کو مراحل میں تقسیم کرتے ہیں اور فیصلہ کرتے ہیں کہ کون سے فنکشنز کال کرنے ہیں۔ یہ تب بہترین ہے جب آپ کے پاس نیٹیو اور سیمانٹک فنکشنز کا ٹول باکس ہو۔
پیٹرن:
- یوزر سے مقصد اور پابندیاں جمع کریں۔
- منصوبہ تیار کریں (فنکشن کالز کی ترتیب اور دلائل کے ساتھ)۔
- مرحلہ وار عملدرآمد کریں، آؤٹ پٹ کی تصدیق کریں، اور غلطیوں سے بچیں۔
جعلی کوڈ مثال:
// 1) پلگ انز (سیمانٹک + نیٹیو) کو پہلے کی طرح ڈیفائن کریں
// 2) پلانر استعمال کریں (API سطح ورژن کے مطابق مختلف ہو سکتی ہے)
var goal = "منسلک پالیسی کا خلاصہ بنائیں، خطرہ درجہ بند کریں، اور رپورٹ ای میل کریں";
// فرض کریں ہمارے پاس پلگ انز ہیں: files, summarize, classify, email
// پلانر ایک منصوبہ بنائے گا: files.Load → summarize.Run → classify.Run → email.Send
// منصوبہ کو ترتیب وار چلائیں، مراحل کے درمیان JSON آؤٹ پٹ کی تصدیق کریں
بہترین طریقے:
- مراحل کو idempotent اور قابل جانچ بنائیں۔
- مراحل کے درمیان واضح آؤٹ پٹ اسکیمے مقرر کریں۔
- نیٹ ورک ٹولز پر ریٹریز/بیک آف استعمال کریں۔
- مشاہدہ کے لیے ان پٹ/آؤٹ پٹ لاگ کریں (لیکن PII صاف کریں)۔
کثیر ماڈل حکمت عملی: کام کے لیے درست ماڈل منتخب کریں
Semantic Kernel استعمال کرتے ہوئے، آپ مختلف ماڈلز کو مختلف کاموں کے لیے بھیج سکتے ہیں:
- تیز مسودے → چھوٹے، سستے ماڈلز
- وزنی سوچ والے مراحل → بڑے ماڈلز
- ایمبیڈنگز → مخصوص ایمبیڈنگ ماڈل
- کوڈ → کوڈ کے لیے بہتر ماڈلز
عملی طور پر:
var kernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey)
.Build;
var fastKernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey) // رفتار کے لیے بہتر
.Build;
// آسان پرومٹس کو fastKernel پر بھیجیں؛ پیچیدہ کام kernel کو
یا، ایک ہی کرنل میں متعدد سروسز کنفیگر کریں اور فنکشن کے حساب سے منتخب کریں۔
پروٹوٹائپ سے پروڈکشن تک: گارڈریلز اور ٹیسٹنگ
جب آپ 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؛ منصوبہ بندی اور میموری کے ساتھ۔
ٹپ: ہر مرحلے کو ایک فنکشن (سیمانٹک یا نیٹیو) کے طور پر انکیپسولیٹ کریں اور انہیں پائپ لائنز میں کمپوز کریں۔
مثال: حوالہ جات کے ساتھ دستاویز کا سوال و جواب
آئیں ایک سادہ Q&A پائپ لائن بنائیں جو RAG استعمال کرتے ہوئے ذرائع کا حوالہ دیتی ہے۔
// 1) دستاویزات کو میموری میں شامل کریں
await memory.SaveInformationAsync("handbook", "vacation-policy",
"ملازمین ہر ماہ 1.5 دن PTO جمع کرتے ہیں اور 5 دن کی منتقلی کر سکتے ہیں۔");
// 2) سوال کے لیے کانٹیکسٹ بازیافت کریں
var top = memory.SearchAsync("carry over 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 = @"
آپ صرف فراہم کردہ کانٹیکسٹ سے جواب دیتے ہیں۔ اگر معلومات نہ ہو تو کہیں کہ آپ نہیں جانتے۔
ان لائن حوالہ جات شامل کریں جیسے [source i] جہاں i کانٹیکسٹ آئٹمز کا انڈیکس ہے جو 1 سے شروع ہوتا ہے۔
کانٹیکسٹ:
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 استعمال کرنے کا طریقہ
- ویب ایپس: اپنا SK آرکیسٹریشن API لیئر میں ہوسٹ کریں؛ UI کو ٹوکنز اسٹریم کریں۔
- چیٹ UIs: گفتگو کی حالت سرور سائیڈ پر رکھیں؛ پرون کریں اور خلاصہ کریں۔
- آتھنٹیکیشن: امپرسونیشن-محفوظ کالز—ماڈل کو کبھی ٹوکن بنانے نہ دیں۔ ٹول کالز کو اپنے بیک اینڈ کے ذریعے گيٹ کریں۔
تعیناتی چیک لسٹ
- چابیوں اور اینڈ پوائنٹس کے لیے ماحول کی متغیرات
- ماڈل/ٹول کالز کے لیے ریٹ لمٹنگ اور ریٹریز
- پرومٹ ٹیمپلیٹ سورس کنٹرول
- ویکٹر اسٹور بیک اپ اور PII ہینڈلنگ
- مشاہدہ کے ڈیش بورڈز (تاخیر، لاگت، غلطیاں)
- پرومٹس اور روٹنگ کے لیے A/B ٹیسٹنگ
عمومی سوالات کی طرز پر مسئلہ حل کرنا
- “ماڈل RAG کے باوجود ہیلوسینیٹ کرتا ہے۔” ہدایات سخت کریں: "صرف کانٹیکسٹ سے جواب دیں" اور انکار کی مثال شامل کریں۔ بازیافت کی وضاحت بڑھائیں اور ٹمپریچر کم کریں۔
- “JSON بار بار خراب ہو رہا ہے۔” درست JSON کی ایک چھوٹی مثال شامل کریں اور تبصرہ ممنوع کریں۔ ناکامی پر پوسٹ ویلیڈیشن اور ریپریفیریز کریں۔
- “تاخیر زیادہ ہے۔” کم، زیادہ متعلقہ چنکس بازیافت کریں؛ آسان مراحل کو چھوٹے ماڈلز پر منتقل کریں؛ آزاد مراحل کو متوازی چلائیں۔
- “لاگت بڑھ رہی ہے۔” کیش کریں، کانٹیکسٹ کمپریس کریں، اور آسان کاموں کو سستے ماڈلز پر روٹ کریں۔
نوٹ کرنے کے قابل: Sider.AI کے ساتھ تیزی سے بنائیں
اگر آپ پرومٹس پروٹوٹائپ کر رہے ہیں، ٹول فلو ٹیسٹ کر رہے ہیں، یا ماڈلز کے جوابات کا موازنہ کر رہے ہیں، تو Sider.ai جیسا ساتھی تکرار کو تیز کر سکتا ہے۔ آپ پرومٹس تیار کر سکتے ہیں، A/B موازنہ چلا سکتے ہیں، اور دوبارہ قابل استعمال اسنیپٹس پکڑ سکتے ہیں، پھر انہیں Semantic Kernel ٹیمپلیٹس میں منتقل کر سکتے ہیں—ہدایات اور آؤٹ پٹ اسکیموں کو بہتر بنانے کے لیے بہترین۔ اگلے اقدامات: اسے ایک کام کرنے والے ایجنٹ میں تبدیل کریں
- ایک واضح کام سے شروع کریں (مثلاً، سپورٹ ای میلز کی درجہ بندی کریں)۔
- سیمانٹک/نیٹیو فنکشنز کو سخت ان پٹ/آؤٹ پٹ کے ساتھ ڈیفائن کریں۔
- میموری صرف وہاں شامل کریں جہاں یہ جوابات کو قابلِ پیمائش طور پر بہتر بنائے۔
- سب کچھ انسٹرومنٹ کریں؛ حقیقی دنیا کے نمونوں کے ساتھ ٹیسٹ کریں۔
- سینڈ باکس میں پرومٹس پر کام کریں، پھر SK میں اسے کوڈ کریں۔
اہم نکات:
- Semantic Kernel آپ کو پرومٹس، ٹولز، اور میموری کو قابل اعتماد ورک فلو میں کمپوز کرنے میں مدد دیتا ہے۔
- مضبوطی اور لاگت کنٹرول کے لیے آؤٹ پٹ اسکیمے، پلانرز، اور کثیر ماڈل روٹنگ استعمال کریں۔
- RAG اور گارڈریلز بڑے پرومٹس سے ہر بار بہتر ہیں۔
ایک بار جب آپ Semantic Kernel کو ان پیٹرنز کے ساتھ استعمال کرنا سیکھ لیں، آپ AI خصوصیات بھیجیں گے جو صرف متاثر کن ڈیموز نہیں بلکہ قابل اعتماد نظام ہوں گے۔
عمومی سوالات
Q1: AI ایپس میں Semantic Kernel کس لیے استعمال ہوتا ہے؟
Semantic Kernel ایک آرکیسٹریشن SDK ہے جو LLM پرومٹس، ٹولز (نیٹیو فنکشنز)، اور میموری کو ملا کر AI ورک فلو بنانے میں مدد دیتا ہے۔ یہ آپ کو کاموں کو منظم کرنے، RAG شامل کرنے، اور متعدد ماڈلز کو قابل اعتماد طریقے سے کال کرنے میں مدد دیتا ہے۔
Q2: میں اپنے دستاویزات کے ساتھ RAG کے لیے Semantic Kernel کیسے استعمال کروں؟
اپنی دستاویزات کو SK کی میموری APIs کے ذریعے ویکٹر اسٹور میں شامل کریں، پھر ہر سوال کے لیے سب سے متعلقہ حصے بازیافت کریں اور انہیں اپنے پرومٹ میں شامل کریں۔ اس سے درستگی بہتر ہوتی ہے اور ہیلوسینیشن کم ہوتی ہے۔
Q3: کیا Semantic Kernel بیرونی APIs اور سروسز کو کال کر سکتا ہے؟
جی ہاں۔ APIs کو نیٹیو فنکشنز کے طور پر ایک پلگ ان میں لپیٹیں اور کرنل کے ساتھ رجسٹر کریں تاکہ ماڈل انہیں ٹولز کے طور پر استعمال کر سکے۔ انٹرفیسز کو چھوٹا اور ان پٹ/آؤٹ پٹ کی تصدیق کے ساتھ رکھیں۔
Q4: Semantic Kernel کے ساتھ کون سے ماڈلز کام کرتے ہیں؟
Semantic Kernel OpenAI، Azure OpenAI، اور دیگر کنیکٹرز کو سپورٹ کرتا ہے۔ آپ مختلف ماڈلز کو مختلف کاموں کے لیے روٹ کر سکتے ہیں—مثلاً، مسودوں کے لیے چھوٹے ماڈلز اور سوچ و بچار والے مراحل کے لیے بڑے ماڈلز۔
Q5: میں Semantic Kernel کے آؤٹ پٹ کو مستقل (مثلاً JSON) کیسے بنا سکتا ہوں؟
ایسے ساختہ پرومٹس استعمال کریں جو سخت JSON طلب کریں اور ایک مختصر مثال یا اسکیمہ شامل کریں۔ ٹمپریچر کم رکھیں، کال کے بعد آؤٹ پٹ کی تصدیق کریں، اور پارسنگ ناکامی پر ریٹری یا مرمت کریں۔