llm 0.37 dodaje wybór modelu i zmienia ustawienie domyślne
Simon Willison wydał llm 0.37 2 listopada, dodając opcje modeli i jednocześnie zmieniając ustawienie domyślne dla użytkowników, którzy nigdy nie wybrali własnego. Aktualizacja łączy łatwiejszą konfigurację z praktycznym pytaniem: jak dużo wyboru modeli programiści mogą wprowadzić, nie czyniąc ustalonych przepływów pracy trudniejszymi do przewidzenia?
LLM, interfejs wiersza poleceń i biblioteka Python Willisona do korzystania z modeli językowych, znajduje się pomiędzy aplikacjami a używanymi przez nie modelami. Najnowsze wydanie wyraźniej podkreśla tę rolę łącznika. Programiści zyskują prostszy sposób rejestrowania kompatybilnych usług, a obsługa embeddingów rozszerza sposób przetwarzania różnych typów mediów.
Istotne porównanie dotyczy bezpośrednich połączeń z poszczególnymi dostawcami i lokalnych narzędzi modelowych, takich jak Ollama. Wspólny interfejs ogranicza nakład pracy przy konfiguracji tych opcji. Nie sprawia jednak, że ich zachowanie staje się identyczne. To rozróżnienie łączy główne funkcje wydania, poprawki niezawodności oraz doświadczenia Willisona z oceną wkładów wspomaganych przez AI.
Co llm 0.37 zmienia poza listą modeli
Wydanie zmienia sposób, w jaki programiści wybierają i łączą modele, obok modeli dostępnych za pośrednictwem narzędzia.
Ogłoszenie wydania opisuje około dwa miesiące skumulowanej pracy. Dodaje gpt-6.1-sol i gpt-6.1-terra, wprowadza llm openai endpoint add oraz zmienia model zapasowy na gpt-6-luna. Ta zmiana domyślna obowiązuje, gdy użytkownicy nie wybrali własnego ustawienia domyślnego.
Są to różne rodzaje aktualizacji. Dodanie nazwanego modelu rozszerza istniejące menu. Dodanie zarządzania endpointami zmienia sposób, w jaki programiści utrzymują to menu. Zmiana ustawienia zapasowego wpływa na to, co dzieje się, gdy użytkownik pozostawia wybór modelu domyślny.
Endpoint to adres usługi, pod który oprogramowanie wysyła żądania do modelu. Endpointy kompatybilne z OpenAI przyjmują żądania zgodne z konwencjami związanymi z interfejsem programowania aplikacji OpenAI, czyli API. Kompatybilność pozwala istniejącym klientom łączyć się z innymi usługami bez konieczności tworzenia całkowicie innej integracji.
Dla programistów istotne jest rozróżnienie między dostępnym a wybranym modelem. Nowa pozycja niczego nie zmienia, dopóki ktoś jej nie wybierze. Zmienione ustawienie zapasowe może wpłynąć na istniejące polecenie, które nigdy nie określało modelu.
Weźmy pod uwagę programistę uruchamiającego cykliczne zadanie podsumowujące z jawnym wyborem modelu. Taki wybór uwidacznia zamierzoną zależność. Współpracownik uruchamiający skądinąd podobne polecenie bez tego wyboru polega natomiast na domyślnym ustawieniu środowiska.
Żadne z tych podejść nie jest automatycznie błędne. Ustawienia domyślne pomagają zacząć bez podejmowania każdej decyzji z góry. Jawne wybory pomagają zespołom wyjaśnić, dlaczego przepływ pracy zachował się inaczej po aktualizacji lub zmianie środowiska.
Wydanie rozszerza również obsługę typowanych załączników embeddingów. Embedding to reprezentacja numeryczna używana do porównywania treści pod względem znaczenia. Typowane załączniki zachowują informacje o rodzaju treści wchodzącej do tego procesu, zamiast traktować każdy binarny input jednakowo.
Ma to znaczenie, ponieważ model przyjmujący media potrzebuje więcej informacji niż same surowe bajty. Otaczające go oprogramowanie musi przekazać, czy załącznik reprezentuje obraz, dźwięk czy inny obsługiwany input.
Szersza zmiana ma charakter architektoniczny. LLM utrzymuje wspólny interfejs, jednocześnie uwzględniając różnice w wyborze modelu, konfiguracji usługi i obsłudze danych wejściowych. Te obowiązki stają się bardziej widoczne, gdy programiści używają tego samego narzędzia do większej liczby rodzajów pracy.
Czytelnicy oceniający llm 0.37 powinni zatem oddzielić dostęp od zachowania. Wydanie rozszerza i porządkuje dostęp. To, czy dany przepływ pracy ulegnie poprawie, pozostaje kwestią jego danych wejściowych, wyników i wymagań.
To rozróżnienie wyjaśnia również, dlaczego wydanie ze znanymi dodatkami modeli zasługuje na uwagę wykraczającą poza ich nazwy. Wybory konfiguracyjne wpływają na powtarzalność długo po tym, jak ogłoszenie przestaje przyciągać uwagę.
Łatwiejsze przełączanie modeli przenosi odpowiedzialność na właścicieli przepływów pracy
Przełączanie modeli ogranicza tarcia integracyjne, ale ktoś wciąż musi odpowiadać za konsekwencje tej zmiany.
Bezpośrednimi beneficjentami są programiści eksperymentujący z usługami hostowanymi i modelami lokalnymi. Wspólny klient może oszczędzić im konieczności odtwarzania podstawowej obsługi żądań przy każdej ocenie. Ta wygoda nabiera większego znaczenia, gdy eksperymenty przekształcają się w cykliczne zadania.
Prototyp zwykle sprawdza, czy model potrafi wykonać zadanie. Operacyjny przepływ pracy pyta również, czy wynik dociera w akceptowalnym formacie i w akceptowalnych warunkach. Te pytania należą do właściciela aplikacji, nawet gdy biblioteka upraszcza połączenie.
Wyobraźmy sobie zespół inżynierski generujący podsumowania wewnętrznych raportów o incydentach. Podczas eksploracji zespół testuje różne modele na tych samych dokumentach. Gdy współpracownicy zaczynają polegać na tych podsumowaniach, spójność staje się częścią produktu.
Zmiana modelu, która tworzy bardziej czytelny tekst, może mimo to pominąć szczegół operacyjny. Inna zmiana może zachować każdy szczegół, ale wprowadzić format, którego aplikacja dalszego etapu nie akceptuje. Żaden z tych rezultatów nie wynika z udanej konfiguracji endpointu.
Dla tego zespołu presja wynika z połączenia łatwiejszego eksperymentowania z utrwalonymi oczekiwaniami. Wymuszoną odpowiedzią jest zdefiniowanie akceptowalnego zachowania przed uczynieniem modelu kandydującego rutynowym wyborem.
W tym miejscu przełączanie modeli staje się kwestią organizacyjną. Osoba konfigurująca klienta może nie być osobą oceniającą podsumowania. Osoba zatwierdzająca dostęp do danych może mieć z kolei inne obowiązki.
Wspólny interfejs może sprawiać, że te granice są mniej widoczne, ponieważ polecenie wygląda znajomo w różnych środowiskach. Znajoma składnia nie powinna zastępować jawnej decyzji o tym, gdzie trafiają informacje i jak będą oceniane wyniki.
Istniejące mechanizmy rejestrowania LLM ilustrują inną część tej odpowiedzialności. Narzędzie zwykle zapisuje prompty i odpowiedzi w lokalnej bazie danych. Użytkownicy mogą wyłączyć rejestrowanie, także dla pojedynczych żądań.
Logi mogą pomóc wyjaśnić zmieniony wynik, ale tworzą również osobny zapis informacji przesłanych podczas przepływu pracy. Programista oceniający modele musi uwzględnić zarówno zdalne żądanie, jak i lokalny zapis.
Jest to szczególnie istotne, gdy użyteczny eksperyment staje się zespołową praktyką poprzez kopiowane polecenia. Polecenie może rozprzestrzeniać się łatwiej niż pierwotne założenia dotyczące retencji, wyboru modelu i akceptowalnych materiałów źródłowych.
Dla zespołów budujących przeszukiwalną bazę wiedzy, to samo pytanie o odpowiedzialność wykracza poza początkowe wywołanie modelu. Ktoś musi utrzymywać tożsamość źródła, oczekiwania dotyczące dostępu oraz relację między pobranym materiałem a wygenerowanymi odpowiedziami.
Są to praktyczne konsekwencje, a nie dowód, że wydanie tworzy nowe obowiązki w zakresie zarządzania dla każdego użytkownika. Osobisty eksperyment i współdzielony proces produkcyjny mają różne potrzeby.
Wspólna lekcja jest węższa: łatwiejsza konfiguracja obniża koszt rozpoczęcia oceny. Nie rozstrzyga, kiedy model zasłużył na miejsce w przepływie pracy, któremu ufają inni ludzie.
Wspólny interfejs nie gwarantuje wspólnego zachowania
Kompatybilność z OpenAI zapewnia konwencję połączenia, a nie obietnicę, że każdy backend obsługuje ten sam przepływ pracy.
Dokumentacja konfiguracji endpointów LLM opisuje obsługę dodatkowych kompatybilnych modeli obok wtyczek. Wtyczki to rozszerzenia dodające możliwości lub integracje z dostawcami do głównej aplikacji.
Daje to programistom różne drogi do wspólnego środowiska pracy. Kompatybilny endpoint może ponownie wykorzystać znane konwencje żądań. Rozszerzenie specyficzne dla dostawcy może uwzględnić zachowanie, które nie pasuje do tych konwencji.
Istotne porównanie dotyczy wygody wspólnego interfejsu i specyfiki bezpośredniej integracji. Wspólny interfejs ułatwia powtarzanie typowych zadań. Bezpośrednia integracja wyraźniej udostępnia własne funkcje i założenia dostawcy.
Żadna z tych dróg nie wygrywa w każdym przypadku. Właściwy wybór zależy od tego, jakich możliwości faktycznie wymaga aplikacja oraz ile zachowania specyficznego dla dostawcy musi zachować.
Ollama stanowi użyteczny punkt odniesienia, ponieważ obsługuje zarówno lokalne użycie modeli, jak i kompatybilne połączenia klientów. Jej dokumentacja kompatybilności wyraźnie opisuje obsługę podzbioru API OpenAI.
To zastrzeżenie ma znaczenie. Programiści powinni odczytywać kompatybilność jako stwierdzenie dotyczące obsługiwanych operacji, a nie zapewnienie pełnej zamienności. Żądanie, które powiedzie się w podstawowej demonstracji, potwierdza mniej niż kompletny test aplikacji.
Na przykład aplikacja może wymagać, aby rozmowa zachowywała stan pomiędzy żądaniami. Inna może zależeć od konkretnego mechanizmu wywoływania funkcji zewnętrznych. Podobna składnia żądań nie dowodzi, że oba wymagania działają w każdej usłudze.
Właściwa ocena wynika z zachowania aplikacji. Czy model może przyjąć zamierzony input? Czy usługa może zwrócić wymagany wynik? Co się dzieje, gdy odrzuca opcję, kończy działanie zbyt wcześnie lub zwraca błąd?
Te pytania stają się ważniejsze, gdy przełączanie modeli odbywa się wewnątrz skryptu. Interaktywny użytkownik może zauważyć nieoczekiwaną odpowiedź i zareagować. Proces nienadzorowany potrzebuje jawnej obsługi tej samej niespodzianki.
Funkcja zarządzania endpointami rozwiązuje bardziej konkretny problem: utrzymywanie konfiguracji wielokrotnego użytku. Rejestracja ułatwia ponowne wybranie usługi. Nie dowodzi jednak, że usługa nadaje się do każdego polecenia wcześniej uruchamianego przez inny model.
Dlatego też ścieżki kompatybilnej z OpenAI nie należy mylić z niezależnością od decyzji dostawcy. Wspólny klient nadal zależy od dostępności wybranej usługi, obsługiwanych funkcji i jej interpretacji żądań.
Wydanie wzmacnia zatem użyteczne podejście pośrednie. Programiści mogą standaryzować części swojego przepływu pracy, zachowując przemyślane wyjątki dla poszczególnych backendów. Takie podejście wymaga wiedzy, które założenia są wspólne, a które pozostają specyficzne dla dostawcy.
Przełączanie modeli działa najlepiej jako kontrolowana możliwość. Traktowanie go jako automatycznej równoważności zatarłoby właśnie te różnice, które programiści próbują ocenić.
Typowane embeddingi uwidaczniają różnice między mediami
Obsługa większej liczby typów danych wejściowych zwiększa znaczenie przetwarzania otaczających danych, nawet gdy model wykonuje konwersję numeryczną.
Willison wskazuje Gemini Embedding 2 jako powód zmian dotyczących załączników. Google opisuje multimodalne embeddingi, które reprezentują tekst, obrazy, wideo, dźwięk i dokumenty we wspólnej przestrzeni numerycznej.
Multimodalność oznacza, że system obsługuje różne formy danych wejściowych, takie jak tekst i obrazy. Google przedstawia tę wspólną przestrzeń jako sposób porównywania znaczenia między tymi formami.
Różnica względem wyszukiwania wyłącznie tekstowego jest konkretna. Zapytanie tekstowe może szukać istotnych mediów, nie wymagając, aby oryginalny element zawierał dokładne słowa zapytania. To, czy zwróci użyteczne wyniki, nadal zależy od modelu i zbioru.
Strona produktowa Google zawiera relacje klientów z organizacji zajmujących się mediami i technologiami prawniczymi. Opisują one zainteresowanie wyszukiwaniem istotnych materiałów w różnych typach mediów. Stanowią przykłady popytu, a nie niezależną weryfikację implementacji LLM.
W przypadku llm 0.37 węższy zakres rozwoju dotyczy obsługi danych wejściowych. Zachowanie typu załącznika dostarcza integracji informacji potrzebnych do prawidłowego kierowania obsługiwanej treści. To infrastruktura umożliwiająca korzystanie z zaawansowanych modeli, a nie dowód poprawy jakości wyszukiwania.
Rozważmy hipotetyczne archiwum badań produktowych zawierające notatki z wywiadów, nagrania ekranu i zrzuty ekranu. Zapytanie o mylący interfejs może mieć istotne dowody w każdym z tych materiałów.
Atrakcyjna obietnica to jedno środowisko wyszukiwania dla całego archiwum. Wymóg operacyjny jest bardziej szczegółowy: zachować informację o tym, czym jest każdy element i skąd pochodzi.
Użyteczny wynik wyszukiwania musi prowadzić osobę z powrotem do dowodów, które może sprawdzić. Liczbowa ocena podobieństwa sama w sobie nie wyjaśnia kontekstu zrzutu ekranu. Podobnie trafne nagranie nie wskazuje automatycznie dokładnego momentu potrzebnego czytelnikowi.
Dlatego typowane załączniki zasługują na uwagę, choć funkcja brzmi niepozornie. Różnice między mediami muszą przetrwać drogę od materiału źródłowego do danych wejściowych modelu, a następnie wrócić jako użyteczny wynik.
Informacja o typie nie rozwiązuje każdego etapu. Deweloperzy nadal muszą zdecydować, jak dzielona jest treść, jak zachowywane są odwołania do źródeł oraz jak wyniki są prezentowane użytkownikom.
Podział długiego nagrania na mniejsze jednostki zmienia to, co system wyszukiwania może zwrócić. Zachowanie jedynie odwołania na poziomie pliku tworzy inne doświadczenie niż zwrócenie istotnego fragmentu lub momentu.
Te decyzje wpływają również na ocenę. System wyszukiwania może zwrócić coś powiązanego z zapytaniem, nie zwracając jednak dowodu, który je rozstrzyga. Zespoły potrzebują przykładów, w których to rozróżnienie ma znaczenie.
W osobistym archiwum luźno powiązane dopasowanie może nadal być przydatne. W przypadku wspólnego procesu badawczego czytelnicy mogą potrzebować wyraźniejszego związku między zapytaniem, pobranym elementem a wyciągniętym z niego wnioskiem.
Wydanie tworzy miejsce na bogatsze dane wejściowe na poziomie interfejsu. Kolejne prace inżynieryjne dotyczą tych danych: zachowania kontekstu, walidacji pobierania i zapewnienia zrozumiałości wynikających z niego dowodów.
To centralny kompromis ujęty inaczej. Więcej treści staje się dostępnych przez wspólne narzędzie, podczas gdy odpowiedzialność za znaczące wyniki pozostaje po stronie aplikacji.
Poprawki niezawodności doprecyzowują obietnicę łatwiejszego dostępu
Pomyślna odpowiedź modelu jest tylko częścią niezawodnego procesu; otaczające ją oprogramowanie musi również poprawnie obsługiwać kontrolę, przechowywanie i błędy.
Informacje o wydaniu obejmują poprawki dotyczące logowania, wykonywania narzędzi i przechowywania embeddingów. Warto zwrócić uwagę na te szczegóły, ponieważ dotyczą tego, czemu aplikacje mogą ufać w otoczeniu odpowiedzi modelu.
Wywołanie narzędzia jest żądaniem modelu, by oprogramowanie wykonało funkcję. Aplikacja decyduje, jak to żądanie staje się działaniem. Kontrole dotyczące tego wykonania są zatem odrębne od zdolności modelu do zaproponowania właściwej funkcji.
Wydanie koryguje ścieżkę, w której odrzucone wywołanie narzędzia mimo wszystko było uruchamiane. Naprawia także logowanie czatu, które trwało mimo wyłączenia logowania. Są to udokumentowane poprawki, a nie dowód przeprowadzenia kompletnego audytu bezpieczeństwa lub prywatności.
Inna poprawka sprawia, że operacja embeddingu odrzuca partię, gdy model zwraca niewłaściwą liczbę wyników. Wcześniej taka niezgodność groziła utratą wierszy lub nieprawidłowymi powiązaniami między wektorami a identyfikatorami.
Znaczenie analityczne dotyczy obsługi błędów. Jawny błąd daje aplikacji możliwość zatrzymania się, ponowienia próby lub zażądania uwagi. Pozornie udana operacja z nieprawidłowymi powiązaniami może być trudniejsza do wykrycia.
W aplikacji wiedzy tożsamość źródła ma fundamentalne znaczenie. Wiarygodnie brzmiący wynik przypisany do niewłaściwego dokumentu podważa zdolność czytelnika do jego sprawdzenia. Lepsze generowanie języka nie może później naprawić tego powiązania.
Ta sama zasada dotyczy przerwanej pracy. Proces powinien rozróżniać kroki ukończone od podjętych oraz wyniki zapisane od brakujących. W przeciwnym razie kolejny proces dziedziczy niejasny obraz tego, co się wydarzyło.
Są to ogólne wymagania inżynieryjne, a nie wyjątkowe niedociągnięcia LLM. Ich obecność w wydaniu pokazuje, gdzie biblioteka integracyjna wymaga konserwacji w miarę różnicowania się zastosowań.
Relacja Willisona o wkładach wspieranych przez AI dodaje inną perspektywę. Twierdzi on, że poprawki pochodziły od 12 autorów, z których niemal wszyscy korzystali ze wsparcia AI. Informuje, że przegląd tych wkładów był mniej obciążający, niż się spodziewał.
Jego wyjaśnienie podkreśla triage, czyli proces sortowania zgłoszeń i decydowania, które zasługują na uwagę. Korzysta z AI, aby pomóc identyfikować użyteczne poprawki, a czasem tworzy własną implementację zamiast przyjmować nadesłany patch.
Ta relacja wspiera konkretne spostrzeżenie: zgłoszenia wspierane przez AI mogą dostarczać użytecznego materiału w ramach jego procesu przeglądu. Nie dowodzi, że inni opiekunowie projektów mają takie samo obciążenie pracą ani otrzymują równie użyteczne wkłady.
Ogłoszenie nie zawiera kontrolowanego porównania czasu przeglądu, wskaźników regresji ani rezultatów utrzymania. Sceptyczna lektura powinna zachować to ograniczenie, jednocześnie uznając konkretne poprawki zawarte w wydaniu.
Dla współtwórców wniosek jest praktyczny. Jasna procedura odtworzenia problemu i dobrze zdefiniowany błąd pozostają wartościowe, nawet jeśli proponowany kod znacząco zmienia się podczas przeglądu.
Dla użytkowników wniosek wraca do odpowiedzialności za proces. Zaufanie powinno opierać się na obserwowalnym zachowaniu i kontrolach odpowiadających zadaniu. Samo pochodzenie patcha nie może przesądzać, czy aplikacja powinna od niego zależeć.
Co obserwować po llm 0.37
Przydatne sygnały do dalszej obserwacji dotyczą zgodności, jakości pobierania i efektów utrzymania, a nie liczby nowo dostępnych modeli.
W nadchodzących miesiącach pierwszym sygnałem będzie to, jak zarządzanie endpointami sprawdza się w usługach faktycznie używanych przez deweloperów. Konkretne zgłoszenia powinny wskazywać operację, oczekiwane zachowanie i zaobserwowany wynik.
Podstawowe generowanie tekstu jest jedynie punktem wyjścia. Aplikacje napotykają również nieobsługiwane opcje, błędy uwierzytelniania, przerwane odpowiedzi oraz różnice w obsłudze rozmów. Dokumentacja i poprawki dotyczące tych przypadków wzmocniłyby praktyczną wartość wspólnego interfejsu.
Przeciwnym sygnałem byłaby powracająca niejasność co do obsługiwanych kombinacji. Jeśli użytkownicy muszą stale na nowo odkrywać te same ograniczenia, prostsza rejestracja pozostawiłaby dużą część ciężaru integracji nierozwiązaną.
Nie oznacza to, że każdy backend musi oferować identyczne funkcje. Jasne granice same w sobie są wartościowe. Udokumentowane ograniczenie pozwala deweloperom wybrać właściwą ścieżkę, zanim zbudują zależność opartą na założeniu.
Drugim sygnałem jest użyteczne przyjęcie typowanych załączników przez integracje embeddingów. Deklaracje wsparcia mają znaczenie, ale działające przykłady powinny pokazywać, jak wynikowe zachowanie wyszukiwania łączy użytkowników ze źródłami możliwymi do sprawdzenia.
Przekonujący przykład definiowałby zbiór, wyjaśniał jego zadanie wyszukiwania i pokazywał, gdzie pojawia się istotny materiał. Powinien również obejmować trudne przypadki, w których treść powiązana konkuruje z właściwym dowodem.
Takie dowody wzmocniłyby argument, że bogatsza obsługa załączników przynosi korzyści aplikacjom wykraczające poza akceptowanie dodatkowych typów plików. Powtarzające się niepowodzenia w zachowaniu kontekstu źródła osłabiłyby ten argument, nawet gdyby model zwracał wiarygodne wyniki liczbowe.
Deweloperzy powinni także rozróżniać demonstrację modelu od oceny aplikacji. Pierwsza pokazuje, że dana możliwość istnieje. Druga pokazuje, czy ta możliwość pomaga konkretnemu czytelnikowi wykonać zadanie.
Trzecim sygnałem jest trwałość utrzymania wspieranego przez AI. Doświadczenie Willisona jest zachęcające w granicach, które opisuje. Kolejne użyteczne dowody dotyczą tego, czy przyjęte zmiany pozostają zrozumiałe i niezawodne w toku dalszego rozwoju.
Późniejsze poprawki nie są automatycznie sygnałem negatywnym. Utrzymanie oprogramowania obejmuje znajdowanie i naprawianie błędów. Bardziej wymowne pytania dotyczą tego, czy zgłoszenia są odtwarzalne, błędy otrzymują jasne wyjaśnienia oraz czy poprawki zmniejszają powracającą niepewność.
Ta perspektywa pozwala uniknąć traktowania liczby wkładów jako pełnej miary kondycji projektu. Większa ilość nadesłanego kodu sama w sobie nie dowodzi, że opiekunowie mają większą użyteczną zdolność działania. Wartość leży w zrozumianych problemach i poprawionym zachowaniu.
Dla czytelników rozważających to wydanie bezpośrednia decyzja jest proporcjonalna. Zidentyfikuj, która zmiana ma znaczenie dla istniejącego zadania, zanim potraktujesz całą aktualizację jako powód do przeprojektowania tego zadania.
Osoba eksperymentująca z modelami może najbardziej cenić wygodę konfiguracji. Zespół uruchamiający cykliczne zadania może bardziej dbać o wyraźny wybór i wiarygodne zapisy. Deweloper wyszukiwania może skupić się na obsłudze mediów i zachowaniu źródeł.
Potraktuj llm 0.37 jako powód, by przeanalizować proces, który już rozumiesz. Wybierz reprezentatywne dane wejściowe, zapisz zamierzony model i określ, co musi zawierać akceptowalny wynik. Porównaj kandydackie wyniki z tym standardem, zanim rozszerzysz ich rolę. W przypadku wyszukiwania sprawdzaj pobrane źródło, zamiast polegać wyłącznie na wygenerowanej odpowiedzi. W przypadku zautomatyzowanych działań zbadaj, jak odrzucenie i przerwanie wpływają na następny krok. Utrzymuj ocenę blisko osób korzystających z wyniku, ponieważ ich wymagania decydują, czy łatwiejsze przełączanie zapewnia użyteczną elastyczność. Która część Twojego procesu korzysta z większego wyboru, a która potrzebuje bardziej wyraźnej zależności?



