OpenSource-Hub

sie

애플리케이션

superlinked/sie

셀프 호스팅 추론 엔진으로, AI 에이전트에 다양한 오픈 소스 모델 서비스를 통합적으로 제공합니다.

개요

SIE는 오픈소스 추론 서버 및 프로덕션 클러스터로, 통합된 OpenAI 호환 API를 통해 검색, 문서 변환, 구조화된 출력, 콘텐츠 안전 및 에이전트 루프 등의 모델 서비스를 제공합니다. 100개 이상의 사전 구성된 모델을 필요에 따라 로드할 수 있으며, Kubernetes 프로덕션 배포 구성을 제공합니다.

README 미리보기

\n\n\n  \n  \n\n\nSIE: Superlinked Inference Engine\n\nSelf-hosted inference for agents. Every open model your agents call, served from one cluster in your cloud.\n\n\n  Docs |\n  Quickstart |\n  API Reference |\n  Models\n\n\n[](LICENSE)\n[](https://pypi.org/project/sie-sdk/)\n[](https://github.com/superlinked/sie/stargazers)\n\n⭐ _Help us reach more developers and grow the SIE community. Star this repo!_\n\n\n\n## About\n\nSIE is an open-source inference engine that runs the models behind every agent task through one API: search and retrieval, document-to-markdown conversion, structured output, content safety, and the agent loop itself. It replaces the patchwork of a separate model server per task with one system that serves 100+ models, loading each on demand.\n\n- OpenAI-compatible API for drop-in migration: `/v1/embeddings`, `/v1/chat/completions`, `/v1/completions`, `/v1/responses`\n- Pre-configured model catalog: Stella, SPLADE, Qwen3, GLiNER, SigLIP, and more; embedding and retrieval models benchmarked on MTEB\n- Serves multiple models simultaneously with on-demand loading and LRU eviction\n- Ships Kubernetes and Helm deployment configs for the load-balancing gateway, KEDA autoscaling, and Grafana dashboards\n- Integrates with LangChain, LlamaIndex, Haystack, DSPy, CrewAI, Chroma, Qdrant, Weaviate, and LanceDB\n\n## Development\n\nInstall [mise](https://mise.jdx.dev/getting-started.html), then bootstrap the\nversioned Python, Rust, Node.js, and Helm toolchains from the repository root:\n\n```bash\n./tools/init.sh\n```\n\nThe common development checks and local server are available as mise tasks:\n\n```bash\nmise run test\nmise run lint\nmise run typecheck\nmise run serve\nmise run rust-check\nmise run rust-test\nmise run gateway-test\nmise run server-sidecar-test\n```\n\nThe Python workspace uses the committed root lock. Package membership is\nexplicit in `pyproject.toml`; a package joins the workspace only in the same\nchange that adds its complete source. 

FAQ (5)

문제 해결
서로 다른 길이의 30초를 초과하는 오디오를 동시에 전사할 때 발생하는 Whisper HTTP 500 오류를 해결하는 방법?

이 문제는 sie-server가 long-form Whisper 요청을 배치 처리하지만, Transformers의 pipeline collate가 [128, 18110] 및 [128, 18593]과 같이 프레임 수가 서로 다른 log-mel 텐서를 처리할 수 없기 때문에 발생합니다. 이 문제는 30초보다 긴 두 개의 녹음이 동일한 배치에서 처리될 때 transformers 4.57.6과 함께 사용되는 sie-server 0.9.0에 영향을 미칩니다.

즉각적인 해결 방법: 서버 구성에서 Whisper pipeline_batch_size를 1로 설정하고 서버를 재시작하십시오. 이렇게 하면 각 녹음이 개별적으로 처리되어 실패하는 collate 경로를 피할 수 있습니다. 30초 이하의 클립은 영향을 받지 않습니다.

영구적인 수정: packages/sie_server/src/sie_server/adapters/whisper/adapter.py에서 short-form 그룹에는 batch_size=self._pipeline_batch_size를 유지하되, long-form 그룹은 파이프라인 호출당 하나의 녹음씩 batch_size=1로 실행하십시오. Transformers를 직접 사용하는 경우, 길이가 서로 다른 여러 항목을 하나의 배치로 전달하는 대신 각 long-form 오디오 항목에 대해 파이프라인을 개별적으로 호출하십시오.

수정 후에는 길이가 서로 다른 30초보다 긴 두 개의 녹음이 한 번의 extract() 호출로 전사 결과를 반환해야 하며, 동시성 4/8에서도 HTTP 500 없이 완료되어야 합니다. 측정된 long-form 처리량은 사실상 변화가 없습니다: batch_size=1로 동시성 4일 때 약 21.9 audio-seconds/second인 반면, 기본 구성에서 동시성 1일 때는 22.3입니다.

원본 Issue #574
문제 해결
X-Forwarded-Host를 통해 sie_mcp OAuth issuer와 token_endpoint가 스푸핑되는 문제를 어떻게 해결하나요?

PR #292(커밋 f5c4451)를 포함하는 sie_mcp 릴리스로 업그레이드하세요. 즉각적인 해결 방법으로, X-Forwarded-Host와 X-Forwarded-Proto가 무시되도록 퍼블릭 오리진을 명시적으로 고정하세요:

export SIE_MCP_PUBLIC_URL=https://mcp.your-domain.example

Helm의 경우 다음과 같이 설정하세요:

mcpEdge:
  publicUrl: "https://mcp.your-domain.example"
  oauthEnabled: true

수정 이후 SIE_MCP_PUBLIC_URL이 설정되어 있지 않으면 요청 오리진 유도는 루프백 호스트 또는 SIE_MCP_ALLOWED_HOSTS에 나열된 호스트에 대해서만 허용됩니다. 신뢰할 수 없는 호스트는 OAuth 메타데이터 라우트에서 HTTP 503을 받으며 WWW-Authenticate 챌린지는 수신하지 않습니다. 또한 업데이트된 Helm 차트는 mcpEdge.publicUrl이 비어 있고 엣지 인그레스가 활성화된 경우 SIE_MCP_PUBLIC_URL=https://<mcpEdge.ingress.host>를 자동으로 렌더링합니다. 리버스 프록시 또는 로드 밸런서가 X-Forwarded-Host를 덮어쓰거나 정제하는지 확인하고, 해당 헤더를 신뢰할 수 없는 경우 ingress-nginx use-forwarded-headers를 활성화하지 마세요.

원본 Issue #275
문제 해결
Docker 이미지 빌드에서 uv.lock에 고정된 버전과 다른 의존성 버전이 설치되는 이유는 무엇인가요?

이 문제는 이미지 빌더가 resolve-deps를 실행하여 각 번들의 범위 의존성 지정자(예: gliner>=0.2.26,<1)를 requirements 파일에 작성한 다음 pip install --target=/app/bundle-libs -r을 실행했기 때문에 발생했습니다. 이 명령은 빌드 시점에 범위를 최신 PyPI 릴리스로 해석하여, CI가 테스트 기준으로 삼는 uv.lock에 고정된 버전을 가렸습니다. 따라서 동일한 커밋을 두 번 빌드해도 서로 다른 버전이 배포될 수 있었습니다. PR #653과 #802에서 수정되었습니다: 번들 이미지는 더 이상 빌드 중에 범위를 해석하지 않습니다. 대신 체크인된 타겟별 lock 파일에서 저장된 의존성 클로저를 설치합니다. 체크인된 15개의 타겟 lock은 릴리스된 11개의 Linux amd64 이미지 전체와 지원되는 4개의 CPU arm64 조합을 포함합니다. 명시적이고 문서화된 번들 예외(예: transformers 5 번들)가 적용되지 않는 한, 패키지는 루트 uv.lock 고정 버전을 유지합니다. CI는 오래되었거나 일관성이 없는 lock을 거부하며, 이미지 빌드는 설치된 /app/bundle-libs 인벤토리(해석된 pip freeze)를 검증하고 보존하여 배포된 모든 버전을 감사할 수 있습니다. 이 수정 사항이 포함된 릴리스로 업그레이드하면 빌드가 재현 가능해집니다: 이제 동일한 커밋을 두 번 빌드하면 동일한 버전이 설치됩니다.

원본 Issue #377
문제 해결
업그레이드 중 keda-apply Helm 훅이 exit 137과 함께 OOMKilled되는 문제를 어떻게 해결하나요?

이 문제는 keda-apply 훅에 256Mi 메모리 제한이 하드코딩되어 있어 chart 0.7.2에서 발생합니다. 업그레이드는 기존 ScaledObject 리소스를 JSON으로 가져와 jq로 처리하므로 신규 설치보다 더 많은 메모리를 사용합니다. 구성 가능한 훅 리소스를 추가하고 기본 제한을 1Gi로 상향하는 PR #268이 포함된 chart 버전으로 업그레이드하세요. 그런 다음 예를 들어 다음과 같이 설정하세요:

hooks:
  resources:
    requests:
      cpu: 100m
      memory: 128Mi
    limits:
      cpu: 200m
      memory: 1Gi

helm upgrade <release> <chart> -f values.yaml로 값을 적용하세요. 구성 가능한 리소스는 keda-apply, keda-cleanup 및 KEDA ready 훅 Job에 적용됩니다. 이전 chart에서는 임시 해결 방법으로 upgrade.disableHooks: true를 설정할 수 있지만, ScaledObject reconciliation 및 상태 확인을 건너뛰므로 권장되지 않습니다. Helm post-renderer는 훅 Job을 패치하는 데 사용할 수 없습니다.

원본 Issue #248
문제 해결
단일 노드 /v1/embeddings 응답에서 잘못되었거나 라벨이 지정되지 않은 prompt_tokens를 어떻게 수정할 수 있나요?

수정 사항 fix(server): report measured embedding token usage(issue #566에 대한 수정)가 포함된 릴리스로 업그레이드하세요. 단일 노드 OpenAI 호환 라우트에서 서버는 이제 파이프라인 타이밍/사용량 정보를 그대로 전달하여, 사용 가능한 경우 usage.prompt_tokens 및 usage.total_tokens가 워커의 정확한 토큰화 후 카운트를 사용하도록 합니다. 측정된 카운트가 없는 경우, OpenAI 클라이언트가 usage 객체를 기대하므로 이전의 문자 기반 추정치(len(input) / 4, 최소 1)로 폴백합니다. 응답에는 usage.sie_token_source도 포함되며, 측정된 카운트의 경우 worker로, 폴백의 경우 character_estimate로 설정됩니다. 업그레이드 전 해결 방법으로는 정확한 카운트를 얻기 위해 네이티브 POST /v1/encode/{model} 엔드포인트를 사용하거나, 이미 sie_token_source를 worker 또는 character_estimate로 보고하는 게이트웨이 뒤에 서비스를 배치하세요.

원본 Issue #566