Jak OpenAI korzysta z Codex
Aplikacja Codex codziennie służy licznym zespołom technicznym w OpenAI, które odpowiadają m.in. za bezpieczeństwo, inżynierię produktu, interfejs użytkownika, interfejs API, infrastrukturę i inżynierię wydajności. Zespoły wykorzystują aplikację Codex do przyspieszania różnorodnych zadań inżynieryjnych — od zrozumienia złożonych systemów i refaktoryzacji dużych baz kodu po wdrażanie nowych funkcji i rozwiązywanie incydentów pod presją czasu.
Na podstawie wywiadów z inżynierami OpenAI oraz wewnętrznych danych o użytkowaniu opracowaliśmy przykłady zastosowań i najlepsze praktyki, które pokazują, jak aplikacja Codex pomaga naszym zespołom działać szybciej, zwiększać jakość pracy i zarządzać złożonością na dużą skalę.
Aplikacja Codex pomaga naszym zespołom szybko zapoznawać się z nieznanymi częściami bazy kodu podczas wdrażania, debugowania lub analizowania incydentu.
Często korzystają oni z aplikacji Codex, aby znaleźć podstawową logikę funkcji, mapować zależności między usługami lub modułami oraz śledzić przepływ danych w systemie. Pomaga to również identyfikować wzorce architektoniczne lub braki w dokumentacji, których znalezienie w innym przypadku wymagałoby znacznego nakładu pracy ręcznej.
Podczas reagowania na incydenty aplikacja Codex pomaga inżynierom szybko wdrażać się w nowe obszary dzięki ujawnianiu interakcji między komponentami oraz śledzeniu sposobu, w jaki stany awaryjne rozprzestrzeniają się między systemami.
Anegdoty naszych zespołów
„Kiedy usuwam błąd, używam trybu pytania, aby sprawdzić, gdzie jeszcze w bazie kodu może występować ten sam problem”
Gdzie w tym repozytorium zaimplementowano logikę uwierzytelniania?
Podsumuj, jak żądania przepływają przez tę usługę od punktu wejścia do odpowiedzi.
Które moduły współdziałają z [wstaw nazwę modułu] i jak obsługiwane są awarie?
Aplikacja Codex jest powszechnie wykorzystywana do wprowadzania zmian obejmujących wiele plików lub pakietów. Jeśli na przykład inżynierowie aktualizują interfejs API, zmieniają sposób implementacji wzorca lub przechodzą na nową zależność, aplikacja Codex ułatwia spójne wprowadzanie zmian.
Jest to szczególnie przydatne, gdy tę samą aktualizację trzeba wprowadzić w dziesiątkach plików lub gdy aktualizacja wymaga uwzględnienia struktury i zależności, których nie da się łatwo wychwycić za pomocą wyrażenia regularnego (ang. regex) ani funkcji znajdowania i zastępowania.
Inżynierowie wykorzystują również tę aplikację do czyszczenia kodu przez dzielenie zbyt dużych modułów, zastępowanie starych wzorców nowoczesnymi oraz przygotowywanie kodu pod kątem lepszej testowalności.
Anegdoty naszych zespołów
„Aplikacja Codex zamieniła wszystkie starsze wywołania getUserById( ) na nasz nowy wzorzec usług i otworzyła żądanie ściągnięcia. W kilka minut wykonała to, co człowiekowi zajęłoby godziny.
Podziel ten plik na osobne moduły według przeznaczenia i wygeneruj testy dla każdego z nich.
Przekształć cały dostęp do bazy danych oparty na wywołaniach zwrotnych w async/await.
Aplikacja Codex służy do identyfikowania i eliminowania wąskich gardeł w zakresie wydajności.
Podczas dostrajania lub wykonywania działań na rzecz niezawodności inżynierowie wydają aplikacji Codex polecenie przeanalizowania wolnych lub pamięciochłonnych ścieżek wykonywania kodu — takich jak nieefektywne pętle, zbędne operacje czy kosztowne zapytania — oraz do zaproponowania zoptymalizowanych alternatyw, co często przekłada się na wyraźną poprawę wydajności i niezawodności.
Aplikacja Codex służy również do wspierania zdrowia kodu, identyfikując ryzykowne lub przestarzałe wzorce, które są nadal aktywnie stosowane. Nasze zespoły opierają się na niej, aby zmniejszyć długoterminowy dług technologiczny i proaktywnie zapobiegać regresjom.
Anegdoty naszych zespołów
„Używam aplikacji Codex do wyszukiwania powtarzających się kosztownych wywołań bazy danych”. Świetnie sprawdza się ona w wykrywaniu newralgicznych ścieżek i tworzeniu zapytań wsadowych, które mogę później dopracować”.
Zoptymalizuj tę pętlę pod kątem wydajności pamięci i wyjaśnij, dlaczego Twoja wersja jest szybsza.
Znajdź powtarzające się kosztowne operacje w tym module obsługi żądania i zasugeruj możliwości zastosowania pamięci podręcznej.
Zaproponuj szybszy sposób na wsadowe zapytania do bazy danych w tej funkcji.
Aplikacja Codex pomaga inżynierom szybciej pisać testy — zwłaszcza tam, gdzie pokrycie jest słabe lub nie ma go wcale.
Pracując nad usunięciem błędu lub refaktoryzacją, inżynierowie często proszą Codex o zaproponowanie testów obejmujących skrajne przypadki lub prawdopodobne ścieżki awarii. W przypadku nowego kodu może on generować testy jednostkowe lub integracyjne na podstawie sygnatury funkcji i otaczającej ją logiki.
Aplikacja Codex jest szczególnie pomocna w identyfikowaniu warunków brzegowych, takich jak puste dane wejściowe, maksymalna długość czy nietypowe, ale prawidłowe stany, które często są pomijane w początkowych testach.
Anegdoty naszych zespołów
„Kieruję aplikację Codex na moduły o niskim obłożeniu testami na noc — rano budzę się z gotowymi do uruchomienia żądaniami ściągnięcia z testami jednostkowymi”.
Napisz testy jednostkowe dotyczące tej funkcji, uwzględniając skrajne przypadki i ścieżki błędów.
Wygeneruj test oparty na właściwościach na potrzeby tego narzędzia do sortowania.
Wydłuż ten plik testowy tak, aby uwzględniał brakujące scenariusze związane z zerowymi danymi wejściowymi i nieprawidłowymi stanami.
Aplikacja Codex pomaga zespołom działać szybciej, przyspieszając zarówno rozpoczęcie, jak i zakończenie cyklu rozwoju oprogramowania.
Rozpoczynając pracę nad nową funkcją, inżynierowie używają go do tworzenia kodu szkieletowego — generowania folderów, modułów i szkieletów interfejsu API — aby szybko uzyskać działający kod bez ręcznego łączenia każdego elementu.
W miarę zbliżania się projektów do wydania aplikacja Codex pomaga dotrzymać napiętych terminów, realizując mniejsze, ale istotne zadania, takie jak klasyfikacja błędów, uzupełnianie ostatnich braków w implementacji oraz generowanie skryptów wdrożeniowych, punktów telemetrycznych czy plików konfiguracyjnych.
Służy również do przekształcania opinii o produkcie w kod początkowy. Inżynierowie często wklejają prośbę użytkownika lub specyfikację i proszą aplikację Codex o wygenerowanie wstępnego szkicu, do którego mogą później wrócić i go dopracować.
„Mimo spotkań przez cały dzień udało mi się scalić 4 żądania ściągnięcia, ponieważ aplikacja Codex działała w tle”.
Utwórz szkielet nowej trasy API dla POST/events z podstawową walidacją i rejestrowaniem.
Wygeneruj punkt wpięcia telemetrii do śledzenia powodzenia/niepowodzenia nowego procesu wdrażania, używając tego szablonu [wstaw przykład własnego kodu telemetrii].
Utwórz szkieletową implementację na podstawie tej specyfikacji: [wstaw specyfikację lub opinię o produkcie].
Aplikacja Codex pomaga naszym inżynierom utrzymać produktywność, gdy ich harmonogramy są rozbite i pełne przerw.
Służy do zachowywania niedokończonej pracy, przekształcania notatek w działające prototypy oraz wydzielania zadań eksploracyjnych, do których można wrócić później. Ułatwia to wstrzymywanie i wznawianie pracy bez utraty kontekstu, zwłaszcza gdy inżynierowie prowadzą rozmowę telefoniczną lub biorą udział w wielu spotkaniach.
„Jeśli zauważę drobną poprawkę, uruchamiam zadanie aplikacji Codex, zamiast przełączać gałęzie, i sprawdzam jej żądanie ściągnięcia, gdy mam czas”.
Aplikacja Codex jest również przydatna w przypadku otwartych zadań, takich jak znajdowanie alternatywnych rozwiązań lub weryfikowanie decyzji projektowych. Możesz użyć polecenia, aby uzyskać różne sposoby rozwiązania problemu, poznawać nieznane wzorce lub poddawać krytycznej ocenie założenia. Pomaga to uwidocznić kompromisy, poszerzyć możliwości projektowe i doprecyzować wybory dotyczące wdrażania.
Służy ona również do identyfikowania powiązanych błędów. Na podstawie informacji o znanym problemie lub przestarzałej metodzie aplikacja Codex może identyfikować podobne wzorce w innych miejscach kodu, co ułatwia wychwytywanie regresji lub dokończenie prac porządkowych.
„Aplikacja Codex pomaga mi rozwiązywać problem zimnego startu — wklejam specyfikację i dokumentację, a ona tworzy szkielet kodu albo wskazuje, czego brakuje”.
Jak by to działało, gdyby system był oparty na zdarzeniach, zamiast funkcjonować w modelu żądanie/odpowiedź?
Znajdź wszystkie moduły, które ręcznie tworzą ciągi SQL, zamiast używać naszego konstruktora zapytań.
Przepisz to w bardziej funkcjonalnym stylu, unikaj mutacji i efektów ubocznych.
Aplikacja Codex działa najlepiej, gdy zapewni się je strukturę, kontekst i przestrzeń do iteracji. Oto niektóre z nawyków, które zespoły OpenAI starają się wypracować, aby konsekwentnie czerpać z niej korzyści w codziennej pracy.
W przypadku dużych zmian zacznij od poproszenia aplikacji Codex w trybie pytania o plan wdrożenia, który następnie stanie się danymi wejściowymi kolejnych poleceń po przełączeniu do trybu kodu. Ten dwuetapowy proces pozwala utrzymać aplikację Codex na właściwym torze i unikać błędów w jej wynikach. Aplikacja Codex najlepiej sprawdza się w przypadku dobrze zdefiniowanych zadań, których wykonanie zajęłoby Tobie lub członkowi zespołu około godziny albo wymagałoby napisania kilkuset wierszy kodu. W miarę jak modele zyskują coraz wyższą jakość, można oczekiwać, że będzie rosła skala zadań, których będą mogły się podejmować.
Ustawienie skryptu startowego, zmiennych środowiskowych i dostępu do Internetu istotnie obniża wskaźnik błędów aplikacji Codex. Podczas wykonywania zadań zwracaj uwagę na błędy kompilacji, które można skorygować w konfiguracji środowiska aplikacji Codex. Może to wymagać kilku iteracji, ale w dłuższej perspektywie zapewnia istotny wzrost wydajności.
Aplikacja Codex reaguje lepiej, gdy polecenia odzwierciedlają sposób, w jaki opisano zmianę w żądaniu ściągnięcia lub problemie. To oznacza uwzględnienie ścieżek plików, nazw komponentów, różnic i fragmentów dokumentacji w stosownych przypadkach. Formułowanie poleceń z zastosowaniem schematów, takich jak „Zaimplementuj to w taki sam sposób, jak wykonano to w [module X]”, poprawia wyniki.
Uruchamiaj zadania, aby zapisywać poboczne pomysły, częściowo wykonaną pracę lub drobne poprawki. Nie musisz od razu tworzyć pełnego żądania ściągnięcia za jednym razem. Aplikacja Codex dobrze sprawdza się jako miejsce przejściowe, do którego możesz wrócić, gdy znowu usiądziesz do pracy.
Prowadź plik AGENTS.md, aby pomóc aplikacji Codex działać wydajniej w Twoim repozytorium w różnych poleceniach. Pliki te zazwyczaj zawierają konwencje nazewnictwa, logikę biznesową, znane niuanse lub zależności, których aplikacja Codex nie jest w stanie wywnioskować wyłącznie na podstawie samego kodu. Więcej informacji na temat struktury pliku AGENTS.md znajdziesz w dokumentacji.
Funkcja Best-of-N pozwala jednocześnie wygenerować wiele odpowiedzi dla jednego zadania, aby można było szybko przeanalizować różne rozwiązania i wybrać najlepsze. W przypadku bardziej złożonych zadań możesz przeanalizować kilka iteracji i połączyć elementy różnych odpowiedzi, aby uzyskać bardziej satysfakcjonujący rezultat.
Aplikacja Codex jest nadal dostępna w badawczej wersji poglądowej, ale już teraz realnie wpływa na sposób, w jaki tworzymy oprogramowanie, pomagając nam pracować szybciej, pisać lepszy kod i podejmować się zadań, którym w innym przypadku nigdy nie nadalibyśmy priorytetu.
Przed nami nieograniczony potencjał — w miarę jak nasze modele zyskują coraz wyższą jakość, a aplikacja Codex coraz głębiej łączy się z naszymi procesami roboczymi, chcemy odkrywać jeszcze skuteczniejsze sposoby tworzenia oprogramowania z jej pomocą. Nadal będziemy dzielić się wnioskami wyciągniętymi w trakcie pracy.


