O código para consultar um agente é o mesmo, independentemente de ele estar sendo executado
localmente ou
implantado remotamente. Portanto, nesta
página, o termo agent
se refere a local_agent
ou remote_agent
de forma intercambiável. Como o conjunto de operações com suporte varia de acordo com o framework, fornecemos instruções de uso para modelos específicos de framework:
Framework | Descrição |
---|---|
LangChain (link em inglês) | É mais fácil de usar para casos de uso básicos devido às configurações e abstrações predefinidas. |
LangGraph (em inglês) | Abordagem baseada em gráfico para definir fluxos de trabalho, com recursos avançados de human-in-the-loop e de repetição/reprodução. |
AG2 (anteriormente AutoGen) | O AG2 oferece um framework de conversa entre vários agentes como uma abstração de alto nível para criar fluxos de trabalho de LLM. |
Para agentes personalizados que não são baseados em um dos modelos específicos da estrutura, siga estas etapas:
- Autenticação do usuário.
- Receba uma instância do agente.
- Procure as operações compatíveis.
- Consultar o agente.
- (Se aplicável) Transmitir respostas do agente.
Etapa 1: autenticação do usuário
Siga as mesmas instruções para configurar seu ambiente.
Etapa 2: acessar uma instância de um agente
Para consultar um agente, primeiro você precisa de uma instância dele. É possível criar uma nova instância ou acessar uma instância atual de um agente.
Para encontrar o agente correspondente a um ID de recurso específico:
SDK da Vertex AI para Python
Execute o seguinte código:
from vertexai import agent_engines
agent = agent_engines.get(RESOURCE_ID)
Como alternativa, forneça o nome completo do recurso do agente:
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
solicitações
Execute o seguinte código:
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
O restante desta seção pressupõe que você tenha uma instância chamada agent
.
Etapa 3: operações com suporte
Ao desenvolver o agente localmente, você tem acesso e conhecimento das operações compatíveis. Para usar um agente implantado, enumere as operações compatíveis:
SDK da Vertex AI para Python
Execute o seguinte código:
agent.operation_schemas()
solicitações
Execute o seguinte código:
import json
json.loads(response.content).get("spec").get("classMethods")
REST
Representado em spec.class_methods
da resposta à solicitação do curl.
O esquema de cada operação é um dicionário que documenta as informações de um método do agente que você pode chamar. Confira a seguir um exemplo do esquema de operação para uma operação síncrona:
O comando a seguir fornece uma lista de esquemas no formato JSON que correspondem às operações do objeto remote_app
:
agent.operation_schemas()
Como exemplo, confira abaixo o esquema da operação query
de um
LangchainAgent
:
{'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'}}
em que
name
é o nome da operação (por exemplo,agent.query
para uma operação chamadaquery
).api_mode
é o modo de API da operação (""
para síncrono,"stream"
para streaming).description
é uma descrição da operação com base no docstring do método.parameters
é o esquema dos argumentos de entrada no formato de esquema da OpenAPI.
Etapa 4: consultar o agente
Para consultar o agente usando uma das operações com suporte (por exemplo, query
):
SDK da Vertex AI para Python
agent.query(input={"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]})
solicitações
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?")
]},
}
}'
A resposta da consulta é uma string semelhante à saída de um teste de aplicativo local:
{"input": "What is the exchange rate from US dollars to Swedish currency?",
# ...
"output": "For 1 US dollar you will get 10.7345 Swedish Krona."}
Etapa 5: transmitir respostas do agente
Se aplicável, você pode transmitir uma resposta do agente usando uma das operações dele (por exemplo, stream_query
):
SDK da Vertex AI para Python
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?")
]})
solicitações
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?")
]},
}
}'
O mecanismo do agente transmite respostas como uma sequência de objetos gerados de forma iterativa. Por exemplo, um conjunto de três respostas pode ser parecido com este:
{'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
A seguir
- Use um agente do LangChain.
- Use um agente do LangGraph.
- Usar um agente AG2.
- Gerencie o aplicativo implantado.