Skip to main content
POST /v1/decisions obsługuje Decisions API od OpenAI: request zawiera input (tekst lub wiadomości użytkownika z tekstem i obrazami) oraz listę typowanych pytań, a każda odpowiedź jest prawdopodobieństwem, wyborem lub oceną (score) zamiast dowolnego tekstu. Endpoint jest dostępny, gdy skonfigurowany jest provider openai, jev lub openrouter. Bez żadnego z nich odpowiada 404. W każdym przypadku odpowiedź ma kształt OpenAI, więc SDK OpenAI działają bez zmian.

Request i odpowiedź

W SDK OpenAI skieruj base_url na gateway:

Jev i Kev

Model jev odpowiada na ten sam request przez System One, który zadaje te same trzy rodzaje pytań: predicate to noul, a choice i score zachowują swoje nazwy. GoModel tłumaczy request i odpowiedź, więc możesz przełączać się między OpenAI a Jev lub robić failover z jednego na drugi bez zmiany kodu klienta. Niektóre części requestu tłumaczą się z ograniczeniami:
  • Obrazy działają w hostowanym Jev, wysyłane jako data URL z base64 PNG lub JPEG (data:image/png;base64,...). Każdy z nich staje się zasobem obrazu System One, umieszczonym w stanie w tym miejscu, w którym był w input, a GoModel dodaje nagłówek TypeSafe-Danger-Zone-Images: true wymagany przez TypeSafe. GoModel nie pobiera obrazów z linków dla Jev, więc URL obrazu https zwraca 400; detail jest ignorowane. TypeSafe oznacza obsługę obrazów jako eksperymentalną i ogranicza każdy obraz do 280–1568 pikseli na bok. Serwer Kev czyta tylko tekst, więc request z obrazem do modelu Kev zwraca 400: GoModel traktuje providera jev jako serwer Kev, chyba że jego bazowy URL to hostowane API TypeSafe (https://api.typesafe.ai).
  • Wartości choice to stringi lub wartości logiczne; wartość logiczna jest wysyłana jako "true" lub "false" i wraca jako wartość logiczna. String "true" i wartość logiczna true w jednym pytaniu kolidują i są odrzucane.
  • prompt_cache_key, prompt_cache_options i safety_identifier są usuwane.
  • Pytanie, na które System One nie odpowie, wraca jako refusal, na co Decisions API pozwala dla dowolnego pytania.
  • Błędy upstreamu zachowują status i komunikat TypeSafe; błędnie sformułowane pytanie wskazuje swój klucz System One.

Co robi gateway

Podobnie jak w System One, endpoint rozwiązuje model (w tym modele wirtualne i przypięte wersje Jev), stosuje listę dozwolonych modeli wywołującego, rate limity i budżety, uruchamia guardrails promptu na input, obsługuje identyczne requesty z dokładnego cache’u odpowiedzi, robi failover na kolejny cel przy błędach dostępności i zapisuje audyt oraz użycie pod modelem, który odpowiedział. Filtruj log audytowy po typie requestu Decisions. Użycie na /v1/decisions jest wyceniane wyłącznie za tokeny wejściowe, każdy według stawki wejściowej modelu, tak jak OpenAI rozlicza Decisions API: tokeny wyjściowe, odczytu z cache’u i zapisu do cache’u są tam darmowe, nawet dla modelu takiego jak gpt-6-luna, którego cennik w katalogu ma stawki czatowe. Progi długiego kontekstu nadal wyznaczają stawkę wejściową. OpenRouter raportuje naliczoną kwotę jako usage.cost; przetłumaczona odpowiedź ją zachowuje, a użycie zapisuje ją jako koszt requestu. Guardrails widzą każdą wiadomość wejściową jako wiadomość użytkownika z jej częściami tekstowymi i obrazowymi; zmiany trafiają do providera, a nietknięte części zachowują dokładny JSON. Zmiany, na które request decyzyjny nie ma miejsca, takie jak wstrzyknięty system prompt, są odrzucane z ostrzeżeniem. Obowiązuje tylko faza promptu: odpowiedź to typowane wartości (prawdopodobieństwa, wybory, oceny), a nie completion, więc guardrails fazy odpowiedzi i streamu nie są na niej uruchamiane, a odpowiedź jest przekazywana bez zmian. Workflow, który wybiera takie guardrails dla requestu Decisions, loguje jedno ostrzeżenie na guardrail. Modele decyzyjne mogą też oceniać inny ruch: guardrail llm_judge z modelem decyzyjnym zadaje mu pytanie tak/nie o politykę dla każdego promptu czatu lub Responses i blokuje na podstawie prawdopodobieństwa. To wywołanie przechodzi tą samą ścieżką co ten endpoint, w ramach ścieżki użytkownika guardraila. Łańcuch failoveru może mieszać providerów: każdy cel otrzymuje request we własnej postaci, a cel u providera bez Decisions API albo taki, który nie potrafi odczytać obrazów z requestu (serwer Kev lub model jev, któremu przekazano link do obrazu), jest pomijany bez zużywania próby. Gdy pierwszy cel łańcucha nie potrafi odczytać obrazów, request zaczyna się od pierwszego celu, który to potrafi, więc poniższy łańcuch wysyła tekst do Kev, a obrazy do OpenAI.

Błędy

Ostatnia modyfikacja 24 października 2026