Aracılığıyla paylaş


.NET için Anlam Çekirdeğine genel bakış

Bu makalede Anlam Çekirdeği temel kavramlarını ve özelliklerini keşfedersiniz. Anlam Çekirdeği, .NET uygulamalarında yapay zeka ile çalışmak için güçlü ve önerilen bir seçimdir. İlerideki bölümlerde şunları öğrenirsiniz:

  • Projenize anlamsal çekirdek ekleme
  • Semantik Çekirdek çekirdek kavramları

Bu makale, özellikle .NET bağlamında Anlam Çekirdeği'ne giriş niteliğinde bir genel bakış görevi görür. Anlam Çekirdeği hakkında daha kapsamlı bilgi ve eğitim için aşağıdaki kaynaklara bakın:

.NET projesine AnlamSal Çekirdek ekleme

Anlam Çekirdeği SDK'sı .NET için bir NuGet paketi olarak kullanılabilir ve standart uygulama yapılandırmalarıyla tümleşir.

Microsoft.SemanticKernel Aşağıdaki komutu kullanarak paketi yükleyin:

dotnet add package Microsoft.SemanticKernel

Not

Semantik Çekirdeğin temel özelliklerini sağlasa Microsoft.SemanticKernel da ek özellikler için ek paketler yüklemeniz gerekir. Örneğin, Microsoft.SemanticKernel.Plugins.Memory paket bellekle ilgili özelliklere erişmeyi sağlar. Daha fazla bilgi için Anlam Çekirdeği belgelerine bakın.

AnlamSal Çekirdek'e erişmek ve bu çekirdekle çalışmak için sınıfını KernelBuilder kullanarak bir Kernel örnek oluşturun ve yapılandırın. , Kernel kodunuzla yapay zeka modelleri arasındaki tümleştirmeleri düzenlemeye yönelik hizmetleri, verileri ve bağlantıları barındırıyor.

bir .NET konsol uygulamasında öğesini Kernel yapılandırın:

var builder = Kernel.CreateBuilder();

// Add builder configuration and services

var kernel = builder.Build();

ASP.NET Core uygulamasında Çekirdeği yapılandırın:

var builder = WebApplication.CreateBuilder();
builder.Services.AddKernel();

// Add builder configuration and services

var app = builder.Build();

Anlam Çekirdeğini Anlama

Semantik Çekirdek , OpenAI, Azure OpenAI ve Hugging Face gibi yapay zeka modellerini ve hizmetlerini C#, Python ve Java gibi geleneksel programlama dilleriyle tümleştirip düzenleyen bir açık kaynak SDK'dır.

Semantik Çekirdek SDK'sı, kuruluş geliştiricilerine aşağıdaki yollarla avantaj sağlar:

  • Kurumsal ürünler için uyumlu bir çözüm sağlamak için yapay zeka özelliklerinin mevcut uygulamalarla tümleştirilmesini kolaylaştırır.
  • Karmaşıklığı azaltan soyutlamalar sağlayarak farklı yapay zeka modelleri veya hizmetleriyle çalışmanın öğrenme eğrisini en aza indirir.
  • Yapay zeka modellerinden gelen istemlerin ve yanıtların öngörülemeyen davranışını azaltarak güvenilirliği artırır. Denetimli ve öngörülebilir bir kullanıcı deneyimi oluşturmak için istemlere ince ayar yapabilir ve görevleri planlayabilirsiniz.

Semantik Çekirdek, çeşitli temel kavramlar temelinde oluşturulur:

  • Bağlantılar: Dış yapay zeka hizmetleri ve veri kaynaklarıyla arabirim.
  • Eklentiler: Uygulamaların kullanabileceği işlevleri kapsülleme.
  • Planner: Yürütme planlarını ve stratejilerini kullanıcı davranışına göre düzenler.
  • Bellek: Yapay zeka uygulamaları için bağlam yönetimini özetler ve basitleştirir.

Bu yapı taşları aşağıdaki bölümlerde daha ayrıntılı olarak incelenir.

Bağlantılar

Anlam Çekirdeği SDK'sı, geliştiricilerin LLM'leri ve diğer hizmetleri mevcut uygulamalarıyla tümleştirmesini sağlayan bir bağlayıcı kümesi içerir. Bu bağlayıcılar, uygulama kodu ile yapay zeka modelleri veya hizmetleri arasında köprü görevi görür. Anlam Çekirdeği, kendi iş akışlarınızı ve özelliklerinizi oluşturmaya odaklanabilmeniz için sizin için birçok yaygın bağlantı endişesini ve zorluklarını ele alır.

Aşağıdaki kod parçacığı bir Kernel oluşturur ve Bir Azure OpenAI modeline bağlantı ekler:

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();

Eklentiler

AnlamSal Çekirdek eklentileri , uygulamaların ve yapay zeka modellerinin tüketmesi için standart dil işlevlerini kapsüller. Kendi eklentilerinizi oluşturabilir veya SDK tarafından sağlanan eklentilere güvenebilirsiniz. Bu eklentiler, yapay zeka modellerinin avantajlı olduğu ve bunları daha geleneksel C# yöntemleriyle verimli bir şekilde birleştirdiği görevleri kolaylaştırır. Eklenti işlevleri genellikle iki türe ayrılır: anlamsal işlevler ve yerel işlevler.

Anlamsal işlevler

Anlamsal işlevler, kodunuzda Semantik Çekirdeğin gerektiğinde özelleştirebileceği ve çağırabileceği yapay zeka istemleridir. Bu istemleri değişkenleri, özel istem ve tamamlama biçimlendirmesini ve daha fazlasını kullanacak şekilde ayarlayabilirsiniz.

Aşağıdaki kod parçacığı bir anlamsal işlevi tanımlar ve kaydeder:

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

Yerel işlevler

Yerel işlevler, Anlam Çekirdeği'nin verileri işlemek veya almak için doğrudan çağırabileceği C# yöntemleridir. LLM istemleri yerine geleneksel kod yönergeleri için daha uygun işlemler gerçekleştirir.

Aşağıdaki kod parçacığı yerel bir işlevi tanımlar ve kaydeder:

// 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

Planlayıcı, yapay zeka modelleri ve eklentileri arasında sorunsuz tümleştirmeyi yönetmek için yapay zeka düzenlemesi sağlayan Anlam Çekirdeği'nin temel bileşenidir. Bu katman, kullanıcı isteklerinden yürütme stratejileri oluşturur ve yapay zeka destekli planlama ile karmaşık görevleri gerçekleştirmek için Eklentileri dinamik olarak düzenler.

Aşağıdaki sahte kod parçacığını göz önünde bulundurun:

// 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>()}");

Yukarıdaki kod, yerel bir dosyadaki içeriği okumak ve içeriği özetlemek için yürütülebilir, sıralı bir plan oluşturur. Plan, yerel bir işlev kullanarak dosyayı okumak ve ardından yapay zeka modeli kullanarak analiz etmek için yönergeler ayarlar.

Bellek

Semantik Çekirdeğin Vektör depoları , yapay zeka uygulamaları için bağlam yönetimini basitleştirmek için ekleme modelleri, vektör veritabanları ve diğer veriler üzerinde soyutlamalar sağlar. Vektör depoları, tekdüzen bir geliştirici deneyimi sunan temel LLM veya Vector veritabanından bağımsızdır. Verileri Azure AI Search ve Redis için Azure Cache gibi çeşitli kaynaklarda veya hizmetlerde depolamak için bellek özelliklerini yapılandırabilirsiniz.

Aşağıdaki kod parçacığını göz önünde bulundurun:

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

Yukarıdaki kod, verilerin yapay zeka modelleriyle etkileşim kurarken ve görevleri düzenlerken kullanılabilmesi için bir dizi olguyu belleğe yükler.