4 분 소요

AI 에이전트는 장시간 이어지는 멀티턴 대화에서 적절한 컨텍스트를 유지해야 한다. 너무 많은 기록을 전달하면 모델이 불필요한 정보에 흔들리고 비용과 지연 시간이 증가한다. 반대로 기록을 지나치게 줄이면 이전 결정과 사용자 요구를 잊어버린다.

여기서 컨텍스트는 모델이 한 번에 참고할 수 있는 입력 및 출력 토큰의 전체 범위를 의미한다. 예를 들어, GPT-5의 경우, 컨텍스트 창이 크더라도 정리되지 않은 대화, 중복된 도구 결과, 불필요한 검색 결과가 쌓이면 모델 성능이 저하된다고 설명한다.

이 쿡북은 OpenAI Agents SDK의 Session 객체를 이용해 컨텍스트를 관리하는 두 가지 방법을 제시한다.

  • 오래된 대화를 삭제하는 컨텍스트 트리밍(trimming) 방식이다.
  • 오래된 대화를 짧은 요약으로 압축하는 컨텍스트 요약 방식(Compession)이다.

컨텍스트를 관리하면 최신 사용자 목표에 집중할 수 있고, 도구 선택과 매개변수 입력이 정확해진다. 토큰 비용과 응답 지연이 줄어들며, 잘못된 정보가 반복적으로 증폭되는 컨텍스트 오염도 줄일 수 있다. 기록의 크기와 형식이 일정해지므로 디버깅, 회귀 분석, 상담원 또는 다른 에이전트로의 인계도 쉬워진다

1. 컨텍스트 관리가 중요한 이유

  • 긴 대화에서 일관성 유지 – 오래된 세부 정보에 끌려가지 않고 에이전트가 사용자의 최신 목표에 집중하도록 한다. 세션 단위의 트리밍과 압축은 과거의 계획이 현재 요청을 방해하는 것을 막는다.
  • 도구 호출 정확도 향상 – 핵심에 집중된 컨텍스트는 적절한 함수 선택과 인수 입력을 돕는다. 여러 도구를 사용하는 과정에서 재시도, 시간 초과, 연쇄 오류를 줄인다.
  • 지연 시간과 비용 절감 – 더 작고 명확한 프롬프트는 턴마다 사용되는 토큰과 모델의 처리 부담을 줄인다.
  • 오류와 환각 확산 방지 – 요약은 이전의 잘못된 정보를 수정하거나 제외하는 정제된 공간 역할을 한다. 트리밍은 잘못된 사실이 대화가 이어질 때마다 증폭되는 ‘컨텍스트 오염(context poisoning)’을 방지한다.
  • 쉬운 디버깅과 관찰 가능성 – 일정한 형식의 요약과 제한된 크기의 대화 기록은 로그 비교를 쉽게 만든다. 요약본의 차이를 확인하고, 성능 저하의 원인을 추적하며, 오류를 안정적으로 재현할 수 있다.
  • 여러 문제 처리와 인계 대응력 향상 – 여러 문제가 동시에 다뤄지는 대화에서는 문제별 요약을 이용해 작업을 중단했다가 다시 시작하거나, 사람에게 에스컬레이션하거나, 다른 에이전트에 인계하더라도 일관성을 유지할 수 있다.

[그림]

OpenAI Responses API는 내장 상태 관리와 previous_response_id를 이용한 메시지 연결을 통해 기본적인 메모리 기능을 제공한다.

이전 응답의 id를 previous_response_id로 전달하면 대화를 계속 이어갈 수 있다. 또는 응답 결과를 목록으로 수집한 뒤 다음 응답 요청의 input으로 다시 전달하는 방식으로 컨텍스트를 직접 관리할 수 있다.

그러나 Responses API만으로는 자동 메모리 관리가 제공되지 않는다. 이 부분을 Agents SDK가 담당한다. Agents SDK는 Responses API 위에 세션 메모리 기능을 제공하므로 response.output을 직접 추가하거나 이전 응답 ID를 별도로 추적할 필요가 없다.

세션 자체가 메모리 객체가 된다. 개발자는 다음과 같이 동일한 세션을 반복해서 전달하면 된다.

Runner.run(agent, "...", session=session)

SDK가 컨텍스트 길이, 대화 기록, 대화의 연속성을 관리하므로 일관성 있는 다중 턴 에이전트를 훨씬 쉽게 구축할 수 있다.

2. 실제 시나리오

다음과 같이 장시간 이어지는 일반적인 작업의 실제 사례를 통해 이 기법들을 설명한다.

  • 멀티 턴 고객지원 대화 하드웨어와 소프트웨어를 모두 다루는 장시간의 기술제품 상담에서는 시간이 지나면서 고객이 여러 문제를 제기하는 경우가 많다. 에이전트는 과거의 모든 세부 정보를 그대로 유지하기보다 핵심 정보만 보존하면서 일관성을 유지하고 현재 목표에 집중해야 한다.

3. 다루는 기법

이러한 문제를 해결하기 위해 OpenAI Agents SDK를 활용하는 두 가지 구체적인 접근 방식을 소개한다.

3-1. 컨텍스트 트리밍

최근 N개의 턴은 유지하고 오래된 턴은 삭제하는 방식

구분 한글 요약
장점 * 요약 모델을 호출하지 않아 처리 방식이 단순하고 결과를 재현하기 쉽다.
 추가 지연 시간과 비용이 발생하지 않으며, 최신 도구 결과와 매개변수도 원문 그대로 유지된다.
 요약 과정에서 정보가 변질될 위험도 작다.
단점  최근 N개 턴의 범위를 벗어난 제약조건, ID, 결정 사항이 갑자기 사라질 수 있다.
에이전트가 이전 약속이나 사용자 선호를 잊은 것처럼 보일 수 있다. 
* 최근 턴에 대용량 도구 결과가 포함되면 토큰 사용량이 여전히 급증할 수 있다.
적합한 경우  각 작업이 서로 독립적이고 과거 정보를 이어갈 필요가 없는 대화에 적합하다.
 예측 가능한 동작, 쉬운 평가, 낮은 지연 시간이 필요한 운영 자동화와 CRM·API 실행에도 유용하다.
* 오래된 기록보다 최근 단계가 중요한 업무에 적합하다.

3-2. 컨텍스트 압축

이전의 사용자 메시지, 에이전트 답변, 도구 실행 결과를 짧고 구조화된 요약으로 압축해 대화 기록에 포함하는 방식이다.

구분 한글 요약
장점  과거 요구사항과 결정 근거를 적은 토큰으로 장기간 유지할 수 있다.
에이전트가 이전 약속과 제약조건을 기억하므로 사용자 경험이 자연스럽다.
* 하나의 요약으로 수백 개의 턴을 대체하고 현재까지의 상태를 쉽게 확인할 수 있다.
단점  중요한 세부 정보가 누락되거나 우선순위가 잘못 반영될 수 있다.
요약을 갱신할 때 추가 모델 호출로 비용과 지연 시간이 증가한다.
* 잘못된 정보가 요약에 들어가면 이후 대화까지 오염될 수 있다.
* 감사와 평가를 위해 요약 프롬프트와 결과를 별도로 기록해야 한다.
적합한 경우 * 계획·코칭, RAG 기반 분석, 정책 질의응답처럼 전체 과정에서 정보를 축적해야 하는 업무에 적합하다. * 긴 세션에서도 이전 결정, ID, 제약조건을 안정적으로 유지해야 할 때 유용하다.

3-3. 빠른 요약

구분 트리밍 요약
처리 방식 최근 N개 사용자 턴만 유지한다 오래된 턴을 구조화된 압축(요약)으로 바꾼다
비용과 지연 추가 모델 호출이 없어 가장 낮다 압축(요약)을 생성할 때 추가 호출이 발생한다
장기 기억 오래된 정보가 완전히 사라질 수 있다 결정, 제약조건, 식별자를 압축(요약)해 보존한다
주요 위험 필요한 과거 정보가 삭제된다 압축(요약) 과정에서 정보가 왜곡될 수 있다
평가와 디버깅 결정적이고 재현하기 쉽다 압축(요약) 프롬프트와 결과까지 평가해야 한다
적합한 업무 API 실행, CRM 작업, 짧은 운영 자동화 상담, 분석, 계획, 코칭, 장기 대화

트리밍은 단순하고 빠르며 최근 도구 호출과 오류 메시지를 원문 그대로 유지한다. 그러나 오래된 약속이나 요구조건이 갑자기 사라질 수 있다.

요약은 오래된 정보를 적은 토큰으로 유지하고 긴 대화의 연속성을 높인다. 그러나 요약 모델이 중요한 제약조건을 빠뜨리거나 잘못된 사실을 요약에 포함하면 이후 모든 응답이 영향을 받을 수 있다.

참고자료

  • Vector Database 연결

댓글남기기