Od 11 marca 2025 r. udostępniliśmy podstawowe elementy naszej nowej platformy agentów. Szczegóły znajdziesz w dokumentacji API dotyczącej Responses API, narzędzi, w tym Web Search, File Search i Computer Use, a także Agents SDK z funkcją Tracing.
Wywołanie funkcji pozwala łączyć modele OpenAI z zewnętrznymi narzędziami i systemami. Jest to przydatne w wielu zastosowaniach, takich jak wyposażanie asystentów AI w dodatkowe możliwości czy tworzenie głębokich integracji między aplikacjami a LLM-ami.
Dowiedz się więcej w naszym przewodniku dla deweloperów dotyczącym wywołania funkcji.
W czerwcu 2024 roku udostępniliśmy ustrukturyzowane dane wyjściowe. Po włączeniu tej opcji przez ustawienie `strict: true` w definicji funkcji, ustrukturyzowane dane wyjściowe gwarantują, że argumenty wygenerowane przez model dla wywołania funkcji dokładnie odpowiadają schematowi JSON Schema podanemu w definicji funkcji.
W październiku 2024 roku udostępniliśmy funkcję 'Generate Anything', która pozwala deweloperom opisać funkcję, wkleić ją bezpośrednio albo wkleić swój kod i wygenerować prawidłowy schemat funkcji. Więcej o funkcji 'Generate Anything' znajdziesz tutaj w artykule centrum pomocy
Jak mogę używać wywołania funkcji?
Wywołanie funkcji jest przydatne w bardzo wielu zastosowaniach, takich jak:
Umożliwienie asystentom pobierania danych:
asystent AI musi pobrać najnowsze dane klienta z systemu wewnętrznego, gdy użytkownik pyta: „jakie są moje ostatnie zamówienia?”, zanim będzie mógł wygenerować odpowiedź dla użytkownika
Umożliwienie asystentom podejmowania działań:
asystent AI musi planować spotkania na podstawie preferencji użytkownika i dostępności w kalendarzu.
Umożliwienie asystentom wykonywania obliczeń:
asystent korepetytora matematyki musi wykonać obliczenie matematyczne.
Tworzenie rozbudowanych przepływów pracy:
potok ekstrakcji danych, który pobiera surowy tekst, następnie przekształca go w dane ustrukturyzowane i zapisuje w bazie danych.
Wywołanie funkcji jest obsługiwane w Responses API, które ujednolica możliwości wcześniej podzielone między API zakończenia czatu a Assistants API.
Jak mogę używać trybu JSON?
Po włączeniu trybu JSON dane wyjściowe modelu są gwarantowanie poprawnym JSON-em, z wyjątkiem niektórych przypadków brzegowych, które należy wykrywać i odpowiednio obsługiwać.
Aby zażądać trybu JSON za pomocą Responses API lub API zakończenia czatu, możesz ustawić response_format na { "type": "json_object" } w obsługiwanych modelach, ale działa to tylko wtedy, gdy spełnione są warunki wstępne modelu/wiadomości/narzędzia (na przykład model obsługuje json_object, rozmowa zawiera instrukcję generowania JSON, a wszelkie ograniczenia narzędzi są zgodne). W przypadku trybu JSON z response_format: {"type": "json_object"} co najmniej jedna wiadomość w żądaniu musi zawierać w jakiejś formie json, na przykład JSON, json lub Json; w przeciwnym razie API zwróci błąd. Gdy wywołanie funkcji jest używane w zgodnych modelach/ścieżkach, ograniczenia JSON są automatycznie stosowane do argumentów wywołania funkcji; niezgodne modele lub kombinacje narzędzi/formatów odpowiedzi mogą zostać odrzucone albo mogą nie używać próbkowania z ograniczeniami JSON.
Ważne uwagi:
Korzystając z trybu JSON, zawsze musisz poinstruować model, aby generował JSON, za pomocą jakiejś wiadomości w rozmowie, na przykład w wiadomości systemowej. Jeśli nie dołączysz jawnej instrukcji generowania JSON, model może zacząć generować niekończący się strumień białych znaków, a żądanie może być wykonywane bez końca, aż osiągnie limit tokenów. Aby zmniejszyć ryzyko przeoczenia tego, tryb JSON odrzuca żądania, jeśli odpowiednie wiadomości wejściowe lub instrukcje nie zawierają słowa
jsonw jakiejkolwiek formie, bez rozróżniania wielkości liter.Tryb JSON nie gwarantuje, że dane wyjściowe będą zgodne z jakimkolwiek konkretnym schematem, a jedynie że będą poprawne i dadzą się sparsować bez błędów. Aby zapewnić zgodność z Twoim schematem, użyj ustrukturyzowanych danych wyjściowych, a jeśli nie jest to możliwe, użyj biblioteki walidacyjnej i w razie potrzeby ponowień, aby mieć pewność, że dane wyjściowe odpowiadają oczekiwanemu schematowi.
Twoja aplikacja musi wykrywać i obsługiwać przypadki brzegowe, które mogą spowodować, że dane wyjściowe modelu nie będą kompletnym obiektem JSON (zob. poniżej)
