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 OpenAI a ferramentas e sistemas externos. Isto é útil para muitas situações, como dotar assistentes de IA de capacidades ou criar integrações profundas entre as suas aplicações e LLMs.
Saiba mais no nosso guia do programador sobre chamada de funções.
Em junho de 2024, lançámos os outputs estruturados. Quando os ativa definindo `strict: true` na definição da função, os outputs estruturados garantem que os argumentos gerados pelo modelo para uma chamada de função correspondem exatamente ao JSON Schema 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 uma schema de função válida. Saiba mais sobre 'Gerar Qualquer Coisa' neste artigo do centro de ajuda
Como posso usar 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:
um assistente de IA precisa de obter os dados mais recentes do cliente a partir de um sistema interno quando um utilizador pergunta «quais são as minhas encomendas recentes?» antes de poder gerar a resposta ao utilizador
Permitir que assistentes executem ações:
um assistente de IA precisa de agendar reuniões com base nas preferências do utilizador e na disponibilidade do calendário.
Permitir que assistentes efetuem cálculos:
um assistente tutor de matemática precisa de efetuar um cálculo matemático.
Criar fluxos de trabalho avançados:
um pipeline de extração de dados que obtém texto bruto, depois converte-o em dados estruturados e guarda-o numa base de dados.
A chamada de funções é suportada na API Responses, que unifica capacidades que antes estavam divididas entre a API Chat Completions e a API Assistants.
Como posso usar o modo JSON?
Quando o modo JSON está ativado, é garantido 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 Responses ou a API Chat Completions, pode definir response_format como { "type": "json_object" } nos modelos suportados, mas isto só funciona quando as pré-condições do modelo/mensagem/ferramenta são satisfeitas (por exemplo, o modelo suporta json_object, a conversa inclui uma instrução para produzir JSON e quaisquer restrições de ferramenta são compatíveis). Para o modo JSON com response_format: {"type": "json_object"}, pelo menos uma mensagem do pedido tem de conter json de alguma forma, como JSON, json ou Json; caso contrário, a API devolve um erro. Quando a chamada de funções é usada 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 JSON condicionada.
Notas importantes:
Ao usar o modo JSON, tem de instruir sempre 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 a executar-se 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ífica, apenas que é válido e analisável sem erros. Deve usar os outputs estruturados para garantir a correspondência com a sua schema ou, se isso não for possível, deve usar uma biblioteca de validação e potencialmente novas tentativas para garantir que o output corresponde à schema pretendida.
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)
