Szemantikus kernel – áttekintés a .NET-hez
Ebben a cikkben megismerheti a Szemantikus Kernel alapfogalmait és képességeit. A Szemantikus Kernel hatékony és ajánlott választás a .NET-alkalmazásokban használt AI-vel való munkához. Az alábbi szakaszokban a következő ismereteket ismerheti meg:
- Szemantikai kernel hozzáadása a projekthez
- Szemantikus kernel alapfogalmak
Ez a cikk bevezető áttekintést nyújt a szemantikus kernelről, különösen a .NET kontextusában. A Szemantikus Kernelre vonatkozó átfogóbb információkért és képzésért tekintse meg a következő forrásokat:
Szemantikus kernel hozzáadása .NET-projekthez
A Szemantic Kernel SDK NuGet-csomagként érhető el a .NET-hez, és integrálható a standard alkalmazáskonfigurációkkal.
Telepítse a Microsoft.SemanticKernel
csomagot a következő paranccsal:
dotnet add package Microsoft.SemanticKernel
Feljegyzés
Bár Microsoft.SemanticKernel
a Szemantic Kernel alapvető funkcióit biztosítja, további képességekre van szükség, hogy további csomagokat telepítsen. A csomag például hozzáférést biztosít a Microsoft.SemanticKernel.Plugins.Memory
memóriával kapcsolatos funkciókhoz. További információt a Szemantic Kernel dokumentációjában talál.
Hozzon létre és konfiguráljon egy példányt Kernel
az osztály használatával a KernelBuilder
Szemantic Kernel eléréséhez és használatához. A Kernel
kód és az AI-modellek közötti integrációk vezényléséhez szükséges szolgáltatásokat, adatokat és kapcsolatokat tárolja.
Konfigurálja a Kernel
.NET-konzolalkalmazást:
var builder = Kernel.CreateBuilder();
// Add builder configuration and services
var kernel = builder.Build();
Konfigurálja a kernelt egy ASP.NET Core-alkalmazásban:
var builder = WebApplication.CreateBuilder();
builder.Services.AddKernel();
// Add builder configuration and services
var app = builder.Build();
Szemantikus kernel ismertetése
A Szemantic Kernel egy nyílt forráskódú SDK, amely integrálja és vezényli az AI-modelleket és -szolgáltatásokat, például az OpenAI-t, az Azure OpenAI-t és a Face-t olyan hagyományos programozási nyelvekkel, mint a C#, a Python és a Java.
A Szemantic Kernel SDK a következő módokon nyújt előnyöket a vállalati fejlesztőknek:
- Egyszerűsíti az AI-képességek integrálását a meglévő alkalmazásokba, hogy egységes megoldást biztosíthasson a nagyvállalati termékekhez.
- Minimalizálja a különböző AI-modellekkel vagy szolgáltatásokkal végzett munka tanulási görbéit azáltal, hogy olyan absztrakciókat biztosít, amelyek csökkentik az összetettség mértékét.
- Növeli a megbízhatóságot azáltal, hogy csökkenti az AI-modellektől érkező kérések és válaszok kiszámíthatatlan viselkedését. A parancssorok finomhangolása és a feladatok megtervezhetők egy szabályozott és kiszámítható felhasználói élmény létrehozásához.
A szemantikus kernel több alapvető fogalom köré épül:
- Kapcsolatok: Interfész külső AI-szolgáltatásokkal és adatforrásokkal.
- Beépülő modulok: Az alkalmazások által használható függvények beágyazása.
- Planner: A végrehajtási tervek és stratégiák vezénylése a felhasználói viselkedés alapján.
- Memória: Absztrakciók és leegyszerűsíti a környezetkezelést az AI-alkalmazásokhoz.
Ezeket az építőelemeket részletesebben a következő szakaszokban ismerheti meg.
Kapcsolatok
A Szemantic Kernel SDK olyan összekötőket tartalmaz, amelyek lehetővé teszik a fejlesztők számára, hogy integrálják az LLM-eket és más szolgáltatásokat a meglévő alkalmazásaikba. Ezek az összekötők hidat képeznek az alkalmazáskód és az AI-modellek vagy -szolgáltatások között. A Szemantic Kernel számos gyakori kapcsolati problémát és kihívást kezel, így saját munkafolyamatok és funkciók létrehozására összpontosíthat.
A következő kódrészlet létrehoz és Kernel
hozzáad egy kapcsolatot egy Azure OpenAI-modellhez:
using Microsoft.SemanticKernel;
// Create kernel
var builder = Kernel.CreateBuilder();
// Add a chat completion service:
builder.Services.AddAzureOpenAIChatCompletion(
"your-resource-name",
"your-endpoint",
"your-resource-key",
"deployment-model");
var kernel = builder.Build();
Beépülő modulok
A szemantikus kernel beépülő modulok szabványos nyelvi függvényeket foglalnak össze az alkalmazásokhoz és az AI-modellekhez. Létrehozhat saját beépülő modulokat, vagy támaszkodhat az SDK által biztosított beépülő modulokra. Ezek a beépülő modulok leegyszerűsítik azokat a feladatokat, amelyekben az AI-modellek előnyösek, és hatékonyan kombinálják őket hagyományosabb C#-módszerekkel. A beépülő modulfüggvények általában kétféle kategóriába sorolhatók: szemantikai függvények és natív függvények.
Szemantikai függvények
A szemantikai függvények lényegében a kódban definiált AI-kérések, amelyeket a Szemantic Kernel igény szerint testre szabhat és meghívhat. Ezeket a kéréseket a változók, az egyéni kérések és a befejezési formázás használatára is alkalmazhatja, és így tovább.
A következő kódrészlet definiál és regisztrál egy szemantikai függvényt:
var userInput = Console.ReadLine();
// Define semantic function inline.
string skPrompt = @"Summarize the provided unstructured text in a sentence that is easy to understand.
Text to summarize: {{$userInput}}";
// Register the function
kernel.CreateSemanticFunction(
promptTemplate: skPrompt,
functionName: "SummarizeText",
pluginName: "SemanticFunctions"
);
Natív függvények
A natív függvények olyan C# metódusok, amelyeket a Szemantic Kernel közvetlenül hívhat meg az adatok manipulálására vagy lekérésére. LlM-kérések helyett olyan műveleteket hajtanak végre, amelyek jobban megfelelnek a hagyományos kódutasításoknak.
A következő kódrészlet definiálja és regisztrálja a natív függvényeket:
// Define native function
public class NativeFunctions {
[SKFunction, Description("Retrieve content from local file")]
public async Task<string> RetrieveLocalFile(string fileName, int maxSize = 5000)
{
string content = await File.ReadAllTextAsync(fileName);
if (content.Length <= maxSize) return content;
return content.Substring(0, maxSize);
}
}
//Import native function
string plugInName = "NativeFunction";
string functionName = "RetrieveLocalFile";
var nativeFunctions = new NativeFunctions();
kernel.ImportFunctions(nativeFunctions, plugInName);
Planner
A planner a Szemantic Kernel alapvető összetevője, amely AI-vezénylést biztosít az AI-modellek és beépülő modulok közötti zökkenőmentes integráció kezeléséhez. Ez a réteg végrehajtási stratégiákat dolgoz ki a felhasználói kérésekből, és dinamikusan vezényeli a beépülő modulokat az AI által támogatott tervezéssel végzett összetett feladatok végrehajtásához.
Fontolja meg a következő pszeudokód-kódrészletet:
// Native function definition and kernel configuration code omitted for brevity
// Configure and create the plan
string planDefinition = "Read content from a local file and summarize the content.";
SequentialPlanner sequentialPlanner = new SequentialPlanner(kernel);
string assetsFolder = @"../../assets";
string fileName = Path.Combine(assetsFolder,"docs","06_SemanticKernel", "aci_documentation.txt");
ContextVariables contextVariables = new ContextVariables();
contextVariables.Add("fileName", fileName);
var customPlan = await sequentialPlanner.CreatePlanAsync(planDefinition);
// Execute the plan
KernelResult kernelResult = await kernel.RunAsync(contextVariables, customPlan);
Console.WriteLine($"Summarization: {kernelResult.GetValue<string>()}");
Az előző kód létrehoz egy végrehajtható, szekvenciális tervet, amely egy helyi fájlból olvas be tartalmat, és összegzi a tartalmat. A terv utasításokat állít be a fájl natív függvény használatával való olvasásához, majd AI-modellel való elemzéséhez.
Memory (Memória)
A Szemantic Kernel Vektortárolói absztrakciókat biztosítanak a modellek, vektoradatbázisok és egyéb adatok beágyazása során, hogy egyszerűbbé tegye az AI-alkalmazások környezetkezelését. A vektortárolók agnosztikusak a mögöttes LLM- vagy Vector-adatbázis számára, egységes fejlesztői élményt biztosítva. A memóriafunkciók számos különböző forrásban vagy szolgáltatásban tárolhatók, például az Azure AI Searchben és az Azure Cache for Redisben.
Vegye figyelembe a következő kódrészletet:
var facts = new Dictionary<string,string>();
facts.Add(
"Azure Machine Learning; https://learn.microsoft.com/en-us/azure/machine-learning/",
@"Azure Machine Learning is a cloud service for accelerating and
managing the machine learning project lifecycle. Machine learning professionals,
data scientists, and engineers can use it in their day-to-day workflows"
);
facts.Add(
"Azure SQL Service; https://learn.microsoft.com/en-us/azure/azure-sql/",
@"Azure SQL is a family of managed, secure, and intelligent products
that use the SQL Server database engine in the Azure cloud."
);
string memoryCollectionName = "SummarizedAzureDocs";
foreach (var fact in facts) {
await memoryBuilder.SaveReferenceAsync(
collection: memoryCollectionName,
description: fact.Key.Split(";")[1].Trim(),
text: fact.Value,
externalId: fact.Key.Split(";")[2].Trim(),
externalSourceName: "Azure Documentation"
);
}
Az előző kód egy ténykészletet tölt be a memóriába, így az adatok felhasználhatók az AI-modellek használata és a feladatok vezénylése során.