Início rápido do cliente
O cliente, stalwart_agents.client, em cinco minutos. Para construir um agente, comece por
Construa um agente.
Instale o pacote, defina a sua chave e ative o runtime licenciado uma vez:
pip install stalwart-agents
export QLS_API_KEY=qls_live_...
stalwart licence activate
O runtime lê cada turno e verifica cada chamada de ferramenta nesta máquina. Onde ele não roda,
defina QLS_ROUTER_URL com o qls-router enterprise que você executa no seu próprio ambiente.
Rotear uma conversa
from stalwart_agents.client import Client
client = Client()
version = client.register_catalogue(mcp_tools_list, agent="desk")
chat = client.session("desk", catalogue=version)
plan = chat.read("show me the stock in depot HB-7")
for step in plan.steps:
if step.kind == "tool":
print("call", step.selection.tool, dict(step.selection.arguments))
elif step.kind == "ask":
print("ask", step.selection.question)
Cada passo nomeia em step.decided_by a regra que o produziu. Um plano cujo resultado é
declined não executa nada.
Acompanhar uma solução longa
for event in client.verify_guardrail("policy.co", "execute_transfer_funds", "is_authenticated",
profile="enumerate", stream=True):
print(event.type, event.data)
O iterador termina no evento final do job. Uma conexão perdida é retomada de onde parou; se o
streaming continuar falhando pela sua rede, o iterador emite um evento stream_degraded e segue
por consultas periódicas.
Testar o seu roteamento offline
from stalwart_agents.client.testing import replay
with Client(api_key="unused", router_url="https://qls-router.internal", transport=replay(cassette_path)) as offline:
plan = offline.session("desk", catalogue=catalogue, session_id="s1").read("show me the stock")
Grave a fita uma vez contra o seu roteador, com stalwart_agents.client.testing.record(path) como
transporte; uma reprodução não envia nada, então qualquer URL de roteador serve. Um turno que não
foi gravado levanta CassetteMiss; um catálogo que mudou desde então levanta CassetteStale.