O que são tools?
Similar as ferramentas (tools) usadas no mundo real, as tools usadas por LLM também devem ser externas ao empregador (isto é, o LLM) e são parte do ambiente.
Como as LLMs são produtos do mundo digital, uma tool é uma função (por exemplo, soma_um()
) executada nos seus ambientes correspondentes; por exemplo, programas Python são executáveis em ambientes Python.
Dessa forma, uma tool pode ser aplicada a outros objetos (por exemplo, dados) e produzir uma saída (por exemplo, soma_um(1) → 2
).
Nesse texto, vamos entender um pouco mais sobre esse novo paradigma de programação: O uso de tools executada externamente a LLM, que por sua vez gera as chamadas a função e argumentos de entrada para usar a tool.
📚 Você é dev e quer aprender um pouco mais sobre a criação de aplicações baseadas em LLM?
Eu criei um curso que aborda aspectos teóricos e práticos do desenvolvimento de aplicações baseadas em LLMs. Alguns dos tópicos cobertos:
🟠 O que são e como criar embeddings
🟡 Como selecionar partes relevantes nos seus documentos
🔵 Como integrar essas partes documentos com uma LLM
Como uma tool é integrada a uma LLM?
Assumindo que uma LLM comunica com usuários principalmente em linguagem natural, ao receber uma consulta de usuário como "Como está o tempo hoje?", o LLM então procede para gerar texto ou chamadas de uma tool
. Por exemplo, a LLM começa gerando alguns tokens de texto "Está...".
Quando a LLM precisa buscar tools externas para completar a tarefa, por exemplo, obter informações meteorológicas em tempo real, ele gera tokens com o nome da tool e argumentos de entrada dentro de parênteses para construir uma expressão completa de chamada da tool. Esta expressão completa acionará uma mudança do modo de geração de texto para o modo de execução da tool. A tool será executada e retornará o resultado da execução para o LLM.
A LLM envia a chamada ao método check_weather()
retorna a saída "ensolarado". O resultado retornado substitui a chamada da tool nos tokens gerados pelo LLM (por exemplo, de "Está check_weather()
" para "Está ensolarado"), que é usado para etapas subsequentes de geração. Consequentemente, o LLM volta ao modo de geração de texto e continua a terminar a resposta gerando novos tokens de texto, por exemplo, adicionando "hoje.", e finalmente retornando a resposta ao usuário.
Por que tools são úteis?
Tools podem ajudar na resolução de tarefas de diferentes maneiras, dependendo da funcionalidade das tools. Tools podem ser divididas em três categorias:
Percepção: Tools de percepção fornecem ou coletam informações do ambiente. Um exemplo é usar uma API
get_time()
para obter a hora atual, que não está incluída no conhecimento paramétrico do LLM aprendido durante o treinamento.Ação: Tools de ação podem exercer ações sobre o ambiente e mudar seu estado. Por exemplo,
turn_left()
pode mudar a direção de um agente incorporado, ou executarmake_post(website, post)
pode mudar o conteúdo em um site.Computação: Tools de computação não necessariamente percebem ou modificam o ambiente externo, mas usam programas para lidar com tarefas computacionais complexas. Por exemplo, uma calculadora é uma tool de computação para cálculo matemático. Note que a computação também inclui atos mais gerais de computação além do cálculo numérico. Portanto, um tradutor também é uma tool de computação que pode ser usada para traduzir entre idiomas.
Note que muitas tools podem se encaixar em múltiplas categorias. Por exemplo, um motor de busca é uma tool que pode realizar tanto computação quanto percepção.
Como computação, ele mede a similaridade de documentos e seleciona os relevantes, mas também percebe o ambiente (ou seja, a web) e busca dados (ou seja, documentos retornados) dele.
Da mesma forma, consultas SQL podem ser usadas como tools de computação (por exemplo, SELECT SQRT(16) / 10 AS result
), tools de percepção para visualizar dados (por exemplo, SELECT name FROM data
), tools de ação para modificar dados (por exemplo, INSERT INTO data VALUES name
), ou todas as acima.
Tools e Agentes
Recentemente, houve um crescimento de trabalhos sobre agentes alimentados por LLMs. Russell & Norvig (2010) definem agentes como "qualquer coisa que pode ser vista como percebendo seu ambiente através de sensores e atuando sobre esse ambiente através de atuadores."
De acordo com essa definição, agentes são programas que usam tools de percepção para perceber o ambiente situado, ou tools de ação para interagir com o ambiente. Modelos que usam apenas tools de computação e não interagem com seus ambientes através de tools de percepção ou ação não se enquadram na categoria de "agentes" de acordo com esta definição.
Quando tools são úteis?
Embora seja difícil enumerar exaustivamente cada cenário onde tools poderiam ser úteis, resumimos algumas categorias principais do uso de tools abaixo. Note que uma tool pode se encaixar em uma ou mais categorias.
Acesso ao conhecimento: LLMs armazenam conhecimento limitado durante o treinamento devido a limites em (i) os dados nos quais são treinados e (ii) a capacidade dos LLMs de memorizar e utilizar todos os dados que veem no momento do treinamento. Várias tools podem ser usadas para aliviar essa questão. Executores de SQL e SPARL podem fornecer acesso a dados em bases de conhecimento estruturadas. Uma tool de busca na Internet pode permitir que LLMs acessem informações mais atualizadas.
Atividades de computação: Atividades computacionais complexas, como cálculos matemáticos, são conhecidas por serem desafiadoras para LLMs. Enquanto até uma calculadora pode melhorar as habilidades numéricas de um LLM, programas Python mais genéricos também podem ser empregados para auxiliar tarefas de raciocínio. Para trabalhos profissionais mais complexos, tools podem também ser aplicadas, como usar worksheet para manipular Google Sheets, ou até mesmo tools para domínios financeiros, médicos, educacionais ou de publicidade.
Interação com o mundo: LLMs sem tools são fundamentalmente incapazes de perceber e agir no mundo ao seu redor, necessitando do uso de tools onde tal percepção e ação sejam necessárias. Por exemplo, LLMs podem acessar informações em tempo real como o clima ou conhecimento posicional como localização. Por outro lado, LLMs podem manipular informações do mundo real como gerenciar calendários e e-mails. Além de atividades baseadas na web, LLMs podem se engajar em atividades físicas, como pescar com varas ou minerar com machados no mundo do Minecraft.
Acessando LLMs especializados: Alguns trabalhos propõem usar LLMs especializados como tools, essencialmente usando o LLM principal como um planejador de tarefas para despachar solicitações para outros LLMs. Alguns pesquisadores usaram modelos de tradução automática para auxiliar tarefas multilíngues. Além de tarefas específicas, alguns trabalhos adotam múltiplos modelos neurais de plataformas como Hugginface ou similares (Patil et al., 2023; Shen et al., 2023a), ou os ajustam ainda mais em vários dados (Viswanathan et al., 2023). Comparado ao LLM base, esses modelos com tools desenvolvem habilidades especializadas, podendo ter diferenças arquitetônicas substanciais dos LLMs base.
Conclusão
As tools são interfaces para programas que operam externamente ao LLM, desenhadas para estender suas capacidades além da geração de texto.
Essas tools variam de programas simples, como calculadoras, a sistemas complexos de busca e executores de código, permitindo aos LLMs acessar informações atualizadas, realizar cálculos complexos e interagir com o ambiente de maneiras significativas.
Essa externalização de tarefas para tools especializadas permite que os LMs superem limitações inerentes ao seu treinamento e armazenamento de conhecimento, oferecendo uma abordagem mais dinâmica e adaptável à resolução de problemas.
Portanto, o uso de tools por LMs não só amplia o escopo de suas aplicações, mas também melhora a qualidade e a relevância das respostas fornecidas aos usuários, marcando um avanço significativo na interação humano-máquina e na inteligência artificial aplicada.