Wersjonowane katalogi cenowe dla bram API AI: zatrzymaj zmianę ceny w wyniku zerwania notowań i obciążenie zwrotne
Karty cenowe dostawców różnią się w zależności od modelu, kategorii tokenów, zachowania pamięci podręcznej, użycia narzędzi, typu wdrożenia, regionu i planu zatwierdzonej pojemności. Bramka potrzebuje wersjonowanego katalogu cen, aby oferty, rezerwacje, księgi, budżety i obciążenia zwrotne były zrozumiałe w przypadku zmiany cen.
Rozliczenia za pomocą interfejsu API AI nie powiodą się, gdy brama traktuje ceny dostawców jako statyczną tabelę przeglądową. Najtrudniejszą częścią nie jest mnożenie żetonów przez stawkę. Najtrudniejszą częścią jest wiedza, która stawka była ważna w momencie żądania, który kod SKU odpowiadał faktycznemu zakresowi wykorzystania, czy cena została zatwierdzona i dlaczego oferta klienta różni się od faktury dostawcy.
Brama obsługująca wiele modeli, kont, regionów, trybów pamięci podręcznej, zadań wsadowych, narzędzi hostowanych i wdrożeń z obsługą administracyjną wymaga platformy kontroli cen. Ta płaszczyzna kontrolna powinna przyjmować karty cen dostawców, wersjonować każdą zatwierdzoną stawkę, mapować wykorzystanie dostawcy na podlegające rozliczeniu jednostki SKU, testować oferty przed wdrożeniem i uzgadniać rozliczone wiersze księgi z fakturami.
Problem czytelnika: dryf cenowy niszczy nie tylko strony z cenami
Ceny dostawców mogą różnić się w zależności od wymiarów, które zespoły aplikacji rzadko widzą bezpośrednio: wersja modelu, tokeny wejściowe, tokeny wejściowe w pamięci podręcznej, tokeny wyjściowe, tokeny wnioskowania, zapisy w pamięci podręcznej, narzędzia hostowane, rabaty wsadowe, typ wdrożenia, region, waluta i plany dotyczące zatwierdzonej pojemności. Jeśli te wymiary zostaną spłaszczone w jednym polu „koszt na token”, brama w końcu błędnie poda kwotę, zawyżi budżety, zaniży rachunki najemców lub przydzieli wydatki do niewłaściwego miejsca powstawania kosztów.
Awaria zwykle pojawia się w jednym z pięciu miejsc:
- Cytowania wstępne: żądanie zostało zaakceptowane, ponieważ brama szacuje dane na podstawie starej lub niekompletnej stawki.
- Rezerwacje budżetowe: saldo najemcy jest rezerwowane w jednym katalogu, ale rozliczane w innym.
- Rejestry użycia: tokeny przechowywane w pamięci podręcznej, tokeny wnioskowania, wywołania narzędzi lub jednostki wsadowe są przechowywane jako ogólne sumy i nie można ich poprawnie wycenić.
- Eksport obciążenia zwrotnego: dział finansów otrzymuje sumy najemców bez wymiarów faktury dostawcy potrzebnych do wyjaśnienia rozbieżności.
- Interfejsy API partnerów: produkty niższego szczebla ujawniają ceny, nie wiedząc, czy są one aktualne, szacunkowe, przestarzałe czy zablokowane.
Fakty, które należy uwzględnić przy projektowaniu cen
Fakt: dokumentacja dostawcy publicznego zwykle oddziela ceny według modelu i kategorii tokena. Tokeny wejściowe, buforowane wejściowe i wyjściowe mogą mieć różne szybkości. Niektóre raporty użycia ujawniają liczbę danych wejściowych przechowywanych w pamięci podręcznej lub tokenów rozumowania, co oznacza, że brama powinna zachować podkategorie użycia, a nie przechowywać tylko całkowitą liczbę tokenów.
Fakt: ceny nie zawsze dotyczą wyłącznie tokenów typu płatność zgodnie z rzeczywistym użyciem. Niektórzy dostawcy sprzedają przydzieloną pojemność, zapewnioną przepustowość lub jednostki tokenów powiązane z wydajnością konkretnego modelu. W tych trybach koszt może opierać się na czasie, jednostkach wydajności lub specyficznych dla modelu stosunkach wejścia/wyjścia, a nie na prostym rachunku za token za żądanie.
Fakt: hostowane narzędzia i funkcje pobierania mogą powodować dodatkowe płatne zdarzenia poza normalnym wnioskowaniem o modelu. Podstawy wyszukiwania, wyszukiwanie plików, kontekst adresu URL, wykonywanie kodu, zapisy w pamięci podręcznej i pośrednie kroki agenta mogą wymagać oddzielnego mapowania jednostki SKU.
Zalecenie: traktuj te fakty jako wymagania schematu, a nie wyjątki. Jeśli zdarzenie użycia zawiera wymiar podlegający rozliczeniu, którego katalog nie może zmapować, brama powinna wstrzymać rozliczenie transakcji, zamiast po cichu wycenić ją na zero.
Utwórz wersjonowany katalog cen
Katalog cenowy powinien być najwyższej klasy tabelą lub usługą, a nie stałymi osadzonymi w adapterach dostawców. Katalog istnieje, aby odpowiedzieć na jedno pytanie: w przypadku tego zdarzenia użytkowania, w tym momencie, w kontekście konta najemcy i dostawcy, jaką zatwierdzoną stawkę należy zastosować?
Pola katalogu podstawowego
Praktyczny wiersz katalogu powinien zawierać przynajmniej te pola:
catalog_version_id: niezmienna wersja używana do wyceny, rezerwowania, rozliczania i uzgadniania.dostawca: dostawca nadrzędny lub wewnętrzny adapter dostawcy.provider_account_scope: globalny, organizacja, projekt, obszar roboczy, najemca BYOK, konto sprzedawcy lub umowa korporacyjna.model_id_or_alias: identyfikator modelu widoczny dla dostawcy lub alias modelu wewnętrznego, którego dotyczy wycena.pricing_sku: kanoniczny kod SKU używany przez bramę do rozliczeń.provider_meter_id: opcjonalny zewnętrzny licznik faktur, jeśli jest dostępny.jednostka_rozliczeniowa: token wejściowy, token wejściowy w pamięci podręcznej, token wyjściowy, token wnioskowania, zapis w pamięci podręcznej, zapytanie wyszukiwania, token obrazu, sekunda audio, jednostka wsadowa, godzina PTU lub inna wyraźna jednostka.region_scope: global, region, strefa zamieszkania, rynek lub klasa przechowywania danych.deployment_type: bezserwerowe, wsadowe, udostępniane, dedykowane, dostrojone lub wewnętrzne piaskownica.service_tier: standardowy, priorytetowy, wsadowy, szybki, udostępniany lub inny poziom bramy.waluta: waluta stawki przed narzutem, podatkiem, ulgami lub konwersją.rate: dokładna stawka dziesiętna, nigdy binarna liczba zmiennoprzecinkowa.minimum_unit: najmniejsza jednostka płatna.rounding_rule: na żądanie, na wiersz faktury, na okres najmu lub definiowane przez dostawcę.source_url: dokumentacja, karta cenowa, numer kontraktu lub bilet wewnętrznego zatwierdzenia.observed_at: kiedy cena została wykryta lub zaimportowana.efektywne_odiefektywne_do: okno ważności.approval_state: wersja robocza, sprawdzona, zatwierdzona, przestarzała, zablokowana lub zastąpiona.
Ważnym szczegółem implementacji jest to, że wersja katalogu jest niezmienna po użyciu przez ruch. Korekty powinny tworzyć nową wersję lub wpis korygujący, a nie zmieniać wersję historyczną, do której odnoszą się istniejące wiersze księgi.
Oddziel aliasy modeli od jednostek SKU cen
Aliasy wewnętrzne, takie jak chat-default, support-fast lub reasoning-premium to udogodnienia operacyjne. Nie powinny one zastępować identyfikatora modelu widocznego dla dostawcy ani kodu SKU z cenami w księdze.
Zdarzenie użycia powinno przechowywać wszystkie trzy tożsamości:
requested_model_alias: o co prosiła aplikacja.upstream_model_id: jak faktycznie nazywała się brama.pricing_sku: jakiego silnika rozliczeniowego użył do rozliczenia.
Dzięki temu promocje aliasów nie zapiszą historii na nowo. Jeśli chat-default wskazuje na jeden model w sierpniu i nowszy model we wrześniu, wykorzystanie w sierpniu powinno pozostać powiązane z sierpniowym modelem nadrzędnym i sierpniową wersją katalogu.
Cytuj niezmienną wersję katalogu
Cytaty są przydatne tylko wtedy, gdy można je później wyjaśnić. Bramka powinna wybrać wersję katalogu przed wysyłką, wykorzystać ją do wyceny przed lotem, zapisać ją w rezerwacji budżetowej i przeprowadzić ostateczne rozliczenie.
Minimalny cykl życia żądania wygląda następująco:
- Normalizuj żądanie według oczekiwanych wymiarów podlegających rozliczeniu: model, warstwa usług, region, szacunkowy token, kwalifikowalność pamięci podręcznej, narzędzia, tryb wsadowy i typ wdrożenia.
- Wybierz aktywną zatwierdzoną wersję katalogu dla zakresu konta dzierżawcy i dostawcy.
- Rozwiąż oczekiwane kody SKU dla każdego możliwego wymiaru podlegającego rozliczeniu.
- Oblicz wstępny szacunkowy budżet i zarezerwuj budżet najemcy.
- Wyślij żądanie nadrzędne tylko wtedy, gdy istnieją wszystkie wymagane mapowania jednostek SKU.
- Przechwytuj metadane końcowego użycia z odpowiedzi dostawcy, łącznie z podkategoriami.
- Rozliczaj rzeczywiste wykorzystanie, korzystając z tej samej wersji katalogu, chyba że wymagany jest wyraźny przepływ pracy związany z korektą.
- Zapisuj wszelkie rozbieżności między kwotami zarezerwowanymi i rozliczonymi.
Zalecenie: zacytuj i zastrzeż przy ostrożnych założeniach, a następnie rozlicz się z wykorzystaniem po udzieleniu odpowiedzi. Dokładne ceny przed wysyłką są trudne w przypadku przesyłania strumieniowego, ponownych prób, hostowanych narzędzi, długotrwałych agentów i zachowań związanych z trafieniami w pamięci podręcznej. Celem nie jest doskonałe przewidywanie. Celem jest kontrolowana ekspozycja i możliwe do wyjaśnienia rozliczenie.
Awaria zamknięta dla nieznanych wymiarów podlegających rozliczeniu
Najniebezpieczniejszym błędem cenowym jest brakujący kod SKU, z którego można korzystać bezpłatnie. Brama powinna zakończyć się niepowodzeniem, gdy odpowiedź dostawcy zawiera segment użycia, który nie ma zatwierdzonego mapowania.
Przykłady, które powinny spowodować wstrzymanie płatności:
- Odpowiedź modelu zawiera
cached_input_tokens, ale katalog zawiera tylko ogólne stawki tokenów wejściowych i wyjściowych. - Model wnioskowania zwraca
reasoning_tokens, ale nie skonfigurowano żadnej jednostki SKU wnioskowania. - Hostowane narzędzie wyszukiwania rozlicza się za zapytanie, ale brama rejestruje tylko tokeny modelu.
- Zadanie wsadowe otrzymuje zniżkę, ale katalog mapuje je na standardową jednostkę SKU bezserwerową.
- Wdrożenie z obsługą administracyjną generuje opłaty za pojemność godzinową, ale księga dzierżawy oczekuje rozliczenia na podstawie tokenu.
- Wdrożenie regionalne wykorzystuje modyfikator miejsca zamieszkania, którego nie ma w aktywnym katalogu.
Wstrzymanie płatności nie powinno spowodować utraty wydarzenia. Powinien zachować surowe użycie dostawcy, znormalizowane użycie, identyfikatory żądań, identyfikatory dzierżawy, zakres konta dostawcy, próbę wersji katalogu, brakujące pola SKU i przyczynę zablokowania rozliczenia. Po zaktualizowaniu i zatwierdzeniu katalogu kolejkę wstrzymań można odtworzyć w sposób deterministyczny.
Skorzystaj z kontroli różnic cenowych przed zatwierdzeniem
Strony z cenami dostawców i interfejsy API nie zawsze działają stabilnie na komputerze, a umowy mogą mieć pierwszeństwo przed stawkami publicznymi. Mimo to automatyczne kontrole różnic są przydatne jako alerty. Powinni wykryć zmiany, zanim wpłyną one na wyceny widoczne dla klienta.
Plan importu cen powinien porównywać nowo zaobserwowane arkusze cen z ostatnim zatwierdzonym katalogiem i flagą:
- nowe modele lub modele wycofane;
- zmienione dane wejściowe, buforowane dane wejściowe, dane wyjściowe lub współczynniki wnioskowania;
- nowe kategorie tokenów lub liczniki narzędzi;
- zmieniono mnożniki zapisu w pamięci podręcznej lub trafień w pamięci podręcznej;
- nowe modyfikatory regionalne, rezydencjalne lub rynkowe;
- zmienione zasady rabatów zbiorczych;
- zmienione zasady dotyczące udostępnianej lub zadeklarowanej pojemności;
- zmiany walut;
- zmiany zaokrągleń lub jednostek minimalnych;
- konflikty między publicznymi kartami cenowymi a stawkami umownymi specyficznymi dla konta.
Zalecenie: traktuj pozostałości i importy jako dane robocze. Wymagaj zatwierdzenia przez człowieka w przypadku wszelkich zmian wpływających na ruch płatny, ceny widoczne dla partnerów lub eksport finansowy. Wewnętrzne eksperymenty mogą wykorzystywać katalog piaskownicy, ale powinien on mieć wyraźnie określone pułapy wydatków i nigdy nie należy go mylić z zatwierdzonymi rozliczeniami klientów.
Dodaj testy ofert jako CI
Zmiany cen wymagają testów z tego samego powodu, co zmiany w kodzie: niewielka zmiana może mieć wpływ na wiele kształtów żądań. Testy ofert powinny być uruchamiane za każdym razem, gdy ulegną zmianie wiersze katalogu, mapowania SKU, adaptery dostawców lub zasady znaczników.
Używaj syntetycznych kształtów żądań obejmujących powierzchnię cenową:
- standardowe żądanie tekstowe z tokenami wejściowymi i wyjściowymi;
- żądanie z buforowanymi tokenami wejściowymi;
- Żądanie wymagające intensywnego rozumowania i oddzielnego użycia rozumowania;
- żądanie użycia narzędzia z opłatami za wyszukiwanie, plik lub wykonanie kodu;
- żądanie multimodalne zawierające jednostki obrazu, audio, wideo lub wygenerowanych multimediów;
- zadanie wsadowe ze stawkami obniżonymi i opóźnionym rozliczeniem;
- zaopatrzone wdrożenie z wydajnością godzinową i zachowaniem dodatkowym;
- żądanie dotyczące regionu lub miejsca zamieszkania;
- najemca ze stawkami umownymi dostosowanymi do dostawcy;
- najemca partnerski z polityką dotyczącą dopłat lub rabatów.
Każdy test powinien wykazać więcej niż ostateczną sumę. Powinien zawierać wybraną wersję katalogu, listę SKU, jednostki rozliczeniowe, stawki, sposób zaokrąglania, walutę, szacowaną sumę, kwotę rezerwacji i oczekiwane wiersze rozliczenia.
Przykładowy test wyceny
{ "name": "cached_input_plus_reasoning_output_standard_tier", „prośba”: { "tenant_id": "tenant_test", "model_alias": "domyślne rozumowanie", "service_tier": "standardowy", "region": "globalny", „szacowane_użycie”: { „tokeny_wejściowe”: 12000, „cached_input_tokens”: 8000, „tokeny_wyjściowe”: 1500, „reasoning_tokens”: 3000 } }, „oczekiwać”: { "catalog_version_id": "Zatwierdzono 2026-09-01", „wymagane_skus”: [ "wejście_tekstu", "text_cached_input", "wyjście_tekstowe", „wyjście_rozumowania” ], "approval_state": "zatwierdzono", „nieznane_wymiary”: [] }
Ten rodzaj testu wychwytuje błędy katalogu ukrywane przez pulpity nawigacyjne: brakujący kod SKU tokenu w pamięci podręcznej, nieaktualny współczynnik wnioskowania lub niezgodność poziomów, która pojawia się tylko w przypadku zakresu jednego konta dostawcy.
Uzgodnij według wymiarów faktury dostawcy
Suma obciążeń zwrotnych nie jest wystarczająca do uzgodnienia. Brama powinna agregować wiersze księgi według tych samych wymiarów, których używa faktura dostawcy, a następnie mapować te sumy z powrotem na dzierżawców, zespoły, klucze, użytkowników, produkty i przepływy pracy.
Zadanie uzgadniania powinno być grupowane według pól, takich jak dostawca, konto, okres fakturowania, licznik, model, jednostka SKU, region, typ wdrożenia, poziom usług, waluta i wersja katalogu. Różnice należy powiązać ze znanymi przyczynami:
- termin kursu wymiany lub przeliczenie waluty;
- zaokrąglanie na poziomie żądania w porównaniu z poziomem wiersza faktury;
- opóźnione raporty dotyczące wykorzystania dostawcy;
- brakujące zdarzenia hostowanego narzędzia;
- niezgodność wersji katalogu;
- kredyty, zobowiązania lub rabaty dla przedsiębiorstw po stronie dostawcy;
- podatki, opłaty rynkowe i opłaty za niewykorzystanie;
- ręczne korekty lub zwroty środków.
Zalecenie: ustalaj stawki kosztów dostawcy modelu oddzielnie od stawek obciążeń zwrotnych klienta. Faktury dostawcy mogą zawierać kredyty, zobowiązania, rabaty lub podatki, które nie powinny automatycznie zmieniać cen oferowanych klientom. Czysty system może wyjaśnić obie liczby: kwotę naliczoną przez dostawcę i kwotę, jaką naliczył najemca zgodnie z zatwierdzonymi zasadami dotyczącymi bramy.
Udostępnij pochodzenie cen finansom i partnerom
Katalog cenowy to nie tylko wewnętrzna zależność rozliczeniowa. Zespoły finansowe, administratorzy platform i partnerzy muszą wiedzieć, czy cena jest aktualna i godna zaufania.
Udostępniaj pola pochodzenia w widokach administratora i interfejsach API partnerów:
- aktualny kurs i waluta;
- data wejścia w życie i planowana data zakończenia;
- źródłowy adres URL lub odniesienie do umowy;
- stan zatwierdzenia;
- zakres konta dostawcy;
- Zasady dotyczące znaczników lub rabatów;
- czy cena jest szacowana, zatwierdzona, przestarzała, zablokowana czy zastąpiona;
- stan ostatniego uzgodnienia.
Dzięki temu produkty na rynku niższego szczebla unikają przedstawiania nieaktualnych twierdzeń o „najtańszym modelu” lub stałych cen dla klientów po zmianach cen na rynku wyższego szczebla. Daje także finansom możliwą do obrony ścieżkę, gdy budżety i faktury się nie zgadzają.
Lista kontrolna wdrożenia
- Utwórz niezmienny katalog cen z datami obowiązywania i stanami zatwierdzenia.
- Wyraźnie przedstawiaj jednostki podlegające rozliczeniu, zamiast przechowywać tylko ogólne sumy tokenów.
- Przechowuj żądany alias, identyfikator modelu nadrzędnego i kod SKU cen przy każdym zdarzeniu użycia.
- Utrzymuj
catalog_version_idw ofertach, rezerwacjach, wierszach księgi i zapisach uzgodnień. - Awaria zamknięta, gdy użycie zawiera niezamapowany wymiar podlegający rozliczeniu.
- Korzystaj z importu wersji roboczych i kontroli różnic, aby wykryć zmiany cen dostawców.
- Wymagaj zatwierdzenia, zanim zmiany w katalogu wpłyną na rozliczany ruch klientów.
- Dodaj testy ofert dla tokenów buforowanych, tokenów wnioskowania, narzędzi, zadań wsadowych, udostępnionych wdrożeń i modyfikatorów regionalnych.
- Oddziel stawki kosztów dostawcy od stawek obciążeń zwrotnych klienta.
- Uzgodnij wymiary faktury z dostawcą przed przypisaniem rozbieżności najemcom.
Kompromisy
Więcej wersji oznacza więcej pracy operacyjnej. Każda zmiana ceny wymaga importu, przeglądu, zatwierdzenia, testów i wdrożenia. Zaletą jest to, że stare wykorzystanie nigdy nie jest przypadkowo przeliczane na nową stawkę.
Niepowodzenie zamknięcia może opóźnić dostęp do nowego modelu. Jest to właściwa wartość domyślna dla rozliczanego ruchu klientów. Do wewnętrznych eksperymentów użyj katalogu piaskownicy z wyraźnymi limitami wydatków i przejrzystymi etykietami.
Automatyczne porównywanie cen jest przydatne, ale nie jest miarodajne. Strony publiczne mogą zmieniać układ, pomijać rabaty umowne lub prościej opisywać ceny. Użyj automatyzacji, aby wykryć dryf, a następnie zatwierdź sprawdzone wiersze katalogu, zanim wpłyną one na rozliczenia.
Doskonałe szacunki dotyczące wstępnej inspekcji są nierealistyczne. Przesyłanie strumieniowe, ponowne próby, pętle agentów, trafienia w pamięć podręczną i hostowane narzędzia mogą zmienić ostateczne wykorzystanie. Bramka powinna łączyć konserwatywne zastrzeżenia z rozliczeniem po odpowiedzi i przejrzystym raportowaniem rozbieżności.
Przewidywanie: katalogi cenowe staną się infrastrukturą bramową
Przewidywanie: w miarę rozprzestrzeniania się wykorzystania sztucznej inteligencji w zespołach katalog cen stanie się równie ważny jak katalog modeli. Model routingu odpowiada na pytanie „gdzie powinno iść to żądanie?” Kontrola cen odpowiada na pytanie: „Czy możemy wycenić, zarezerwować, rozliczyć i wyjaśnić to zapytanie?”
Przewidywanie: zespoły utrzymujące ceny w statycznych plikach konfiguracyjnych będą miały trudności, ponieważ dostawcy będą dodawać więcej kategorii tokenów, liczników narzędzi, reguł pamięci podręcznej i planów wydajności. Presja będzie pochodzić przede wszystkim od finansów i partnerów, a nie od twórców aplikacji.
Wniosek
Brama obsługująca wiele modeli nie może traktować cen jako dodatku. Potrzebuje wersjonowanego katalogu z datami obowiązywania, mapowaniem SKU, testami ofert, przepływem pracy zatwierdzania i uzgadnianiem faktur. Praktyczna zasada jest prosta: każdy naliczony segment wykorzystania musi odpowiadać zatwierdzonej stawce, każda wycena musi odwoływać się do niezmiennej wersji katalogu, a każdy rozliczony wiersz księgi musi być możliwy do wyjaśnienia po zmianie cen dostawcy.
Zacznij od wymiarów, które już wpływają na ruch produkcyjny: model, kategoria tokenu, warstwa usług, region, typ wdrożenia, zachowanie pamięci podręcznej i hostowane narzędzia. Następnie dodaj stany zatwierdzenia, zachowanie w przypadku zamknięcia awaryjnego i grupy uzgadniania. Ta podstawa zapobiega przekształceniu się zmiany cen w incydent rozliczeniowy.