SynapseKit 소개: LangChain의 Async가 깨져서 만든 Async‑Native Python LLM 프레임워크

발행: (2026년 4월 15일 PM 08:44 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

Introduction

저도 알고 있습니다—또 다른 것이죠. 하지만 들어보세요: 제가 SynapseKit을 만든 이유는 구체적이며, 여러분도 같은 이유로 좌절했을 가능성이 있습니다.

Why Existing LLM Frameworks Aren’t Truly Async

  • LangChain, LlamaIndex, 그리고 Haystack 모두 async 지원을 주장합니다.
  • 실제로는 이들의 구현이 asyncio.get_event_loop().run_in_executor() 로 동기 함수를 감싸거나 내부에서 ThreadPoolExecutor 를 사용합니다.
  • 즉, 동기 코드가 async 복장을 입은 형태입니다.

간단한 스크립트와 데모에서는 괜찮을 수 있습니다. 하지만 동시 요청을 처리하는 프로덕션 서비스—FastAPI 서비스, 실시간 RAG 시스템, 고처리량 에이전트 워크플로—에서는 엄청난 차이를 만들게 됩니다. 여러분은 스레드 비용 async 이벤트 루프 오버헤드를 동시에 지불하면서, 진정한 논블로킹 I/O의 처리량 이점을 얻지 못하게 됩니다.

Async‑Native Design in SynapseKit

SynapseKit의 async 레이어는 처음부터 설계되었습니다. 모든 I/O 작업—LLM 호출, 검색, 임베딩 생성—은 진정으로 논블로킹이며, 그 아래에 동기 래퍼가 없습니다.

import asyncio
from synapsekit import Pipeline, RAGNode, LLMNode

async def main():
    pipeline = Pipeline()
    pipeline.add_node("retrieve", RAGNode(vectorstore=my_store))
    pipeline.add_node("generate", LLMNode(model="gpt-4o"))
    pipeline.add_edge("retrieve", "generate")

    result = await pipeline.run(query="What is async-native design?")
    print(result)

asyncio.run(main())

주의: .run_in_executor()도 없고, 스레드 풀도 없으며—순수 async만 사용됩니다.

Directed Acyclic Graph (DAG) Pipelines

대부분의 프레임워크는 .pipe() 혹은 | 연산자를 사용해 선형 체인을 권장합니다. 이는 간단한 경우에 편리하지만, 프로덕션 시스템은 종종 더 복잡한 흐름을 필요로 합니다:

  • 여러 소스에서 병렬로 검색.
  • 쿼리 분류에 따라 다른 생성 전략으로 라우팅.
  • 검색 단계가 실패했을 때 대체 경로 제공.
  • 두 개의 상위 검색기 결과를 모두 필요로 하는 재랭킹 단계 실행.

DAG는 이러한 패턴을 깔끔하게 표현할 수 있습니다. SynapseKit은 노드와 엣지를 정의하게 해 주며, 위상 정렬이 실행 순서를 자동으로 처리합니다.

pipeline.add_node("classify", ClassifierNode())
pipeline.add_node("retrieve_docs", RAGNode(vectorstore=doc_store))
pipeline.add_node("retrieve_web", WebSearchNode())
pipeline.add_node("rerank", RerankerNode())
pipeline.add_node("generate", LLMNode())

pipeline.add_edge("classify", "retrieve_docs")
pipeline.add_edge("classify", "retrieve_web")
pipeline.add_edge("retrieve_docs", "rerank")
pipeline.add_edge("retrieve_web", "rerank")
pipeline.add_edge("rerank", "generate")

두 검색 노드는 동시에 실행되고, 재랭커는 두 결과를 모두 기다리며, LLM은 재랭커가 끝난 뒤 실행됩니다.

Adoption

  • 약 20일간 활발히 개발된 기간에 ~10,000개의 PyPI 다운로드.
  • Product Hunt나 Hacker News 런칭 없이—개발자들이 PyPI 검색을 통해 발견했으며, 이는 실제 수요가 있음을 나타냅니다.

Installation

pip install synapsekit

Repository & License

  • GitHub:
  • Apache License 하에 오픈 소스.

Call to Action

LLM 스택에서 async 때문에 좌절했거나, 처리량이 정말 중요한 무언가를 구축하고 있다면 여러분의 피드백을 환영합니다. GitHub 스타 하나가 SynapseKit을 같은 문제를 겪는 다른 개발자들에게 알리는 데 큰 도움이 됩니다.

0 조회
Back to Blog

관련 글

더 보기 »

rabbitholes: 페이지를 떠나지 않고 인라인 지식

개요: 나는 지난주에 비잔틴 결함 허용성에 관한 기사를 읽었다. 세 번째 단락에서 “quorum‑based consensus”라는 구절을 마주했는데, 이는 손짓으로는 표현할 수 있지만 정확히 이해하기는 어려웠다.

새로운 스킬 배우기

안녕하세요, 저는 몇 달 동안 관심을 가져온 분야인 사이버 보안을 배우기 위해 100일 파이썬 챌린지를 잠시 중단하려고 합니다.