728x90

langgraph 3

[에이전트] 같은 말 반복, 프롬프트 대신 그래프 제어로 끝낸 턴

부제: LLM이 같은 말을 반복하는 걸, 프롬프트가 아니라 제어 흐름으로 끝낸 이야기에이전트에는 사용자에게 버튼·선택지 같은 UI를 그려주는 도구가 있다.LLM이 이 도구를 호출하면 화면에 UI가 뜬다.문제는 이 도구를 호출한 "다음"에 벌어졌다.같은 말을 두 번 하는 에이전트LLM이 UI 도구를 호출할 때, UI만 만드는 게 아니라 답변 텍스트도 같이 생성한다."아래에서 골라주세요" 같은 말과 함께 버튼을 띄우는 식이다. 여기까진 정상이다.그런데 그래프(LangGraph)가 거기서 끝나지 않았다.도구 실행이 끝나면 에이전트에게 턴이 다시 넘어가, 에이전트가 한 번 더 말을 해야 대화가 마무리됐다.문제는 마지막 턴에서 에이전트가 할 말이 없다는 것이다.방금 UI와 함께 할 말을 다 했으니까.그러니 조금 ..

AI 2026.07.21

[백업] restic DB 백업 용량 최소화 복원 자동검증

부제: 6GB 백업을 월 0.9GB로 줄이고 매일 복원까지 확인한 이야기DB를 백업하려고 보니 덩치가 컸다.그런데 뜯어보니 대부분은 굳이 백업할 필요가 없는 데이터였다. 그 이야기다.문제이 서비스는 LangGraph로 대화 상태를 checkpoint에 저장한다.agent가 추론 턴을 한 번 돌 때마다 그 시점의 전체 상태를 스냅샷으로 남긴다. 과거 step으로 되돌아가는 time-travel을 위해서다.그러다 보니 한 스레드에서 대화가 100번 오가면 step 버전이 100개 쌓인다.checkpoint 테이블만 약 6GB였는데, 그중 98%가 이 step 이력이었다.재해 복구 관점에서 진짜 필요한 건 각 스레드의 최신 상태 하나뿐이다. 나머지 옛 step은 되감기 같은 고급 기능에나 쓰인다.결정 — 최신..

Infra 2026.07.08

[에이전트] ReAct 도구 순서 가드 read 후 write 강제

부제: LLM이 읽기 전에 쓰지 못하게 막기캘린더를 다루는 에이전트에서 가끔 사고가 났다. 모델이 기존 일정을 읽지 않고 바로 일정을 만들거나 고쳤다. 그러면 두 가지 문제가 생긴다.이미 있는 약속과 겹치는 시간에 새 일정을 덮어쓴다.수정·삭제할 때 event_id를 실제로 모르니 그럴듯한 값을 지어낸다(환각).문제프롬프트와 도구 설명(docstring)에 "먼저 조회하라"고 적어도 회귀가 반복됐다. 지시는 권고일 뿐이라, 모델이 안 지키면 그만이다.여기서 Claude Code의 패턴이 떠올랐다. Claude Code는 파일을 Write하기 전에 그 파일을 Read하지 않았으면 시스템이 거부한다. 지시가 아니라 도구 레이어에서 강제하는 방식이다. 이걸 우리 도구 레이어에 옮겨오기로 했다.정리한 방식 — ..

AI 2026.06.25
728x90