In addition to the general instructions for using an agent,
this page describes features that are specific to AG2Agent.
Before you begin
This tutorial assumes that you have read and followed the instructions in:
- Develop an AG2 agent: to develop
agentas an instance ofAG2Agent. - User authentication to authenticate as a user for querying the agent.
- Import and initialize the SDK to initialize the client for getting a deployed instance (if needed).
Get an instance of an agent
To query a AG2Agent, you need to first
create a new instance or
get an existing instance.
To get the AG2Agent corresponding to a specific resource ID:
Vertex AI SDK for Python
Run the following code:
import vertexai
client = vertexai.Client( # For service interactions via client.agent_engines
project="PROJECT_ID",
location="LOCATION",
)
agent = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
print(agent)
where
PROJECT_IDis the Google Cloud project ID under which you develop and deploy agents, andLOCATIONis one of the supported regions.RESOURCE_IDis the ID of the deployed agent as areasoningEngineresource.
Python requests library
Run the following code:
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 API
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_IDWhen using the Vertex AI SDK for Python, the agent object corresponds to an
AgentEngine class that contains the following:
- an
agent.api_resourcewith information about the deployed agent. You can also callagent.operation_schemas()to return the list of operations that the agent supports. See Supported operations for details. - an
agent.api_clientthat allows for synchronous service interactions - an
agent.async_api_clientthat allows for asynchronous service interactions
The rest of this section assumes that you have an AgentEngine instance, named as agent.
Supported operations
The following operations are supported for AG2Agent:
query: for getting a response to a query synchronously.
The query method support the arguments:
input: the message to be sent to the agent.max_turns: the maximum number of conversation turns allowed. When using tools, a minimum ofmax_turns=2is required: one turn to generate tool arguments and a second to execute the tool.
Query the agent
The query() method provides a simplified way to interact with the agent. A typical call looks like this:
response = agent.query(input="What is the exchange rate from US dollars to Swedish currency?", max_turns=2)
This method handles the underlying communication with the agent and returns the agent's final response as a dictionary. It is equivalent to the following (in full form):
from autogen import ConversableAgent
import dataclasses
import json
input_message: str = "What is the exchange rate from US dollars to Swedish currency?"
max_turns: int = 2
with agent._runnable._create_or_get_executor(
tools=agent._ag2_tool_objects, # Use the agent's existing tools
agent_name="user", # Default
agent_human_input_mode="NEVER", # query() enforces this
) as executor:
chat_result = executor.initiate_chat(
agent._runnable,
message=input_message,
max_turns=max_turns,
clear_history=False, # Default
summary_method="last_msg" # Default
)
response = json.loads(
json.dumps(dataclasses.asdict(chat_result)) # query() does this conversion
)
You can customize the agent's behavior beyond input and max_turns by passing additional keyword arguments to query().
response = agent.query(
input="What is the exchange rate from US dollars to Swedish currency?",
max_turns=2,
msg_to="user" # Start the conversation with the "user" agent
)
print(response)
See the
ConversableAgent.run documentation
for a complete list of available parameters. However, keep in mind that
user_input will always be overridden to False by the AG2Agent template.