혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

Semantic Kernel 개념(예제포함) 및 교육 후기

간지뽕빨리턴님 2025. 3. 30. 00:36
반응형

Semantic Kernel에 대해서 알아봅시다

Semantic Kernel을 알아보고 교육 후기를 알아보자

인공지능 기술의 발전은 개발자들에게 지능형 애플리케이션을 구축할 수 있는 새로운 기회를 제공하고 있습니다. 이러한 흐름 속에서 마이크로소프트의 오픈소스 프로젝트인 Semantic Kernel은 대규모 언어 모델(LLM)을 가존 애플리케이션과 통합하여 AI 기능을 손쉽게 구현할 수 있는 강력한 도구입니다. Semantic Kernel을 개념과 주요 특징을 상세히 소개하고 이를 활용한 예제와 사용법을 적어보고 교육을 참여하게 되었는데 그에 관련된 후기도 남겨볼까 합니다.

목차

    Semantic Kernel 

    Semantic Kernel이란?

    ⓒ Microsoft / Semantic Kernel

    최신 AI 모델을 C#, Python, Java와 같은 기존 프로그래밍 언어와 통합하여 AI 에이전트를 쉽게 구축할 수 있도록 지원하는 오픈 소스 개발 키드입니다. 이를 통해 개발자들은 AI 서비스를 기존 애플리케이션에 유연하게 결합하여 지능형 기능을 구현할 수 있습니다. Semantic Kernel은 프롬프트를 기존 API와 결합하여 작업을 수행하며 AI 모델에 대한 기존 코드를 설명하면 해당 요청을 처리하기 위해 호출됩니다. 이러한 방식으로 Semantic Kernel은 AI 모델과 기존 코드 간의 원활한 상호 작용을 지원을 합니다.

    주요개념

    커널(Kernel) : 핵심 구성요소이며, AI모델과 상호작용을 관리합니다. 커널은 플러그인과 메모리 등을 통합하여 AI 기능을 조정합니다.

    플러그인(Plugin) : 기존 코드를 플러그인 형태로 추가하여 기능을 확장할 수 있고 AI 모델이 해당 기능을 호출하여 작업을 수행할 수 있습니다.

    메모리(Memory) : 대화의 문맥을 유지하거나, 이전에 학습한 정보를 저장하고 검색하는 데 사용되며 AI 모델이 일관성 있는 응답을 제공하는데 도움을 줍니다.

    프롬프트(Prompt) : AI 모델에 제공되는 입력으로 모델이 수행해야 할 작업이나 질문 등을 포함합니다. 프롬프트의 설계는 모델의 성능에 큰 영향을 미칩니다.

    플래너(Planner) : 주어진 작업을 수행하기 위해 필요한 일련의 단계를 계획하고 조정하는 역할을 하며 이를 통해 복잡한 작업을 체계적으로 처리할 수 있습니다.

    간단예시 및 사용방법

    C#에서 사용하는 방법을 예로 들어 설명을 하겠습니다. 앞서 설명을 해드렸지만 C#, JAVA, Python에서 사용을 할 수 있으며 여러분이 원하는 환경에서 세팅을 하여 사용을 하시면 됩니다.

    dotnet add package Microsoft.SemanticKernel

    프로젝트에 NuGet 패키지 관리자를 통해 설치를 합니다.

    var kernel = new KernelBuilder()
        .WithLoggerFactory(ConsoleLogger.LoggerFactory)
        .WithOpenAIChatCompletionService("gpt-3.5-turbo", "your-api-key")
        .Build();

    커널을 먼저 생성을 합니다. KernelBuilder를 사용하여 커널 인스턴스를 생성하고 원하는 AI 모델과의 연동을 설정하며 Google의 Gemini와 OpenAI의 Chatgpt, HuggingFace 등 다양한 모델과 연동을 설정합니다. 위 예제 소스의 경우 ChatGPT를 활용하여 연결을 할 수 있습니다.

    var pluginsDirectory = Path.Combine(Directory.GetCurrentDirectory(), "plugins");
    var textPlugin = kernel.ImportSemanticFunctionsFromDirectory(pluginsDirectory, "SummarizePlugin");

    플러그인을 추가합니다, Semantic Kernel은 플러그인 시스템을 통해 기능을 확장을 할 수 있고 이번 예제를 통해 텍스트 요약 기능을 추가합니다.

    var result = await kernel.InvokeAsync(textPlugin["Summarize"], new() { ["input"] = "요약 할 텍스트를 입력하세요." });
    Console.WriteLine(result);

    추가한 함수를 호출하여 원하는 결과를 받을 수 있습니다. 이번 예시의 경우 텍스트 요약기능을 추가하여 실행하는 것을 해볼 수 있습니다.

    보다 더욱 자세한 내용은 마이크로소프트에서 제공하는 공식문서[#]를 확인하면 좋습니다!

    AI 교육 참여 후기

    AI 교육은 최근에 회사에서 AI에 중요성이 커지다 보니 이런저런 개발자 콘퍼런스 등을 찾아보는 일이 많아졌습니다. 최근 AI 생태계 관련 세미나 이후 이번에는 Semantic Kernel과 관련된 교육이 있어 신청을 하려고 했으나 역시 인기가 많아 금방 마무리가 되어 사실 신청은 하지 못했지만 목마른 자는 문을 두드려라라는 말이 있죠? 문의를 남겨 혹시 추가 신청이 가능한지 문의를 했고 다행히도 배려를 받아 일단 현장에 오면 남는 자리가 있다면 참여를 할 수 있도록 해준다는 말을 듣고 부딪혀보기로 하고 출발을 했습니다. 출발은 울산이었고 도착지는 대구 경북대학교에서 진행을 한다고 했습니다. 'Global AI Bootcamp 2025 - Daegu'에 참여하여 Semantic Kernel에 대한 교육을 받을 수 있었습니다.

    초대받지 않은 사람이다 보니 일찍 현장에 도착을 했습니다. 날씨가 정말 좋았습니다.  최근 대형 산불 때문에 걱정을 많이 했지만 많은 희생이 있었지만 정말 다행히도 산불은 어느 정도 잡혔고 미세먼지가 본격적으로 시작되긴 했지만 비도 오고 그런 영향인지 오래간만에 보는 따사로운 햇빛과 함께 경북대에 도착을 하여 진행을 하는 곳으로 이동을 합니다.

    경북대학교 건물에서 하다보닌 깐 들어가려고 하니 외부인 출입이 안되어서 당황을 했지만 지나가는 경북대학교 학생의 도움으로 같이 들어갈 수 있었습니다. 그 당시 저 말고 다른 사람도 있었는데 그분도 똑같은 교육을 들으러 왔고 대학생이였는데 카이스트 재학생이였습니다. 그렇게 들어갔고 12시에 도착을 했지만 저는 입구쪽에 조용히 서있었습니다. 초대권도 없다보니 민폐가 될 것 같았습니다. 그렇게 잠시 후 확인이 시작되었고 2~30분이 소요가 되며 다 끝이 났는데 자리가 없이 많은 사람들이 참여를 해서 결국 참여가 안될거같아 조용히 그 옆 강의실에서라도 공부를 하고 갈까라는 생각으로 물어보다가 관계자 분에게 들으러 왔는데 신청을 못해서 그러는데 혹시 들을 수 있을까요? 라는 말을 했는데 흔쾌히 저희 자리라도 양보를 하겠습니다 라는 말을 해주셨고 들을 수 있었습니다.

    ⓒ 마이크로소프트 유저스틴 님 검색을 해도 사실 다 알 수 있는 정보이지만 문제가 될 수 있기에 모자이크

    Semantic Kernel을 들으러 온 사람들을 전반적으로 보닌깐 80% 정도의 사람들은 학생들이 많이 왔었습니다. 대학생들이 대다수였고 일부 저와 비슷하게 현직자 또는 관심이 있는 사람이 참여를 한 것처럼 보였습니다. 그래서인지 내용이 정말 쉽게 설명이 잘 정리가 되어있었고 알아듣기 쉽게 설명을 해주셔서 오히려 편하고 좋았습니다. 그리고 사실 제가 처음 알게 된 사실인데 MCT라는 것을 처음 알았는데 마이크로소프트에서 최고 기술 전문가 겸 교육 전문가에게 주는 일종의 라이선스와 비슷한 것으로 보입니다.

    다들 좋은 분들이었지만 기억에 남는 분 한분이 있는데 대학에서 컴공 출신이고 사회복무요원으로 복무를 하면서 교육을 하고 있다는 분이 있었는데 저보다 나이는 어렸지만 정말 멋진 사람이고 오히려 제가 더 배울 부분이 많은 사람이었던 것 같았습니다. 

     

    섹션은 총 4개로 나눠졌고 개념을 설명하고 데모 시연을 하고 실습을 할 수 있는 시간을 가져줬는데 아까 처음에 말씀을 드렸던 것처럼 대다수 잘 모르는 분들이 있기 때문에 설명을 정말 알아듣기 쉽게 해 줬기 때문에 그 부분은 매우 만족을 했습니다.

    그리고, 유저스틴님에게도 이 글을 보실지는 모르겠지만 맨 뒤에 앉아 이런저런 이야기와 함께 다양한 정보를 전달을 해주셔서 감사합니다 :D 또 만나 뵙게 된다면 그때 다시 인사를 드리도록 하겠습니다.

    마무리

    Semantic Kernel은 AI 모델로 기존 프로그래밍 언어의 통합을 간소화하여 개발자들이 보다 효율적으로 지능형 기능을 구현할 수 있도록  도와주는 강력한 도구라고 생각이 됩니다. 인공지능이야기를 하면 누군가 그런 이야기를 했습니다. 이거 if.. else만 잘 사용을 하면 AI랑 다를게 뭐냐는 말을 들었습니다. 사실 아무리 생각해도 그 말에 대답은 하나인 거 같습니다. '개발자가 그런 수고로움을 덜고 그 시간에 다른 것을 할 수 있다.'라는 말이겠죠 IT는 주제넘은 소리겠지만 변화를 두려워하면 결국 도태되는 것은 당연한 소리일 것입니다. 변화에 두려워하지 말고 도전하는 사람만 살아남을 수 있겠죠 이번 교육을 통해 단순히 Semantic Kernel이라는 것을 배운 게 아닌 다양한 생각을 가질 수 있어 좋았던 시간이었습니다. 다중 에이전트와 같은 것들에 대한 관심도 커지고 아직은 배울 게 많은 것 같습니다. Semantic Kernel에 대해서 궁금한 사항이 있다면 댓글을 통해 남겨주시면 답변을 드리도록 하겠습니다.