AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

Google ADK로 에이전트 빌드

이 가이드에서는 Google ADK(Agent Development Kit)를 사용하여 에이전트를 빌드하고 실행하는 방법을 알아봅니다. agent-engine-sdk-adk 패키지는 ADK와 MongoDB Atlas 에이전트 엔진 간의 어댑터입니다. 이 어댑터는 ADK 에이전트, 워크플로 노드 및 도구 호출을 플랫폼의 오케스트레이션 엔진이 실행하고 기록하는 작업으로 변환합니다.

어댑터는 지속형이므로 ADK 에이전트는 지속형 워크플로 모드에서 실행됩니다. ADK가 아닌 오케스트레이션 엔진이 각 세션의 상태를 저장합니다. 또한 플랫폼은 각 모델 호출 및 도구 호출의 결과를 저장합니다. 재개된 실행은 실행 조치를 반복하는 대신 기록된 결과를 재생합니다.

Atlas 에이전트 엔진에서 ADK 에이전트를 빌드할 때는 다음 주요 점을 고려하세요.

  • Google ADK SDK는 Python에서만 사용할 수 있습니다. TypeScript로 에이전트를 빌드하려면 TypeScript SDK 가이드를 참조하세요.

  • 에이전트는 agent.yaml 파일에서 features.durable_workflow 값을 true로 설정해야 합니다. 이 필드를 생략하거나 false으로 설정하면 첫 번째 호출이 실패합니다. agent.yaml 파일에서 사용 가능한 필드에 대해 자세히 알아보려면 에이전트.yaml 스키마를 참조하세요.

  • agent-engine-sdk-adk 패키지는 ADK BaseAgent 또는 ADK 2 Workflow을(를) 에이전트의 루트로 허용합니다.

시작하기 전에 다음 필수 구성 요소가 있는지 확인하세요.

  • Python 3.11 이상.

  • uv 패키지 관리자.

  • agentengine CLI를 설치하고 인증했습니다. 방법을 학습하려면 프로젝트 생성을 참조하세요.

  • Google ADK 버전 2.9.0 이상. ADK 설치 방법을 학습하려면 ADK 설치 설명서를 참조하세요.

  • LLM 제공자의 API 키입니다. agentengine create 명령은 키를 입력하라는 메시지를 표시하고 LLM_API_KEY로 .env 파일에 저장합니다.

1

ADK 템플릿 중 하나를 사용하여 agentengine create 명령을 실행합니다.

agentengine create --template hello-world-agent-adk

hello-world-agent-adk 템플릿은 최소한의 에이전트를 생성합니다. insurance-agent-adk 템플릿은 보험 도메인 에이전트를 생성합니다. 사용 가능한 모든 템플릿과 agentengine create 명령 옵션에 대해 알아보려면 지원되는 템플릿을 참조하세요.

2

프로젝트에서 진입점 모듈을 엽니다. 템플릿은 이미 도구를 등록하고 에이전트를 빌드합니다. 이 모듈은 다음 SDK 기능을 사용합니다.

  • @app.tool(): 함수를 플랫폼의 도구로 등록합니다. 데코레이터는 도구를 에이전트에 자동으로 노출하지 않습니다.

  • @app.entrypoint: ADK 에이전트를 반환하는 함수를 표시합니다.

  • app.llm(): 플랫폼이 모든 모델 호출을 감사하도록 ADK BaseLlm 인스턴스를 래핑합니다.

  • app.tools(): 플랫폼의 보안 래퍼 (wrapper)가 적용된 등록된 도구를 반환합니다.

중요

@app.tool()로 데코레이트한 함수가 아니라 app.tools() 함수가 반환하는 도구를 에이전트에 전달하세요.

3

에이전트 디렉토리에서 다음 명령을 실행하여 로컬 개발 환경을 시작합니다.

agentengine dev up

핫 리로드 및 격리 모드에 대해 알아보려면 에이전트 로컬 실행 및 테스트를 참조하세요.

4

다음 명령을 실행하여 한 단계로 에이전트를 빌드하고 배포합니다.

agentengine deploy --auto

배포된 에이전트에는 LLM API 키도 필요합니다. 배포된 에이전트에 보안 비밀을 제공하는 방법을 알아보려면 클라우드 보안 비밀 프로비저닝을 참조하세요.

빌드와 배포를 별도의 단계로 수행하는 방법을 알아보려면 에이전트 이미지 빌드 및 빌드 배포를 참조하세요.

사람이 도구 호출을 승인할 때까지 실행을 일시 중지하려면 호출 가능한 도구 함수를 ADK FunctionTool 클래스로 래핑하고 생성자에 require_confirmation=True 옵션을 전달하세요. 승인 외의 입력을 수집하기 위해 실행을 일시 중지하려면 ADK LongRunningFunctionTool 클래스를 사용하세요. @app.tool()로 데코레이팅한 원시 함수가 아니라 app.tools()이 반환하는 호출 가능한 도구 함수를 래핑하세요.

다음 예시는 app.tools()이 반환하는 각 호출 가능한 도구를 FunctionTool 클래스로 래핑하여 모든 도구 호출이 실행되기 전에 사람의 승인을 기다리도록 합니다.

import os from google.adk.agents import LlmAgentfrom google.adk.models.lite_llm import LiteLlmfrom google.adk.tools.function_tool import FunctionTool @app.entrypointdef build_agent(): return LlmAgent( name="daily", instruction="You are a helpful assistant.", model=app.llm( LiteLlm( model="<model-name>", api_key=os.environ["LLM_API_KEY"], ) ), tools=[ FunctionTool(tool, require_confirmation=True) for tool in app.tools() ], )

참고

app.tools()이 반환하는 원격 MCP 도구는 일반 호출 가능 객체가 아닌 ADK BaseTool 객체이므로 FunctionTool 클래스로 래핑할 수 없습니다. 플랫폼은 Orchestration 엔진 정책 및 가드레일을 통해 MCP 도구 호출을 관리합니다.

확인 답변에는 ADK 객체 구문 {confirmed: true|false}이 포함되어 있습니다. 플랫폼은 각 일시 중지를 Orchestration 엔진 활동으로 기록하고 활동 ID를 인터럽트 ID로 사용합니다.

일시 중지된 실행을 재개하려면 동일한 세션의 invoke 엔드포인트로 요청을 보냅니다. 요청에 각 보류 중인 일시 중지의 ID를 답변에 매핑하는 resume_map 객체를 포함합니다. 동일한 요청에서 보류 중인 모든 일시 중지에 답변해야 합니다. ID를 찾으려면 일시 중지된 실행의 suspend_context.interrupts 목록을 읽으세요. 자세히 알아보려면 Invocation API를 참조하세요.

다음 예시 요청 본문은 두 개의 보류 중인 일시 중지에 대한 답변입니다. 첫 번째 답변은 확인이 필요한 도구 호출을 승인합니다. 두 번째 답변은 다른 일시 중지된 도구가 요청한 입력을 반환합니다.

{ "resume_map": { "<activity-id-1>": { "confirmed": true }, "<activity-id-2>": "us-east-1" }}

CLI에서 다시 시작하려면 agentengine invoke 명령의 --session 및 --resume 옵션을 사용하세요. 자세한 학습 내용은 CLI에서 에이전트 호출을 참조하세요.

참고

ADK 에이전트는 지속형 워크플로 모드에서 실행되므로 Human-in-the-Loop 가이드에 설명된 decision 요청 본문이 아닌 resume_map 요청으로 재개해야 합니다.

agent-engine-sdk-adk 패키지는 에이전트가 시작될 때 전체 Workflow 및 에이전트 구조가 필요합니다. 플랫폼은 해당 구조의 경로별로 각 단계를 기록합니다. 다음 표에는 agent-engine-sdk-adk 패키지에서 지원하는 ADK 기능이 나열되어 있습니다.

ADK 기능
Support

일반 BaseAgent 루트

지원됨

중첩된 직렬 및 병렬 그래프를 포함하여 정적으로 구성된 Workflow 노드

지원됨

구성된 sub_agents 매개변수. 여기서 모델은 transfer_to_agent 함수를 호출하여 실행할 하위 에이전트를 선택합니다.

지원됨

구성된 전송이 있는 워크플로 에이전트 노드

에이전트가 다음을 사용할 때 지원됩니다. mode="chat"

AgentTool 클래스로 래핑된 에이전트

실행 전에 거부되었습니다. 대신 구성된 sub_agents을(를) 사용하세요.

NodeTool 런타임에 run_node()에 전달된 노드

중첩된 에이전트 또는 노드가 시작되기 전에 오류와 함께 거부되었습니다.

다음 플랫폼 기능은 ADK 에이전트와 함께 작동합니다.

  • agent.yaml 파일의 mcp 필드에 선언하는 원격 MCP 서버입니다. 플랫폼은 스타트업 시 도구를 검색하고 app.tools()에서 반환합니다. 자세한 내용은 원격 MCP 서버 사용을 참조하세요.

  • 가드레일 출력 검토. require_review 조치가 포함된 llm_output 가드레일은 검토자가 출력을 승인하거나 거부할 때까지 모델 호출을 일시 중지합니다. resume_map 요청을 통해 출력을 검토합니다.