이 가이드에서는 Google ADK(Agent Development Kit)를 사용하여 에이전트를 빌드하고 실행하는 방법을 알아봅니다. agent-engine-sdk-adk 패키지는 ADK와 MongoDB Atlas 에이전트 엔진 간의 어댑터입니다. 이 어댑터는 ADK 에이전트, 워크플로 노드 및 도구 호출을 플랫폼의 오케스트레이션 엔진이 실행하고 기록하는 작업으로 변환합니다.
어댑터는 지속형이므로 ADK 에이전트는 지속형 워크플로 모드에서 실행됩니다. ADK가 아닌 오케스트레이션 엔진이 각 세션의 상태를 저장합니다. 또한 플랫폼은 각 모델 호출 및 도구 호출의 결과를 저장합니다. 재개된 실행은 실행 조치를 반복하는 대신 기록된 결과를 재생합니다.
Google ADK 고려 사항
Atlas 에이전트 엔진에서 ADK 에이전트를 빌드할 때는 다음 주요 점을 고려하세요.
Google ADK SDK는 Python에서만 사용할 수 있습니다. TypeScript로 에이전트를 빌드하려면 TypeScript SDK 가이드를 참조하세요.
에이전트는
agent.yaml파일에서features.durable_workflow값을true로 설정해야 합니다. 이 필드를 생략하거나false으로 설정하면 첫 번째 호출이 실패합니다.agent.yaml파일에서 사용 가능한 필드에 대해 자세히 알아보려면 에이전트.yaml 스키마를 참조하세요.agent-engine-sdk-adk패키지는 ADKBaseAgent또는 ADK 2Workflow을(를) 에이전트의 루트로 허용합니다.
전제 조건
시작하기 전에 다음 필수 구성 요소가 있는지 확인하세요.
Python 3.11 이상.
uv 패키지 관리자.
agentengineCLI를 설치하고 인증했습니다. 방법을 학습하려면 프로젝트 생성을 참조하세요.Google ADK 버전 2.9.0 이상. ADK 설치 방법을 학습하려면 ADK 설치 설명서를 참조하세요.
LLM 제공자의 API 키입니다.
agentengine create명령은 키를 입력하라는 메시지를 표시하고LLM_API_KEY로.env파일에 저장합니다.
단계
ADK 스타터 템플릿에서 프로젝트를 생성합니다.
ADK 템플릿 중 하나를 사용하여 agentengine create 명령을 실행합니다.
agentengine create --template hello-world-agent-adkhello-world-agent-adk 템플릿은 최소한의 에이전트를 생성합니다. insurance-agent-adk 템플릿은 보험 도메인 에이전트를 생성합니다. 사용 가능한 모든 템플릿과 agentengine create 명령 옵션에 대해 알아보려면 지원되는 템플릿을 참조하세요.
템플릿 코드를 검토합니다.
프로젝트에서 진입점 모듈을 엽니다. 템플릿은 이미 도구를 등록하고 에이전트를 빌드합니다. 이 모듈은 다음 SDK 기능을 사용합니다.
@app.tool(): 함수를 플랫폼의 도구로 등록합니다. 데코레이터는 도구를 에이전트에 자동으로 노출하지 않습니다.@app.entrypoint: ADK 에이전트를 반환하는 함수를 표시합니다.app.llm(): 플랫폼이 모든 모델 호출을 감사하도록 ADKBaseLlm인스턴스를 래핑합니다.app.tools(): 플랫폼의 보안 래퍼 (wrapper)가 적용된 등록된 도구를 반환합니다.
중요
@app.tool()로 데코레이트한 함수가 아니라 app.tools() 함수가 반환하는 도구를 에이전트에 전달하세요.
에이전트를 로컬에서 실행합니다.
에이전트 디렉토리에서 다음 명령을 실행하여 로컬 개발 환경을 시작합니다.
agentengine dev up핫 리로드 및 격리 모드에 대해 알아보려면 에이전트 로컬 실행 및 테스트를 참조하세요.
에이전트를 배포합니다.
다음 명령을 실행하여 한 단계로 에이전트를 빌드하고 배포합니다.
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 |
|---|---|
일반 | 지원됨 |
중첩된 직렬 및 병렬 그래프를 포함하여 정적으로 구성된 | 지원됨 |
구성된 | 지원됨 |
구성된 전송이 있는 워크플로 에이전트 노드 | 에이전트가 다음을 사용할 때 지원됩니다. |
| 실행 전에 거부되었습니다. 대신 구성된 |
| 중첩된 에이전트 또는 노드가 시작되기 전에 오류와 함께 거부되었습니다. |
기타 플랫폼 기능 추가
다음 플랫폼 기능은 ADK 에이전트와 함께 작동합니다.
agent.yaml파일의mcp필드에 선언하는 원격 MCP 서버입니다. 플랫폼은 스타트업 시 도구를 검색하고app.tools()에서 반환합니다. 자세한 내용은 원격 MCP 서버 사용을 참조하세요.가드레일 출력 검토.
require_review조치가 포함된llm_output가드레일은 검토자가 출력을 승인하거나 거부할 때까지 모델 호출을 일시 중지합니다.resume_map요청을 통해 출력을 검토합니다.