A Microsoft apresenta um caminho prático, dividido em quatro sessões, para criar um agente de inteligência artificial em C# usando o Microsoft Agent Framework, começando por uma chamada simples que envolve a interface IChatClient e chegando a um agente que pode ser monitorado, avaliado, governado e implantado no Microsoft Foundry. O exemplo usa um assistente educacional de finanças pessoais para evidenciar as diferenças entre ler dados, modificar arquivos e executar uma ação com impacto, como uma operação de negociação simulada.
O que significa Agent Harness?
O modelo de linguagem consegue gerar texto, mas, por si só, não fornece o loop operacional necessário para um agente. Esse loop chama as ferramentas, verifica seus resultados, atualiza o plano, mantém a memória, lida com a janela de contexto, solicita a aprovação do usuário para ações sensíveis e, então, continua trabalhando até concluir a tarefa. A fonte chama essa camada envolvente de harness, enquanto o conceito de “claw” se refere a um agente baseado em ferramentas no estilo de linha de comando, construído sobre essa camada.
No exemplo, basta uma configuração que inclua instruções e ferramentas para iniciar um agente capaz de chamar funções automaticamente, salvar o histórico após as chamadas ao modelo, criar listas de tarefas, compactar o contexto, usar a memória de arquivos e executar pesquisas na web quando o serviço de modelo oferecer suporte a isso, além de solicitar aprovações para as ferramentas e enviar dados de telemetria por meio do OpenTelemetry. Esses recursos continuam podendo ser substituídos, desativados ou ampliados por provedores personalizados.
Quatro etapas para criar o agente
A primeira sessão começa transformando um cliente de conversação conectado a um modelo no Microsoft Foundry em um agente equipado com uma ferramenta personalizada em C# para obter o preço ilustrativo de uma ação. Quando o usuário pergunta ao agente o preço da MSFT, o modelo escolhe a ferramenta, o harness a chama e, em seguida, devolve o resultado ao modelo para produzir a resposta. Ao receber uma tarefa mais ampla, como revisar uma lista de observação e sugerir o que deve ser pesquisado em seguida, o agente pode criar um plano e uma lista de tarefas sem que o desenvolvedor precise criar um mecanismo de planejamento independente para a demonstração.
A segunda sessão concentra-se em trabalhar com os dados do usuário com segurança. O agente lê um arquivo de portfólio em formato CSV somente de uma pasta de trabalho autorizada, enquanto os limites definidos o impedem de acessar caminhos aleatórios no sistema de arquivos. A operação de negociação simulada também é encapsulada por uma ferramenta que exige aprovação, de modo que o modelo pode solicitar a ação, mas não executá-la diretamente. Em contrapartida, operações somente de leitura podem ser encaminhadas automaticamente para evitar sobrecarregar o usuário com solicitações de confirmação desnecessárias.
A fonte também apresenta uma política de aprovação com limite de tempo: cinco segundos para cada tentativa e no máximo cinco tentativas, com nova tentativa quando não houver entrada ou quando ela for inválida, aprovação imediata ao inserir y e rejeição ao inserir n, seguida de rejeição automática após a última tentativa. Ela também discute a diferença entre uma memória JSON local pertencente ao aplicativo e o Microsoft Foundry Memory, ressaltando que o fato de o modelo dizer “eu salvei isso” não comprova que os dados foram realmente gravados ou que foram armazenados no escopo correto.
Na terceira sessão, são adicionadas habilidades que encapsulam conhecimento especializado em arquivos que não são carregados integralmente nas instruções básicas, exceto quando necessário, além de acesso restrito ao shell, execução de CodeAct para executar código em um ambiente controlado e agentes em segundo plano que podem realizar tarefas de pesquisa independentes em paralelo. A fonte afirma explicitamente que a aprovação e as políticas não substituem o isolamento ao executar comandos ou código.
O que muda, na prática, em um ambiente de produção?
A quarta sessão é dedicada ao monitoramento, à governança, à avaliação e à implantação. O monitoramento inclui rastros do OpenTelemetry, chamadas às ferramentas e ao modelo e consumo de tokens, enquanto a governança é vinculada às políticas do Microsoft Purview. Avaliações recorrentes também são usadas para transformar a impressão sobre a qualidade da demonstração em um sinal mensurável, e é apresentada a opção de implantar o agente hospedado no Foundry com uma única definição compartilhada entre um aplicativo de console, um endpoint hospedado e um ambiente de avaliação.
A mensagem mais importante aqui é que a capacidade de combinar recursos não significa que todos eles devam ser levados para a produção. Um agente de desenvolvimento pode precisar de arquivos ou do shell, mas o contêiner hospedado compartilhado não deve herdar um amplo acesso local apenas porque essas permissões foram úteis durante a criação. Determinar o que pode ser lido, escrito, executado, lembrado ou rastreado continua sendo uma decisão de projeto sob responsabilidade da organização desenvolvedora.
Por que essa abordagem é importante?
A camada de harness reduz a necessidade de reconstruir o loop de ferramentas, planejamento, memória e aprovações para cada projeto, mas não elimina a responsabilidade de definir os limites. O valor prático da série está em vincular recursos avançados aos controles correspondentes: arquivos a uma pasta autorizada, ações sensíveis a uma aprovação, memória a um resultado de armazenamento verificável, execução de código a isolamento e políticas e implantação a monitoramento e avaliação. Os exemplos financeiros continuam sendo educacionais; os preços e as operações utilizados são mock e ilustrativos, e não constituem aconselhamento financeiro.