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, and -
LOCATIONis 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_ID
When 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.

