PolarPOLAR

Ferramentas Brasileiras

Ferramentas nativas via function calling: CEP, CNPJ, legislação, acompanhamento processual e web search.

Visão Geral

A Polar oferece ferramentas nativas brasileiras que podem ser usadas via function calling. Estas ferramentas permitem que o modelo acesse informações em tempo real sobre endereços, empresas, legislação, processos judiciais e resultados de busca na web.

CEP Lookup

Busca de endereço a partir de um código postal (CEP) brasileiro.

Definição da Ferramenta

{
  "type": "function",
  "function": {
    "name": "cep_lookup",
    "description": "Busca endereço completo a partir de um CEP brasileiro",
    "parameters": {
      "type": "object",
      "properties": {
        "cep": {
          "type": "string",
          "description": "CEP no formato 00000-000 ou 00000000"
        }
      },
      "required": ["cep"]
    }
  }
}

Exemplo

from openai import OpenAI

client = OpenAI(
    base_url="https://api.polarai.com.br/v1",
    api_key="pk-sua-chave-aqui"
)

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {"role": "user", "content": "Qual o endereço do CEP 01001-000?"}
    ],
    tools=[{
        "type": "function",
        "function": {
            "name": "cep_lookup",
            "description": "Busca endereço completo a partir de um CEP brasileiro",
            "parameters": {
                "type": "object",
                "properties": {
                    "cep": {"type": "string"}
                },
                "required": ["cep"]
            }
        }
    }],
    tool_choice="auto"
)

# O modelo chama a ferramenta automaticamente
tool_call = response.choices[0].message.tool_calls[0]
print(f"Ferramenta: {tool_call.function.name}")
print(f"Argumentos: {tool_call.function.arguments}")

Resposta da Ferramenta

{
  "cep": "01001-000",
  "logradouro": "Praça da Sé",
  "complemento": "lado ímpar",
  "bairro": "Sé",
  "localidade": "São Paulo",
  "uf": "SP",
  "ibge": "3550308",
  "ddd": "11"
}

CNPJ Query

Consulta de informações de empresas brasileiras pelo CNPJ.

Definição da Ferramenta

{
  "type": "function",
  "function": {
    "name": "cnpj_query",
    "description": "Consulta dados de uma empresa brasileira pelo CNPJ",
    "parameters": {
      "type": "object",
      "properties": {
        "cnpj": {
          "type": "string",
          "description": "CNPJ no formato 00.000.000/0000-00 ou apenas números"
        }
      },
      "required": ["cnpj"]
    }
  }
}

Exemplo

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {"role": "user", "content": "Quais os dados da empresa com CNPJ 00.000.000/0001-91?"}
    ],
    tools=[{
        "type": "function",
        "function": {
            "name": "cnpj_query",
            "description": "Consulta dados de uma empresa brasileira pelo CNPJ",
            "parameters": {
                "type": "object",
                "properties": {
                    "cnpj": {"type": "string"}
                },
                "required": ["cnpj"]
            }
        }
    }],
    tool_choice="auto"
)

Resposta da Ferramenta

{
  "cnpj": "00.000.000/0001-91",
  "razao_social": "Banco do Brasil S.A.",
  "nome_fantasia": "BANCO DO BRASIL",
  "situacao_cadastral": "ATIVA",
  "data_abertura": "1966-08-01",
  "natureza_juridica": "Sociedade de Economia Mista",
  "porte": "DEMAIS",
  "capital_social": 120000000000.00,
  "endereco": {
    "logradouro": "SAUN Quadra 5 Lote B",
    "bairro": "Asa Norte",
    "municipio": "Brasília",
    "uf": "DF",
    "cep": "70040-912"
  },
  "atividade_principal": {
    "codigo": "64.22-1-00",
    "descricao": "Bancos múltiplos, com carteira comercial"
  }
}

Busca em legislação federal, estadual e municipal.

Definição da Ferramenta

{
  "type": "function",
  "function": {
    "name": "legislation_search",
    "description": "Busca artigos e leis na legislação brasileira",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "Busca por texto, número da lei ou artigo específico"
        },
        "scope": {
          "type": "string",
          "enum": ["federal", "estadual", "municipal", "todos"],
          "description": "Escopo da busca"
        },
        "law_type": {
          "type": "string",
          "enum": ["constituicao", "lei_ordinaria", "lei_complementar", "decreto", "medida_provisoria", "todos"],
          "description": "Tipo de legislação"
        }
      },
      "required": ["query"]
    }
  }
}

Exemplo

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {"role": "user", "content": "O que diz o artigo 5º da Constituição Federal?"}
    ],
    tools=[{
        "type": "function",
        "function": {
            "name": "legislation_search",
            "description": "Busca artigos e leis na legislação brasileira",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string"},
                    "scope": {"type": "string"},
                    "law_type": {"type": "string"}
                },
                "required": ["query"]
            }
        }
    }],
    tool_choice="auto"
)

Process Tracking

Acompanhamento de processos judiciais em tribunais brasileiros.

Definição da Ferramenta

{
  "type": "function",
  "function": {
    "name": "process_tracker",
    "description": "Consulta o andamento de processos judiciais brasileiros",
    "parameters": {
      "type": "object",
      "properties": {
        "case_number": {
          "type": "string",
          "description": "Número do processo no formato CNJ (0000000-00.0000.0.00.0000)"
        },
        "tribunal": {
          "type": "string",
          "description": "Sigla do tribunal (ex: TJSP, STJ, TST)"
        }
      },
      "required": ["case_number"]
    }
  }
}

Exemplo

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {"role": "user", "content": "Qual o status do processo 1234567-89.2024.8.26.0100?"}
    ],
    tools=[{
        "type": "function",
        "function": {
            "name": "process_tracker",
            "description": "Consulta o andamento de processos judiciais brasileiros",
            "parameters": {
                "type": "object",
                "properties": {
                    "case_number": {"type": "string"},
                    "tribunal": {"type": "string"}
                },
                "required": ["case_number"]
            }
        }
    }],
    tool_choice="auto"
)

Resposta da Ferramenta

{
  "case_number": "1234567-89.2024.8.26.0100",
  "tribunal": "TJSP",
  "vara": "5ª Vara Cível",
  "classe": "Procedimento Comum Cível",
  "assunto": "Indenização por Dano Moral",
  "status": "Em andamento",
  "last_movement": {
    "date": "2024-03-10",
    "description": "Conclusos para sentença"
  },
  "parties": {
    "autor": "João da Silva",
    "reu": "Empresa XYZ Ltda"
  }
}

Busca na web via SearXNG (motor de busca livre).

Definição da Ferramenta

{
  "type": "function",
  "function": {
    "name": "web_search",
    "description": "Busca na web em tempo real usando SearXNG",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "Consulta de busca"
        },
        "language": {
          "type": "string",
          "description": "Idioma dos resultados (padrão: pt-BR)"
        },
        "limit": {
          "type": "integer",
          "description": "Número máximo de resultados (padrão: 5)"
        }
      },
      "required": ["query"]
    }
  }
}

Exemplo

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {"role": "user", "content": "Quais as últimas notícias sobre reforma tributária?"}
    ],
    tools=[{
        "type": "function",
        "function": {
            "name": "web_search",
            "description": "Busca na web em tempo real usando SearXNG",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string"},
                    "language": {"type": "string"},
                    "limit": {"type": "integer"}
                },
                "required": ["query"]
            }
        }
    }],
    tool_choice="auto"
)

Usando Múltiplas Ferramentas

O modelo pode usar múltiplas ferramentas em uma única conversa:

all_tools = [
    {"type": "function", "function": {"name": "cep_lookup", ...}},
    {"type": "function", "function": {"name": "cnpj_query", ...}},
    {"type": "function", "function": {"name": "legislation_search", ...}},
    {"type": "function", "function": {"name": "process_tracker", ...}},
    {"type": "function", "function": {"name": "web_search", ...}}
]

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[
        {
            "role": "user",
            "content": "Busque os dados do CNPJ 00.000.000/0001-91 e o endereço do CEP 70040-912"
        }
    ],
    tools=all_tools,
    tool_choice="auto"
)

# O modelo pode chamar múltiplas ferramentas em paralelo
for tool_call in response.choices[0].message.tool_calls:
    print(f"Ferramenta: {tool_call.function.name}")
    print(f"Args: {tool_call.function.arguments}")

Ferramentas Nativas vs Function Calling

As ferramentas brasileiras da Polar podem ser usadas de duas formas:

MétodoDescriçãoQuando Usar
Ferramenta nativaExecução automática pela PolarSimplicidade, sem backend próprio
Function callingModelo sugere, você executaControle total, lógica customizada

Para usar ferramentas nativas (a Polar executa automaticamente):

response = client.chat.completions.create(
    model="urso-mabe",
    messages=[{"role": "user", "content": "Busque o CEP 01001-000"}],
    extra_body={
        "native_tools": ["cep_lookup", "cnpj_query"]
    }
)
# A resposta já inclui os dados do CEP

On this page