Claude Haiku 5.5 and Nano Banana 2.1 are now live on CometAPI →
technology/Badania CometAPI

Czym jest OpenAI Decisions API i jak działa

Odkryj OpenAI Decisions API, napędzane przez GPT-6 Luna. Poznaj jego funkcje, deklarowaną 10× szybkość, cennik $0.10/M token, przykłady i porównania.

CometAPI
Deon GoodwinZespół badań AI modeli i API
Zaktualizowano Oct 16, 2026 13 min czyt.
Czym jest OpenAI Decisions API i jak działa
Użyj tego wzorca

Wykonaj pierwsze wywołanie API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

TL;DR

OpenAI Decisions API to wyspecjalizowany endpoint, który zamienia tekst i obrazy w wykonalne, maszynowo odczytywalne decyzje zamiast generowanego tekstu. Używa GPT-6 Luna i obsługuje pytania typu predicate, choice oraz score. OpenAI raportuje około 10× szybsze działanie niż Responses API dla wspieranych zadań decyzyjnych oraz standardową cenę wejścia $0.10 za milion tokenów.

Kluczowe wnioski

  • Celowo zaprojektowane decyzje: predefiniowane pytania zamiast swobodnej rozmowy.
  • Trzy typy decyzji: predicate, choice i score.
  • Automatyzacja świadoma prawdopodobieństwa: kieruj niejednoznaczne lub brzemienne w skutki wejścia do weryfikacji przez człowieka.
  • Zgłaszane przez dostawcę przyspieszenie i standardowa opłata wyłącznie za wejście $0.10 za 1M tokenów czynią endpoint istotnym dla decyzji o dużej skali.
  • Najlepszy do routingu, klasyfikacji, kontroli wizualnych i bramek decyzyjnych agentów AI.

Czym jest OpenAI Decisions API?

OpenAI Decisions API ocenia informacje i zwraca ograniczone, maszynowo odczytywalne decyzje. OpenAI wydało wersję beta 6 października 2026 (https://developers.openai.com/api/docs/changelog). Ten przewodnik jest dla deweloperów, którzy rozumieją już klucze API i JSON, i chcą ocenić przepływy klasyfikacji lub routingu. Szczegóły produktu sprawdzono 12 października 2026.

Schemat żądania POST /v1/decisions (https://developers.openai.com/api/reference/resources/decisions/methods/create) przyjmuje model, współdzielone wejście tekstowe lub obraz oraz zdefiniowane przez dewelopera pytania. Dedykowany endpoint zwraca typowane oceny zamiast objaśniającej prozy.

Specyfikacje OpenAI Decisions API

SpecyfikacjaUdokumentowane szczegóły endpointu
Typ produktuWyspecjalizowany endpoint API, a nie samodzielny model bazowy
EndpointPOST /v1/decisions
Model bazowygpt-6-luna
WejściaTekst i obrazy
Typy decyzjipredicate, choice, score
WyjściaTypowane decyzje i informacje o prawdopodobieństwie
WydajnośćOkoło 10× szybciej niż Responses API (deklaracja dostawcy)
Standardowa cena wejścia$0.10 / 1M tokenów
Opłata za wyjścieBrak dla Decisions API
Wywoływanie narzędzi / streamingNieobsługiwane bezpośrednio przez ten endpoint

Aktualna dostępność i dostęp

Na dzień 15 października 2026 (https://developers.openai.com/api/docs/guides/decisions) widnieje dostęp w publicznej becie, z gpt-6-luna jako jedynym wspieranym modelem. Wysyłaj żądania na POST /v1/decisions; status beta nie gwarantuje stabilności produkcyjnej.

Użyj projektu OpenAI API i sprawdź dostęp do modelu, status rozliczeń i limity szybkości przed wdrożeniem. Przewodnik wymienia Python SDK 3.26.0 lub nowszy; dostęp specyficzny dla konta należy potwierdzić małym żądaniem testowym.

Uprawnieni klienci mogą korzystać z Zero Data Retention i ustaleń HIPAA. Przewodnik podaje przetwarzanie regionalne w USA i Europie; nadal obowiązują kryteria kwalifikacyjne i wymagania umowne. Dostęp przez interfejs Luna strony trzeciej nie ustanawia zgodności z tym dedykowanym endpointem.

Jak działa OpenAI Decisions API?

Żądanie łączy współdzielone dane wejściowe z pytaniami zdefiniowanymi przez dewelopera. API ocenia wejście używając GPT-6 Luna i zwraca odpowiedzi, które kod aplikacji może wykorzystać do automatyzacji, przeglądu lub eskalacji. Wiele pytań może dzielić to samo wejście, choć pytania zależne powinny być sekwencjonowane przez aplikację.

Ewaluacja predicate

Predicate ocenia, czy określony warunek zachodzi. Sprzedawca mógłby zapytać, czy fotografia pokazuje widoczne uszkodzenie produktu; odpowiedź zawiera prawdopodobieństwo między 0 a 1.

Przykładowy fragment odpowiedzi predicate.

{
  "type": "predicate",
  "name": "visible_damage",
  "probability": 0.92
}

Wybór (choice)

Pytanie typu choice wybiera spośród jawnie podanych kategorii, takich jak Billing, Technical Support lub Account Access. Pola rozkładu i ufności wspierają dalsze reguły routingu i eskalacji.

Ocena (score)

Pytanie typu score ocenia wejście względem uporządkowanego rubryku. Oczekiwany wynik może odzwierciedlać prawdopodobieństwowo ważone indeksy zdefiniowanych poziomów; nie stanowi to automatycznie skalibrowanego ryzyka w świecie rzeczywistym.

IndeksDotkliwośćInterpretacja
0NiskaBrak natychmiastowych działań
1UmiarkowanaRutynowe działania następcze
2WysokaZnaczący wpływ na klienta
3KrytycznaNatychmiastowa eskalacja

Jakie są główne funkcje OpenAI Decisions API?

Szybkie, ograniczone wykonanie

Typowane wyjścia w dużej mierze eliminują potrzebę generowania prozy, parsowania tekstu czy ponawiania błędnie sformatowanych odpowiedzi. OpenAI opisuje około dziesięciokrotne przyspieszenie względne dla wspieranych zadań decyzyjnych; rzeczywiste zyski zależą od długości wejścia, narzutu sieci i współbieżności.

Wiele pytań nad współdzielonym kontekstem

Jedno zgłoszenie wsparcia może zostać ocenione pod kątem działu, pilności i kwalifikacji do przeglądu w jednym żądaniu. Aplikacje nadal muszą egzekwować deterministyczne reguły biznesowe i kontrole autoryzacji.

Rozumienie tekstu i obrazu

Tekst i obrazy wspierają routing zgłoszeń, triage zrzutów ekranu i inspekcje wizualne. Sprawdź oficjalną dokumentację pod kątem obsługiwanych formatów obrazów, limitów rozmiaru i aktualnie akceptowanych struktur ładunków.

Czym jest OpenAI Decisions API i jak działa

OpenAI używa tego wgniecionego kubka w swoim przykładzie decyzji wizualnej (https://developers.openai.com/api/docs/guides/decisions). Obraz ilustruje dostrzegalne uszkodzenie; nie stanowi dowodu zmierzonego wskaźnika dokładności. Ten endpoint akceptuje osadzone dane obrazów jako adresy URL data base64, nie akceptuje hostowanych adresów URL obrazów ani identyfikatorów plików.

Automatyzacja świadoma prawdopodobieństwa

Raportowana ufność nie jest gwarancją dokładności. Zespoły powinny stroić progi na oznaczonych danych walidacyjnych, używając oddzielnych progów dla przypadków o wysokich kosztach fałszywie pozytywnych lub fałszywie negatywnych.

Bezpieczeństwo i kontrola danych

Retencja danych, przetwarzanie regionalne i uregulowane zastosowania zależą od konfiguracji konta i właściwych wymogów umownych. Potwierdź uprawnienia przed przetwarzaniem informacji regulowanych lub wrażliwych.

Ile kosztuje OpenAI Decisions API?

Zgłaszana standardowa stawka to $0.10 za milion tokenów wejściowych bez rozliczania tokenów wyjściowych przez dedykowany endpoint Decisions. Przetwarzanie regionalne lub mnożniki dla długiego kontekstu mogą zmienić końcowy rachunek.

SkładnikCennik dedykowanego endpointu
Standardowe wejście$0.10 za 1M tokenów
Tokeny wyjściowe$0
Odczyty/zapisy cache$0
Przetwarzanie regionalneMoże obowiązywać dopłata
Długi kontekstMoże obowiązywać mnożnik
Jednostka rozliczeńTokeny wejściowe

Ile może zaoszczędzić Decisions API względem Responses API?

Porównuj równoważne zadania na tym samym modelu. Przewodnik Decisions (https://developers.openai.com/api/docs/guides/decisions) podaje $0.10 za milion tokenów wejściowych i brak opłat za wyjście czy cache. Strona modelu Luna (https://developers.openai.com/api/docs/models/gpt-6-luna) wymienia standardową cenę tekstu $0.10/M niecache’owanych tokenów wejściowych i $0.50/M wyjścia dla ogólnego użycia modelu.

Ilustracyjna kalkulacja, nie benchmark: 1,000,000 żądań tekstowych, 500 niecache’owanych rozliczanych tokenów wejścia na żądanie na każdym endpointzie, jedna klasyfikacja na żądanie, bez dopłat regionalnych lub za długi kontekst. Dla Responses użyj łącznej liczby rozliczanych tokenów wyjścia, w tym ewentualnych rozliczanych tokenów rozumowania, a nie tylko długości widocznej odpowiedzi.

Przy tych założeniach: Koszt Decisions = N × I × $0.10 / 1,000,000. Koszt Responses = N × (I × $0.10 + O × $0.50) / 1,000,000. Procent oszczędności = (Koszt Responses − Koszt Decisions) / Koszt Responses × 100%, gdzie N to liczba żądań, I to tokeny wejścia/żądanie, a O to rozliczane tokeny wyjścia/żądanie.

Rozliczane wyjście Responses / żądanieKoszt Decisions / 1M żądańKoszt Responses / 1M żądańSzacowane oszczędności
5 tokenów$50.00$52.50$2.50 (4.8%)
20 tokenów$50.00$60.00$10.00 (16.7%)
100 tokenów$50.00$100.00$50.00 (50.0%)

Powyższe oszczędności wynikają z przyjętej opłaty za wyjście Responses; nie są stałym rabatem endpointu. Przelicz z użyciem zmierzonego zużycia wejścia, trafień cache, zapisów cache, poziomu przetwarzania i retry. Stawki dla cache’owanego wejścia lub Batch/Flex mogą zmienić wynik. Dodaj osobno opłaty za narzędzia, przegląd ludzki i infrastrukturę. Porównuj koszt na zaakceptowaną poprawną decyzję po sprawdzeniu jakości i latencji; krótka etykieta i dłuższe wyjaśnienie to różne zadania.

OpenAI Decisions API vs Responses API vs Jev i Aplomb 1

Tabela koncentruje się na dedykowanych usługach decyzyjnych. Dla generowanych wyjaśnień, niestandardowych schematów ekstrakcji lub przepływów z narzędziami użyj Responses API zgodnie z przewodnikiem decyzji OpenAI (https://developers.openai.com/api/docs/guides/decisions). Decyzja może wybrać gałąź przepływu, podczas gdy Responses generuje treść lub żąda wywołania narzędzia, a kod aplikacji obsługuje wykonanie niestandardowych narzędzi.

Przegląd możliwości i cen

WymiarOpenAI Decisions APIJev 1.13Aplomb 1
WejściaTekst i obrazyTekst; eksperymentalnie obrazy z opt-inTekst, JSON, obrazy, wideo i audio
Standardowa cena wejścia / 1M tokenów$0.10$0.042$0.02
DostępHostowane OpenAI APIHostowane TypeSafe APIHostowane API; pobieralne wagi na licencji EmpirioLabs Model License
Dopasowanie do ewaluacjiRouting, filtrowanie i scoring w przepływach OpenAIKlasyfikacja i routing intencjiDecyzje multimodalne; wdrożenia wymagające wag

Zakres wyboru: Jev i Aplomb ujęto ze względu na opublikowane możliwości decyzyjne, a nie jako ranking popularności. Specyfikacje i standardowe ceny wejścia sprawdzono 16 października 2026. TypeSafe (https://docs.typesafe.ai/models) nadal mapuje jev-latest na 1.13 oraz jev-preview na 1.14, więc to porównanie przypina 1.13. Obsługa obrazów w Jev jest eksperymentalna. Wagi Aplomb są objęte ograniczeniami licencyjnymi; sprawdź warunki dla wdrożeń komercyjnych. Opublikowane ceny tokenów nie są rankingiem jakości ani szacunkiem całkowitego kosztu przepływu.

Wybór przepływu

Zawężaj usługi według wymaganych wejść i opcji wdrożenia, a następnie testuj je na tych samych oznaczonych przypadkach. Dopasuj przygotowanie wejścia, rubryki decyzyjne, pomiary end-to-end latencji i polityki przeglądu przez człowieka. Porównuj trafność routingu, przypadki pominięte, obciążenie przeglądem i koszt na zaakceptowaną poprawną decyzję. Raportuj te elementy łącznie, aby niższa cena tokena lub szybsza odpowiedź nie ukrywała dodatkowych błędów lub kosztów przeglądu.

Jak używać OpenAI Decisions API?

Krok 1: Skonfiguruj poświadczenia

Utwórz klucz API i ustaw go jako zmienną środowiskową OPENAI_API_KEY. Nigdy nie hardcoduj sekretów w repozytoriach ani aplikacjach front-end.

Krok 2: Wyślij żądanie cURL

Poniższe żądanie podąża za oficjalnym przykładowym schematem choice (https://developers.openai.com/api/reference/resources/decisions/methods/create). Ustaw OPENAI_API_KEY przed uruchomieniem; udana odpowiedź zawiera tablicę answers. Polecenia powłoki używają składni Bash.

Kierowanie zgłoszenia wsparcia za pomocą cURL.

curl https://api.openai.com/v1/decisions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-luna",
    "input": "I was charged twice for my order.",
    "questions": [
      {
        "type": "choice",
        "name": "department",
        "instructions": "Which department should handle this complaint?",
        "choices": [
          {"value": "billing", "description": "Payments and refunds"},
          {"value": "technical", "description": "Product issues"},
          {"value": "other", "description": "Everything else"}
        ]
      }
    ]
  }'

Krok 3: Integracja z Pythonem

Zainstaluj wymagane Python SDK.

pip install --upgrade "openai>=3.26.0"

Żądaj i sprawdź decyzję typu choice.

from openai import OpenAI

client = OpenAI()
result = client.decisions.create(
    model="gpt-6-luna",
    input="I was charged twice for my order.",
    questions=[{
        "type": "choice",
        "name": "department",
        "instructions": "Which team should handle this request?",
        "choices": [
            {"value": "billing", "description": "Payments and refunds"},
            {"value": "technical", "description": "Product issues"},
            {"value": "other", "description": "Other requests"}
        ]
    }]
)
answer = result.answers[0]
if answer.type == "refusal":
    print("Decision refused")
elif answer.type == "choice":
    print(answer.choice, answer.confidence)

Krok 4: Zdefiniuj regułę eskalacji

Zastosuj przykładowy próg routingu.

if answer.type == "choice":
    if answer.choice != "other" and answer.confidence >= 0.90:
        print("Eligible for automatic routing")
    else:
        print("Send to human review")

Próg 0.90 jest ilustracyjny, nie jest gwarancją dostawcy ani oficjalnie rekomendowaną wartością domyślną. Zweryfikuj go na realnych przykładach i w kontekście ryzyka biznesowego.

Jak uzyskać dostęp do GPT-6 Luna przez CometAPI?

Deweloperzy mogą korzystać z GPT-6 Luna API w CometAPI (https://www.cometapi.com/models/openai/gpt-6-luna/) do zadań ogólnego przeznaczenia. Nie należy mylić tego ze wsparciem dla dedykowanego endpointu OpenAI Decisions, który wymaga osobnej weryfikacji zgodności.

Klasyfikuj tekst przez CometAPI Responses.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1"
)
response = client.responses.create(
    model="gpt-6-luna",
    input=(
        "Classify as billing, technical, or other. "
        "Return only the category. "
        "Request: I was charged twice for my order."
    )
)
print(response.output_text)

Ta próbka to klasyfikacja ogólnego przeznaczenia przez interfejs modelu zgodny z CometAPI; nie zwraca natywnej struktury prawdopodobieństwa Decisions API ani nie dziedziczy jego wyceny wyłącznie za wejście.

Najlepsze przypadki użycia OpenAI Decisions API

To ilustracyjne przepływy aplikacji, a nie zgłoszone wdrożenia czy wyniki benchmarków. Wykorzystują typy pytań predicate, choice i score z oficjalnego przewodnika Decisions (https://developers.openai.com/api/docs/guides/decisions). Kod aplikacji wykonuje działania dalszego etapu.

Klasyfikacja wsparcia klienta

Dostarcz treść zgłoszenia, istotną historię rozmowy i predefiniowaną listę zespołów wsparcia. Pytanie choice może wybrać Billing, Technical Support lub Account Access; oddzielne pytanie score może ocenić pilność względem spisanego rubryku. Kod aplikacji może przypisać sugerowaną kolejkę i wysłać niepewne lub niekompletne przypadki do recenzenta.

Oceń przepływ na zgłoszeniach oznaczonych przez zespół wsparcia, mierząc trafność routingu według kategorii, pominięte pilne sprawy, odsetek przekwalifikowań i obciążenie przeglądem. Porównaj wyniki z obecnym procesem routingu przed rozszerzeniem wdrożenia.

Moderacja treści i kolejki przeglądu

Dostarcz nadesłany tekst lub obrazy wraz z jasno zdefiniowanymi kategoriami przeglądu. Pytania predicate mogą ocenić, czy w treści występują konkretne warunki, a pytanie score może priorytetyzować przegląd zgodnie z udokumentowanym rubrykiem dotkliwości. Następnie aplikacja może umieścić oflagowane elementy w odpowiedniej kolejce i zaprezentować właściwe treści recenzentom; endpoint sam nie usuwa treści ani nie egzekwuje zasad platformy.

Oceń pominięte naruszenia, zbędne flagi, zgodność recenzentów i opóźnienia kolejek na reprezentatywnych oznaczonych przykładach. Dostosuj progi oddzielnie dla kategorii o różnych konsekwencjach.

Inspekcja obrazów w e-commerce

Dostarcz fotografie produktów i kryteria inspekcji istotne dla danego przedmiotu, takie jak widoczne pęknięcia, rozdarcia lub uszkodzone opakowanie. Pytania predicate mogą ocenić, czy każdy warunek występuje, a pytanie score może zastosować zdefiniowany rubryk dotkliwości, gdy obrazy zawierają wystarczające dowody. Kod aplikacji może poprosić o kolejne zdjęcie lub utworzyć zadanie inspekcji przez człowieka, gdy dowody są niejednoznaczne.

Oceń dokładność detekcji względem skontrolowanych przedmiotów, w tym pominięte uszkodzenia i fałszywe alarmy w różnych kategoriach produktów i warunkach obrazów. Pozostaw decyzje o zwrocie lub wymianie w istniejącym procesie akceptacji sprzedawcy.

Bramkowanie działań agentów AI

Dostarcz proponowane działanie, jego argumenty, odpowiednie żądanie użytkownika i spisane reguły wykonania aplikacji. Pytania predicate mogą ocenić, czy propozycja odpowiada żądanemu zadaniu lub wymaga przeglądu. Kod aplikacji może użyć wyniku do wyboru predefiniowanej gałęzi: kontynuuj, poproś o doprecyzowanie lub eskaluj. Niezależne kontrole uprawnień muszą nadal decydować, czy wykonanie jest autoryzowane; ocena modelu to tylko jeden z wkładów.

Oceń bramkę na oznaczonych propozycjach działań, mierząc pominięte nieautoryzowane działania, zbędne eskalacje i wrażliwość na niekompletny lub sprzeczny kontekst, zanim połączysz ją z wykonaniem.

Triage dokumentów i e-maili

Dostarcz treść dokumentu lub wiadomości e-mail, odpowiednie metadane i stały zestaw kategorii, takich jak faktura, zgłoszenie wsparcia, prośba o spotkanie lub inne. Pytanie choice może wybrać kategorię, podczas gdy pytania predicate mogą zidentyfikować warunki takie jak brak wymaganych informacji. Kod aplikacji może skierować element do odpowiedniego przepływu ekstrakcji, wyszukiwania lub przeglądu bez proszenia endpointu decyzyjnego o wykonywanie tych późniejszych kroków.

Oceń trafność kategorii, błędny routing w dół strumienia, wolumen przeglądu i czas przetwarzania na reprezentatywnych oznaczonych rekordach, w tym niejednoznacznych elementach i nieznanych formatach.

Jakie są ograniczenia OpenAI Decisions API?

API nie generuje dowolnych wyjaśnień, nie wykonuje narzędzi bezpośrednio ani nie eliminuje potrzeby testowania przewidywań. Brakujące kategorie i źle napisane rubryki decyzyjne mogą prowadzić do nieodpowiednich rezultatów. Wartości ufności mogą być nieskalibrowane; automatyzacja w zadaniach wysokiego ryzyka nadal wymaga zabezpieczeń, przeglądu przez człowieka i logiki autoryzacji.

Wnioski

Decisions API jest obiecujące dla ocen o dużej skali i ograniczonym zakresie, ponieważ łączy typowane wyjścia prawdopodobieństwowe z uproszczonym modelem rozliczania tokenów. Zespoły powinny porównać je ze Structured Outputs i alternatywnymi modelami decyzyjnymi używając tych samych oznaczonych przypadków, pomiarów latencji i pełnych kosztów przepływu. Kluczową szansą jest identyfikacja kroków w aplikacji AI, które potrzebują wyboru, a nie generowanej prozy.

FAQ

Jak obsługiwać odmowy OpenAI Decisions API?

Traktuj odmowę jako odrębny wynik przepływu. Sprawdź answer.type przed odczytem pól choice, score lub probability. Zaloguj nazwę pytania i skieruj żądanie do ścieżki przeglądu lub odzyskiwania; nigdy nie interpretuj odmowy jako negatywnego predicate ani zera w score.

Jak utrzymywać progi Decisions API w czasie?

Wybierz progi na oznaczonych przykładach walidacyjnych, następnie monitoruj dokładność wśród zaakceptowanych decyzji i udział kierowanych do przeglądu. Ponownie oceń po zmianie kategorii, instrukcji, źródeł wejścia lub zachowania modelu. Utrzymuj wersjonowany rubryk, aby zmiany w routingu można było powiązać z konfiguracją, która je wywołała.

Jak raportować testy latencji OpenAI Decisions API?

Zapisz datę, region, identyfikator modelu, liczbę pytań, długość tekstu, rozmiar obrazu, współbieżność, wersję klienta, politykę retry i konfigurację endpointu porównawczego. Raportuj end-to-end p50 i p95 z licznościami próbek oraz wynikami jakości, aby przyspieszenie nie wynikało jedynie z akceptowania większej liczby błędów.

Jak rozwijać kategorie Decisions API bez psucia integracji?

Używaj stabilnych, maszynowo odczytywalnych wartości i utrzymuj jawne mapowanie do kolejek downstream. Dodaj kategorię awaryjną i przetestuj historyczne przypadki brzegowe przed wdrożeniem nowych opisów. Jeśli kategoria zostanie przemianowana, zaktualizuj mapę routingu i rubryk jednocześnie, zamiast dopuszczać nieznane wartości do działań produkcyjnych.

Co logować do audytu routingu Decisions API?

Zapisuj wersję rubryku, wybraną kategorię, istotne prawdopodobieństwa lub ufność, próg, identyfikator modelu, znacznik czasu i podjęte działanie. Ogranicz przechowywaną treść wejściową do tego, czego wymaga przepływ, i zastosuj politykę retencji organizacji. Rekord audytu powinien pokazywać, dlaczego logika aplikacji skierowała lub eskalowała sprawę.

Kontynuuj naukę

Połącz ten artykuł z następną decyzją.

Zobacz wszystkie tematy
Opublikowano Oct 16, 2026
Ostatnia aktualizacja Oct 16, 2026
0 wyświetleń
Sprawdzone pod kątem przejrzystości, atrybucji źródeł i aktualnej terminologii API.

Czytaj więcej