Show GN: NeoGraph - LangGraph를 C++로 옮긴 에이전트 엔진
(github.com/fox1245)안녕하세요.
제가 만든 에이전트 오케스트레이션 엔진 NeoGraph를 공유합니다.
C++17기반이구요 아래의 커맨드로 설치하실 수 있습니다.
pip install neograph-engine
왜 만들었나
Python기반의 LangGraph를 사용하다보면 성능이 아쉬울 때가 많았습니다. 서버 가동 시 필요로 하는 사양도 꽤 요구하기 때문에 가볍고 빠른 오케스트레이션 엔진이 있었으면 좋겠다고 생각할 때가 많았기 때문에 C++로 구현하여 성능향상을 노려보자는 흐름으로 이어지게 되었습니다.
특징?
그래프를 코드가 아니라 데이터로 다룹니다.
대부분의 Python 프레임워크는 그래프를 Python 객체로 정의합니다. NeoGraph는 그래프 구조 자체를 JSON으로 정의합니다. StateGraph 객체가 아니라, DB 한 줄에 들어가는 JSON 한 덩어리로 정의됩니다.
따라서 다음과 같은 것들이 가능해집니다.
-
무배포 핫스왑 - 에이전트 구조(그래프 토폴로지)를 바꾸려면 DB의 JSON 한 줄만 교체하면 됩니다.
재배포도, 프로세스 재시작도, 진행중인 대화 유실도 없습니다. -
멀티테넌트 - 고객마다 다른 에이전트 구조를 한 프로세스 안에서 돌릴 수 있습니다. 실제 OpenAI gpt-4o-mini로 1,000 고객 동시 처리 시 RSS 29MB, 에러 0건이었습니다. 같은 구성을 LangGraph로 하면 고객당 프로세스라 대략 수십GB 가량이 필요하다고 봅니다.
-
자가진화 에이전트 - LLM이 각 고객 대화를 보고 그 고객의 graph_def(JSON)을 다시 씁니다. 즉, 에이전트가 사용자 행동에 맞춰 "스스로 모양을 바꿉니다."
그리고 빠릅니다.
| 프레임워크 | 엔진 오버헤드 (노드 1회) | NeoGraph 대비 |
|---|---|---|
| NeoGraph | 5.0 µs | 1× |
| Haystack | 140 µs | 28× |
| LangGraph | 643 µs | 128× |
| LlamaIndex | 1,565 µs | 313× |
| AutoGen | 3,127 µs | 625× |
물론 측정 방식에 따라 다를 수도 있고, 실제 LLM 호출이 끼면 외부 I/O가 지배하니 체감 속도는 비슷해질
수 있습니다.
이 µs 숫자가 진짜 의미를 갖는 건 한 박스에 수천 요청이
날아오는 멀티테넌트/엣지 케이스라고 생각합니다.
GitHub: https://github.com/fox1245/NeoGraph
PyPI: https://pypi.org/project/neograph-engine/
피드백 환영합니다.