Use a ferramenta de funções
A ferramenta de funções permite que o seu modelo chame funções definidas pelo programador para recuperar dados ou desencadear ações durante uma resposta.
Qual é a ferramenta funcional?
A ferramenta de função (chamada de função) permite que um modelo decida quando chamar ferramentas nomeadas que expõe na sua aplicação. O modelo não executa diretamente a sua lógica de negócio. Em vez disso, devolve uma chamada de função estruturada, o seu código executa a função e depois passa a saída da função de volta ao modelo.
Este padrão é ideal para ligar o raciocínio do modelo a sistemas do mundo real como APIs, bases de dados, fluxos de trabalho empresariais e funções utilitárias.
Os principais recursos incluem:
- Chamadas estruturadas de ferramentas - O modelo emite pedidos explícitos de chamadas de função
- Execução controlada pelo programador - A sua aplicação decide como e onde as funções correm
- Padrão de integração fiável - Chamar APIs, serviços internos ou utilitários auxiliares de forma segura
- Orquestração de múltiplas voltas - Devolver a saída da ferramenta e deixar o modelo continuar a raciocinar
- Respostas fundamentadas - As respostas podem incluir dados em tempo real, gerados pelo sistema
Casos comuns de utilização
| Caso de uso | Exemplo |
|---|---|
| Integração de Sistemas | Ligue para uma API interna para detalhes da conta ou da encomenda |
| Automação de Tarefas | Ativar fluxos de trabalho como criação de tickets ou notificações |
| Pesquisa de Dados | Consulte regras de negócio ou tabelas de referência antes de responder |
Um exemplo simples
Aqui está um exemplo que expõe uma get_time função e permite ao modelo chamá-la quando necessário:
import time
from openai import OpenAI
# Function to get the current time
def get_time():
return f"The time is {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"
# Main function
def main():
client = OpenAI(
base_url={openai_endpoint},
api_key={auth_key_or_token}
)
function_tools = [
{
"type": "function",
"name": "get_time",
"description": "Get the current time"
}
]
# Initialize messages with a system prompt
messages = [
{"role": "developer", "content": "You are an AI assistant that provides information."},
]
# Loop until the user types 'quit'
while True:
prompt = input("\nEnter a prompt (or type 'quit' to exit)\n")
if prompt.lower() == "quit":
break
# Append the user prompt to the messages
messages.append({"role": "user", "content": prompt})
# Get initial response
response = client.responses.create(
model=model_deployment,
input=messages,
tools=function_tools
)
# Append model output to the messages
messages += response.output
# Was there a function call?
for item in response.output:
if item.type == "function_call" and item.name == "get_time":
current_time = get_time()
messages.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": current_time
})
# Get a follow up response using the tool output
response = client.responses.create(
model=model_deployment,
instructions="Answer only with the tool output.",
input=messages,
tools=function_tools
)
print(response.output_text)
# Run the main function when the script starts
if __name__ == '__main__':
main()
Neste fluxo, o modelo decide quando chamar get_time, o seu código executa a função, e o modelo devolve então uma resposta final fundamentada. Como o utilizador pode introduzir qualquer prompt, o modelo deve determinar quando precisa de chamar a função. Se o fizer, a resposta ao prompt incluirá uma chamada de função, que o código da aplicação deve implementar antes de submeter um novo prompt com o resultado da função para o modelo processar.
O resultado pode parecer algo assim:
Enter a prompt (or type 'quit' to exit)
Hello
Hello! How can I help you today?
Enter a prompt (or type 'quit' to exit)
What time is it?
The time is 2026-03-19 17:17:41.
Enter a prompt (or type 'quit' to exit)
O primeiro prompt de utilizador ("Olá") não exigia o uso da ferramenta de função, por isso o modelo respondeu normalmente. O segundo prompt ("Que horas são?") levou o modelo a selecionar a função get_time, o que foi indicado na sua resposta. O código da aplicação executava então a função e devolveu os resultados ao modelo, que enviou uma segunda resposta com os resultados da função.
Sugestão
Este exemplo utiliza uma única função sem parâmetros. Pode configurar a ferramenta para usar múltiplas funções, com ou sem parâmetros. Para mais informações sobre como especificar detalhes da função, consulte o guia para desenvolvedores da OpenAI.
Como funciona a ferramenta de funções
O processo geral para utilizar a ferramenta de função é:
- Define ferramentas - Fornece uma ou mais definições de funções no array de ferramentas.
- O modelo avalia o prompt - Determina se é necessária uma chamada de função.
- O modelo emite uma chamada de função - A resposta inclui o nome da função e os metadados da chamada.
- A tua aplicação executa lógica - Executa a função de correspondência no teu código.
-
Devolves a saída da função - Envias um
function_call_outputitem com o resultado. - O modelo completa a resposta - Incorpora os resultados da ferramenta na resposta final.
Melhores práticas
- Mantém as ferramentas focadas – Funções pequenas e de propósito único são mais fáceis de controlar e testar
- Validar entradas de funções - Nunca confiar cegamente nos argumentos das ferramentas em sistemas de produção
- Lidar com erros de forma segura - Devolver resultados de erro claros sobre os quais o modelo pode raciocinar
- Utilização de ferramentas de registo - Rastrear chamadas, latência e taxas de falha para depuração e governação
- Limitar operações sensíveis - Requer autorização explícita para ações de alto impacto
Limitações a conhecer
- O modelo pede chamadas de função, mas a sua aplicação tem de as executar
- Argumentos incorretos ou inesperados sobre ferramentas podem ocorrer e devem ser validados
- A latência da ferramenta pode aumentar o tempo de resposta de ponta a ponta
- A chamada de funções melhora a fiabilidade, mas as saídas finais ainda precisam de revisão para decisões críticas
Bem utilizada, a ferramenta de funções transforma um modelo de gerador de texto num orquestrador que pode interagir com sistemas reais de forma controlada e auditável.