컨텍스트 공급자 추가

이전 페이지에서 미들웨어가 에이전트의 핵심 논리를 건드리지 않고 로깅, 가드레일, 오류 처리 등의 횡단 관심사로 에이전트의 실행 파이프라인을 래핑하는 방법을 보여 줍니다. 그러나 미들웨어는 에이전트가 알고 있는 것이 아니라 에이전트가 실행되는 방식을 다룹니다. 지금까지 에이전트의 지식은 학습 데이터와 사용자가 현재 턴에서 말하는 내용의 두 곳에서 제공됩니다.

그건 문제입니다. 유용한 에이전트에는 그 이상이 필요합니다. 사용자가 3회전에 말한 내용을 기억하고, 사용자의 기본 설정을 알고 있거나, 기술 자료에서 관련 사실을 가져와야 응답 생성을 시작할 수 있습니다. 도구는 정보를 가져올 수 있지만 반응성이 있습니다. 모델은 이를 호출하기로 결정해야 합니다. 모델이 컨텍스트가 필요하다는 것을 인식하지 못하면 요청하지 않습니다.

컨텍스트 공급자는 이 문제를 해결합니다. 각 에이전트 호출 전후에 실행되는 구성 요소로, 컨텍스트 창에 관련 정보를 사전에 삽입하고 필요에 따라 응답에서 상태를 추출하여 나중에 사용할 수 있도록 저장합니다. 에이전트의 지침이나 코드를 변경하지 않고도 에이전트 메모리, 개인 설정 및 외부 지식에 대한 액세스 권한을 제공합니다.

이것을 사용해야 하는 경우

다음과 같은 경우 에이전트에 컨텍스트 공급자를 추가합니다.

  • 에이전트에는 대화 기록이 필요합니다. 현재 메시지뿐만 아니라 이전 턴에서 말한 내용을 기억해야 합니다.
  • 에이전트가 응답을 개인 설정할 수 있도록 프로필, 기본 설정, 계정 세부 정보 또는 세션 상태와 같은 사용자별 데이터를 삽입하려고 합니다.
  • 각 응답 전에 기술 자료에서 관련 문서 또는 팩트를 자동으로 가져오는 RAG(검색 보강 생성) 가 필요합니다.
  • 에이전트에는 하루 중 시간, 사용자의 위치 또는 기타 런타임 조건에 따라 호출 간에 변경되는 컨텍스트인 동적 지침 이 필요합니다.
  • 에이전트 논리에서 데이터 소싱을 분리하려고 합니다. 즉, 에이전트는 컨텍스트의 원본을 알 필요가 없으며 사용 가능한 컨텍스트만 알 필요가 없습니다.

도구만 사용하는 것은 어떨까요?

도구와 컨텍스트 공급자는 모두 에이전트에게 외부 정보에 대한 액세스 권한을 부여하지만 근본적으로 다른 방식으로 작동합니다.

Aspect 도구 컨텍스트 공급자
Trigger 반응성 - 모델에서 도구를 호출할 시기를 결정합니다. 사전 대응 - 모든 호출 전에 자동으로 실행됩니다.
제어 모델 기반: 모델은 어떤 도구, 시기 및 인수를 선택할지 선택합니다. 개발자 중심: 항상 사용할 수 있는 컨텍스트를 결정합니다.
가시성 모델은 도구가 존재한다는 것을 알고 관련성이 있다고 판단해야 합니다. 컨텍스트가 투명하게 삽입됩니다. 모델이 이를 프롬프트의 일부로 인식합니다.
사용 사례 주문형 작업 및 조회: "웹 검색", "데이터베이스 쿼리" 항상 존재하는 컨텍스트: 대화 기록, 사용자 프로필, 미리 로드된 지식
토큰 비용 도구가 호출된 경우에만 사용된 토큰 모든 호출에 사용된 토큰(컨텍스트는 항상 프롬프트에 표시됨)

어느 쪽도 엄격하게 더 나은 없습니다. 많은 에이전트는 항상 존재해야 하는 정보(기록, 사용자 프로필, 핵심 지식)에 대한 컨텍스트 공급자와 에이전트가 요청 시 가져와야 하는 정보 도구(라이브 검색 결과, 데이터베이스 쿼리, API 호출)를 모두 사용합니다.

팁 (조언)

미리 보기의 좋은 규칙: 에이전트가 실행 될 때마다 이 정보가 있어야 하는 경우 컨텍스트 공급자를 사용 합니다. 관련 있는 경우에만 에이전트가 가져와야 한다면, 도구를 사용하십시오.

컨텍스트 공급자의 작동 방식

컨텍스트 공급자는 각 에이전트 호출을 중심으로 2단계 수명 주기에 참여합니다.

┌──────────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the return policy?")              │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  BEFORE RUN — each context provider injects context          │
│                                                              │
│  • History provider loads past conversation messages         │
│  • Memory provider retrieves relevant facts/preferences      │
│  • RAG provider searches knowledge base and adds results     │
│  • Custom provider injects user profile, time, location      │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  Agent core — model sees original input + all injected       │
│  context and generates a response                            │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  AFTER RUN — each context provider processes the response    │
│                                                              │
│  • History provider saves the new messages                   │
│  • Memory provider extracts facts to remember for later      │
│  • Custom provider updates session state                     │
└──────────────────────────────────────────────────────────────┘

핵심 사항:

  1. 컨텍스트 공급자는 자동으로 실행됩니다. 에이전트를 만들 때 한 번 등록합니다. 그 후에는 추가 코드 없이 모든 호출에 참여합니다.
  2. 여러 공급자가 함께 구성됩니다. 기록 공급자, RAG 공급자 및 사용자 지정 공급자 등 여러 컨텍스트 공급자를 등록할 수 있으며 모두 동일한 컨텍스트 창에 기여합니다. 해당 기여는 등록 순서로 병합됩니다.
  3. 공급자에는 두 개의 후크가 있습니다. 이전 후크는 프롬프트에 컨텍스트(메시지, 명령, 도구)를 삽입합니다. 크에서는 메시지를 저장하거나, 추억을 추출하거나, 상태를 업데이트하는 응답을 처리합니다.
  4. 공급자는 세션을 인식합니다. 컨텍스트 공급자는 특정 대화로 범위가 지정된 데이터를 로드하고 저장할 수 있도록 현재 세션을 받습니다. 세션 관리 작동 방식에 대해서는 세션을 참조하세요.

팁 (조언)

컨텍스트 공급자가 미들웨어 및 채팅 클라이언트와 함께 전체 에이전트 실행 파이프라인에 있는 위치를 자세히 보려면 에이전트 파이프라인 아키텍처를 참조하세요.

컨텍스트 창 관리

삽입하는 모든 컨텍스트는 모델의 컨텍스트 창에서 토큰을 사용합니다. 역사는 시간의 흐름에 따라 발전합니다. RAG 결과는 문서 청크를 추가합니다. 사용자 프로필은 메타데이터를 추가합니다. 합계가 모델의 제한을 초과하면 가장 오래되었거나 가장 관련성이 낮은 정보가 잘려 중요한 컨텍스트가 손실될 수 있습니다.

컨텍스트 창 관리는 컨텍스트 공급자를 사용할 때 중요한 고려 사항입니다. 압축 전략은 핵심 정보를 유지하면서 토큰 제한 내에서 유지되도록 이전 기록을 요약하거나 트리밍합니다. 압축을 참조하세요.

팁 (조언)

메모리 및 컨텍스트 공급자에 대한 실습 환경은 시작 자습서의 4단계: 메모리 를 참조하세요.

중요합니다

컨텍스트 창이 증가함에 따라 모델의 성능이 저하 될 수 있으므로 매우 긴 컨텍스트 창을 유지하지 않는 것이 좋습니다. 에이전트가 성능 저하를 경험하기 시작하는 경우 압축 전략을 사용하여 컨텍스트 크기를 줄이는 것이 좋습니다.

고려 사항

고려 사항 세부 정보
토큰 예산 삽입된 모든 컨텍스트는 토큰을 사용합니다. 특히 여러 공급자를 결합할 때 총 컨텍스트 크기를 신중하게 모니터링합니다. 컨텍스트가 무제한으로 커지면 중요한 정보가 자동으로 잘립니다.
검색 대기 시간 외부 서비스(데이터베이스, 검색 인덱스, API)를 쿼리하는 컨텍스트 공급자는 모든 호출에 대기 시간을 추가합니다. 캐싱, 연결 풀링 및 비동기 작업을 사용하여 검색 속도를 유지합니다.
Relevance 관련이 없는 컨텍스트를 삽입하는 것은 토큰을 낭비하는 것이 아니라 신호를 희석시켜 모델의 응답을 적극적으로 저하시킬 수 있습니다. 공급자가 집중적이고 관련된 정보를 주입하도록 하십시오.
오래됨 캐시되거나 미리 로드된 컨텍스트는 오래될 수 있습니다. 공급자가 적절한 간격으로 데이터를 새로 고치도록 디자인하고 사용 사례에 약간 부실 컨텍스트가 허용되는지 여부를 고려합니다.
구성 가능성 여러 공급자가 동일한 컨텍스트 창에 기여하는 경우 해당 기여는 예기치 않은 방식으로 상호 작용할 수 있습니다. 공급자를 개별적으로가 아닌 함께 테스트하여 결합된 컨텍스트가 적절한지 확인합니다.

다음 단계

이제 에이전트에 도구, 기술, 미들웨어 및 컨텍스트 공급자가 있으므로 다음 단계는 에이전트를 도구로 사용하여 한 에이전트를 다른 에이전트에 대한 도구로 사용하여 에이전트를 구성하고 특수화 및 위임을 사용하도록 설정하는 것입니다.

더 자세히 살펴보기: