A chamada de ferramentas em grandes modelos de linguagem (LLMs) é a capacidade do LLM de interagir com ferramentas, serviços ou APIs externos para executar tarefas. Isso permite que os LLMs ampliem sua funcionalidade, aprimorando sua capacidade de lidar com tarefas do mundo real que podem exigir acesso a dados externos, informações em tempo real ou aplicações específicas. Quando um LLM usa uma ferramenta de pesquisa na web, ele pode chamar a web para buscar dados em tempo real que não estão disponíveis nos dados de treinamento do modelo. Outros tipos de ferramentas podem incluir Python para cálculos, análise de dados ou visualização, ou chamar um endpoint de serviço para dados. A chamada de ferramentas pode tornar um chatbot mais dinâmico e adaptável, permitindo que apresente respostas mais precisas, relevantes e detalhadas com base em dados em tempo real ou tarefas especializadas fora de sua base de conhecimento imediata. Frameworks populares para chamada de ferramentas incluem o Langchain e, agora, o Ollama.
O Ollama é uma plataforma que oferece modelos de IA locais de código aberto para uso em dispositivos pessoais, para que os usuários possam executar LLMs diretamente em seus computadores. Diferentemente de serviços como a API da OpenAI, não há necessidade de uma conta, pois o modelo está na sua máquina local. O Ollama se concentra na privacidade, no desempenho e na facilidade de uso, permitindo que os usuários acessem e interajam com os modelos de IA sem enviar dados para servidores externos. Isso pode ser particularmente atraente para aqueles que se preocupam com a privacidade de dados ou que desejam evitar a dependência de APIs externas. A plataforma do Ollama foi projetada para ser fácil de configurar e usar, e é compatível com vários modelos, oferecendo aos usuários uma variedade de ferramentas para processamento de linguagem natural, geração de código e outras tarefas de IA diretamente em seu próprio hardware. É adequado para uma arquitetura de chamada de ferramentas, porque pode acessar todos os recursos de um ambiente local, incluindo dados, programas e software personalizado.
Neste tutorial, você aprenderá a configurar a chamada de ferramentas usando o Ollama para examinar um sistema de arquivos local, uma tarefa que seria difícil de realizar com um LLM remoto. Muitos modelos do Ollama estão disponíveis para chamada de ferramentas e criação de agentes de IA, como o Mistral e o Llama 3.2. Há uma lista completa disponível no site do Ollama. Neste caso, usaremos o IBM Granite 3.2 Densi, que é compatível com a ferramenta. Os modelos 2B e 8B são LLMs densos somente de texto, treinados para compatibilidade com casos de uso baseados em ferramentas e para geração aumentada de recuperação (RAG), simplificando a geração de código, tradução e correção de bugs.
O bloco de notas deste tutorial pode ser baixado do Github aqui.
Primeiro, baixe o ollama em https://ollama.com/download e instale-o em seu sistema operacional. No OSX, isso é feito por meio de um arquivo .dmg, no Linux por meio de um único comando shell e no Windows com um instalador. Talvez você precise de acesso de administrador em sua máquina para executar o instalador.
Você pode testar se o ollama está instalado corretamente abrindo um terminal ou prompt de comando e digitando:
Em seguida, você adicionará as importações iniciais. Essa demonstração usará a biblioteca ollama python para se comunicar com o ollama e a biblioteca pymupdf para ler arquivos PDF no sistema de arquivos.
Em seguida, você extrairá o modelo que usará ao longo deste tutorial. Isso baixa os pesos do modelo do ollama para o seu computador local e os armazena para uso sem a necessidade de fazer chamadas de API remotas mais tarde.
Agora, você definirá as ferramentas às quais a instância das ferramentas ollama terá acesso. Como a intenção das ferramentas é ler arquivos e examinar imagens no sistema de arquivos local, você criará duas funções python para cada uma dessas ferramentas. A primeira é chamada
Você poderia usar a correspondência simples de string para ver se a palavra-chave está no documento, mas como o ollama facilita a chamada de llms locais,
Se o modelo responder “sim”, a função retornará o nome do arquivo que contém a palavra-chave que o usuário indicou no prompt. Se nenhum dos arquivos parecer conter as informações, a função retornará "Nenhum" como uma string.
Essa função pode ser executada lentamente na primeira vez porque o ollama baixará o Granite 3.2 Dense.
A segunda ferramenta se chama
A função
retorna uma string, que é o nome do arquivo cuja
descrição contém a palavra-chave que o usuário indicou no prompt.
Agora que as funções para o ollama chamar foram definidas, você configurará as informações da ferramenta para o próprio ollama. O primeiro passo é criar um objeto que associe o nome da ferramenta às funções para chamada da função ollama:
Em seguida, configure uma matriz de ferramentas para informar ao ollama a quais ferramentas ele terá acesso e o que essas ferramentas exigem. Essa é uma matriz com um esquema de objeto por ferramenta que informa ao framework de chamadas de ferramentas do ollama como chamar a ferramenta e o que ela retorna.
No caso das duas ferramentas que você criou anteriormente, são funções que exigem um parâmetro
Você usará a definição dessas ferramentas quando chamar o ollama com a entrada do usuário.
Agora é hora de passar a entrada do usuário para o ollama e fazer com que ele retorne os resultados das chamadas de ferramentas. Primeiro, certifique-se de que o ollama esteja em execução no seu sistema:
Se o ollama estiver em execução, isso retornará:
Agora, peça a entrada
do usuário. Você também pode codificar a entrada ou recuperar de uma interface de
bate-papo, dependendo da configuração de sua aplicação. A
Por exemplo, se o usuário inserir "Informações sobre cachorros", esta célula será impressa:
Agora, a consulta do usuário é passada para o próprio ollama. As mensagens precisam de uma função para o usuário e o conteúdo que o usuário insere. Isso é passado para o ollama usando a função
O
Agora que o modelo gerou chamadas de ferramentas na saída, execute todas as chamadas de ferramenta com os parâmetros que o modelo gerou e verifique a saída. Nessa aplicação, o Granite 3.2 Dense é usado para gerar a saída final, de modo que os resultados das chamadas de ferramentas são adicionados à entrada inicial do usuário e, em seguida, passados para o modelo.
Várias chamadas de ferramentas podem retornar correspondências de arquivos; portanto, as respostas são coletadas em uma matriz que é então transmitida ao Granite 3.2 para gerar uma resposta. O prompt que precede os dados instrui o modelo como responder:
Então, a saída final é gerada usando os nomes de arquivos retornados ou
Usando os arquivos fornecidos para este tutorial, o prompt "Informações sobre cachorros" retornará:
É possível ver que o Granite 3.2 selecionou a palavra-chave correta da entrada, "cães", e pesquisou os arquivos na pasta, encontrando a palavra-chave em um arquivo PDF. Como os resultados do LLM não são puramente determinísticos, você pode obter resultados ligeiramente diferentes com o mesmo prompt ou prompts muito semelhantes.
Crie, implemente e gerencie assistentes e agentes de IA potentes que automatizam fluxos de trabalho e processos com a IA generativa.
Construa o futuro do seu negócio com soluções de IA em que você pode confiar.
Os serviços de IA da IBM Consulting ajudam a reinventar a forma como as empresas trabalham com IA para gerar transformação.