
509
8
장
제약 조건 해결
LLM
기반 대화형 애플리케이션은 이전 턴의 대화 내용을 프롬프트 앞에 붙여 상태 유지를 흉
내 낸다. 예를 들어 파이댄틱
AI
에서는 다음처럼 이전 턴의 메시지를 명시적으로 다음 턴의 요
청에 첨부한다.
result1 = agent.run_sync(...)
result2 = agent.run_sync(..., message_history=result1.new_messages())
작업흐름 에이전트는 현재 상태를 입력으로 받아 요청을 처리하고 증강된 상태를 출력함으로
써 문맥을 유지한다. 다음은 랭그래프에서 그런 식으로 문맥을 유지하는 노드의 예이다.
def some_node(current_state: CurrentState) -> NextState:
next_state = current_state.copy()
...
next_state['confirmed_amount'] = 3450
return next_state
두 방식 모두, 결국은 전체 대화 내역을 프롬프트에 추가해서 기억 능력을 흉내 낸다. 하지만
이러한 접근법에는 한계가 있다. 요즘
LLM
은 컨텍스트 창이 비교적 크지만 (이 글을 쓰는 시점
에 제미나이의 컨텍스트 창은
100
만 토큰이다 ), 사용자의 전체 상호작용 내역을 매번 프롬프
트 앞에 붙이면 비용이 감당할 수 없을 ...