A 11 de março de 2025, lançámos os blocos fundamentais da nossa nova plataforma Agents. Para mais detalhes, consulte a documentação da API relativa à nossa API Responses, às Ferramentas, incluindo Pesquisa na Web, Pesquisa de ficheiros e Utilização do computador, e ao nosso SDK Agents com Tracing.
A chamada de funções permite-lhe ligar modelos da OpenAI a ferramentas e sistemas externos. Isto é útil para muitas coisas, como dotar assistentes de AI de capacidades ou criar integrações profundas entre as suas aplicações e LLMs.
Saiba mais no nosso guia para programadores sobre chamada de funções.
Em junho de 2024, lançámos os outputs estruturados. Quando os ativa ao definir strict: true, na sua definição de função, os outputs estruturados garantem que os argumentos gerados pelo modelo para uma chamada de função correspondem exatamente ao schema JSON que forneceu na definição da função.
Em outubro de 2024, lançámos a funcionalidade «Gerar qualquer coisa», que permite aos programadores descrever uma função, colá-la diretamente ou colar o seu código e gerar um schema de função válido. Saiba mais sobre «Gerar qualquer coisa» neste artigo do centro de ajuda
Como posso utilizar a chamada de funções?
A chamada de funções é útil para um grande número de casos de utilização, tais como:
Permitir que assistentes obtenham dados:
Permitir que assistentes executem ações:
Permitir que assistentes realizem cálculos:
Criar fluxos de trabalho ricos:
um pipeline de extração de dados que obtém texto bruto, depois o converte em dados estruturados e o guarda numa base de dados.
A chamada de funções é suportada na API Responses, que unifica capacidades que anteriormente estavam divididas entre a API Chat Completions e a API Assistants.
Como posso utilizar o modo JSON?
Quando o modo JSON está ativado, garante-se que o output do modelo é JSON válido, exceto em alguns casos-limite que deve detetar e tratar adequadamente.
Para pedir o modo JSON com a API chat completions, defina response_format como { "type": "json_object" } em modelos suportados. Com a API Responses, defina text.format como { "type": "json_object" }, por exemplo text: { "format": { "type": "json_object" } }, quando aplicável. Em qualquer uma das API, o modo JSON só funciona quando os pré-requisitos de modelo/mensagem/ferramenta são cumpridos (por exemplo, o modelo suporta json_object, a conversa inclui instruções para produzir JSON e quaisquer restrições de ferramentas são compatíveis). Pelo menos uma mensagem de pedido ou mensagem de entrada no contexto de entrada efetivo tem de conter json de forma insensível a maiúsculas/minúsculas, como JSON, json ou Json; caso contrário, a API devolve um erro. Em Responses, o campo de instruções de nível superior, por si só, não satisfaz esta validação. Quando a chamada de funções é utilizada em modelos/caminhos compatíveis, as restrições JSON são aplicadas automaticamente aos argumentos de chamada de função; modelos incompatíveis ou combinações de ferramenta/formato de resposta podem ser rejeitados ou podem não usar amostragem condicionada por JSON.
Notas importantes:
Ao utilizar o modo JSON, tem sempre de instruir o modelo a produzir JSON através de alguma mensagem na conversa, por exemplo, através da sua mensagem de sistema. Se não incluir uma instrução explícita para gerar JSON, o modelo pode gerar um fluxo interminável de espaços em branco e o pedido pode continuar em execução até atingir o limite de tokens. Para ajudar a garantir que não se esquece, o modo JSON rejeita pedidos, a menos que as mensagens de entrada ou instruções relevantes contenham a palavra
jsonde alguma forma, sem distinguir maiúsculas de minúsculas.O modo JSON não garante que o output corresponda a qualquer schema específico, apenas que é válido e analisado sem erros. Deve utilizar outputs estruturados para garantir que corresponde ao seu schema ou, se tal não for possível, deve utilizar uma biblioteca de validação e, possivelmente, novas tentativas para garantir que o output corresponde ao schema pretendido.
A sua aplicação tem de detetar e tratar os casos-limite que podem fazer com que o output do modelo não seja um objeto JSON completo (ver abaixo)
