\n\n\n\n Criação de Plugins para Agentes: Um Guia Rápido com Exemplos Práticos - AgntKit \n

Criação de Plugins para Agentes: Um Guia Rápido com Exemplos Práticos

📖 14 min read2,609 wordsUpdated Apr 5, 2026

“`html

Introdução aos Plugins para Agentes

O espaço da inteligência artificial está em rápida evolução, com os modelos de linguagem de grande porte (LLM) na vanguarda dessa revolução. Esses modelos, embora incrivelmente poderosos, geralmente operam dentro dos limites de seus dados de treinamento. Para realmente desbloquear seu potencial e integrá-los em aplicações do mundo real, precisamos ampliar suas capacidades além da simples geração de texto. É aqui que os plugins para agentes entram em cena. Os plugins para agentes são essencialmente ferramentas ou funções que um agente de IA pode escolher usar para executar tarefas específicas, acessar informações externas ou interagir com outros sistemas. Eles preenchem a lacuna entre as capacidades de raciocínio do LLM e o mundo exterior, transformando um modelo de linguagem em um agente sofisticado orientado a objetivos.

Imagine um assistente de IA que não apenas entende seu pedido de ‘encontrar o restaurante italiano mais próximo’, mas pode realmente navegar na web, filtrar os resultados e fornecer direções. Esse nível de funcionalidade é alcançado por meio de plugins. Esses plugins permitem que o agente:

  • Acesse dados em tempo real: Recupere as condições climáticas atuais, preços de ações, notícias ou informações de banco de dados.
  • Complete ações: Envie e-mails, agende compromissos, verifique dispositivos de casa inteligente ou interaja com APIs.
  • Supere as limitações dos LLM: Execute cálculos complexos, execute código ou recupere informações factuais precisas que podem estar fora do escopo dos dados de treinamento.

Este guia o levará pelos passos práticos para construir plugins para agentes, focando em uma abordagem de início rápido com exemplos claros para colocá-lo na rota certa.

Compreendendo os Conceitos Fundamentais

Como os Agentes Usam os Plugins

Em essência, um agente de IA opera em um ciclo de ‘pensa-planeja-age’. Quando apresentado a um prompt, o agente primeiro ‘pensa’ na melhor linha de ação. Se determina que é necessário uma ferramenta externa (plugin) para atender ao pedido, ‘planeja’ qual plugin usar, quais argumentos passar e então ‘age’ invocando aquele plugin. A saída do plugin é então retornada ao agente, que usa essas novas informações para continuar seu processo de raciocínio e formular uma resposta final.

Componentes-Chave de um Plugin

Embora as implementações possam variar, a maioria dos plugins para agentes compartilha esses componentes fundamentais:

  • Nome: Um identificador único para o plugin (ex. get_weather, send_email).
  • Descrição: Uma explicação concisa do que o plugin faz. Isso é crucial, pois o LLM usa essa descrição para decidir quando e como utilizar o plugin.
  • Parâmetros/Esquemas: Uma definição das entradas que o plugin espera, frequentemente descritas usando um esquema (como JSON Schema). Isso informa ao LLM quais argumentos fornecer.
  • Função/Implementação: O código real que executa a lógica do plugin (ex. fazer uma chamada de API, executar um cálculo).

Início Rápido: Construa Seu Primeiro Plugin

Para este início rápido, usaremos um framework comum baseado em Python que simplifica o desenvolvimento de agentes. Muitos frameworks como LangChain, LlamaIndex ou até mesmo as capacidades de chamada de funções da OpenAI oferecem mecanismos semelhantes. Focaremos nos princípios que são transferíveis entre eles.

Requisitos

  • Python instalado (3.8+)
  • Um ambiente virtual (recomendado)
  • Conhecimento básico das funções do Python

Exemplo 1: Um Plugin Calculadora Simples

Vamos começar com um plugin muito simples que executa uma operação de soma. Embora um LLM possa executar operações matemáticas simples, isso ilustra bem o processo.

Passo 1: Definir a Função do Plugin

Para começar, criaremos uma função Python padrão que executa a operação desejada.

# calculator_plugin.py
def add_numbers(num1: float, num2: float) -> float:
 """
 Soma dois números.
 Args:
 num1 (float): O primeiro número.
 num2 (float): O segundo número.
 Returns:
 float: A soma dos dois números.
 """
 return num1 + num2

Passo 2: Descrever o Plugin para o Agente

“““html

É aqui que os frameworks se revelam úteis. Fornecem decoradores ou classes específicas para transformar uma função Python regular em uma ferramenta chamável pelo agente. Devemos fornecer uma descrição e, implicitamente, o LLM inferirá os parâmetros a partir da assinatura da função e das docstrings.

Utilizamos uma representação conceitual do framework (semelhante a como LangChain ou LlamaIndex o abstrairiam):

# Usando uma classe 'Tool' conceitual (semelhante a Tool de LangChain ou FunctionTool de LlamaIndex)
class CalculatorTool:
 def __init__(self):
 self.name = "add_numbers"
 self.description = (
 "Uma ferramenta para somar dois números. "
 "Útil quando você precisa somar dois valores numéricos."
 )
 self.function = add_numbers
 self.parameters = {
 "type": "object",
 "properties": {
 "num1": {"type": "number", "description": "O primeiro número a ser somado"},
 "num2": {"type": "number", "description": "O segundo número a ser somado"}
 },
 "required": ["num1", "num2"]
 }

# Ou, de forma mais prática, usando a criação de ferramenta embutida de um framework:

# Exemplo com a create_function_tool de LangChain
from langchain.tools import create_function_tool

def add_numbers(num1: float, num2: float) -> float:
 """
 Soma dois números.
 Args:
 num1 (float): O primeiro número.
 num2 (float): O segundo número.
 Returns:
 float: A soma dos dois números.
 """
 return num1 + num2

add_tool = create_function_tool(
 func=add_numbers,
 name="add_numbers",
 description="Uma ferramenta para somar dois números. Útil quando você precisa somar dois valores numéricos."
)

print(add_tool.name)
print(add_tool.description)
# print(add_tool.args) # LangChain infere isso a partir da assinatura da função

A descrição é fundamental. O LLM baseia-se fortemente nisso para entender o propósito do plugin e quando invocá-lo. Torne-a clara, concisa e destaque sua utilidade.

Passo 3: Integrar com um Agente

Agora, precisamos fornecer essa ferramenta a um agente AI. Isso geralmente envolve a instância de um LLM e de uma classe agente, passando nossa lista de ferramentas para ela.

Usando LangChain como exemplo:

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain import hub

# Pressupondo que você tenha uma chave API da OpenAI definida como variável de ambiente (OPENAI_API_KEY)
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# As ferramentas que criamos
tools = [add_tool]

# Obtenha o prompt do hub do LangChain
prompt = hub.pull("hwchase17/openai-tools-agent")

# Crie o agente
agent = create_openai_tools_agent(llm, tools, prompt)

# Crie um executor de agentes para fazer o agente funcionar
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Agora, vamos executá-lo!
response = agent_executor.invoke({"input": "Qual é 123 + 456?"})
print(response["output"])

Quando você executa isso, verá o processo de pensamento do agente (se verbose=True):


> Entrando em uma nova cadeia de AgentExecutor...
Pensamento:
O usuário pede para somar dois números. A ferramenta `add_numbers` é adequada para essa tarefa.
Devo chamar a ferramenta `add_numbers` com `num1=123` e `num2=456`.
Ação:
```json
{
 "tool_name": "add_numbers",
 "args": {
 "num1": 123,
 "num2": 456
 }
}
```
Observação: 579.0
Pensamento:
A ferramenta `add_numbers` retornou 579.0. Esta é a soma de 123 e 456.
Agora eu deveria responder ao usuário com o resultado.
Resposta Final: A soma de 123 e 456 é 579.0.

> Cadeia completa.
A soma de 123 e 456 é 579.0.

Exemplo Prático 2: Um Plugin Meteorológico

Vamos construir um plugin mais prático que recupera as informações meteorológicas atuais utilizando uma API pública. Utilizaremos a API da OpenWeatherMap para este exemplo (você precisará de uma chave API gratuita).

Passo 1: Obter uma Chave API

Visite OpenWeatherMap API e registre-se para obter uma chave API gratuita.

Passo 2: Definir a Função do Plugin

Esta função realizará uma solicitação HTTP à API da OpenWeatherMap.

“““html


import requests
import os
from typing import Dict, Any

# Certifique-se de definir sua chave API como variável de ambiente
# Por exemplo, export OPENWEATHER_API_KEY="YOUR_API_KEY"
OPENWEATHER_API_KEY = os.getenv("OPENWEATHER_API_KEY")

def get_current_weather(city: str, unit: str = "metric") -> Dict[str, Any]:
 """
 Recupera as condições meteorológicas atuais para uma cidade especificada.

 Args:
 city (str): O nome da cidade (por exemplo, "Londres", "Nova York").
 unit (str): A unidade de medida da temperatura. Pode ser "metric" (Celsius) ou "imperial" (Fahrenheit). Padrão para "metric".

 Returns:
 dict: Um dicionário contendo informações meteorológicas, ou uma mensagem de erro.
 """
 if not OPENWEATHER_API_KEY:
 return {"error": "Chave API do OpenWeatherMap não definida."}

 base_url = "http://api.openweathermap.org/data/2.5/weather"
 params = {
 "q": city,
 "appid": OPENWEATHER_API_KEY,
 "units": unit
 }
 try:
 response = requests.get(base_url, params=params)
 response.raise_for_status() # Levanta um HTTPError para respostas inválidas (4xx ou 5xx)
 data = response.json()

 if data.get("cod") == "404":
 return {"error": f"Cidade '{city}' não encontrada."}

 weather_description = data["weather"][0]["description"]
 temperature = data["main"]["temp"]
 feels_like = data["main"]["feels_like"]
 humidity = data["main"]["humidity"]
 wind_speed = data["wind"]["speed"]

 return {
 "city": city,
 "description": weather_description,
 "temperature": temperature,
 "feels_like": feels_like,
 "humidity": humidity,
 "wind_speed": wind_speed,
 "unit": "Celsius" if unit == "metric" else "Fahrenheit"
 }
 except requests.exceptions.RequestException as e:
 return {"error": f"Erro de rede ou API: {e}"}
 except KeyError as e:
 return {"error": f"Erro ao analisar os dados meteorológicos: chave ausente {e}. Resposta: {data}"}

Passo 3: Crie a Ferramenta para o Agente


from langchain.tools import create_function_tool

weather_tool = create_function_tool(
 func=get_current_weather,
 name="get_current_weather",
 description=(
 "Uma ferramenta para recuperar as condições meteorológicas atuais para uma cidade especificada. "
 "Útil quando se pergunta sobre o clima atual, a temperatura ou as condições em uma localização. "
 "Forneça o nome da cidade e, opcionalmente, a unidade (metric para Celsius, imperial para Fahrenheit)."
 )
)

print(weather_tool.name)
print(weather_tool.description)

Note a descrição detalhada, que ajuda o LLM a entender quando usar essa ferramenta e quais parâmetros são necessários.

Passo 4: Integre e Teste

Adicione a nova ferramenta à lista de ferramentas do seu agente e teste-a.


# ... (importações e configuração do LLM anteriores)

# Combine nossas ferramentas
tools = [add_tool, weather_tool]

# Crie o agente e o executor como antes
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Teste o plugin do clima
response_weather = agent_executor.invoke({"input": "Como está o tempo em Tóquio?"})
print(response_weather["output"])

response_weather_imperial = agent_executor.invoke({"input": "Qual é a temperatura em Nova York em Fahrenheit?"})
print(response_weather_imperial["output"])

response_invalid_city = agent_executor.invoke({"input": "Me diga o tempo em Nocityhere."})
print(response_invalid_city["output"])

Saída esperada (variável de acordo com as condições meteorológicas reais e a configuração da chave API):


> Entrando na nova cadeia AgentExecutor...
Pensamento:
O usuário está perguntando sobre o tempo em Tóquio. A ferramenta `get_current_weather` é apropriada para essa tarefa.
Devo chamar `get_current_weather` com `city='Tóquio'`.
Ação:
```json
{
 "tool_name": "get_current_weather",
 "args": {
 "city": "Tóquio"
 }
}
```
Observação: {'city': 'Tóquio', 'description': 'chuva leve', 'temperature': 15.2, 'feels_like': 14.8, 'humidity': 90, 'wind_speed': 3.09, 'unit': 'Celsius'}
Pensamento:
O clima em Tóquio é chuva leve com uma temperatura de 15.2 Celsius, que se sente como 14.8 Celsius. A umidade é de 90% e a velocidade do vento é de 3.09 m/s.
Resposta final: Em Tóquio, o clima atual é chuva leve, com uma temperatura de 15.2°C (percebida como 14.8°C). A umidade está em 90% e a velocidade do vento é de 3.09 m/s.
> Cadeia terminada.
Em Tóquio, o clima atual é chuva leve, com uma temperatura de 15.2°C (percebida como 14.8°C). A umidade está em 90% e a velocidade do vento é de 3.09 m/s.

Considerações Avançadas e Melhores Práticas

Gerenciamento Sólido de Erros

“““html

Como visto no exemplo meteorológico, os plugins do mundo real interagem com sistemas externos que podem falhar. Implemente sempre uma gestão de erros sólida (blocos try-except) para capturar problemas de rede, erros de API ou formatos de dados inesperados. Retorne mensagens de erro informativas para que o agente possa compreender o que deu errado e potencialmente comunicar isso ao usuário ou tentar uma abordagem alternativa.

Descrições Claras e Específicas

Isso não pode ser subestimado. A capacidade do LLM de escolher a ferramenta correta depende quase inteiramente da qualidade da descrição do seu plugin. Inclua:

  • O que a ferramenta faz.
  • Quando deve ser utilizada.
  • Quais argumentos se espera e seus tipos/propósitos.
  • Quaisquer restrições ou efeitos colaterais.

Validação dos Parâmetros

Embora o LLM tente deduzir os parâmetros, é uma boa prática adicionar a validação de entrada dentro das funções do seu plugin. Isso previne que dados inesperados causem problemas se o LLM cometer um erro ou se o usuário fornecer entradas malformadas.

Operações Assíncronas

Para os plugins que envolvem operações de longo prazo (por exemplo, consultas em bancos de dados complexas, uploads de arquivos grandes), considere implementá-las de forma assíncrona para evitar bloquear o thread de execução do agente. Muitos frameworks suportam ferramentas assíncronas.

Gestão de Estado (Avançada)

A maioria dos plugins simples é sem estado. No entanto, para interações mais complexas, um agente pode precisar manter o estado ao longo de múltiplas turnos ou chamadas ao plugin. Este é um assunto mais avançado e muitas vezes envolve a gestão do histórico de conversas ou um arquivo de estado dedicado pelo framework do agente.

Segurança

Tenha cuidado com a segurança ao expor funcionalidades através de plugins. Um agente pode potencialmente ser induzido a abusar de um plugin se não for devidamente protegido. Considere:

  • Controle de Acesso: Assegure-se de que os plugins acessem apenas os recursos aos quais estão autorizados.
  • Sanitização de Entradas: Previna ataques de injeção se as entradas do plugin forem passadas para bancos de dados ou comandos shell.
  • Mínimo Privilégio: Forneça aos plugins apenas as permissões mínimas necessárias para realizar sua tarefa.

Combinação de Ferramentas e Raciocínio

O verdadeiro poder dos agentes emerge quando podem encadear várias ferramentas juntas. Por exemplo, um agente pode primeiro usar uma ferramenta de pesquisa para encontrar informações relevantes, depois uma ferramenta de síntese para destilar essas informações e finalmente uma ferramenta de email para enviar o resumo. Projete seus plugins para que sejam atômicos e componíveis, permitindo que o agente os combine de maneira flexível.

Conclusão

Construir plugins para agentes é uma maneira poderosa de estender as capacidades dos grandes modelos linguísticos, transformando-os de geradores de texto sofisticados em agentes inteligentes e orientados à ação. Seguindo este guia rápido e compreendendo os princípios fundamentais, você pode começar a integrar dados externos, serviços e lógica complexa em suas aplicações de IA.

Lembre-se de se concentrar em descrições claras, gestão sólida de erros e projeto de funções atômicas e componíveis. À medida que você se torna mais confortável, pode explorar tópicos mais avançados como operações assíncronas, gestão de estado e segurança para construir agentes de IA cada vez mais sofisticados e confiáveis. O futuro da interação em IA reside nessas capacidades estendidas e, ao dominar o desenvolvimento de plugins, você está na vanguarda deste empolgante limite.

“`

🕒 Published:

✍️
Written by Jake Chen

AI technology writer and researcher.

Learn more →
Browse Topics: comparisons | libraries | open-source | reviews | toolkits
Scroll to Top