Toolformer (PT)
Toolformer é uma abordagem para criar grandes modelos de linguagem (LLM) que lhes permite usar de forma autônoma ferramentas externas por meio de chamadas de API[1]. Este método foi proposto em 2023 por um grupo de pesquisadores da Meta AI Research em colaboração com a Universidade Pompeu Fabra (Espanha). Em seu trabalho «Toolformer: Language Models Can Teach Themselves to Use Tools» (Timo Schick et al., 2023), os autores destacam um paradoxo: os LLMs modernos demonstram capacidades impressionantes para resolver novas tarefas complexas a partir de exemplos textuais, mas muitas vezes são incapazes de realizar operações básicas de forma confiável — por exemplo, cálculos ou busca de fatos[1]. Para superar essas limitações, a equipe desenvolveu o modelo Toolformer, que aprende por si mesmo a selecionar e chamar ferramentas externas (como mecanismos de busca, calculadoras ou serviços de tradução) para melhorar a qualidade da execução de diversas tarefas[1]. Em fevereiro de 2023, este modelo foi apresentado como um preprint no arXiv e, posteriormente, foi reconhecido e aceito na conferência NeurIPS 2023[2].
Ideia principal e capacidades do modelo
O Toolformer é um modelo de linguagem ajustado (fine-tuned) capaz de decidir qual ferramenta chamar, quando exatamente chamá-la, quais parâmetros passar e como incorporar o resultado obtido no texto gerado[3]. O treinamento é organizado em modo autosupervisionado (self-supervised) — o modelo gera e avalia exemplos de uso de API por conta própria, exigindo apenas um pequeno conjunto de demonstrações (literalmente alguns exemplos) para cada ferramenta[3]. Diferentemente de abordagens anteriores, não são necessárias anotações extensas ou modelos orientados por humanos para a integração de ferramentas; o modelo aprende sozinho quando e como aplicar uma determinada API, mantendo suas capacidades linguísticas gerais e não se limitando a tarefas estritamente definidas[1].
Os autores integraram no Toolformer uma ampla gama de ferramentas acessíveis por meio de chamadas de API simples. Na versão experimental, foram utilizadas as seguintes utilidades[3]:
- Calculadora – para realizar cálculos aritméticos.
- Sistema de pergunta-resposta (Q&A) – para encontrar respostas a perguntas factuais em uma base de conhecimento.
- Mecanismos de busca (2 diferentes) – para buscar informações atualizadas na internet.
- Sistema de tradução automática – para traduzir textos entre idiomas.
- Calendário – para obter informações sobre datas e horários.
Cada ferramenta é representada como um trecho de texto (um rótulo textual especial), o que permite ao modelo incorporar a chamada de API diretamente no texto que está gerando[4]. Por exemplo, o modelo pode inserir uma construção como `[Calculator(...)]` ou `[Search("consulta")]` no contexto atual, sinalizando a necessidade de uma chamada externa. Durante a geração da resposta, o Toolformer gera um símbolo especial (uma seta →), que faz com que o sistema pause a geração e execute a chamada de API correspondente; o resultado obtido é inserido no texto, e a geração do próximo trecho continua[4]. Esse mecanismo permite ao modelo utilizar dinamicamente as capacidades de serviços externos, permanecendo um módulo de linguagem unificado sem alterações em sua arquitetura.
Treinamento do modelo (metodologia)
Os desenvolvedores descreveram o processo de treinamento do Toolformer em várias etapas[4], usando a técnica de aprendizagem em contexto (in-context learning) para gerar dados sintéticos[1]:
- Geração de candidatos a chamadas de API. Primeiro, textos de um grande corpus (por exemplo, artigos ou páginas da web) são selecionados, e neles são inseridas artificialmente chamadas de ferramentas que poderiam potencialmente ajudar a continuar ou complementar o texto. O modelo gera essas inserções por conta própria usando prompting com N exemplos (N-shot prompting), com base em algumas amostras de uso de cada API fornecidas manualmente[1]. Por exemplo, o modelo pode receber o trecho: "Em 2024, a população da cidade era de [QA("Qual é a população desta cidade?") → ...] habitantes", onde QA() é uma chamada ao sistema de pergunta-resposta que deve retornar o dado ausente. Para cada ferramenta, são selecionados contextos apropriados; por exemplo, para a calculadora, o modelo escolhe frases que contêm vários números e palavras como "igual a" ou "total"[4] — onde um resultado aritmético seria realmente necessário.
- Execução das chamadas de API e complementação dos dados. Em seguida, todas as chamadas geradas pelo modelo são realmente executadas — por exemplo, consultas são enviadas a um mecanismo de busca ou expressões são calculadas na calculadora. As respostas obtidas são inseridas de volta nos textos, formando versões completas das frases com inserções do tipo `{resposta}`[4][4]. Simultaneamente, são mantidas versões "vazias" (sem a inserção da resposta) e os textos originais sem nenhuma chamada – para comparação posterior.
- Filtragem e autoavaliação da utilidade. Nesta etapa, o Toolformer avalia de forma autônoma quais das inserções de API geradas são realmente úteis para prever a continuação do texto[4]. É feita uma comparação da probabilidade do modelo de linguagem continuar o texto em três cenários: (a) sem nenhuma chamada, (b) com uma chamada de ferramenta sem o resultado inserido, e (c) com a chamada e o resultado inserido[4]. Se a adição de uma resposta de API específica aumenta a probabilidade do modelo de prever corretamente a continuação da frase (ou seja, realmente ajuda o modelo a prever as palavras seguintes), esse exemplo é considerado útil. Apenas as inserções que proporcionam um ganho de probabilidade são mantidas no conjunto de dados. Dessa forma, são descartados os casos em que a chamada da ferramenta foi redundante ou não adicionou nova informação. Finalmente, o modelo é ajustado (fine-tuning) no conjunto de dados filtrado resultante, que contém exemplos reais de texto com chamadas de API inseridas de forma ideal[1]. O treinamento é realizado com o objetivo padrão de modelagem de linguagem – prever o próximo token da sequência, incluindo os tokens que representam os resultados das chamadas das ferramentas.
É importante ressaltar que para implementar cada nova ferramenta, foram necessários apenas alguns exemplos manuais de seu uso — a partir daí, a geração de dados de treinamento ocorreu automaticamente[3]. Graças a isso, a abordagem do Toolformer é praticamente independente da existência de corpora anotados especializados e minimiza o esforço de anotação de dados. O modelo aprende por si só o formato e a pertinência das chamadas de API, mantendo sua universalidade: ele utiliza as ferramentas apenas quando é realmente necessário para resolver a tarefa proposta[1].
Resultados experimentais
Para a verificação experimental do método, os pesquisadores utilizaram um modelo de linguagem já existente, o GPT-J (6,7 bilhões de parâmetros) — um LLM de código aberto treinado no corpus The Pile[4]. Este modelo foi ajustado (fine-tuned) conforme o procedimento descrito, resultando no Toolformer baseado no GPT-J. O desempenho da nova abordagem foi avaliado em modo zero-shot (sem exemplos) em uma série de tarefas padrão, incluindo a resolução de problemas matemáticos de texto, busca de fatos e resposta a perguntas de conhecimento (QA), além de tradução e preenchimento de lacunas em texto. Como dados de teste, foram utilizados, por exemplo, conjuntos de dados abertos como Natural Questions, TriviaQA (para avaliar o conhecimento factual) e os conjuntos de problemas ASDiv, MAWPS, SVAMP (problemas matemáticos de texto envolvendo aritmética), bem como os benchmarks de QA multilíngues MLQA e LAMA[5].
Os resultados mostraram que o Toolformer supera significativamente o modelo original do mesmo tamanho em muitas tarefas[1]. Além disso, graças à conexão com as ferramentas, o modelo relativamente pequeno (6,7 bilhões de parâmetros) conseguiu, em vários indicadores, superar o modelo muito maior GPT-3 (175 bilhões de parâmetros)[1][6]. Por exemplo, em problemas matemáticos de texto que exigiam cálculos precisos, o Toolformer demonstrou um progresso especialmente notável em comparação com LLMs comuns, resolvendo tais problemas com precisão graças à calculadora, enquanto até mesmo o GPT-3 cometia erros[1]. Nos testes de perguntas factuais (QA), o Toolformer baseado no GPT-J também mostrou uma qualidade de resposta comparável ou superior à do GPT-3, pois podia realizar buscas na internet para obter informações atualizadas[1]. Ao mesmo tempo, é importante notar que a nova abordagem não prejudicou as capacidades gerais do modelo de linguagem, como a continuação coerente de texto em dados comuns: o Toolformer manteve o nível de geração de linguagem natural sem ferramentas no mesmo nível do GPT-J original[3]. Em outras palavras, a adição da funcionalidade de chamada de API não "retirou" do modelo suas habilidades básicas, mas as expandiu com capacidades adicionais.
Significado do trabalho e pesquisas futuras
A criação do Toolformer demonstrou a possibilidade fundamental de treinar um modelo para usar ferramentas externas praticamente sem anotação manual, por meio da geração de dados sintéticos e da autoavaliação de sua utilidade. Essa conquista abre caminho para modelos de linguagem grandes mais eficientes e confiáveis: em vez de aumentar o número de parâmetros em bilhões para memorizar fatos ou regras matemáticas, um modelo relativamente compacto pode utilizar dinamicamente recursos externos (bancos de dados de conhecimento, calculadoras, serviços) para preencher suas próprias lacunas[1]. Essa abordagem permite reduzir a quantidade de "alucinações" (quando o modelo inventa informações inexistentes), aumentar a precisão das respostas e a atualidade do conhecimento sem uma reformulação total de todo o modelo. Essencialmente, o Toolformer alcança o "melhor de dois mundos" — combinando as habilidades linguísticas de um modelo grande com a precisão de ferramentas especializadas[3].
O trabalho de Schick e colegas foi um dos primeiros a demonstrar o aprendizado autônomo de APIs externas por LLMs e gerou grande interesse na comunidade. Pesquisas subsequentes surgiram, desenvolvendo essa ideia. Por exemplo, em 2023, foi proposto o modelo Graph-ToolFormer, que adapta os princípios do Toolformer para trabalhar com dados em grafos. Com base em sugestões geradas pelo ChatGPT, o Graph-ToolFormer ensina um modelo de linguagem a chamar ferramentas externas para resolver tarefas de análise de grafos (por exemplo, obter propriedades de um grafo, trabalhar com redes de conhecimento, etc.)[7]. Outro desenvolvimento notável é o modelo Gorilla (Univ. of California, Berkeley, 2023), que se concentra no uso preciso de uma vasta gama de APIs de software de terceiros[8]. Gorilla é um modelo LLaMA ajustado em um extenso conjunto de funções documentadas; ele é capaz de gerar chamadas de API corretas a partir da descrição de uma tarefa, com tanto sucesso que, em experimentos, superou até mesmo o GPT-4 na precisão da formulação de chamadas para bibliotecas e serviços[8]. O Gorilla implementa a integração com um mecanismo de busca na documentação, o que permite atualizar informações sobre mudanças nas APIs e reduz significativamente erros e alucinações ao usar ferramentas[8]. Esses trabalhos confirmam a importância da direção aberta pelo Toolformer: a combinação de LLMs com ferramentas externas é vista como um caminho promissor para a criação de sistemas de IA mais poderosos e confiáveis.
Observa-se que a ideia de integrar ferramentas em modelos de linguagem está se desenvolvendo não apenas na pesquisa, mas também na indústria. Por exemplo, em março de 2023, a OpenAI apresentou o sistema de plugins para o ChatGPT – uma interface especial que permite conectar o modelo a serviços externos (navegador web, bases de conhecimento, motores de cálculo, etc.) para obter informações atualizadas e realizar cálculos[9]. Os usuários há muito solicitavam essa funcionalidade, e o surgimento dos plugins efetivamente implementa na prática um conceito semelhante ao Toolformer: o modelo é complementado com "ferramentas" para expandir suas capacidades na resolução de diversas solicitações dos usuários[9]. Assim, o Toolformer se insere na tendência geral de desenvolvimento da IA, onde grandes modelos de linguagem se tornam uma plataforma capaz de utilizar conhecimento e computação externos sob demanda. A pesquisa realizada pela equipe da Meta AI e da UPF estabeleceu uma base importante para essa direção, mostrando como os LLMs podem aprender a trabalhar com ferramentas praticamente sem instrução manual, aproximando-se assim de um assistente intelectual mais universal e seguro[1][3].
Ligações externas
- Artigo original «Toolformer: Language Models Can Teach Themselves to Use Tools» no arXiv
- Análise do Toolformer na Synced Review
- Página do Toolformer no OpenReview
- Análise do Toolformer no Medium
- Artigo sobre o modelo Gorilla no arXiv
- Página de plugins do ChatGPT no site da OpenAI
Literatura
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
- Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
- Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
- Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
- Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
- Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
- Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
- OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
- Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
- Schick, T. et al. (2023). Meta AI & UPF’s Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.
Notas
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
- ↑ Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
- ↑ 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
- ↑ 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
- ↑ «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
- ↑ Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
- ↑ Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
- ↑ 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
- ↑ 9.0 9.1 «ChatGPT plugins». OpenAI. [9]