Semantic Kernel 지원 언어

Semantic Kernel 지원 언어

Semantic Kernel은 다음 언어를 지원할 계획이에요.

[!div class="checklist"]

  • C#
  • Python
  • Java

커널의 전반적인 아키텍처는 모든 언어에서 동일하지만, 각 언어별 SDK는 그 언어의 관용적인 문법과 스타일을 따르도록 만들어졌어요. 그래서 사용할 때 마치 원래 그 언어의 일부인 것처럼 자연스럽게 느껴져요.

C# 패키지

C#에는 프로젝트에 필요한 기능만 골라 임포트할 수 있도록 여러 패키지가 있어요. 사용 가능한 패키지는 다음과 같아요.

패키지 이름 설명
Microsoft.SemanticKernel 시작하는 데 필요한 모든 것을 담은 메인 패키지
Microsoft.SemanticKernel.Core Microsoft.SemanticKernel.Abstractions의 구현을 제공하는 핵심 패키지
Microsoft.SemanticKernel.Abstractions Semantic Kernel의 기본 추상화
Microsoft.SemanticKernel.Connectors.Amazon Amazon AI용 AI 커넥터
Microsoft.SemanticKernel.Connectors.AzureAIInference Azure AI Inference용 AI 커넥터
Microsoft.SemanticKernel.Connectors.AzureOpenAI Azure OpenAI용 AI 커넥터
Microsoft.SemanticKernel.Connectors.Google Google 모델(예: Gemini)용 AI 커넥터
Microsoft.SemanticKernel.Connectors.HuggingFace Hugging Face 모델용 AI 커넥터
Microsoft.SemanticKernel.Connectors.MistralAI Mistral AI 모델용 AI 커넥터
Microsoft.SemanticKernel.Connectors.Ollama Ollama용 AI 커넥터
Microsoft.SemanticKernel.Connectors.Onnx Onnx용 AI 커넥터
Microsoft.SemanticKernel.Connectors.OpenAI OpenAI용 AI 커넥터
CommunityToolkit.VectorData.AzureAISearch Azure AI Search용 벡터 스토어 커넥터
CommunityToolkit.VectorData.CosmosMongoDB Azure CosmosDB MongoDB용 벡터 스토어 커넥터
CommunityToolkit.VectorData.CosmosNoSql Azure CosmosDB NoSQL용 벡터 스토어 커넥터
MongoDB.VectorData MongoDB용 벡터 스토어 커넥터
CommunityToolkit.VectorData.Qdrant Qdrant용 벡터 스토어 커넥터
CommunityToolkit.VectorData.Redis Redis용 벡터 스토어 커넥터
CommunityToolkit.VectorData.SqliteVec Sqlite용 벡터 스토어 커넥터
CommunityToolkit.VectorData.Weaviate Weaviate용 벡터 스토어 커넥터
Microsoft.SemanticKernel.Plugins.OpenApi (Experimental) OpenAPI 스펙에서 플러그인 로드 지원
Microsoft.SemanticKernel.PromptTemplates.Handlebars Handlebars 템플릿을 프롬프트에 사용 지원
Microsoft.SemanticKernel.Yaml YAML 파일로 프롬프트 직렬화 지원
Microsoft.SemanticKernel.Prompty Prompty 파일로 프롬프트 직렬화 지원
Microsoft.SemanticKernel.Agents.Abstractions 에이전트 생성을 위한 추상화 제공
Microsoft.SemanticKernel.Agents.OpenAI Assistant API 에이전트 지원

이 패키지들은 다음 명령으로 설치해요.

dotnet add package <package-name>

Python 패키지

Python에는 Sematic Kernel을 시작하는 데 필요한 모든 것이 담긴 단일 패키지가 있어요. 설치는 이렇게 해요.

pip install semantic-kernel

PyPIProvides-Extra 아래에 추가 설치는 여분(extras)으로 나열돼 있어요. 특정 커넥터나 서비스와 함께 SK를 쓰는 데 필요한 패키지를 설치하고 싶다면 대괄호 문법을 사용하면 돼요.

pip install semantic-kernel[azure]

이렇게 하면 Semantic Kernel과 함께 검증된 버전의 azure-ai-inference, azure-search-documents, azure-core, azure-identity, azure-cosmos, msgraph-sdk(그리고 그것들의 의존성)가 설치돼요. 마찬가지로 hugging_face 여분은 transformerssentence-transformers를 설치해요.

Java 패키지

Java용 Semantic Kernel 패키지는 전부 그룹 ID com.microsoft.semantic-kernel 아래 있으며 Maven에서 가져올 수 있어요.

    <dependency>
        <groupId>com.microsoft.semantic-kernel</groupId>
        <artifactId>semantickernel-api</artifactId>
    </dependency>

모든 Semantic Kernel 패키지의 버전을 정의하는 데 쓸 수 있는 BOM도 제공돼요.

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.semantic-kernel</groupId>
                <artifactId>semantickernel-bom</artifactId>
                <version>${semantickernel.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • semantickernel-bom — 모든 Semantic Kernel 패키지의 버전을 정의하는 Maven 프로젝트 BOM.
  • semantickernel-api — Maven 프로젝트용 Semantic Kernel 핵심 공개 API를 정의하는 패키지.
  • semantickernel-aiservices-openai — OpenAI API와 상호작용하는 커넥터 제공.

OpenAI를 사용하는 간단한 프로젝트의 POM XML 예시:

<project>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.semantic-kernel</groupId>
                <artifactId>semantickernel-bom</artifactId>
                <version>${semantickernel.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.microsoft.semantic-kernel</groupId>
            <artifactId>semantickernel-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.microsoft.semantic-kernel</groupId>
            <artifactId>semantickernel-connectors-ai-openai</artifactId>
        </dependency>
    </dependencies>
</project>

각 SDK에서 사용 가능한 기능

아래 표는 각 언어에서 어떤 기능을 쓸 수 있는지 보여줘요. 🔄 기호는 기능이 일부만 구현됐다는 뜻이고, 자세한 내용은 옆의 노트를 확인해 주세요. ❌ 기호는 해당 언어에서 아직 제공되지 않는 기능이에요. 어떤 기능이 언어에 구현됐으면 좋겠다면 프로젝트에 기여하거나 이슈를 열어 주세요.

핵심 기능

서비스 C# Python Java 노트
프롬프트 템플릿·직렬화 형식 전체 목록은 아래 표 참고
네이티브 함수와 플러그인
OpenAPI 플러그인 Java에는 OpenAPI 플러그인 로드 샘플이 있음
자동 함수 호출
Open Telemetry 로그
훅과 필터

프롬프트 템플릿 형식

프롬프트를 작성할 때 Semantic Kernel은 변수를 임베드하고 함수를 호출할 수 있는 다양한 템플릿 언어를 제공해요. 다음 표는 각 언어에서 지원되는 템플릿 언어를 보여줘요.

형식 C# Python Java 노트
Semantic Kernel 템플릿 언어
Handlebars
Liquid
Jinja2

프롬프트 직렬화 형식

프롬프트를 만들었다면 직렬화해서 저장하거나 팀끼리 공유할 수 있어요. 각 언어에서 지원되는 직렬화 형식은 다음과 같아요.

형식 C# Python Java 노트
YAML
Prompty

AI 서비스 모달리티

서비스 C# Python Java 노트
텍스트 생성 예: Text-Davinci-003
채팅 완성 예: GPT4, Chat-GPT
텍스트 임베딩 (Experimental) 예: Text-Embeddings-Ada-002
텍스트→이미지 (Experimental) 예: Dall-E
이미지→텍스트 (Experimental) 예: Pix2Struct
텍스트→오디오 (Experimental) 예: TTS
오디오→텍스트 (Experimental) 예: Whisper

AI 서비스 커넥터

엔드포인트 C# Python Java 노트
Amazon Bedrock
Anthropic
Azure AI Inference
Azure OpenAI
Google
Hugging Face Inference API
Mistral
Ollama
ONNX
OpenAI
OpenAI API를 지원하는 기타 엔드포인트 LLM Studio 등 포함

벡터 스토어 커넥터 (Experimental)

[!WARNING] Semantic Kernel 벡터 스토어 기능은 미리보기 상태이며, 릴리스 전 제한된 상황에서 비호환 변경이 발생할 수 있어요.

바로 사용할 수 있는 벡터 스토어 커넥터 목록과 각 언어 지원 여부는 out of the box connectors를 참고하세요.

메모리 스토어 커넥터 (Legacy)

[!IMPORTANT] 메모리 스토어 커넥터는 레거시이며 벡터 스토어 커넥터로 대체됐어요. 자세한 내용은 Legacy Memory Stores를 참고하세요.

메모리 커넥터 C# Python Java 노트
Azure AI Search
Chroma
DuckDB
Milvus
Pinecone
Postgres
Qdrant
Redis
Sqlite 🔄
Weaviate