Selectools: 오픈소스 AI 에이전트 프레임워크

LangGraph 때문에 인간 중단을 위해 부작용을 멱등하게 비틀어야 해 지쳤나? Selectools은 정확히 멈춘 지점에서 재개한다. 이 오픈소스 괴물은 멀티 에이전트 기능을 pip 한 번에 꽉 채웠다

Selectools: AI 에이전트 지옥을 pip 한 방으로 끝장내는 해결책 — theAIcatchup

Key Takeaways

  • Selectools은 Python 제너레이터로 인터럽트 정확 재개 구현, LangGraph 전체 노드 재실행 문제 싹 해결.
  • 멀티 에이전트 SupervisorAgent가 네 전략 제공, Magentic-One 포함 ModelSplit으로 비용 70-90% 절감.
  • 50개 내장 평가기와 PII 제거로 pip 한 번 설치면 프로덕션 준비 끝.

모두 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 — 결정론적 라우팅, 평가, 비용 분할이 빛남. 그래프 테스트해봐; 인터럽트 고통스럽다면 이관.

James Kowalski
Written by

Investigative tech reporter focused on AI ethics, regulation, and societal impact.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by Dev.to