Ekspertyza · Dostęp do modeli AI
Jedno wejście do modeli AI, z kluczami per zespół, limitami i lokalnym rozliczaniem.
Umieszczamy między aplikacjami firmy a dostawcami modeli jeden punkt wejścia, kompatybilny z interfejsem OpenAI. Stamtąd wydawane są oddzielne klucze dla każdego projektu, z limitem wydatków, listą dozwolonych modeli i listą adresów IP, a zużycie widać na klucz.
Już zbudowanePoarta rulează și se poate verifica din afară azi, fără să ne credeți pe cuvânt: catalogul public de modele răspunde 200 și listează 106 modele marcate active, iar interogarea de modele fără cheie întoarce 401. Sub ea sunt două implementări proprii: serviciul de facturare și administrare (98 de fișiere TypeScript) care emite cheile, sincronizează plafoanele cu poarta și ține registrele, și platforma noastră de asistenți, care își trece în producție recunoașterea vocii și sinteza prin aceeași poartă, nu direct la furnizor. Rezervele, spuse aici și nu la subsol: catalogul se schimbă de la o oră la alta, deci orice cifră se scrie cu data lângă ea; nu există niciun model Anthropic în poartă azi, deși propriul nostru README promite altceva; iar trimiterea automată a facturii în sistemul de stat rămâne în regim de probă până la instalarea certificatului.
Problem pojawia się po raz drugi, nie pierwszy. Pierwsza integracja z dostawcą modeli jest prosta: jeden klucz, jedna biblioteka, gotowe. Piąta aplikacja, trzeci zespół i drugi rachunek w walucie obcej to moment, w którym nikt nie jest już w stanie odpowiedzieć na trzy banalne pytania — kto zużywa, ile, i co się stanie, jeśli skrypt wymknie się spod kontroli pewnej sobotniej nocy. Brama rozwiązuje dokładnie to: aplikacje nie rozmawiają już z dostawcami, rozmawiają z jednym punktem wejścia, który ma ten sam interfejs co API OpenAI, więc w większości bibliotek zmienia się adres bazowy i klucz, a nie kod.
Co można sprawdzić samodzielnie, już teraz, bez konta: publiczny katalog modeli bramy odpowiada i pokazuje, co ma w środku. W dzisiejszej weryfikacji było 106 modeli, wszystkie oznaczone jako aktywne — 77 modeli tekstowych, z których 48 deklaruje możliwości rozumowania, 10 audio, 7 obrazu, 7 czasu rzeczywistego, 3 wektoryzacji i 2 wideo. Ta sama weryfikacja wykonana przez współpracownika półtorej godziny wcześniej zwracała 107. Dlatego liczbę zawsze zapisuje się razem z godziną, a na stronie należy ją odczytywać z endpointu, nie wpisywać ręcznie.
Kontrola kosztów nie jest panelem, jest ogranicznikiem. Jeden klucz ma limit wydatków, okres limitu do wyboru spośród czterech, listę dozwolonych modeli, listę akceptowanych adresów IP — do dwudziestu, IPv4, IPv6 lub bloków — oraz znacznik blokady. Gdy limit zostanie przekroczony, klucz blokuje się automatycznie, a przyczyna zostaje na nim zapisana, aby interfejs mógł pokazać, dlaczego, zamiast wyświetlać niemy stan. Istnieje też korekta, którą niewiele osób stosuje: modele, które „myślą” przed odpowiedzią, zużywają u dostawcy więcej niż widzi brama, więc surowy limit przesyłany niżej dzieli się przez współczynnik rozumowania obliczony jako mediana z ostatnich trzydziestu dni użytkownika, ograniczona do przedziału od jednego do dwudziestu. Bez tej korekty limit wydatków byłby dekoracyjny dokładnie na drogich modelach.
Część lokalna. Kurs walutowy jest odczytywany z oficjalnego pliku XML Narodowego Banku Mołdawii dla bieżącego dnia, z timeoutem pięciu sekund i wartością zapasową z konfiguracji, gdy źródło nie odpowiada — brama nie ma prawa zatrzymać się dlatego, że strona z kursem walut jest niedostępna. Faktura fiskalna jest tworzona jako XML i przechowywana, z cyklem stanów od wersji roboczej do zaakceptowanej lub odrzuconej. Faktyczne wysłanie do systemu państwowego odbywa się z użyciem certyfikatu; dopóki certyfikat nie jest zainstalowany, usługa pozostaje w trybie próbnym: XML jest generowany i zapisywany, ale nie jest wysyłany. To jest rzeczywisty stan i go zapisujemy, bo to różnica między „mamy fakturę fiskalną” a „mamy wszystko, co potrzebne, aby ją wysłać”.