Como criar uma ferramenta customizada em Python na Cortex?

Viewed 6

Quero que meu agente consulte o CRM da empresa. Como desenvolver essa ferramenta?

1 Answers

Uma Tool é um arquivo Python com uma classe Tools. Exemplo mínimo:

"""
title: Consulta CRM
author: Sua Empresa
version: 1.0.0
description: Consulta clientes no CRM
requirements: httpx
"""

import httpx
from pydantic import BaseModel, Field

class Tools:
    def __init__(self):
        self.valves = self.Valves()

    class Valves(BaseModel):
        crm_url: str = Field(default="", description="URL do CRM")
        api_token: str = Field(default="", description="Token")

    async def buscar_cliente(self, cnpj: str) -> dict:
        """Busca cliente pelo CNPJ."""
        headers = {"Authorization": f"Bearer {self.valves.api_token}"}
        async with httpx.AsyncClient() as client:
            r = await client.get(
                f"{self.valves.crm_url}/clientes",
                params={"cnpj": cnpj},
                headers=headers,
            )
        return r.json()

Regras essenciais:

  1. Classe deve se chamar exatamente Tools
  2. Todos os parâmetros precisam de type hints (o modelo lê pra saber como chamar)
  3. Docstring descritiva em cada método — o modelo decide quando chamar baseado nela
  4. Use async para chamadas externas
  5. Secrets sempre via Valves (nunca hardcoded)

Importe a ferramenta em Workspace → Ferramentas → + Nova, cole o código, configure as Valves (URL, token) e vincule ao agente.

⚠️ Segurança: Tools executam código Python arbitrário no servidor. Só admins confiáveis devem criá-las.

📖 Documentação completa na Wiki: