Esquemas de ferramentas e funções
Esquemas para chamar funções.
Esquemas de ferramentas e funções é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.
Ferramentas são Esquemas com Intenção
A chamada de funções permite que um modelo solicite que seu código execute uma ação. Cada ferramenta é declarada com um nome, uma descrição, que indica quando usá-la, e um Esquema JSON para seus parâmetros.
O modelo nunca executa código; ele emite uma solicitação de chamada estruturada que seu ambiente de execução usa para dispatch. O esquema é o que torna os argumentos analisáveis.
Anatomia de uma Definição de Ferramenta
Uma definição de ferramenta é uma declaração de capacidade envolvida por um esquema.
{
'type': 'function',
'function': {
'name': 'get_weather',
'description': 'Get current weather for a city. Use when the user asks about weather.',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string'},
'units': {'type': 'string', 'enum': ['celsius', 'fahrenheit']}
},
'required': ['city', 'units'],
'additionalProperties': False
}
}
}A Descrição Orienta a Seleção
Com muitas ferramentas disponíveis, o modelo escolhe principalmente com base na descrição. Escreva descrições como regras de decisão:
- Indique quando usá-la e quando não usá-la.
- Distinga-a das ferramentas semelhantes.
- Mencione as pré-condições necessárias.
Descrições ruins causam a seleção da ferramenta errada com mais frequência do que esquemas ruins causam erros nos argumentos.
O Ciclo de Chamada, Execução e Retorno
A chamada de funções ocorre em várias rodadas. O modelo emite uma chamada, você a executa, faz append do resultado e o modelo continua.
resp = client.chat.completions.create(model='gpt-4o', messages=msgs, tools=tools)
call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append(resp.choices[0].message)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps(result)})
# call the model again to continue with the tool resultChamadas Paralelas de Ferramentas
Os modelos modernos podem solicitar várias chamadas de ferramentas em uma única rodada quando as ações são independentes. Seu ambiente de execução deve iterar sobre todas as tool_calls, executá-las, idealmente em simultâneo, e retornar uma mensagem de ferramenta para cada tool_call_id.
Nunca presuma que haverá uma única chamada; sempre use um ciclo.
for call in resp.choices[0].message.tool_calls:
args = json.loads(call.function.arguments)
result = dispatch(call.function.name, args)
msgs.append({'role': 'tool', 'tool_call_id': call.id,
'content': json.dumps(result)})Forçando e Restringindo o Uso de Ferramentas
Controle a seleção com tool_choice:
auto— o modelo decide.required— deve chamar alguma ferramenta.{name: ...}— força uma ferramenta específica.none— desabilita as ferramentas nesta rodada.
Forçar uma ferramenta específica transforma a chamada de funções em pura extração estruturada.
client.chat.completions.create(
model='gpt-4o', messages=msgs, tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'get_weather'}}
)Validar Argumentos Antes da Execução
Mesmo com esquemas rigorosos, trate os argumentos das ferramentas como entrada não confiável. Faça uma nova validação em relação ao esquema e aplique regras de negócio antes de tocar em sistemas reais, como bancos de dados, pagamentos e exclusões de arquivos.
def dispatch(name, args):
schema = TOOLS[name]['function']['parameters']
jsonschema.validate(args, schema) # defense in depth
if name == 'refund' and args['amount'] > MAX_AUTO_REFUND:
return {'error': 'requires human approval'}
return HANDLERS[name](**args)Erros de Ferramentas Fazem Parte do Protocolo
Quando uma ferramenta falha, retorne um erro estruturado como resultado da ferramenta, em vez de lançar uma exceção. O modelo pode então pedir desculpas, tentar novamente com argumentos corrigidos ou escolher outra ferramenta.
Faça com que os erros indiquem como agir: inclua um motivo e, quando for seguro, uma dica para recuperação.
{'status': 'error',
'code': 'CITY_NOT_FOUND',
'message': 'No city named Xyz. Ask the user to clarify the city.'}Mantenha Pequeno o Conjunto de Ferramentas
Dezenas de ferramentas prejudicam a precisão da seleção e aumentam o custo de tokens, pois todo esquema fica no contexto a cada rodada. Medidas:
- Agrupe ações relacionadas em uma ferramenta com uma enumeração
action. - Exponha dinamicamente apenas as ferramentas relevantes para o estado atual.
- Use espaços de nomes para reduzir a confusão entre ferramentas semelhantes.
Fortalecendo o Esquema para Efeitos Colaterais
Para ações destrutivas, incorpore a segurança ao próprio esquema: exija um campo de confirmação explícita, restrinja os intervalos e evite identificadores de texto livre, dando preferência a enumerações ou padrões validados.
{
'name': 'delete_records',
'parameters': {
'type': 'object',
'properties': {
'table': {'type': 'string', 'enum': ['logs', 'temp_cache']},
'confirm': {'type': 'boolean'},
'max_rows': {'type': 'integer', 'minimum': 1, 'maximum': 1000}
},
'required': ['table', 'confirm', 'max_rows'],
'additionalProperties': False
}
}Testar definições de ferramentas
Trate a seleção de ferramentas como um comportamento mensurável. Crie um conjunto de avaliação de instruções associado à ferramenta e aos argumentos esperados e, em seguida, verifique se o modelo faz a escolha correta. Monitore regressões ao reformular descrições ou adicionar novas ferramentas.
cases = [
{'prompt': 'Whats it like in Paris?', 'expect_tool': 'get_weather'},
{'prompt': 'Convert 10 USD to EUR', 'expect_tool': 'fx_convert'}
]
for c in cases:
assert run(c['prompt']).tool_name == c['expect_tool']Verificação rápida
Um modelo emite duas chamadas de ferramentas independentes em uma única resposta do assistente. O que seu ambiente de execução deve fazer?
Recapitulação
Esquemas de ferramentas e funções na prática:
- As descrições orientam a seleção; os esquemas orientam argumentos que podem ser analisados.
- Percorra todas as chamadas de ferramentas; ofereça suporte à execução em paralelo.
- Controle o comportamento com a escolha de ferramenta; force uma ferramenta para extração pura.
- Valide novamente os argumentos; retorne erros estruturados.
- Mantenha pequena a superfície de ferramentas e reforce a proteção de ações destrutivas.
A seguir: ciclos de reparo e validação para quando a saída ainda apresentar problemas.
Perguntas Frequentes
A aula “Esquemas de ferramentas e funções” é grátis?
Sim — o texto completo de “Esquemas de ferramentas e funções” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.
O que vou aprender em “Esquemas de ferramentas e funções”?
Esquemas para chamar funções. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Prompt Engineering?
Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Esquemas de ferramentas e funções”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Prompt Engineering?
Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar saída estruturada
- Esquema JSON em solicitações
- Esquemas de ferramentas e funções
- Ciclos de correção e validação