Principy jádra
Jádro je ústřední součástí sémantického jádra. V nejjednodušším případě je jádro kontejner injektáže závislostí, který spravuje všechny služby a moduly plug-in potřebné ke spuštění aplikace AI. Pokud do jádra zadáte všechny služby a moduly plug-in, podle potřeby je bude AI bezproblémově používat.
Jádro je uprostřed.
Vzhledem k tomu, že jádro má všechny služby a moduly plug-in potřebné ke spouštění nativního kódu i služeb AI, používá ho téměř každá komponenta v sadě SDK sémantického jádra k napájení vašich agentů. To znamená, že pokud v sémantickém jádru spustíte jakýkoliv příkazový řádek nebo kód, bude jádro vždy k dispozici pro načtení potřebných služeb a modulů plug-in.
To je extrémně výkonné, protože to znamená, že jako vývojář máte jediné místo, kde můžete konfigurovat a nejdůležitější je monitorovat agenty AI. Vezměte například při vyvolání výzvy z jádra. Když to uděláte, jádro...
- Výběrem nejlepší služby AI spusťte výzvu.
- Pomocí poskytnuté šablony výzvy vytvořte výzvu.
- Odešlete výzvu službě AI.
- Odpověď přijme a parsuje.
- A nakonec vrátí odpověď z LLM do vaší aplikace.
V celém tomto procesu můžete vytvořit události a middleware, které se aktivují v každém z těchto kroků. To znamená, že můžete provádět akce, jako je protokolování, poskytování aktualizací stavu uživatelům a nejdůležitější zodpovědná AI. Všechno z jednoho místa.
Vytvoření jádra se službami a moduly plug-in
Před vytvořením jádra byste měli nejprve porozumět dvěma typům komponent, které existují:
Komponenty | Popis | |
---|---|---|
1 | Služby | Ty se skládají ze služeb AI (např. dokončení chatu) a dalších služeb (např. protokolování a klientů HTTP), které jsou nezbytné ke spuštění aplikace. Tento model byl modelovaný podle vzoru poskytovatele služeb v .NET, abychom mohli podporovat příjem závislostí ve všech jazycích. |
2 | Moduly plug-in | Jedná se o komponenty, které vaše služby AI používají a které šablony vyzve k provádění práce. Například služby AI můžou pomocí modulů plug-in načítat data z databáze nebo volat externí rozhraní API k provádění akcí. |
Pokud chcete začít vytvářet jádro, naimportujte potřebné balíčky v horní části souboru:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
Dále můžete přidat služby a moduly plug-in. Níže je příklad, jak přidat dokončení chatu Azure OpenAI, protokolovací modul a modul plug-in time.
// 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();
Naimportujte potřebné balíčky:
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.core_plugins.time_plugin import TimePlugin
Dále můžete vytvořit jádro.
# Initialize the kernel
kernel = Kernel()
Nakonec můžete přidat potřebné služby a moduly plug-in. Níže je příklad, jak přidat dokončení chatu Azure OpenAI, protokolovací modul a modul plug-in time.
# 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",
)
Vytvoření jádra
Jádra lze sestavit pomocí .Kernel.builder()
V tomto případě můžete přidat požadované služby a moduly plug-in AI.
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletionService)
.withPlugin(lightPlugin)
.build();
Použití injektáže závislostí
V jazyce C# můžete k vytvoření jádra použít injektáž závislostí. To se provádí vytvořením ServiceCollection
a přidáním služeb a modulů plug-in do něj. Níže je příklad, jak vytvořit jádro pomocí injektáže závislostí.
Tip
Doporučujeme vytvořit jádro jako přechodnou službu, aby se po každém použití odstranilo, protože kolekce modulů plug-in je proměnlivá. Jádro je extrémně jednoduché (protože se jedná pouze o kontejner pro služby a moduly plug-in), takže vytvoření nového jádra pro každé použití není problém s výkonem.
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);
});
Další kroky
Teď, když rozumíte jádru, se dozvíte o všech různých službách AI, které do něj můžete přidat.