지원되는 의미 체계 커널 언어
의미 체계 커널은 다음 언어에 대한 지원을 제공할 계획입니다.
- C#
- Python
- Java
커널의 전체 아키텍처는 모든 언어에서 일관되지만 각 언어에 대한 SDK는 각 언어의 일반적인 패러다임과 스타일을 따라 네이티브하고 사용하기 쉬운 느낌을 줍니다.
사용 가능한 SDK 패키지
C# 패키지
C#에는 프로젝트에 필요한 기능만 가져와야 하는 몇 가지 패키지가 있습니다. 다음 표에서는 C#에서 사용 가능한 패키지를 보여 줍니다.
패키지 이름 | 설명 |
---|---|
Microsoft.SemanticKernel |
시작할 모든 항목이 포함된 기본 패키지 |
Microsoft.SemanticKernel.Core |
에 대한 구현을 제공하는 핵심 패키지 Microsoft.SemanticKernel.Abstractions |
Microsoft.SemanticKernel.Abstractions |
의미 체계 커널의 기본 추상화 |
Microsoft.SemanticKernel.Connectors.OpenAI |
OpenAI용 커넥터 |
Microsoft.SemanticKernel.Connectors.HuggingFace |
포옹 얼굴 모델에 대한 커넥터 |
Microsoft.SemanticKernel.Connectors.Google |
Google 모델용 커넥터(예: Gemini) |
Microsoft.SemanticKernel.Connectors.MistralAI |
Mistral AI 모델용 커넥터 |
Microsoft.SemanticKernel.Plugins.OpenApi (실험적) |
OpenAPI 사양에서 플러그 인 로드 사용 |
Microsoft.SemanticKernel.PromptTemplates.Handlebars |
프롬프트에 핸들바 템플릿을 사용할 수 있습니다. |
Microsoft.SemanticKernel.Yaml |
YAML 파일을 사용하여 프롬프트 직렬화에 대한 지원을 제공합니다. |
Microsoft.SemanticKernel.Prompty |
프롬프트 파일을 사용하여 프롬프트 직렬화에 대한 지원을 제공합니다. |
Microsoft.SemanticKernel.Agents.Abstractions |
에이전트를 만들기 위한 추상화 제공 |
Microsoft.SemanticKernel.Agents.OpenAI |
Assistant API 에이전트에 대한 지원 제공 |
사용 가능한 다른 패키지(예: 메모리 커넥터)가 있지만 아직 실험적이며 프로덕션 용도로는 권장되지 않습니다.
이러한 패키지를 설치하려면 다음 명령을 사용할 수 있습니다.
dotnet add package <package-name>
Python 패키지
Python에는 의미 체계 커널을 시작하는 데 필요한 모든 것을 포함하는 단일 패키지가 있습니다. 패키지를 설치하려면 다음 명령을 사용할 수 있습니다.
pip install semantic-kernel
PyPI에서 Provides-Extra
설치할 수 있는 추가 추가 항목도 나열되며, 이 패키지를 사용하면 특정 커넥터 또는 서비스에서 SK를 사용하는 데 필요한 패키지를 설치할 수 있습니다. 예를 들어 대괄호 구문이 있는 패키지를 설치할 수 있습니다.
pip install semantic-kernel[azure]
그러면 의미 체계 커널과 테스트된 특정 버전의 azure-ai-inference
, azure-search-documents
, azure-core
및 azure-identity
azure-cosmos
(및 msgraph-sdk
해당 패키지의 모든 종속성)이 설치됩니다. 마찬가지로 추가 hugging_face
설치 및 transformers
sentence-transformers
.
Java 패키지
Java의 경우 의미 체계 커널에는 다음 패키지가 있습니다. 모두 그룹 ID com.microsoft.semantic-kernel
아래에 있으며 maven에서 가져올 수 있습니다.
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-api</artifactId>
</dependency>
모든 의미 체계 커널 패키지의 버전을 정의하는 데 사용할 수 있는 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
– 모든 의미 체계 커널 패키지의 버전을 정의하는 데 사용할 수 있는 Maven 프로젝트 BOM입니다.semantickernel-api
– Maven 프로젝트의 의미 체계 커널에 대한 핵심 공용 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에서 사용 가능한 기능
다음 표에서는 각 언어에서 사용할 수 있는 기능을 보여 줍니다. 기호는 🔄 기능이 부분적으로 구현되었음을 나타냅니다. 자세한 내용은 연결된 참고 열을 참조하세요. 기호는 ❌ 해당 언어로 기능을 아직 사용할 수 없음을 나타냅니다. 언어로 구현된 기능을 보려면 프로젝트에 기여하거나 문제를 여는 것이 좋습니다.
핵심 기능
Services | C# | Python | Java | 주의 |
---|---|---|---|---|
프롬프트 | ✅ | ✅ | ✅ | 지원되는 템플릿 및 serialization 형식의 전체 목록을 보려면 아래 표를 참조하세요. |
네이티브 함수 및 플러그 인 | ✅ | ✅ | ✅ | |
OpenAPI 플러그 인 | ✅ | ✅ | ✅ | Java에는 OpenAPI 플러그 인을 로드하는 방법을 보여주는 샘플이 있습니다. |
자동 함수 호출 | ✅ | ✅ | ✅ | |
원격 분석 로그 열기 | ✅ | 🔄 | ❌ | |
후크 및 필터 | ✅ | ✅ | ✅ |
프롬프트 템플릿 형식
작성 프롬프트가 표시되면 의미 체계 커널은 변수를 포함하고 함수를 호출할 수 있는 다양한 템플릿 언어를 제공합니다. 다음 표에서는 각 언어에서 지원되는 템플릿 언어를 보여 줍니다.
형식 | C# | Python | Java | 주의 |
---|---|---|---|---|
의미 체계 커널 템플릿 언어 | ✅ | ✅ | ✅ | |
핸들바 | ✅ | ✅ | ✅ | |
Liquid | ✅ | ❌ | ❌ | |
Jinja2 | ❌ | ✅ | ❌ |
프롬프트 serialization 형식
프롬프트를 만든 후에는 팀 간에 저장하거나 공유할 수 있도록 직렬화할 수 있습니다. 다음 표에서는 각 언어에서 지원되는 serialization 형식을 보여 줍니다.
형식 | C# | Python | Java | 주의 |
---|---|---|---|---|
YAML | ✅ | ✅ | ✅ | |
프롬프트 | ❌ | ✅ | ❌ |
AI 서비스 형식
Services | C# | Python | Java | 주의 |
---|---|---|---|---|
텍스트 생성 | ✅ | ✅ | ✅ | 예: Text-Davinci-003 |
채팅 완료 | ✅ | ✅ | ✅ | 예: GPT4, Chat-GPT |
텍스트 포함(실험적) | ✅ | ✅ | ✅ | 예: Text-Embeddings-Ada-002 |
텍스트에서 이미지로(실험적) | ✅ | ✅ | ❌ | 예: Dall-E |
이미지에서 텍스트로(실험적) | ✅ | ✅ | ❌ | 예: Pix2Struct |
텍스트에서 오디오로(실험적) | ✅ | ❌ | ❌ | 예: 텍스트 음성 변환 |
오디오에서 텍스트로(실험적) | ✅ | ❌ | ❌ | 예: 위스퍼 |
AI 서비스 커넥터
엔드포인트 | C# | Python | Java | 주의 |
---|---|---|---|---|
OpenAI | ✅ | ✅ | ✅ | |
Azure OpenAI | ✅ | ✅ | ✅ | |
OpenAI API를 대체하는 다른 엔드포인트 | ✅ | ✅ | ✅ | Ollama, LLM Studio, Azure Model-as-a-Service 등을 포함합니다. |
포옹 얼굴 유추 API | 🔄 | ❌ | ❌ | Python에 곧 제공될 예정이며, 모든 시나리오가 .NET에 적용되는 것은 아닙니다. |
메모리 커넥터(실험적)
Important
모든 기존 메모리 커넥터는 현재 실험적이며 벡터 저장소 커넥터로 대체됩니다. 업데이트된 추상화 계층을 통해 더 많은 기능을 제공합니다.
메모리 커넥터 | C# | Python | Java | 주의 |
---|---|---|---|---|
Azure AI 검색 | ✅ | ✅ | ✅ | |
Chroma | ✅ | ✅ | ❌ | |
DuckDB | ✅ | ❌ | ❌ | |
Milvus | 🔄 | ✅ | ❌ | |
Pinecone | ✅ | ✅ | ❌ | |
Postgres | ✅ | ✅ | ❌ | |
Qdrant | ✅ | 🔄 | ❌ | |
Redis | ✅ | 🔄 | ❌ | |
Sqlite | ✅ | ❌ | 🔄 | |
Weaviate | ✅ | ✅ | ❌ |
벡터 저장소 커넥터(실험적)
Important
모든 기존 벡터 저장소 커넥터는 현재 실험적이며 사용 환경을 개선하기 위해 적극적으로 개발 중입니다. 최신 제안에 대한 피드백을 제공하려면 활성 검색 및 메모리 커넥터 ADR을 참조하세요.
기본 벡터 저장소 커넥터 목록 및 각 커넥터에 대한 언어 지원은 기본 제공 커넥터를 참조하세요.