'환각 0'이 실제로 보장하는 것 — groundedness와 그 대가
검증 노드가 재는 것은 사실성이 아니라 문서와의 일치이며, 문서가 틀리면 통과한다. 다섯 가지 한계와 코드에서 센 LLM 호출 횟수, 그리고 실습 코드에 남아 있는 함정 여덟 개를 정리한다.
태그
35편
검증 노드가 재는 것은 사실성이 아니라 문서와의 일치이며, 문서가 틀리면 통과한다. 다섯 가지 한계와 코드에서 센 LLM 호출 횟수, 그리고 실습 코드에 남아 있는 함정 여덟 개를 정리한다.
대용량 데이터를 LLM 컨텍스트에 넣지 않는 인터페이스 규약, 툴 안에 또 에이전트가 들어가는 4층 구조, 그리고 분기 하나가 실패했을 때 결과물을 어떻게 마감할 것인가를 정리한다.
체크포인터가 저장하는 StateSnapshot 여섯 필드를 뜯어보고, 그 지속성 위에서만 성립하는 인터럽트로 승인 게이트를 만든 뒤, 언제 그래프 대신 LCEL 체인을 써야 하는지를 아홉 축으로 가른다.
그래프를 전역 상수에서 팩토리 산출물로 바꾸고, astream_events로 노드 경계가 아닌 내부까지 흘려 도구 호출 과정을 UI에 노출하는 구조를 조립한다.
화면에 고를 컨트롤이 없는 제품에서 라우팅이 어디로 가는지 추적하고, chatbot ↔ tools 되돌림 엣지 하나로 도구 반복 호출을 만든 뒤 라우팅 규칙이 코드가 아니라 프롬프트에 있음을 확인한다.
PDF를 의미 단위 블록으로 분해하고 표와 그림을 VLM으로 번역하는 파이프라인을 다룬다. 좌표 정규화, 그래프 기반 재구성, 그리고 표를 두 벌로 저장하는 설계까지.
표·이미지 해설을 만드는 프롬프트 4종의 설계 의도와 XML 태그·가상질문·수치 강조가 필요한 이유, 그리고 파싱 품질이 의심될 때의 진단 순서를 정리한다.
언제 에이전트를 쪼개고 언제 쪼개지 않는지, Send()가 조건부 엣지와 무엇이 다른지, 판단하는 RAG 네 변종이 각각 어떤 실패를 막는지를 결론부터 정리한다.
Fan-out/Fan-in의 전제 조건과 평가가 나쁠 때 어느 모듈로 되돌아갈지의 문제, 그리고 서브그래프가 그대로 멀티에이전트로 확장되는 구조를 정리한다.
그래프를 노드로 꽂는 서브그래프 합성과 스키마가 다를 때의 변환 래퍼, 그리고 이미 돌아가는 파이프라인 중간에 신규 단계를 끼워 넣는 7단계 절차를 정리한다.
생성한 코드를 돌려 보고 고치는 순환을 상태 설계부터 세우고, 임의 코드 실행의 위협 일곱 가지를 격리 등급에 매핑한 뒤 사이클이 있는 그래프를 어떻게 끝낼 것인가를 정리한다.
도구 개수가 아니라 책임의 충돌이 분할 기준이라는 관점에서 단일 에이전트 두 사례를 뜯어보고, Network·Supervisor·Hierarchical 세 토폴로지를 중앙 통제와 종료 판정 주체로 가른다.
단방향 파이프라인이 무너지는 지점을 짚고, 모듈 경계를 정하는 일곱 가지 기준과 앞 단계를 다시 돌리지 않고 이어서 개발하는 기법을 정리한다.
에이전트를 모델·도구·메모리·플래너·실행 루프 다섯 층으로 분해한 뒤, 프롬프트 체이닝부터 컴퓨터 유즈까지 열한 개 패턴을 자율성 수준과 무너지는 지점으로 나란히 세운다.
리포트 자동화가 수렴하는 5단계를 세우고, 서브테마 5개를 노드 5개로 미리 펼친 그래프가 왜 데이터 개수에 결합되는지, 그리고 병렬화 지점이 왜 두 층으로 나뉘는지를 코드로 따라간다.
조작할 수 있는 컨트롤은 State 필드로, 화면에 나타나는 순서는 노드 실행 순서로 번역하는 5단계 절차를 세우고, Focus 값 하나가 분기 키가 되는 단일 에이전트 그래프까지 그린다.
에이전트 스택의 세 선택지를 초기 속도·통제·락인 등 아홉 축으로 가르고, 프로덕션 도입률과 규모별 우려 지표로 실제 산업이 어느 쪽을 골랐는지 확인한다.
한 번에 한 대화만 가능한 UX가 왜 제약이 되는지 짚고, 이메일 어시스턴트 레퍼런스 구조에서 승인을 accept·edit·respond·ignore 네 갈래로 나눈 이유와 사람의 개입을 학습 신호로 회수하는 루프를 정리한다.
루프의 관리 단위를 런타임 계약으로 정의하고 목표·상태·정책·도구·관찰·검증기·종료·격리 여덟 표면으로 분해한 뒤, 언제 루프가 과설계가 되는지를 검증 가능성 기준으로 가른다.
모든 질문에 검색을 붙이지 않기 위해 확신도와 충분성을 두 번 채점하는 그래프를 조립하고, 판정값을 상태에 남기는 설계가 왜 라우팅 테스트와 진행 표시를 동시에 가능하게 하는지를 따라간다.
element를 유형별로 갈라 처리하고 VLM으로 엔티티를 뽑아 페이지 단위로 재조립하는 노드 9개를 따라간다. 표를 Document 2개로 만드는 이유까지.
노트북 코드를 책임별 모듈로 분해한 4세대 구조를 다룬다. Document Parse v2 응답 스키마, 16줄짜리 노드 추상 클래스, 리듀서로 동시성을 설계하는 상태 스키마까지.
Agentic RAG·Self-RAG·CRAG·Adaptive RAG가 하나의 아이디어에서 갈라지는 지점을 11개 축으로 비교하고, Retriever를 Tool로 등록해 검색 여부부터 에이전트가 판단하게 만드는 StateGraph 구현을 코드로 따라간다.
에이전트가 무엇이고 언제 쓰지 않아야 하는지, 네 프레임워크가 무엇으로 갈리는지를 결론부터 정리하고, 자주 굳어지는 오해를 함께 교정한다.
LLM 단독에서 코딩 에이전트까지의 개념 계보를 한 장으로 놓고, 각 단계가 앞 단계의 무엇을 풀고 대신 무엇을 새로 만드는지를 정리한다.
검색 문서가 하나라도 무관하면 웹으로 보정하는 CRAG와 검색 전에 데이터소스를 고르는 Adaptive RAG를 나란히 놓고, 같은 이름의 함수에 정반대 임계치가 들어가는 이유를 발동 조건표로 정리한다.
세 에이전트 프레임워크를 12개 축으로 비교하고, 추상화 수준과 제어권이 반비례한다는 트레이드오프를 의사결정 트리로 정리한다.
Focus별 ToolNode를 조립해 결정론적 분기를 완성한 뒤, 각주가 붙지 않는 진짜 원인이 프롬프트가 아니라 State 설계에 있음을 밝히고 스트리밍 UX가 그래프에 거는 제약까지 따라간다.
스키마가 서로 다른 그래프를 잇는 어댑터 세 개로 축소-확장-실행-축소의 모래시계를 만들고, 최상위 State에 필드가 둘뿐인 이유를 조직 구조와 나란히 놓는다.
리듀서를 왜 채널마다 정해야 하는지, tool_calls가 찍힌 시점에 무엇이 아직 일어나지 않았는지, 기억이 어디에 붙어 있는지를 결론부터 정리한다.
대화 이력이 매 턴 1개로 초기화되는 증상에서 출발해, 노드가 낸 값을 기존 값에 어떻게 합칠지 정하는 채널별 병합 규칙이 리듀서임을 3회차 실행 출력 대조로 확인하고 슈퍼스텝 병합 모델까지 내려간다.
환각 판정과 답변 적합성 판정을 중첩해 세 갈래 경로를 만드는 구조를 코드로 따라가고, 모든 Grader가 공유하는 구조화 출력 3요소 패턴과 binary yes/no가 갖는 세 가지 한계를 정리한다.
갈래 수가 입력에 따라 변할 때 조건부 엣지가 노드 이름 대신 Send 리스트를 반환하는 구조를 조립하고, 그때 리듀서가 dict에서 list로 바뀌는 이유와 리포트 포맷을 강제하는 두 방법을 정리한다.
라우팅 함수가 lambda x: x['next'] 한 줄로 끝나는 이유를 구조화 출력에서 찾고, 관리자를 세운 대가로 따라오는 컨텍스트 오염·무한 루프·호출당 단가 상승을 각각의 방어책과 함께 정리한다.
결정과 실행을 두 곳에 나눠 두는 LangGraph의 2단 구조를 코드로 확인하고, 되돌아오는 엣지 하나로 DAG가 순환 에이전트가 되는 지점까지 배선 세 줄로 따라간다.