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.