반응형
Project
- Project: Console Project
- Framework: .NET 9
- C#: 13
IDE
- Visual Studio 2022
Nuget Package
- Microsoft.SemanticKernel.Core : 1.30.0
- Microsoft.SemanticKernel : 1.30.0
- Microsoft.SemanticKernel.Abstractions : 1.30.0
- Microsoft.SemanticKernel.Connectors.AzureOpenAI : 1.30.0
- Microsoft.Extensions.DependencyInjection : 9.0.0
- Microsoft.Extensions.Logging : 9.0.0
appsettings.json
{
"LLMOptions": {
"AzureOpenAIOptions": [
{
"DeployementName": "",
"EmbeddingDeployementName": "",
"Key": "",
"Endpoint": "https://~~~"
}
]
}
}
만약, appsettings.json을 program.cs 추가하는 방법을 모른다면 아래 글을 보면 됩니다.
IStep
추후 Class를 변경하면서 테스트하기 용이하기 위해 공통 인터페이스를 하나 만든다.
public interface IStep
{
public Task Call();
}
Step1_CreateKernel
Using
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
Class
AzureOpenAI 기준으로 Option을 등록하여 Kernel을 얻는 예제이다. 추가적으로 OpenAI, Mistral, Google, Hugging Face, 등 다른 것들에 대해서 실행하는 방법도 추후 하나하나씩 올릴 예정이다.
public class Step1_CreateKernel : IStep
{
private LLMOption _llmOption;
private AzureOpenAIOption _azureOpenAIOption;
private Kernel _kernel;
public Step1_CreateKernel(IOptions<LLMOption> llmOption)
{
_llmOption = llmOption.Value;
_azureOpenAIOption = _llmOption.AzureOpenAIOptions.FirstOrDefault();
IKernelBuilder kernelBuilder = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion(_azureOpenAIOption.DeployementName, _azureOpenAIOption.Endpoint, _azureOpenAIOption.Key);
kernelBuilder.Services.AddLogging(configure =>
{
configure.AddDebug().SetMinimumLevel(LogLevel.Trace);
configure.AddSimpleConsole().SetMinimumLevel(LogLevel.Trace);
configure.SetMinimumLevel(LogLevel.Trace);
});
_kernel = kernelBuilder.Build();
}
public async Task Call()
{
try
{
}
catch (Exception ex)
{
}
}
}
기본적으로 IKernelBuilder에 등록 후 Build()를 통해 Kernel 객체를 얻는 형식이다. 추가적으로 Logging을 추가해서 어떻게 호출되고 있는지 알기 위해 추가한다.
반응형
'Programming > Semantic Kernel' 카테고리의 다른 글
[Semantic Kernel] Kernel 이란? (1) | 2024.11.21 |
---|---|
[Microsoft] Semantic Kernel 이란? (2) | 2024.11.15 |
댓글