Agentes administradores
Um agente pode gerir e treinar outros através da ferramenta manage_agent, com o âmbito definido por uma lista dirigida can_manage.
Um agente pode administrar e treinar outros agentes: com a ferramenta manage_agent
consegue definir a persona, o modelo, as ferramentas e a memória de outro agente, ou até
criar agentes novos de raiz. Quem tem autoridade sobre quem é decidido por uma lista de
permissões dirigida, por agente, chamada can_manage. Isto torna possível ter vários
administradores ativos ao mesmo tempo, cada um limitado a um conjunto diferente de agentes.
O âmbito de can_manage
can_manage |
O que significa |
|---|---|
ausente, ou nil |
Só a si próprio. É o valor por omissão. |
[] |
Ninguém, nem sequer o próprio agente. Um agente de cliente completamente trancado. |
[a, b] |
Só esses agentes, exatamente. Para se incluir a ele próprio, tem de pôr lá o seu nome. |
["*"] |
Todos os agentes. Um superadministrador explícito. |
# boss passa a administrar o "sales"
pepe agent manage boss sales
# um superadministrador sobre todos os agentes
pepe agent manage boss "*"
# um agente trancado, incapaz de se alterar a si próprio
pepe agent add child --can-manage none
À semelhança do encaminhamento, o can_manage é uma lista dirigida e não é simétrica de
propósito: dar ao boss autoridade sobre o sales não dá ao sales autoridade nenhuma
sobre o boss. A autoridade corre apenas no sentido que escreveste, o que abre a
possibilidade de pôr um agente trancado e virado para o cliente à frente de um
administrador, sem que esse agente de cliente consiga alguma vez reconfigurar o
administrador, nem a si mesmo.
O que o manage_agent consegue fazer
| Ação | O que faz |
|---|---|
list |
Lista os agentes dentro do âmbito. |
get |
Lê a configuração de um agente. |
create |
Cria um agente novo. |
set_persona |
Reescreve o prompt de sistema do agente alvo. |
set_model |
Muda a ligação de modelo a que o agente alvo está associado. |
set_utility_model |
Define a ligação barata usada para as tarefas menores do agente alvo, como dar um nome a uma conversa. Um valor vazio desativa isto, e essas tarefas passam a ser resolvidas sem recorrer a nenhum modelo. |
set_flag |
Liga ou desliga um interruptor do agente alvo (on/off). Os interruptores disponíveis são: trust_untrusted_content (permite-lhe agir sobre conteúdo enviado por estranhos), exempt_message_limit, midrun_fold (permite que uma correção a meio de um turno redirecione esse turno em vez de ficar sempre à espera; usa o triage_model quando este existe, ou o próprio modelo do agente caso contrário, ao custo de uma chamada extra por cada mensagem recebida a meio do turno), commitments (repara sozinho num seguimento que o agente prometeu no fim de cada turno e passa a acompanhá-lo, sem que lhe seja pedido), session_search_project_wide (deixa o session_search ver todas as conversas do projeto do agente alvo, não só as do próprio chamador; consulta Busca de sessões para mais detalhe. Manter desligado é a escolha certa para um agente que fala com vários clientes finais distintos) e capability_nudge (deixa-o mencionar, numa frase curta, uma funcionalidade relacionada, como Watches, tarefas agendadas, Goals ou uma skill instalada, logo a seguir a ajudar com algo, sempre que essa funcionalidade realmente se aplicar) e skill_learning (deixa-o propor, sem ninguém pedir, guardar como skill um procedimento que acabou de descobrir, ou corrigir uma skill que seguiu e que o levou para o sítio errado; limita-se a propor, e não escreve nada sem um sim). Nem trust_untrusted_content nem session_search_project_wide podem ser ligados a partir de uma execução que já tenha, ela própria, absorvido conteúdo externo, de forma a que um documento injetado nunca consiga ativar nenhum dos dois. |
add_tool |
Concede mais uma ferramenta ao agente alvo. |
remove_tool |
Retira uma ferramenta ao agente alvo. |
remember |
Acrescenta um facto à memória do agente alvo. |
Não é preciso saber os nomes técnicos das flags: o set_flag é conduzido pelo próprio
modelo, por isso basta pedir por palavras tuas (“deixa o agente de apoio ao cliente agir
sobre os ficheiros que os clientes lhe enviam”, “para de limitar as mensagens deste
agente”) que ele escolhe o interruptor certo.
A persona e a memória vivem no workspace do agente alvo. As ferramentas e o modelo ficam guardados na entrada desse agente no ficheiro de configuração.
A barreira de permissão
Por ser uma ferramenta de risco, toda e qualquer utilização do manage_agent passa pela
barreira de permissão: o agente propõe a alteração, tu aprovas, e só depois disso é que
ela é escrita. Um agente nunca consegue mexer em agentes fora do seu próprio âmbito
can_manage, e qualquer pedido nesse sentido é simplesmente recusado.