MODULO 3.4

🔧 Function Calling

Definindo funcoes, schemas JSON e integracao com sistemas externos para criar agentes capazes de executar acoes.

6
Topicos
35
Minutos
Avancado
Nivel
Pratico
Tipo
1

🔧 O que e Function Calling

Function Calling permite que o modelo decida quando chamar funcoes externas e com quais argumentos. E o que transforma LLMs em agentes capazes de executar acoes reais.

💡 Como Funciona

  • 1.Voce define funcoes disponiveis (nome, descricao, parametros)
  • 2.Usuario faz um pedido em linguagem natural
  • 3.Modelo decide se precisa chamar uma funcao
  • 4.Modelo retorna nome da funcao + argumentos estruturados
  • 5.Voce executa a funcao e retorna o resultado
  • 6.Modelo usa o resultado para gerar resposta final
2

📋 Definindo Funcoes

Funcoes sao declaradas com nome, descricao e parametros. A descricao e crucial para o modelo entender quando usar.

Exemplo de Declaracao

get_weather = {
    "name": "get_weather",
    "description": "Retorna o clima atual para uma cidade",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "Nome da cidade"
            },
            "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"]
            }
        },
        "required": ["city"]
    }
}
3

📐 JSON Schema

Parametros usam JSON Schema para definir tipos, restricoes e estrutura.

Tipos Basicos

  • "type": "string"
  • "type": "number"
  • "type": "integer"
  • "type": "boolean"
  • "type": "array"
  • "type": "object"

Restricoes Uteis

  • "enum": ["a", "b"] - valores permitidos
  • "minimum": 0 - valor minimo
  • "maximum": 100 - valor maximo
  • "required": ["x"] - campos obrigatorios
4

🔄 Fluxo de Execucao

O fluxo completo envolve multiplas chamadas entre seu codigo e a API.

Implementacao Completa

import google.generativeai as genai

# 1. Definir funcoes
tools = [{ "function_declarations": [get_weather] }]

# 2. Criar modelo com tools
model = genai.GenerativeModel('gemini-pro', tools=tools)

# 3. Enviar prompt
response = model.generate_content("Como esta o tempo em Tokyo?")

# 4. Verificar se ha function call
if response.candidates[0].content.parts[0].function_call:
    fc = response.candidates[0].content.parts[0].function_call
    print(f"Funcao: {fc.name}, Args: {fc.args}")

    # 5. Executar funcao real
    result = call_weather_api(fc.args["city"])

    # 6. Enviar resultado de volta
    response2 = model.generate_content([
        "Como esta o tempo em Tokyo?",
        response.candidates[0].content,
        { "function_response": { "name": fc.name, "response": result } }
    ])
5

🌐 Integracao com APIs

Exemplos praticos de integracao com APIs externas.

🌤️

Weather API

Consultar clima em tempo real para qualquer cidade do mundo.

💾

Database

Executar queries SQL baseadas em perguntas em linguagem natural.

📧

Email

Enviar emails ou criar rascunhos a partir de instrucoes do usuario.

📅

Calendar

Criar, atualizar ou consultar eventos em calendarios.

6

⚙️ Modos de Function Calling

Controle quando o modelo pode ou deve chamar funcoes.

AUTO

Modelo decide se usa funcoes ou nao. Padrao.

ANY

Modelo deve usar alguma funcao. Obrigatorio.

NONE

Funcoes desabilitadas. Apenas texto.

📚 Resumo do Modulo

Function Calling - Modelo decide quando chamar funcoes externas
Declaracoes - Nome, descricao e parametros definem funcoes
JSON Schema - Define tipos e restricoes de parametros
Fluxo - Prompt -> function call -> execucao -> resposta
Integracoes - Weather, Database, Email, Calendar e mais
Modos - AUTO, ANY e NONE para controle fino

Proximo Modulo:

3.5 - Grounding e Search