Function calling (PT)

From Systems analysis wiki
Jump to navigation Jump to search

Function Calling (Chamada de Função) — é um mecanismo em grandes modelos de linguagem (LLMs) que permite ao modelo interagir com ferramentas e APIs externas, gerando dados estruturados (geralmente JSON) para chamar funções em vez de uma resposta de texto direta[1].

Em outras palavras, com base na solicitação do usuário, o modelo determina qual função de um conjunto pré-definido deve ser chamada e com quais parâmetros. Esse mecanismo expande o escopo de aplicação dos LLMs, permitindo que sirvam como uma interface entre a linguagem natural e ações práticas. Isso abre possibilidades para a integração de IA com sistemas externos: o modelo pode solicitar dados atualizados, executar operações ou usar serviços, o que é especialmente valioso na criação de assistentes inteligentes e agentes autônomos. O uso de ferramentas externas também reduz o risco de alucinações (fatos inventados), recorrendo a fontes confiáveis[2].

História e Abordagens de Implementação

Abordagens Iniciais (Prompting e Toolformer)

A ideia de ensinar modelos de linguagem a chamar ferramentas surgiu entre 2022 e 2023. As primeiras abordagens baseavam-se em técnicas de prompting complexo. Em 2022, foi proposto o esquema ReAct, onde o modelo, durante o diálogo, alternava entre raciocínio e ações (chamadas de ferramentas), codificados em um único texto.

Um passo fundamental foi o surgimento do modelo Toolformer, apresentado por pesquisadores da Meta no início de 2023. O Toolformer demonstrou que um LLM pode ser especificamente treinado para chamar de forma autônoma ferramentas externas (calculadora, motor de busca, calendário) por meio de dicas textuais, inserindo tokens especiais de chamada de API no texto gerado[3].

Suporte Oficial e Desenvolvimento

A OpenAI marcou um marco importante ao introduzir oficialmente o suporte para Function Calling em suas APIs para os modelos GPT-3.5 e GPT-4 em junho de 2023[4]. As novas versões dos modelos foram refinadas para reconhecer situações em que a solicitação do usuário implica a chamada de uma função externa e para gerar um objeto JSON precisamente estruturado com os argumentos. A OpenAI descreveu essa capacidade como "uma nova maneira de conectar de forma confiável o GPT com ferramentas e APIs externas".

Iniciativas de Código Aberto

Seguindo as implementações comerciais, surgiram modelos de código aberto refinados para gerar chamadas de função corretas.

  • Gorilla: Um projeto da UC Berkeley, uma versão refinada do LLaMA, capaz de formular chamadas para milhares de APIs diferentes. Para avaliar esses modelos, foi criado o benchmark Berkeley Function-Calling Leaderboard[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Séries de modelos de código aberto, refinados em exemplos sintéticos de chamadas de função, muitas vezes gerados por modelos mais potentes.

Mecanismo de Funcionamento

O processo de uso do Function Calling geralmente envolve várias etapas:

  1. Definição de Funções. O desenvolvedor define antecipadamente o conjunto de funções disponíveis para o modelo (por exemplo, APIs externas) e descreve suas assinaturas e propósitos, geralmente no formato JSON Schema.
  2. Análise da Requisição. Durante o diálogo, o modelo analisa a intenção do usuário e decide autonomamente se deve chamar uma das funções definidas para responder.
  3. Geração da Chamada. Se uma ação for necessária, o LLM gera uma saída estruturada especial (por exemplo, um JSON com o nome da função e os argumentos) em vez de texto comum. Se nenhuma chamada for necessária, o modelo retorna uma resposta de texto normal.
  4. Execução da Função. O programa externo (o wrapper do chatbot ou agente) recebe o JSON, executa a chamada real da função especificada com os parâmetros sugeridos e passa o resultado de volta para o modelo.
  5. Formulação da Resposta Final. O modelo usa os dados recebidos para gerar a resposta final ao usuário[4].

Para gerenciar esse processo de múltiplas etapas durante o treinamento dos modelos, são utilizados formatos de diálogo especiais, como a marcação ChatML da OpenAI, que introduz o papel de "função" para transmitir os resultados das chamadas, além dos papéis de "usuário" и "assistente".

Aplicações e Vantagens

A capacidade de chamar funções expande significativamente a gama de tarefas que podem ser resolvidas com LLMs.

  • Integração com APIs externas. O modelo pode responder a solicitações que exigem informações atualizadas, chamando serviços externos (por exemplo, para obter a previsão do tempo, taxas de câmbio, notícias).
  • Automação de ações do usuário. O LLM pode executar tarefas rotineiras: enviar e-mails, criar eventos no calendário, fazer pedidos em lojas online.
  • Acesso a bancos de dados e analytics. Solicitações em linguagem natural podem ser traduzidas em chamadas de API internas ou consultas SQL para extrair e analisar dados.
  • Extração de informações estruturadas. O LLM pode extrair fatos de textos longos (por exemplo, nomes, datas, endereços) e retorná-los como um array JSON estruturado, conveniente для processamento programático posterior.

Questões de Segurança

Ao expandir as capacidades dos modelos, o Function Calling também introduz novos riscos.

  • Saídas não verificadas. A interação do modelo com ferramentas externas deve ser cuidadosamente protegida. Se o modelo receber um valor malicioso ou errôneo de uma API, ele pode incluí-lo na resposta ou chamar outra função com base nele, levando a consequências imprevisíveis.
  • Ataques através de argumentos de função. Pesquisadores descobriram vulnerabilidades específicas do modo Function Calling. Em 2025, foi demonstrado um ataque denominado "O Lado Sombrio do Function Calling". Sua essência reside em propor ao modelo uma "função" especial, dentro de cujos argumentos está oculta uma instrução proibida (payload de jailbreak). O modelo, seguindo o princípio da chamada de função, gera argumentos contendo conteúdo que viola as regras e, assim, contorna os filtros de moderação. Testes mostraram que o ataque foi bem-sucedido em mais de 90% dos casos em seis modelos modernos, incluindo GPT-4 e Claude[2].

Para prevenir tais incidentes, recomenda-se fornecer ao modelo apenas ferramentas confiáveis, implementar a confirmação do usuário antes de executar ações críticas, e usar prompts "defensivos" especiais e validação rigorosa dos argumentos para conteúdo perigoso.

Referências Bibliográficas

  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
  • OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

Notas

  1. «What is Function Calling with LLMs?». Hopsworks. [1]
  2. 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]