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
- Sempre trate operações assíncronas corretamente com async/await ou promises
- Implemente limites de erro em seus componentes
- Use a opção
verbosedurante o desenvolvimento para depuração - Limpe o contexto ao iniciar novas conversas, se necessário
- Valide as respostas das ferramentas antes de usá-las em sua interface
- Use
skipSentToolResultToAgentquando o resultado bruto da ferramenta for suficiente - Considere o uso de tokens ao decidir se deve enviar resultados de volta ao agente