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
PyPI의 Provides-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 여분은 transformers와 sentence-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 | ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | ||
| 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 | ✅ | ✅ | ❌ |