모두 AI 에이전트 프레임워크가 LangGraph의 체크포인트-리플레이 꼬인 버릇으로 계속 절뚝거릴 줄 알았다 — 재개할 때 전체 노드를 다시 돌리고, 코드를 멱등 꼬치처럼 비틀어야 하잖아. 그런데 Selectools이 v0.20.1을 툭 던졌다. pip 한 방 직구로 현상을 박살내는 거다: 멀티 에이전트 그래프, 도구 호출, RAG, 50개 평가기, PII 제거까지 다 구워넣었다. Apache-2.0 오픈소스에 OpenAI, Anthropic, Gemini, Ollama 지원.
개발자들이 새어 나가는 추상화 붙이는 데 질려 죽을 뻔한 이 변화는 모든 걸 뒤집는다.
LangGraph 인터럽트가 개발자들 미치게 만드는 이유
LangGraph의 interrupt()는 — 설계상 — 중단 후 전체 노드 본문을 다시 재생한다. 공식 해결책? 부작용을 멱등하게 만들라, 비싼 작업을 호출 뒤로 미뤄라, 아니면 하류로 쪼개라. 이론상엔 괜찮다. 실전에서 지옥. 인간-루프 노드마다 재개 의미론에 휘말려 뒤틀린다. 체질망만큼 새는 꼴.
Selectools은? Python 제너레이터다. InterruptRequest를 yield 해라. generator.send()로 재개 — yield 지점 그대로. 재실행 없음. 비싼 LLM 분석? 한 번만 돈다. 깔끔.
이 코드 봐:
async def review_node(state):
analysis = await expensive_llm_analysis(state.data["draft"]) # runs once
decision = yield InterruptRequest(prompt="Approve?", payload=analysis)
state.data["approved"] = (decision == "yes") # resumes here
쾅.
“정확히 yield 지점에서 재개 (LangGraph은 전체 노드 재시작).”
v0.18.0 변경 로그에서 그대로 나온 말. 과장 없음 — 코드가 진실을 말한다.
내 생각? 이 제너레이터 수법은 초기 Node.js 코루틴이 async 지옥을 길들인 걸 연상시킨다. Selectools은 바퀴 새 걸 안 만든다; 에이전트들이 실제 달리는 길을 포장할 뿐. 예측? 2025년 2분기까지 LangGraph 유저 대거 넘어올 거다. Kubernetes가 Docker 스웜 깨부순 것처럼 ‘하나의 프레임워크’ 신화를 산산조각 낼 테지.
Selectools의 멀티 에이전트 그래프는 어떻게 처리하나?
AgentGraph: 에이전트 노드용 방향 그래프. 라우팅? 평범한 Python 함수 — LLM 룰렛도, DSL 부풀림도 없음. 결정론적 흐름, LLM은 노드 안에서 추론. 영리하다.
ContextMode로 히스토리 관리: LAST_MESSAGE (기본), LAST_N, FULL, SUMMARY, CUSTOM. 상류 소음에 하류 에이전트 안 익사시킴.
병렬 실행에 MergePolicy — LAST_WINS, FIRST_WINS, APPEND. 팬아웃, 팬인, 드라마 없음.
루프? 정체? 상태 해싱으로 변한 상태 냄새 맡음. 데드락 방지.
기다려 — SupervisorAgent가 한 수 더. 네 전략:
| Strategy | Description | Best for |
|---|---|---|
| plan_and_execute | LLM JSON 계획 세우고 순차 실행 | 구조화된 작업 |
| round_robin | 순서대로 돌리고 슈퍼바이저 확인 | 반복 개선 |
| dynamic | LLM이 스텝마다 에이전트 선택 | 이종 작업 |
| magentic | Magentic-One 장부 + 재계획 | 자율 연구 |
Magentic은 Microsoft Research 패턴 흉내. ModelSplit? GPT-4o로 플래너, Llama로 실행기 — 비용 70-90% 줄음. 프로덕션급 교활함.
Selectools 평가 스위트가 진짜 쓸모 있나?
박스에서 바로 50개 평가기. 유료 평가 서비스 필요 없음. 30개 결정론적 (정확 일치, 정규식), 20개 LLM 판정 (G-Eval 스타일).
PII 제거? 내장, 배포 전 출력 스캔. RAG? 벡터 저장소, 검색 체인 — Ollama나 Pinecone 꽂기만. 도구 호출? 구조화, 병렬.
산만하지 않다. 평가 프레임워크가 AgentGraph와 연동: 그래프에 스위트 돌리고 점수 집계. 개발자들 벤더 락 없이 베이스라인 잡음.
의심? 나도 처음엔 그랬다. 하지만 ‘어떻게’가 빛난다: 평가를 일류 그래프 노드로. 평가 중간 인터럽트로 수정. 재개 정확.
한 문단 짧게.
이 평가 밀도 — 50개 미리 짜여 있음 — 2008년 pytest가 Python 테스트에 폭발한 느낌. 그땐 unittest 짜증; pytest가 TDD 기본 만들었다. Selectools도 에이전트 신뢰성에 그럴 수 있음. 기업 스핀은 ‘배터리 포함’이라 하지만 — 그건 전쟁 무기고다. 평가를 뒷전으로 미루는 함정 피함.
에이전트 만드는 개발자들에게 왜 중요한가?
에이전트 시스템이 불어났다: 다단계 추론, 인간 루프, 병렬. LangGraph 일파는 프레임워크 충성 강요. Selectools은 말한다: 아는 Python 써라. 상태는 제너레이터. 라우트는 함수.
설치: pip install selectools. 당일. 문서 사냥 필요 없음.
근본 변화? 그래프-as-DSL에서 그래프-as-실행엔진으로. 왜? 프로덕션은 감사 가능성 요구 — LLM은 변덕, Python은 안 그럼. Selectools은 그 하이브리드에 베팅: LLM 뇌, Python 뼈대.
비평 시간. LangChain의 산만함이 이걸 낳았다 — 좋은 혼란이 더 나은 도구 부름. 하지만 Selectools PR이 인터럽트 승리를 과소평가; 그게 킬러 앱이다.
개발자들, 오늘 슈퍼바이저 스웜 프로토타입 짜봐라. 비용 추락, 신뢰도 폭등 지켜봐.
도구 호출과 RAG: 뒷전 아님
도구? 병렬 호출, 오류 복구. RAG 체인은 임베딩, 검색, 맥락화 — Ollama 로컬이나 클라우드. PII 스크러버가 SSN, 이메일 출력 전 표시.
모두 그래프 네이티브. 볼트온 아님.
yield 전 비싼 작업? 안전.
자주 묻는 질문
Selectools은 뭔가, 어떻게 설치하나?
Selectools은 AI 에이전트용 오픈소스 Python 프레임워크다. pip install selectools — OpenAI, Anthropic 등 지원.
Selectools 인터럽트가 LangGraph과 어떻게 다르나?
제너레이터가 yield 지점 정확히 재개; LangGraph은 전체 노드 재실행. 멱등 해킹 필요 없음.
Selectools이 프로덕션 에이전트용 LangGraph 대체하나?
대부분엔 yes — 결정론적 라우팅, 평가, 비용 분할이 빛남. 그래프 테스트해봐; 인터럽트 고통스럽다면 이관.