값이 아니라 경로를 넘긴다 — 도메인 툴 설계와 부분 실패 마감
대용량 데이터를 LLM 컨텍스트에 넣지 않는 인터페이스 규약, 툴 안에 또 에이전트가 들어가는 4층 구조, 그리고 분기 하나가 실패했을 때 결과물을 어떻게 마감할 것인가를 정리한다.
태그
23편
대용량 데이터를 LLM 컨텍스트에 넣지 않는 인터페이스 규약, 툴 안에 또 에이전트가 들어가는 4층 구조, 그리고 분기 하나가 실패했을 때 결과물을 어떻게 마감할 것인가를 정리한다.
그래프를 전역 상수에서 팩토리 산출물로 바꾸고, astream_events로 노드 경계가 아닌 내부까지 흘려 도구 호출 과정을 UI에 노출하는 구조를 조립한다.
화면에 고를 컨트롤이 없는 제품에서 라우팅이 어디로 가는지 추적하고, chatbot ↔ tools 되돌림 엣지 하나로 도구 반복 호출을 만든 뒤 라우팅 규칙이 코드가 아니라 프롬프트에 있음을 확인한다.
PDF를 의미 단위 블록으로 분해하고 표와 그림을 VLM으로 번역하는 파이프라인을 다룬다. 좌표 정규화, 그래프 기반 재구성, 그리고 표를 두 벌로 저장하는 설계까지.
도구 개수가 아니라 책임의 충돌이 분할 기준이라는 관점에서 단일 에이전트 두 사례를 뜯어보고, Network·Supervisor·Hierarchical 세 토폴로지를 중앙 통제와 종료 판정 주체로 가른다.
단방향 파이프라인이 무너지는 지점을 짚고, 모듈 경계를 정하는 일곱 가지 기준과 앞 단계를 다시 돌리지 않고 이어서 개발하는 기법을 정리한다.
내장 툴과 @tool 커스텀 툴의 설계 지점을 정리하고, 원본 데이터를 그대로 넘기지 않는 것이 왜 컨텍스트 예산 관리인지를 주식분석 4역할 파이프라인으로 확인한다.
RAG 실패의 상당수는 문서를 텍스트로 바꾸는 순간 이미 결정된다. 파싱 손실이 복구 불가능한 이유와 BaseLoader로 비표준 포맷을 다루는 구현법을 정리한다.
리포트 자동화가 수렴하는 5단계를 세우고, 서브테마 5개를 노드 5개로 미리 펼친 그래프가 왜 데이터 개수에 결합되는지, 그리고 병렬화 지점이 왜 두 층으로 나뉘는지를 코드로 따라간다.
조작할 수 있는 컨트롤은 State 필드로, 화면에 나타나는 순서는 노드 실행 순서로 번역하는 5단계 절차를 세우고, Focus 값 하나가 분기 키가 되는 단일 에이전트 그래프까지 그린다.
모든 질문에 검색을 붙이지 않기 위해 확신도와 충분성을 두 번 채점하는 그래프를 조립하고, 판정값을 상태에 남기는 설계가 왜 라우팅 테스트와 진행 표시를 동시에 가능하게 하는지를 따라간다.
노트북 코드를 책임별 모듈로 분해한 4세대 구조를 다룬다. Document Parse v2 응답 스키마, 16줄짜리 노드 추상 클래스, 리듀서로 동시성을 설계하는 상태 스키마까지.
Agentic RAG·Self-RAG·CRAG·Adaptive RAG가 하나의 아이디어에서 갈라지는 지점을 11개 축으로 비교하고, Retriever를 Tool로 등록해 검색 여부부터 에이전트가 판단하게 만드는 StateGraph 구현을 코드로 따라간다.
ConversableAgent 단일 추상과 네 가지 대화 패턴, 종료 조건을 직접 설계해야 하는 이유, 그리고 Code Executor가 붙는 순간 무너지는 신뢰 경계를 정리한다.
역할·목표·배경으로 에이전트 정체성을 만들고 expected_output으로 산출물 계약을 거는 CrewAI 3요소를, 파라미터 기본값이 만드는 함정과 함께 정리한다.
Focus별 ToolNode를 조립해 결정론적 분기를 완성한 뒤, 각주가 붙지 않는 진짜 원인이 프롬프트가 아니라 State 설계에 있음을 밝히고 스트리밍 UX가 그래프에 거는 제약까지 따라간다.
LangChain의 구성요소 8종과 Output Parser 카탈로그를 정리하고, 모든 것이 Runnable이기 때문에 LCEL의 파이프 연산자가 스트리밍·비동기·재시도를 공짜로 주는 구조를 설명한다.
Load·Split·Embed·Store·Generate를 코드와 실측값으로 따라가면서 청크 크기가 상한이 아니라는 사실을 확인하고, 직선 파이프라인이 갖는 여섯 가지 한계로 마무리한다.
리듀서를 왜 채널마다 정해야 하는지, tool_calls가 찍힌 시점에 무엇이 아직 일어나지 않았는지, 기억이 어디에 붙어 있는지를 결론부터 정리한다.
대화 이력이 매 턴 1개로 초기화되는 증상에서 출발해, 노드가 낸 값을 기존 값에 어떻게 합칠지 정하는 채널별 병합 규칙이 리듀서임을 3회차 실행 출력 대조로 확인하고 슈퍼스텝 병합 모델까지 내려간다.
RAG를 8단계로 나눠 전체 지도를 그리고, 사전처리의 첫 두 단계인 문서 로드와 텍스트 분할의 선택지·튜닝 파라미터·실패 모드를 정리한다.
환각 판정과 답변 적합성 판정을 중첩해 세 갈래 경로를 만드는 구조를 코드로 따라가고, 모든 Grader가 공유하는 구조화 출력 3요소 패턴과 binary yes/no가 갖는 세 가지 한계를 정리한다.
갈래 수가 입력에 따라 변할 때 조건부 엣지가 노드 이름 대신 Send 리스트를 반환하는 구조를 조립하고, 그때 리듀서가 dict에서 list로 바뀌는 이유와 리포트 포맷을 강제하는 두 방법을 정리한다.