Ferramentas personalizadas permitem que você escreva suas próprias funções JavaScript e as disponibilize como ferramentas chamáveis em blocks Agent. Isso é útil quando você precisa de algo que as integrações nativas do Studio não cobrem — por exemplo, chamar uma API interna, fazer um cálculo específico ou transformar dados de uma forma particular.
Como funcionam as ferramentas personalizadas
Uma ferramenta personalizada tem duas partes:
- Schema — uma definição JSON que descreve o nome, a descrição e os parâmetros da ferramenta (no formato de function calling da OpenAI). É isso que informa ao agente de IA o que a ferramenta faz e quais entradas ela espera.
- Código — o corpo de uma função JavaScript que executa quando o agente chama a ferramenta. Os parâmetros definidos no schema ficam disponíveis como variáveis no seu código.
Quando um block Agent tem acesso a uma ferramenta personalizada, o modelo de IA decide quando chamá-la com base na descrição do schema e no contexto da conversa — exatamente como acontece com as ferramentas nativas.
Criando uma ferramenta personalizada
Abra as configurações de Custom Tools
Vá em Settings → Custom Tools no seu workspace e clique em Add.
Defina o schema
Na aba Schema, defina sua ferramenta em JSON, no formato de function calling da OpenAI:
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city name"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "Temperature units"
}
},
"required": ["city"]
}
}
}Você pode usar o botão da varinha de IA para gerar um schema a partir de uma descrição em linguagem natural do que a ferramenta deve fazer.
Escreva o código
Vá para a aba Code e escreva o corpo da função JavaScript. Os parâmetros do seu schema ficam disponíveis diretamente como variáveis:
const response = await fetch(
`https://api.openweathermap.org/data/2.5/weather?q=${city}&units=${units === 'celsius' ? 'metric' : 'imperial'}&appid={{OPENWEATHER_API_KEY}}`
);
const data = await response.json();
return {
temperature: data.main.temp,
description: data.weather[0].description,
humidity: data.main.humidity
};Para um secret usado como uma expressão JavaScript completa, prefira a forma sem aspas, como const apiKey = {{OPENWEATHER_API_KEY}};. As formas com aspas e embutidas continuam suportadas, incluindo o placeholder embutido na URL acima, "Bearer {{KEY}}", template literals e literais de expressão regular do JavaScript. O valor é vinculado separadamente na execução da ferramenta, em vez de ser colado no código-fonte, então o conteúdo exato da string é preservado.
Você também pode usar a varinha de IA para gerar código a partir de uma descrição. Variáveis de ambiente são referenciadas com a sintaxe {{KEY}}.
Salve
Clique em Save para criar a ferramenta. Ela já fica disponível para uso em qualquer block Agent do seu workspace.
Usando ferramentas personalizadas em workflows
Depois de criadas, as ferramentas personalizadas aparecem junto com as nativas ao configurar um block Agent:
- Abra um block Agent
- Clique em Add Tools
- Encontre sua ferramenta personalizada na lista de ferramentas
- O agente chamará a ferramenta quando concluir que ela é relevante para a tarefa
Ambiente de execução do código
Recursos disponíveis
- Async/await — seu código executa em contexto assíncrono, então você pode usar
awaitdiretamente - fetch() — faça requisições HTTP para APIs externas
- Módulos nativos do Node.js — acesso a
crypto,Buffere outros módulos padrão - Variáveis de ambiente — use a sintaxe
{{KEY}}para vincular secrets no momento da execução, sem deixar texto puro no código-fonte
Limitações
- Sem pacotes npm — bibliotecas externas como
axiosoulodashnão estão disponíveis. Use as APIs nativas - Parâmetros por nome — os parâmetros do schema ficam disponíveis diretamente como variáveis (por exemplo,
city), não em um objetoparams
Retornando resultados
Retorne um valor do seu código para enviá-lo de volta ao agente:
const result = await fetch(`https://api.example.com/data?q=${query}`);
const data = await result.json();
return data;O valor retornado se torna a saída da ferramenta, que o agente vê e pode usar na resposta.
Gerenciando ferramentas personalizadas
Em Settings → Custom Tools você pode:
- Search — buscar ferramentas por nome, nome da função ou descrição
- Edit — editar o schema ou o código de qualquer ferramenta
- Delete — excluir ferramentas que não são mais necessárias
Excluir uma ferramenta personalizada a remove de todos os blocks Agent que a referenciam. Confirme que nenhum workflow ativo depende da ferramenta antes de excluí-la.
Permissões
| Ação | Permissão necessária |
|---|---|
| Ver ferramentas personalizadas | Read, Write ou Admin |
| Criar ou editar ferramentas | Write ou Admin |
| Excluir ferramentas | Admin |