
로컬 qwen3:8b가 영어 질문을 9개 노드 조사 그래프로 변환하는 과정 - 계획, 결정론적 게이트(deterministic gate) 승인
요약
LangGraph 기반의 GraphARC는 로컬 LLM을 사용하여 복잡한 조사 과정을 그래프 구조로 변환하고 실행하는 에이전트 프레임워크입니다. 결정론적 승인 게이트를 통해 모델의 제안을 검토하고, 정책에 따른 거절(refusal) 메커니즘을 활용하여 안전하고 통제된 실행을 보장합니다.
핵심 포인트
- 결정론적 승인 게이트를 통한 5가지 체크 항목 검증
- 정책 기반의 거절(refusal) 기능을 통한 안전한 에이전트 제어
- LangGraph 기반의 복잡한 조사 토폴로지 생성 및 실행
- JSONL 트레이스를 활용한 실시간 모니터링 및 감사 추적
- Ollama, OpenAI 등 다양한 모델 인터페이스 지원
이 영상은 모형(mock-up)이 아닌 실제 실행 영상입니다: grapharc go "why did checkout latency spike at 09:14 UTC?" --model ollama/qwen3:8b 로컬 8B 모델이 그래프를 제안합니다 → triage(분류)가 4개의 병렬 증거 추출로 퍼져나가고, correlate(상관관계 분석)에서 결합된 후, hypothesize(가설 설정) → verify(검증) → report(보고) 단계로 이어집니다. 결정론적 승인 게이트(deterministic admission gate)가 제안을 검토합니다 (registry, policy, budget, depth, acyclicity - 모든 제안에 대해 5가지 체크를 모두 수행하므로, 모델은 첫 번째 거절 사유뿐만 아니라 전체 거절 목록을 받게 됩니다). 그 후에야 실행이 이루어집니다. 각 노드는 실행 중에는 황색으로 변하며, 완료되면 자체 토큰 비용과 함께 녹색으로 변합니다. 제가 가장 중요하게 생각하는 부분은 거절(refusals)이 기능(feature)이라는 점입니다. 저는 롤백(rollback) 유형을 거부하는 정책(policy)에 대해 "지금 즉시 장애를 완화하세요: 어젯밤 배포를 롤백하십시오"라고 명령했습니다. 1라운드: 거절됨, policy/edge_denied. 2라운드: 다시 시도했으나 거절됨. 3라운드: 모델은 롤백을 포기하고 대신 읽기 전용(read-only) 조사를 제안했으며, 이는 승인되어 사람이 실행 명령을 내릴 때까지 대기 상태로 유지되었습니다. 세 번의 구조화된 거절이 8B 모델을 실행 없이 금지된 행동으로부터 멀어지게 했으며, 전체 감사 추적(audit trail)을 남겼습니다. 또한 제가 스크립트로 짜지 않은 토폴로지(topology)도 처리합니다: "두 가설을 병렬로 조사하라"고 요청하자, qwen3:8b는 16개 노드 그래프를 제안했습니다 - 동일한 등록된 유형에서 인스턴스화된 두 개의 완전한 조사 분기가 하나의 보고서에서 결합되는 형태였으며, 한 라운드 만에 승인되어 22초 만에 실행되었습니다. 모든 것은 단 하나의 추가 전용(append-only) JSONL 트레이스(trace)를 읽고 씁니다: 실시간 브라우저 뷰, 재생(replay), 차이(diff), 메트릭(metrics), 비용 할당(cost attribution) 및 OTel 내보내기는 모두 동일한 파일에 대한 뷰이므로, 대시보드가 감사 추적과 불일치할 수 없습니다. 최악의 비용은 그래프가 실행되기 전에 책정되며, 노드당 정확한 비용은 실패 시에도 실행 후에 기록됩니다. LangGraph를 기반으로 구축되었습니다. API 키가 필요하지 않습니다 - ollama, OpenRouter, OpenAI 또는 CLI를 통한 Claude 구독과 함께 작동합니다. pip install grapharc 를 통해 설치할 수 있으며, 데모 단계는 스크립트된 모델에서 실행되므로 테스트 비용이 들지 않습니다.
GitHub: https://github.com/CodeGraphContext/GraphARC
PyPI: https://pypi.org/project/grapharc/
제한 사항은 README에 솔직하게 문서화되어 있습니다 (승인 과정은 노드의 종류를 허가하는 것이지, 그 인자(arguments)를 허가하는 것이 아닙니다. 프로세스 내 샌드박스(in-process sandbox)는 심층 방어(defense in depth)를 위한 것이지, 커널 경계(kernel boundary)를 의미하는 것이 아닙니다). 무엇이든 기꺼이 답변해 드리겠습니다. 마음에 드신다면 Star를, 사랑하신다면 기여(Contribute)를 부탁드립니다! /u/Desperate-Ad-9679 제출 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기