Skip to main content
Version: Próxima

Uso Avançado

Usando Options​

Você pode personalizar o comportamento do agente passando opções:

const agent = useAgent('SpecializedAgent', {
llm: 'gemini',
model: 'gemini-2.5-flash',
verbose: true,
timeout: 10000,
});

Trabalhando com Arquivos​

Você pode enviar arquivos para seus agentes:

const handleFileMessage = async () => {
const files = await Eitri.fs.openFilePicker({
fileExtension: ['jpg', 'jpeg', 'png'],
});

if (files && files?.length === 0) return;

const file = files[0];

const result = await agent.call({
content: 'Analise esta imagem',
file: {
mimeType: file.type,
data: await file.toBase64(),
},
});
setResponse(result.message);
};

Tratamento de Erros​

O hook trata erros internamente, mas você ainda deve implementar um tratamento de erros adequado em seus componentes:

const agent = useAgent('MyAgent');
const [error, setError] = useState(null);

const handleCall = async () => {
try {
const result = await agent.call({ content: 'Olá' });
setResponse(result.message);
} catch (err) {
setError('Falha ao se comunicar com o agente');
console.error(err);
}
};

Pulando Envio do Resultado da Ferramenta​

Por padrão, quando um agente executa uma ferramenta, o resultado é enviado de volta ao agente para que ele possa processar e gerar uma resposta. No entanto, às vezes você pode querer processar o resultado da ferramenta diretamente sem uma resposta adicional do agente.

Use a opção skipSentToolResultToAgent para obter o resultado bruto da ferramenta:

const agent = useAgent('ToolAgent');

const handleDirectToolResult = async () => {
const result = await agent.call(
{
content: 'Busque produtos de café',
},
{
skipSentToolResultToAgent: true,
},
);

// Agora você tem acesso direto ao resultado da ferramenta
if (result.rawToolResult) {
console.log('Resultado bruto da ferramenta:', result.rawToolResult);
// Processe os dados diretamente sem passar pelo agente novamente
const products = result.rawToolResult;
// Faça algo com os produtos...
}
};

Quando usar skipSentToolResultToAgent​

  • Quando você quer reduzir o uso de tokens do LLM
  • Quando você precisa do resultado exato da ferramenta sem processamento adicional
  • Quando você quer ter controle total sobre como o resultado é apresentado
  • Para operações onde a resposta do agente não agrega valor adicional

Melhores Práticas​

  1. Sempre trate operações assíncronas corretamente com async/await ou promises
  2. Implemente limites de erro em seus componentes
  3. Use a opção verbose durante o desenvolvimento para depuração
  4. Limpe o contexto ao iniciar novas conversas, se necessário
  5. Valide as respostas das ferramentas antes de usá-las em sua interface
  6. Use skipSentToolResultToAgent quando o resultado bruto da ferramenta for suficiente
  7. Considere o uso de tokens ao decidir se deve enviar resultados de volta ao agente