에이전트 배포
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Vertex AI Agent Engine에 에이전트를 배포하려면 다음 두 가지 기본 방법 중에서 선택하세요.
에이전트 객체에서 배포: Colab과 같은 환경에서 대화형 개발에 적합하며 메모리 내 local_agent 객체를 배포할 수 있습니다. 이 방법은 복잡하고 직렬화할 수 없는 구성요소가 포함되지 않은 구조의 에이전트에 가장 적합합니다.
소스 파일에서 배포: 이 방법은 CI/CD 파이프라인, Terraform과 같은 코드형 인프라 도구와 같은 자동화된 워크플로에 적합하며 완전한 선언적 자동 배포를 지원합니다. 로컬 소스 코드에서 직접 에이전트를 배포하며 Cloud Storage 버킷이 필요하지 않습니다.
에이전트를 배포하는 데 필요한 패키지 집합을 제공합니다. 패키지 집합은 pip로 설치할 항목 목록이거나 요구사항 파일 형식을 따르는 파일의 경로일 수 있습니다.
다음 권장사항을 따르세요.
재현 가능한 빌드의 경우 패키지 버전을 고정합니다. 추적해야 하는 일반 패키지에는 google-cloud-aiplatform, cloudpickle, langchain, langchain-core, langchain-google-vertexai, pydantic이 있습니다.
에이전트의 종속 항목 수를 최소화합니다. 이렇게 하면 종속 항목과 에이전트를 업데이트할 때 브레이킹 체인지 수가 줄어듭니다.
에이전트에 종속 항목이 없으면 requirements를 None으로 설정할 수 있습니다.
requirements=None
에이전트에 프레임워크별 템플릿이 사용되는 경우 에이전트를 개발할 때 가져온 SDK 버전 (예: 1.112.0)을 지정해야 합니다.
requirements=["google-cloud-aiplatform[agent_engines,adk]","cloudpickle==3.0","python_package.whl",# install from the whl file that was uploaded]extra_packages=["path/to/python_package.whl"]# bundle the whl file for uploading
환경 변수 정의
에이전트가 사용하는 환경 변수가 있는 경우 env_vars= 인수에 이를 지정할 수 있습니다. 에이전트가 환경 변수를 사용하지 않는 경우 이를 None으로 설정할 수 있습니다.
container_concurrency: 각 컨테이너 및 에이전트 서버의 동시 실행입니다. 권장값은 2 * cpu + 1입니다. 기본값은 9입니다.
remote_agent=client.agent_engines.create(agent=local_agent,config={"min_instances":1,"max_instances":10,"resource_limits":{"cpu":"4","memory":"8Gi"},"container_concurrency":9,# ... other configs})
agent_framework를 지정하지 않으면 에이전트 객체에서 배포하는 경우 값이 자동 감지됩니다. 소스 파일에서 배포하는 경우 agent_framework은 기본적으로 `custom`으로 설정됩니다.
Cloud Storage 폴더 정의
스테이징 아티팩트가 Cloud Storage 버킷의 기존 폴더에 해당하면 이를 덮어씁니다.
필요한 경우 스테이징 아티팩트의 Cloud Storage 폴더를 지정할 수 있습니다. 기본 폴더에서 파일을 덮어써도 괜찮다면 gcs_dir_name을 None로 설정할 수 있습니다.
gcs_dir_name=None
개발, 스테이징, 프로덕션과 같은 여러 환경에서 파일을 덮어쓰지 않도록 하려면 해당 폴더를 설정하고 다음과 같이 아티팩트를 스테이징할 폴더를 지정하면 됩니다.
description="""An agent that has access to tools for looking up the exchange rate.If you run into any issues, please contact the dev team."""
라벨 정의
ReasoningEngine 리소스의 라벨을 키-값 문자열 쌍의 사전으로 설정할 수 있습니다. 다음은 그 예시입니다.
labels={"author":"username","version":"latest"}
기본 상담사 ID 구성
에이전트를 만들 때 Vertex AI Agent Engine에 배포하는 에이전트에 고유한 ID를 프로비저닝할 수 있습니다. ID는 Vertex AI Agent Engine의 에이전트 리소스 ID에 연결되며 에이전트를 개발하는 데 사용한 에이전트 프레임워크와는 독립적입니다.
이렇게 하려면 Agent Engine 인스턴스를 만들거나 업데이트할 때 커스텀 서비스 계정의 이메일을 service_account로 지정합니다. 예를 들면 다음과 같습니다.
# Create a new instanceclient.agent_engines.create(agent=local_agent,config={"service_account":"my-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)# Update an existing instanceresource_name="projects/{project_id}/locations/{location}/reasoningEngines/{reasoning_engine_id}"client.agent_engines.update(name=resource_name,agent=local_agent,config={"service_account":"my-new-custom-service-account@my-project.iam.gserviceaccount.com",# ...},)
NETWORK_ATTACHMENT은 네트워크 연결의 이름 또는 전체 경로입니다. 네트워크 연결이 에이전트 엔진을 사용하는 위치와 다른 프로젝트(예: 공유 VPC 호스트 프로젝트)에 생성된 경우 네트워크 연결의 전체 경로를 전달해야 합니다.
DOMAIN_SUFFIX는 비공개 DNS 피어링을 설정할 때 만든 비공개 Cloud DNS 영역의 DNS 이름입니다.
TARGET_PROJECT는 VPC 네트워크를 호스팅하는 프로젝트입니다. 네트워크 연결 프로젝트와 다를 수 있습니다.
TARGET_NETWORK는 VPC 네트워크 이름입니다.
단일 공유 네트워크 연결 또는 고유한 전용 네트워크 연결을 사용하도록 여러 에이전트를 구성할 수 있습니다. 공유 네트워크 연결을 사용하려면 생성하는 각 에이전트의 psc_interface_config에 동일한 네트워크 연결을 제공하세요.
고객 관리 암호화 키 구성
커스텀 키를 사용하여 에이전트의 저장 데이터를 암호화할 수 있습니다. 자세한 내용은 Agent Engine 고객 관리 암호화 키 (CMEK)를 참고하세요.
에이전트의 커스텀 키 (CMEK)를 구성하려면 Agent Engine 인스턴스를 만들 때 encryption_spec 파라미터에 키 리소스 이름을 제공해야 합니다.
# The fully qualified key namekms_key_name="projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"remote_agent=client.agent_engines.create(agent=local_agent,config={"encryption_spec":{"kms_key_name":kms_key_name},# ... other parameters},)
AgentEngine 인스턴스 만들기
이 섹션에서는 에이전트를 배포하기 위한 AgentEngine 인스턴스를 만드는 방법을 설명합니다.
Vertex AI Agent Engine에 에이전트를 배포하려면 다음 방법 중에서 선택하세요.
양방향 개발을 위해 에이전트 객체에서 배포
자동화된 파일 기반 워크플로를 위해 소스 파일에서 배포합니다.
에이전트 객체에서
Vertex AI에 에이전트를 배포하려면 client.agent_engines.create를 사용하여 local_agent 객체를 선택적 구성과 함께 전달합니다.
Vertex AI에서 소스 파일로 배포하려면 구성 딕셔너리에 source_packages, entrypoint_module, entrypoint_object, class_methods를 다른 선택적 구성과 함께 제공하여 client.agent_engines.create를 사용하세요. 이 방법을 사용하면 에이전트 객체나 Cloud Storage 버킷을 전달할 필요가 없습니다.
entrypoint_object (필수, str): 에이전트 애플리케이션을 나타내는 entrypoint_module 내 호출 가능 객체의 이름입니다 (예: root_agent).
class_methods (필수, list[dict]): 에이전트의 노출된 메서드를 정의하는 사전 목록입니다. 각 사전에는 name (필수), api_mode (필수), parameters 필드가 포함됩니다. 맞춤 에이전트의 메서드에 관한 자세한 내용은 지원되는 작업 목록을 참고하세요.
예를 들면 다음과 같습니다.
"class_methods":[{"name":"method_name","api_mode":"",# Possible options are: "", "async", "async_stream", "stream", "bidi_stream""parameters":{"type":"object","properties":{"param1":{"type":"string","description":"Description of param1"},"param2":{"type":"integer"}},"required":["param1"]}}]```
requirements_file (선택사항, str): source_packages에 지정된 경로 내의 pip 요구사항 파일 경로입니다. 패키지된 소스의 루트 디렉터리에 있는 requirements.txt가 기본값입니다.
배포에는 몇 분이 걸리며, 이 시간 동안 백그라운드에서 다음 단계가 진행됩니다.
Vertex AI SDK는 source_packages에 지정된 경로의 tar.gz 아카이브를 만듭니다.
이 보관 파일은 인코딩되어 Vertex AI API로 직접 전송됩니다.
Vertex AI Agent Engine 서비스가 보관 파일을 수신하고, 압축을 풀고, requirements_file (제공된 경우)에서 종속 항목을 설치하고, 지정된 entrypoint_module 및 entrypoint_object을 사용하여 에이전트 애플리케이션을 시작합니다.
배포 지연 시간은 필요한 패키지를 설치하는 데 걸리는 총 시간에 따라 달라집니다. 배포된 후 remote_agent은 Vertex AI에서 실행되는 에이전트 애플리케이션의 인스턴스에 해당하며 이를 쿼리하거나 삭제할 수 있습니다.
remote_agent 객체는 다음 속성을 포함하는 AgentEngine 클래스에 해당합니다.
배포된 에이전트에 관한 정보가 포함된 remote_agent.api_resourceagent.operation_schemas()를 호출하여 에이전트가 지원하는 작업 목록을 반환할 수도 있습니다. 자세한 내용은 지원되는 작업 나열을 참고하세요.
fromgoogle.cloud.aiplatformimportvertexai# Example file structure:# /agent_directory# ├── agent.py# ├── requirements.txt# Example agent_directory/agent.py:# class MyAgent:# def ask(self, question: str) -> str:# return f"Answer to {question}"# root_agent = MyAgent()remote_agent=client.agent_engines.create(config={"display_name":"My Agent","description":"An agent deployed from a local source.","source_packages":["agent_directory"],"entrypoint_module":"agent_directory.agent","entrypoint_object":"root_agent","requirements_file":"requirements.txt","class_methods":[{"name":"ask","api_mode":"","parameters":{"type":"object","properties":{"question":{"type":"string"}},"required":["question"]}},],# Other optional configs:# "env_vars": {...},# "service_account": "...",})
(선택사항) 에이전트 리소스 ID 가져오기
배포된 각 에이전트에는 고유한 식별자가 포함됩니다. 다음 명령어를 실행하여 배포된 에이전트의 리소스 이름을 가져올 수 있습니다.