본문 바로가기
Programming/Semantic Kernel

[Semantic Kernel] Kernel 생성 방법

by Kor-IT 2024. 11. 22.
반응형

Create Kernel

 

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 추가하는 방법을 모른다면 아래 글을 보면 됩니다.

 

 

[.NET] appsettings.json 추가하기

appsettings.json 추가하기 IDE : Visual Stuio 2022.NET Version : .NET 8Project : Console Projectgithub : anonyDevMan/Kor-IT-ConsoleProject: Kor-IT Console Project (github.com)  1. "Microsoft.Extensions.Configuration.Json" Nuget Install  2. appsetti

it-developer-tistory.tistory.com

 

 

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

댓글