최근 인공지능(AI) 기술이 급격히 발전하면서 다양한 분야에서 AI를 활용한 솔루션이 늘어나고 있습니다. 특히 대규모 언어 모델(LLM)은 자연어 처리 분야에서 큰 주목을 받고 있으며, 이러한 기술을 쉽게 활용할 수 있는 프레임워크가 필요한 시점입니다. Microsoft의 Semantic Kernel은 이러한 요구를 충족시키기 위해 설계된 오픈소스 프로젝트입니다. 이 블로그 포스트에서는 Semantic Kernel의 주요 기능, 설치 방법, 기본 사용법 등을 자세히 소개하겠습니다.

Semantic Kernel이란?

Semantic Kernel은 개발자가 AI 에이전트 및 다중 에이전트 시스템을 구축하고 조정하며 배포할 수 있도록 돕는 모델 비의존적인 SDK입니다. 단순한 챗봇부터 복잡한 다중 에이전트 워크플로우까지, Semantic Kernel은 기업 수준의 신뢰성과 유연성을 제공하는 도구를 제공합니다.

주요 기능으로는 다양한 LLM 모델에 대한 지원, 모듈형 AI 에이전트 구축, 복잡한 워크플로우 조정, 플러그인 생태계, 다중 모드 입력 처리 등이 있습니다. 이러한 기능들은 AI 솔루션을 개발하는 데 있어 많은 시간과 노력을 절약할 수 있도록 돕습니다.

주요 기능

  1. 모델 유연성: OpenAI, Azure OpenAI, Hugging Face 등 다양한 LLM과 연결할 수 있습니다.
  2. 에이전트 프레임워크: 도구/플러그인에 접근할 수 있는 모듈형 AI 에이전트를 구축할 수 있습니다.
  3. 다중 에이전트 시스템: 협력하는 전문 에이전트를 통해 복잡한 워크플로우를 조정할 수 있습니다.
  4. 플러그인 생태계: 네이티브 코드 함수, 프롬프트 템플릿, OpenAPI 사양 등을 통해 기능을 확장할 수 있습니다.
  5. 벡터 DB 지원: Azure AI Search, Elasticsearch 등과의 원활한 통합이 가능합니다.
  6. 다중 모드 지원: 텍스트, 비전, 오디오 입력을 처리할 수 있습니다.
  7. 로컬 배포: Ollama, LMStudio 또는 ONNX를 통해 로컬에서 실행할 수 있습니다.
  8. 프로세스 프레임워크: 복잡한 비즈니스 프로세스를 구조화된 워크플로우로 모델링할 수 있습니다.
  9. 기업 준비 완료: 관찰 가능성, 보안 및 안정적인 API를 위해 설계되었습니다.
  10. 설치 방법

    Semantic Kernel을 사용하기 위해서는 먼저 환경 변수를 설정해야 합니다. Azure OpenAI 또는 OpenAI API 키를 설정하세요.

    Azure OpenAI 설정

    export AZURE_OPENAI_API_KEY=AAA....

    OpenAI 설정

    export OPENAI_API_KEY=sk-...

    Python 설치

    Semantic Kernel을 Python에서 사용하려면 다음 명령어를 입력하세요.

    pip install semantic-kernel

    .NET 설치

    .NET에서 사용하려면 다음 명령어를 입력하세요.

    dotnet add package Microsoft.SemanticKernel
    dotnet add package Microsoft.SemanticKernel.Agents.Core

    Java 설치

    Java를 사용하는 경우 semantic-kernel-java build를 참고하세요.

    빠른 시작 가이드

    이제 기본적인 에이전트를 생성해 보겠습니다. Python과 .NET 각각의 코드 예제를 통해 사용법을 익혀보세요.

    Python을 이용한 기본 에이전트 생성

    아래 코드는 사용자의 요청에 응답하는 간단한 에이전트를 생성합니다.

    import asyncio
    from semantic_kernel.agents import ChatCompletionAgent
    from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
    
    async def main():
        # 기본 지침으로 챗 에이전트 초기화
        agent = ChatCompletionAgent(
            service=AzureChatCompletion(),
            name="SK-Assistant",
            instructions="You are a helpful assistant.",
        )
    
        # 사용자 메시지에 대한 응답 가져오기
        response = await agent.get_response(messages="Write a haiku about Semantic Kernel.")
        print(response.content)
    
    asyncio.run(main()) 
    
    # Language's essence,
    # Semantic threads intertwine,
    # Meaning's core revealed.

    .NET을 이용한 기본 에이전트 생성

    아래 코드는 C#을 이용한 기본 에이전트의 예입니다.

    using Microsoft.SemanticKernel;
    using Microsoft.SemanticKernel.Agents;
    
    var builder = Kernel.CreateBuilder();
    builder.AddAzureOpenAIChatCompletion(
                    Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT"),
                    Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY"));
    
    var agent = builder.Build();
    var response = await agent.InvokeAsync("Write a haiku about Semantic Kernel.");
    Console.WriteLine(response);

    실무 활용 시나리오

    Semantic Kernel은 다양한 실제 비즈니스 시나리오에서 활용될 수 있습니다. 예를 들어, 고객 지원 시스템을 구축할 때 여러 개의 AI 에이전트를 통해 다양한 고객 문의를 처리할 수 있습니다. 각 에이전트는 특정 도메인의 전문성을 갖추고 있어 더 정확하고 빠른 응답을 제공할 수 있습니다.

    또한, 교육 분야에서도 활용할 수 있습니다. 학생들에게 맞춤형 학습 자료를 제공하거나 질문에 대한 답변을 실시간으로 제공하는 AI 튜터를 구축할 수 있습니다.

    비슷한 도구와의 비교

    Semantic Kernel 외에도 챗봇 구축을 위한 다양한 도구들이 있습니다. 예를 들어, Dialogflow, Rasa 등이 있습니다. 하지만 Semantic Kernel은 LLM과의 유연한 통합, 다중 에이전트 시스템 구축의 용이성, 플러그인 생태계 등에서 차별화된 강점을 가지고 있습니다. 특히 기업 환경에서의 안정성과 보안성을 중시하는 사용자에게 매우 적합합니다.

    추천 대상

    • AI 솔루션 개발자
    • 기업의 AI 프로젝트 담당자
    • 다중 에이전트 시스템 구축을 고려하는 연구자 및 엔지니어

Semantic Kernel은 AI 개발의 새로운 지평을 열어줄 도구입니다. 오픈소스 프로젝트로서 여러분이 필요로 하는 다양한 기능을 제공하므로, 많은 관심과 활용을 권장합니다.

GitHub에서 Semantic Kernel을 확인해 보세요: microsoft/semantic-kernel