Çekirdeği anlama
Çekirdek, AnlamSal Çekirdeğin merkezi bileşenidir. En basiti, çekirdek, yapay zeka uygulamanızı çalıştırmak için gereken tüm hizmetleri ve eklentileri yöneten bir Bağımlılık Ekleme kapsayıcısıdır. Çekirdekte tüm hizmetlerinizi ve eklentilerinizi sağlarsanız, bunlar gerektiğinde yapay zeka tarafından sorunsuz bir şekilde kullanılır.
Çekirdekte hem yerel kodu hem de yapay zeka hizmetlerini çalıştırmak için gereken tüm hizmetler ve eklentiler bulunduğundan, aracılarınızı desteklemek için Anlam Çekirdeği SDK'sı içindeki neredeyse tüm bileşenler tarafından kullanılır. Bu, Anlam Çekirdeği'nde herhangi bir istem veya kod çalıştırırsanız, çekirdeğin gerekli hizmetleri ve eklentileri almak için her zaman kullanılabilir olacağı anlamına gelir.
Bu son derece güçlüdür, çünkü bir geliştirici olarak yapay zeka aracılarınızı yapılandırabileceğiniz ve en önemlisi izleyebileceğiniz tek bir yere sahip olduğunuz anlamına gelir. Örneğin, çekirdekten bir istem çağırdığınızda alın. Bunu yaptığınızda çekirdek...
- İstemi çalıştırmak için en iyi yapay zeka hizmetini seçin.
- Sağlanan istem şablonunu kullanarak istemi oluşturun.
- İstemi yapay zeka hizmetine gönderin.
- Yanıtı alın ve ayrıştırın.
- Ve son olarak LLM'den gelen yanıtı uygulamanıza döndürün.
Bu işlemin tamamında, bu adımların her birinde tetiklenen olaylar ve ara yazılım oluşturabilirsiniz. Bu, günlüğe kaydetme, kullanıcılara durum güncelleştirmeleri sağlama ve en önemli sorumlu yapay zeka gibi eylemleri gerçekleştirebileceğiniz anlamına gelir. Hepsi tek bir yerden.
Çekirdek oluşturmadan önce mevcut olan iki bileşen türünü anlamanız gerekir:
Bileşenler | Açıklama | |
---|---|---|
1 | Hizmetler | Bunlar hem yapay zeka hizmetlerinden (ör. sohbet tamamlama) hem de uygulamanızı çalıştırmak için gereken diğer hizmetlerden (örneğin, günlüğe kaydetme ve HTTP istemcileri) oluşur. Bu, tüm dillerde bağımlılık alımını destekleyebilmemiz için .NET'teki Hizmet Sağlayıcısı düzeninden sonra modellendi. |
2 | Eklentiler | Bunlar, yapay zeka hizmetleriniz ve istem şablonlarınız tarafından iş gerçekleştirmek için kullanılan bileşenlerdir. Örneğin yapay zeka hizmetleri, bir veritabanından veri almak için eklentileri kullanabilir veya eylemleri gerçekleştirmek için dış API çağırabilir. |
Çekirdek oluşturmaya başlamak için dosyanızın en üstündeki gerekli paketleri içeri aktarın:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
Ardından, hizmetler ve eklentiler ekleyebilirsiniz. Aşağıda Azure OpenAI sohbet tamamlama, günlükçü ve zaman eklentisi eklemeye yönelik bir örnek verilmiştir.
// Create a kernel with a logger and Azure OpenAI chat completion service
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(modelId, endpoint, apiKey);
builder.Services.AddLogging(c => c.AddDebug().SetMinimumLevel(LogLevel.Trace));
builder.Plugins.AddFromType<TimePlugin>();
Kernel kernel = builder.Build();
Gerekli paketleri içeri aktarın:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.core_plugins.time_plugin import TimePlugin
Ardından bir çekirdek oluşturabilirsiniz.
# Initialize the kernel
kernel = Kernel()
Son olarak, gerekli hizmetleri ve eklentileri ekleyebilirsiniz. Aşağıda Azure OpenAI sohbet tamamlama, günlükçü ve zaman eklentisi eklemeye yönelik bir örnek verilmiştir.
# Add the Azure OpenAI chat completion service
kernel.add_service(AzureChatCompletion(model_id, endpoint, api_key))
# Add a plugin
kernel.add_plugin(
TimePlugin(),
plugin_name="TimePlugin",
)
Çekirdekler kullanılarak Kernel.builder()
oluşturulabilir. Bunun üzerine gerekli yapay zeka hizmetlerini ve eklentilerini ekleyebilirsiniz.
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletionService)
.withPlugin(lightPlugin)
.build();
C# dilinde, bir çekirdek oluşturmak için Bağımlılık Ekleme'yi kullanabilirsiniz. Bu, bir ServiceCollection
oluşturup buna hizmet ve eklentiler ekleyerek yapılır. Aşağıda Bağımlılık Ekleme'yi kullanarak nasıl çekirdek oluşturabileceğinize bir örnek verilmiştir.
İpucu
Eklenti koleksiyonu değişebilir olduğundan, her kullanımdan sonra atılması için geçici bir hizmet olarak bir çekirdek oluşturmanızı öneririz. Çekirdek son derece hafiftir (yalnızca hizmetler ve eklentiler için bir kapsayıcı olduğundan), her kullanım için yeni bir çekirdek oluşturmak performansla ilgili bir sorun değildir.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
// Add the OpenAI chat completion service as a singleton
builder.Services.AddOpenAIChatCompletion(
modelId: "gpt-4",
apiKey: "YOUR_API_KEY",
orgId: "YOUR_ORG_ID", // Optional; for OpenAI deployment
serviceId: "YOUR_SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
// Create singletons of your plugins
builder.Services.AddSingleton(() => new LightsPlugin());
builder.Services.AddSingleton(() => new SpeakerPlugin());
// Create the plugin collection (using the KernelPluginFactory to create plugins from objects)
builder.Services.AddSingleton<KernelPluginCollection>((serviceProvider) =>
[
KernelPluginFactory.CreateFromObject(serviceProvider.GetRequiredService<LightsPlugin>()),
KernelPluginFactory.CreateFromObject(serviceProvider.GetRequiredService<SpeakerPlugin>())
]
);
// Finally, create the Kernel service with the service provider and plugin collection
builder.Services.AddTransient((serviceProvider)=> {
KernelPluginCollection pluginCollection = serviceProvider.GetRequiredService<KernelPluginCollection>();
return new Kernel(serviceProvider, pluginCollection);
});
Artık çekirdeği anladığınıza göre, buna ekleyebileceğiniz tüm farklı yapay zeka hizmetleri hakkında bilgi edinebilirsiniz.