콘텐츠로 이동

반영 및 재시도 도구 플러그인

ADK에서 지원Python v1.16.0

반영 및 재시도 도구 플러그인은 에이전트가 ADK 도구의 오류 응답에서 복구하고 도구 요청을 자동으로 재시도하는 데 도움이 될 수 있습니다. 이 플러그인은 도구 오류를 가로채고, 반영 및 수정을 위해 AI 모델에 구조화된 지침을 제공하며, 구성 가능한 한도까지 작업을 재시도합니다. 이 플러그인은 다음 기능을 포함하여 에이전트 워크플로에 더 많은 복원력을 구축하는 데 도움이 될 수 있습니다.

  • 동시성 안전: 잠금을 사용하여 병렬 도구 실행을 안전하게 처리합니다.
  • 구성 가능한 범위: 호출당(기본값) 또는 전역적으로 오류를 추적합니다.
  • 세분화된 추적: 오류 횟수는 도구별로 추적됩니다.
  • 사용자 지정 오류 추출: 일반 도구 응답에서 오류 감지를 지원합니다.

반영 및 재시도 플러그인 추가

아래와 같이 ADK 프로젝트의 앱 객체의 플러그인 설정에 이 플러그인을 추가하여 ADK 워크플로에 추가합니다.

from google.adk.apps.app import App
from google.adk.plugins import ReflectAndRetryToolPlugin

app = App(
    name="my_app",
    root_agent=root_agent,
    plugins=[
        ReflectAndRetryToolPlugin(max_retries=3),
    ],
)

이 구성을 사용하면 에이전트가 호출한 도구가 오류를 반환하는 경우 요청이 업데이트되고 도구당 최대 3번까지 다시 시도됩니다.

구성 설정

반영 및 재시도 플러그인에는 다음과 같은 구성 옵션이 있습니다.

  • max_retries: (선택 사항) 시스템이 오류가 아닌 응답을 받기 위해 시도하는 총 추가 시도 횟수입니다. 기본값은 3입니다.
  • throw_exception_if_retry_exceeded: (선택 사항) False로 설정하면 최종 재시도 시도가 실패하더라도 시스템에서 오류를 발생시키지 않습니다. 기본값은 True입니다.
  • tracking_scope: (선택 사항)
    • TrackingScope.INVOCATION: 단일 호출 및 사용자에 대한 도구 오류를 추적합니다. 이 값은 기본값입니다.
    • TrackingScope.GLOBAL: 모든 호출 및 모든 사용자에 대한 도구 오류를 추적합니다.

고급 구성

ReflectAndRetryToolPlugin 클래스를 확장하여 이 플러그인의 동작을 추가로 수정할 수 있습니다. 다음 코드 샘플은 오류 상태의 응답을 선택하여 동작을 간단하게 확장하는 방법을 보여줍니다.

class CustomRetryPlugin(ReflectAndRetryToolPlugin):
  async def extract_error_from_result(self, *, tool, tool_args,tool_context,
  result):
    # 응답 내용을 기반으로 오류 감지
    if result.get('status') == 'error':
        return result
    return None  # 오류 감지되지 않음

# 이 수정된 플러그인을 앱 객체에 추가합니다.
error_handling_plugin = CustomRetryPlugin(max_retries=5)

다음 단계

반영 및 재시도 플러그인을 사용하는 전체 코드 샘플은 다음을 참조하십시오.