메모리 뱅크 문제 해결

이 문서에서는 Vertex AI Agent Engine 메모리 뱅크를 사용할 때 발생하는 일반적인 문제를 해결하는 방법을 보여줍니다.

생성된 추억이 없습니다.

기억 생성 프로세스에는 소스 콘텐츠의 정보가 지속될 만큼 의미가 있는지 판단하는 중요한 단계가 포함됩니다. 빈 응답은 프로세스가 성공적으로 실행되었지만 저장 기준을 충족하는 정보가 없음을 나타냅니다. 추억이 생성될 것으로 예상했는데 생성되지 않는다면 이 가이드에서 잠재적인 오류나 잘못된 구성을 파악하는 데 도움을 받을 수 있습니다.

추억이 생성되지 않는 이유를 해결하려면 다음 단계를 순서대로 따르세요.

메모리 생성이 트리거되었는지 확인

먼저 메모리 생성 프로세스가 실제로 시작되었는지 확인합니다. 메모리 생성은 GenerateMemories (client.agent_engines.memories.generate(...))를 호출하여 시작됩니다.

ADK의 VertexAiMemoryBankService를 사용하는 경우 메모리 생성이 자동으로 트리거되지 않습니다. 에이전트 또는 애플리케이션이 add_session_to_memory 메서드를 명시적으로 호출하여 프로세스를 트리거했는지 확인해야 합니다.

add_session_to_memorySession 객체를 입력으로 사용하고 세션의 이벤트를 메모리 생성의 데이터 소스로 사용합니다. 세션 객체에 채워진 이벤트가 있는 경우에만 Memory Bank 인스턴스를 호출합니다. ADK 애플리케이션 또는 에이전트가 add_session_to_memory를 호출하지만 메모리 생성이 트리거되지 않은 경우 Session 객체의 이벤트가 채워지지 않을 수 있습니다. 세션과 상호작용한 경우에도 가능하며, 특히 adk.Runner를 사용하는 경우에 가능합니다. 이 문제를 해결하려면 add_session_to_memory를 호출하는 환경으로 세션과 이벤트를 가져오세요.

session = await session_service.get_session(
    app_name=app_name,
    user_id=user_id,
    session_id=session.id
)
# Confirm that events are populated.
print(session.events)
memory_service.add_session_to_memory(session)

메모리 생성 LRO가 완료되었는지 확인

메모리 생성은 장기 실행 작업 (LRO)이며 완료하는 데 몇 초 정도 걸릴 수 있습니다. 정확한 지연 시간은 입력 대화의 길이와 처리되는 정보의 복잡성에 따라 달라집니다.

Agent Engine SDK를 사용하는 경우 메모리 생성은 기본적으로 차단 작업입니다. 따라서 client.generate_memories(...)는 메모리 생성 LRO가 완료될 때까지 코드 실행을 차단합니다.

ADK의 VertexAiMemoryBankService를 사용하는 경우 add_session_to_memory은 차단되지 않는 작업입니다. 메모리 생성만 트리거하고 LRO가 완료될 때까지 기다리지 않습니다.

작업 응답에서 오류 찾기

LRO 응답에는 메모리 생성이 실패했음을 나타내는 오류 메시지가 포함될 수 있습니다. 예를 들면 다음과 같습니다.

RuntimeError: Failed to generate memory: {'code': 3, 'message': 'Failed to extract memories: Please use a valid role: user, model.'}

일반적인 오류는 다음과 같습니다.

  • 사용한 만큼만 지불 요금제를 사용할 때 Gemini의 리소스 소진 오류. 동적 공유 할당량 (DSQ)을 사용하면 사용량에 사전 정의된 할당량 제한이 없습니다. 메모리 뱅크의 가용성을 높이고 프로덕션 워크로드의 서비스 수준을 예측 가능하게 하려면 프로비저닝된 처리량을 참고하세요.

  • Content에서 modeluser 이외의 역할을 사용하는 등 잘못된 소스 데이터

대화가 의미 있었는지 확인

프로세스가 트리거되고, 성공적으로 완료되었으며, 오류가 발생하지 않은 경우 메모리 뱅크가 소스 대화에 지속할 만큼 의미 있는 정보가 없다고 판단했을 수 있습니다.

메모리 뱅크는 '메모리 주제'를 사용하여 의미 있는 정보를 식별합니다. 대화의 콘텐츠가 구성된 주제와 일치하지 않으면 추억이 생성되지 않습니다.

정보가 유지되어야 한다고 생각되면 메모리 뱅크 인스턴스의 구성을 맞춤설정하여 기대치에 더 잘 맞출 수 있습니다.

메모리 주제 구성을 사용하면 지속적으로 저장해야 할 정보를 정의할 수 있습니다. 퓨샷 예시를 구성하면 어떤 정보를 어떤 표현으로 유지해야 하는지 미묘한 차이를 학습시켜 메모리 뱅크 인스턴스가 기대에 부응하도록 적응할 수 있습니다. 메모리 뱅크 맞춤설정은 말하기와 보여주기라는 두 단계로 생각할 수 있습니다. 메모리 주제는 메모리 뱅크에 어떤 정보를 유지해야 하는지 알려줍니다. 퓨샷은 메모리 뱅크에 특정 메모리를 생성해야 하는 정보의 종류를 보여주어 메모리 뱅크가 사용자가 이해하기를 바라는 패턴, 미묘한 차이, 표현을 학습하도록 지원합니다.