본문으로 건너뛰기
r/LangChain조회 2

LangGraph 실행 중 LLM 호출 없이 크루 헬스를 모니터하는 LangChain 기반 foreman 오픈소스 공개

LangChain 기반의 foreman이 LangGraph 등에서 LLM 호출 없이 35개 신호로 크루 헬스를 측정하는 콜백을 오픈소스로 제공한다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

이 게시물은 LangChain 스타일 콜백 핸들러인 foreman을 공개하고 LangGraph 실행 중 LLM 호출을 추가하지 않고도 35개 신호를 정규표현식·상태기계로 감지해 crew_health와 같은 운영 지표를 산출하는 방법을 제시했다. 게시물 작성자는 단위 테스트로는 통과했지만 LangGraph의 상태 딕트 반환 방식 때문에 on_llm_end가 트리거되지 않는 현실적 맹점을 발견하고 이를 보완하기 위해 on_chain_end 관찰과 노드별 중복 제거를 도입했다고 보고했다. 구현에는 outcome-aware 점수, 8과제 워밍업과 롤링 재보정, 옵트인 개입 모드와 패시브 관찰 모드, 자체 HTML 대시보드가 포함되어 있으며 LangGraph 외에도 총 9개 프레임워크 호환을 목표로 코드가 준비되어 있으나 라이브 검증은 LangGraph에 한정되어 추가 검증이 권장된다.

실용적 조언

  • 콜백을 단위 테스트만으로 검증할 경우 프레임워크가 노출하는 이벤트 체계의 차이로 실제 런타임에서 동작하지 않을 수 있으니 반드시 대상 그래프·노드에서 on_chain_end·state dict 등 실환경 출력을 확인해야 한다.
  • on_llm_end에만 의존하는 콜백은 LLM 호출을 직접 노출하지 않는 런타임에서 무력화되므로 메시지 리스트·output/result 키·문자열·LangChain 메시지 객체처럼 다양한 출력 형식을 감시하고 노드별 중복 제거 로직을 구현해야 한다.
  • 운영 지표는 outcome-aware 방식으로 설계해 record_outcome API로 실제 성공 여부를 주입하고 초기 워밍업(예: 8 과제)과 롤링 재보정을 적용하면 잡음에 덜 민감한 헬스 스코어를 얻을 수 있다.

섹션별 상세

01
이 프로젝트는 LangChain 스타일 콜백 핸들러를 공개하고 LangGraph 실행 중에 크루 헬스 지표를 실시간 집계하는 기능을 제공한다. 사용자는 foreman.connect로 핸들러를 연결하고 graph.invoke에 callbacks로 전달하면 내부에서 이벤트를 관찰해 crew_health와 is_degraded 같은 측정값을 계산한다. 게시물에 포함된 코드 예시는 핸들러 연결과 출력 조회 방법을 그대로 보여주며 리포지토리와 데모 명령어가 함께 제공되어 바로 재현 가능한 설치·실행 경로를 제시한다.
python
from foreman import connect

handler = connect("langgraph", crew\_id="my-team")
graph.invoke(state, config={"callbacks": [handler]})

print(handler.crew_health)     # 0.85
print(handler.is_degraded)     # False
print(handler.analysis())      # full crew intelligence report

이 코드는 foreman의 connect로 LangGraph 핸들러를 등록하여 그래프 실행 중에 콜백으로 상태를 수집하고 crew_health 지표를 조회하는 사용 예시이다.

02
작성자는 단위 테스트로는 검증되었지만 실제 LangGraph 통합에서 on_llm_end 훅이 발생하지 않아 아무 신호도 관찰되지 않는 문제를 보고했다. 원인은 LangGraph 노드가 LLM을 직접 호출하지 않고 상태 딕트를 반환하여 on_llm_end가 트리거되지 않는 점이며, 이를 해결하기 위해 핸들러는 on_chain_end의 노드 출력(메시지 리스트·output/result 키·문자열·LangChain 메시지 객체)을 추가로 감시하고 노드별 중복 제거 로직을 적용했다. 이 경험을 통해 프레임워크의 이벤트 노출 방식과 실제 런타임 차이를 확인해야 한다는 실무 교훈이 제시되었다.
03
핵심 신호 처리 파이프라인은 정규표현식 기반 신호 식별과 상태기계 결합으로 동작하며 LLM 호출을 추가로 발생시키지 않는다는 설계 원칙을 따른다. 구현 상세로는 35개 신호 타입이 정의되어 있고 outcome-aware health score를 위해 record_outcome API로 실제 작업 성공 여부를 반영하며 8과제의 워밍업 단계와 롤링 재보정으로 임계값을 적응시킨다. 이러한 구조는 관찰 기반 모니터링으로 잡음 신호를 줄이고 실제 성공률을 반영하는 지표 산출을 목표로 한다는 점에서 운영용 모니터링 요건을 충족한다.
04
프로젝트는 옵트인 방식의 개입 모드와 순수 관찰 모드(pas sive)를 구분해 운영 리스크를 관리하며 단일 자체 포함 HTML 대시보드를 통해 상태를 시각화한다. 문서에는 LangGraph 실환경 검증 외에 CrewAI·AutoGen·OpenAI Agents SDK·Google ADK·LlamaIndex·Semantic Kernel·Pydantic AI 등 총 9개 프레임워크 연결 코드를 공개 인터페이스에 맞춰 작성했다고 명시되어 있다. 다만 게시물 작성자는 실시간으로 검증한 프레임워크는 LangGraph 하나이며 나머지는 퍼블릭 인터페이스 기반의 목(mock) 테스트로 검증되었음을 투명하게 밝히고 있어 운영 전 추가 검증이 필요하다고 알렸다.

용어 해설

콜백 핸들러(Callback Handler)
콜백 핸들러는 모델·에이전트 실행 흐름의 이벤트(예: LLM 호출 시작·종료, 체인 단계 완료)를 수신하여 상태를 기록하거나 후속 작업을 트리거하는 컴포넌트이다. 입력으로는 프레임워크가 제공하는 이벤트 페이로드(토큰 로그·응답·상태 딕트 등)를 받고, 내부 규칙·정책 또는 상태기계로 신호를 추출·집계하여 출력으로 모니터링 지표나 개입 명령을 생성한다. 운영 환경에서 콜백은 관찰만 하는 패시브 모드와 응답을 삽입하는 개입 모드를 모두 지원할 수 있어 안정성·검증 전략 수립에 중요하다.
on_llm_end 이벤트(on_llm_end)
on_llm_end는 LLM 호출이 완료될 때 프레임워크가 발행하는 이벤트 훅으로, LLM 응답의 원문·메타데이터·토큰 로그를 콜백으로 전달한다. 이 이벤트를 기반으로 토큰별 분석, 응답 품질 판정, 후속 체인 트리거가 가능하며 LLM 중심 워크플로의 주요 관찰 지점으로 활용된다. 일부 런타임은 LLM을 직접 호출하지 않고 상태 딕트를 반환하면 이 훅이 발생하지 않아 통합 검증이 필요하다.
상태 딕트(State Dict)
상태 딕트는 노드 또는 체인이 처리한 출력·메시지·메타를 키·값 형태로 반환하는 자료구조로, 프레임워크 내부에서 단계 간 데이터 전달과 진단 정보 보관에 쓰인다. 상태 딕트는 문자열 응답, 메시지 리스트, 출력 키(예: result, output) 등을 포함할 수 있으며 콜백은 이를 파싱해 의미 신호를 감지한다. LangGraph처럼 LLM 호출을 직접 노출하지 않는 시스템에서는 상태 딕트를 관찰하는 방식이 필수적이다.
리프레임 인젝션(Reframe Injection)
리프레임 인젝션은 모델 응답에 개입해 프롬프트나 문맥을 재구성하여 출력 방향을 수정하는 기법으로, 롤백 가능한 방식으로 삽입하면 운영 중 의도하지 않은 동작을 되돌릴 수 있다. 이 기법은 자동 개입 모드에서 오류 회복·정책 보정·응답 포맷 정렬에 사용되며 올바른 조건·추적이 없으면 부작용을 낳을 수 있다. foreman은 옵트인 방식으로 리프레임 인젝션을 지원해 관찰과 개입을 분리했다.

언급된 도구

foreman추천링크

LangChain 스타일 콜백 핸들러로 크루 헬스 모니터링과 옵트인 개입 기능을 제공

LangGraph중립

상태 딕트를 반환하는 그래프 기반 애플리케이션 런타임 맥락에서의 예시 플랫폼

LangChain중립

콜백 훅과 체인·메시지 객체를 통해 파이프라인 실행 이벤트를 제공하는 라이브러리

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 06. 29.수집 2026. 06. 29.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.