에이전트를 쿼리하는 코드는 로컬에서 실행 중인지 또는 원격으로 배포되었는지와 관계없이 동일합니다. 따라서 이 페이지에서 agent
라는 용어는 local_agent
또는 remote_agent
를 상호 교환적으로 나타냅니다. 지원되는 작업 집합은 프레임워크마다 다르므로 프레임워크별 템플릿 사용 안내를 제공합니다.
프레임워크 | 설명 |
---|---|
LangChain | 사전 정의된 구성 및 추상화로 인해 기본 사용 사례에 더 쉽게 사용할 수 있습니다. |
LangGraph | 고급 인간 참여형(Human-In-The-Loop) 및 되감기/재생 기능을 갖춘 그래프 기반 워크플로 정의 접근 방식 |
AG2 (이전의 AutoGen) | AG2는 LLM 워크플로를 빌드하기 위한 고급 추상화로 멀티 에이전트 대화 프레임워크를 제공합니다. |
프레임워크별 템플릿 중 하나를 기반으로 하지 않는 맞춤 에이전트의 경우 다음 단계를 따르세요.
- 사용자 인증
- 상담사 인스턴스 가져오기
- 지원되는 작업을 조회합니다.
- 에이전트에 쿼리합니다.
- (해당하는 경우) 상담사의 응답을 스트리밍합니다.
1단계: 사용자 인증
환경 설정과 동일한 안내를 따릅니다.
2단계: 에이전트 인스턴스 가져오기
상담사를 쿼리하려면 먼저 상담사의 인스턴스가 필요합니다. 에이전트의 새 인스턴스를 만들거나 기존 인스턴스를 가져올 수 있습니다.
특정 리소스 ID에 해당하는 에이전트를 가져오려면 다음 단계를 따르세요.
Python용 Vertex AI SDK
다음 코드를 실행합니다.
from vertexai import agent_engines
agent = agent_engines.get(RESOURCE_ID)
또는 에이전트의 전체 리소스 이름을 제공할 수 있습니다.
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
요청
다음 코드를 실행합니다.
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
이 섹션의 나머지 부분에서는 agent
라는 인스턴스가 있다고 가정합니다.
3단계: 지원되는 작업
로컬에서 상담사를 개발할 때는 상담사가 지원하는 작업에 액세스하고 이를 알 수 있습니다. 배포된 에이전트를 사용하려면 에이전트에서 지원하는 작업을 열거하면 됩니다.
Python용 Vertex AI SDK
다음 코드를 실행합니다.
agent.operation_schemas()
요청
다음 코드를 실행합니다.
import json
json.loads(response.content).get("spec").get("classMethods")
REST
curl 요청에 대한 응답에서 spec.class_methods
로 표시됩니다.
각 작업의 스키마는 호출할 수 있는 상담사의 메서드 정보를 문서화하는 사전입니다. 다음은 동기 작업의 작업 스키마 예입니다.
다음 명령어는 JSON 형식으로 remote_app
객체의 작업에 해당하는 스키마 목록을 제공합니다.
agent.operation_schemas()
예를 들어 다음은 LangchainAgent
의 query
작업에 관한 스키마입니다.
{'api_mode': '',
'name': 'query',
'description': """Queries the Agent with the given input and config.
Args:
input (Union[str, Mapping[str, Any]]):
Required. The input to be passed to the Agent.
config (langchain_core.runnables.RunnableConfig):
Optional. The config (if any) to be used for invoking the Agent.
Returns:
The output of querying the Agent with the given input and config.
""", ' ',
'parameters': {'$defs': {'RunnableConfig': {'description': 'Configuration for a Runnable.',
'properties': {'configurable': {...},
'run_id': {...},
'run_name': {...},
...},
'type': 'object'}},
'properties': {'config': {'nullable': True},
'input': {'anyOf': [{'type': 'string'}, {'type': 'object'}]}},
'required': ['input'],
'type': 'object'}}
각 항목의 의미는 다음과 같습니다.
name
는 작업 이름입니다 (예:query
라는 작업의 경우agent.query
).api_mode
는 작업의 API 모드입니다 (동기의 경우""
, 스트리밍의 경우"stream"
).description
는 메서드의 문서 문자열을 기반으로 한 작업 설명입니다.parameters
는 OpenAPI 스키마 형식의 입력 인수의 스키마입니다.
4단계: 상담사 쿼리
지원되는 작업 (예: query
) 중 하나를 사용하여 상담사를 쿼리하려면 다음 단계를 따르세요.
Python용 Vertex AI SDK
agent.query(input={"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]})
요청
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
requests.post(
f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}})
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{
"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}
}'
쿼리 응답은 로컬 애플리케이션 테스트 출력과 비슷한 문자열입니다.
{"input": "What is the exchange rate from US dollars to Swedish currency?",
# ...
"output": "For 1 US dollar you will get 10.7345 Swedish Krona."}
5단계: 상담사의 응답 스트리밍
해당하는 경우 작업 중 하나 (예: stream_query
)를 사용하여 에이전트의 응답을 스트리밍할 수 있습니다.
Python용 Vertex AI SDK
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
agent.stream_query(input={"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]})
요청
from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests
def get_identity_token():
credentials, _ = google_auth.default()
auth_request = google_requests.Request()
credentials.refresh(auth_request)
return credentials.token
requests.post(
f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:streamQuery",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}}),
stream=True,
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:streamQuery?alt=sse -d '{
"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}
}'
Agent Engine은 반복적으로 생성된 객체의 시퀀스로 응답을 스트리밍합니다. 예를 들어 세 개의 응답 세트는 다음과 같이 표시될 수 있습니다.
{'actions': [{'tool': 'get_exchange_rate', ...}]} # first response
{'steps': [{'action': {'tool': 'get_exchange_rate', ...}}]} # second response
{'output': 'The exchange rate is 11.0117 SEK per USD as of 2024-12-03.'} # final response