Przejdź do treści

Środowiska

Publikacja agenta wybija wersję. Środowisko to nazwa, która wskazuje na jedną z nich — production, staging, dev — dzięki czemu możesz wypróbować nową wersję gdzieś, zanim spotkają ją wszyscy.

Bez środowisk publikacja i wydanie to ten sam akt. Ze środowiskami to dwie decyzje: wybicie wersji i umieszczenie jej gdzieś.

Czym jest środowisko

Nazwą, wersją, do której jest przypięte, i opcjonalnie własnym miejscem docelowym śladów. Każdy agent ma środowisko domyślne i to właśnie ono obsługuje zwykłą powierzchnię, gdy nikt nie powiedział inaczej.

Nazwa Małe litery, z myślnikami, do 64 znaków — pojawia się w URL-ach i staje się tagiem śladów, więc Production (EU) i production-eu nie mogą być dwiema rzeczami
Wersja Która opublikowana wersja tu odpowiada. Nie ma stanu bez przypięcia
Tracks latest Czy publikacja sama przekierowuje to środowisko. Domyślnie wyłączone
Ślady Token zapisu Logfire z vaulta, żeby runy tego środowiska lądowały we własnym projekcie

Nie ma środowiska bez wersji

Nieprzypięte środowisko byłoby nazwą, która odpowiada niczym, a pierwsza wiadomość do niego skierowana zawiodłaby daleko od formularza, który je utworzył. Utwórz jedno bez nazwania wersji, a zacznie od tego, co serwuje środowisko domyślne.

Przepływ pracy, dla którego to jest

flowchart LR
    D[Draft in the Builder] -->|publish| V[Version 7]
    V -->|pin| S[staging]
    S -->|somebody tries it| OK{Good?}
    OK -->|yes| P[promote to production]
    OK -->|no| D
  1. Edytuj draft, opublikuj. To wybija wersję i nie zmienia niczego, z czego ktoś korzysta.
  2. Wskaż nią staging i podepnij swojego testowego bota Slacka albo prywatny link do staging.
  3. Wypróbuj go na prawdziwych pytaniach.
  4. Wypromuj production na tę samą wersję — jedna edycja, bez ponownej publikacji.

Rollback to ten sam ruch wstecz: przekieruj production na wersję, która działała. Stara wersja wciąż tam jest, wciąż da się ją odczytać i uruchomić.

tracks_latest i dlaczego jest wyłączone

Środowisko z włączonym tracks latest jest przekierowywane przez każdą publikację. To właściwe ustawienie dla dev i prawie nigdy właściwe dla production.

Domyślne wyłączenie jest celowe: publikacja wybija wersję, a decyzja o tym, gdzie ta wersja działa, jest osobnym aktem. Sprzęgnięcie ich oznacza, że niedokończona edycja dociera do klienta, bo ktoś kliknął Publish, żeby zapisać swoją pracę.

Jedynym wyjątkiem jest production, które tworzy pierwsza publikacja. Dopóki jest jedynym środowiskiem agenta, nie ma skąd promować, więc podąża za publikacjami; przypnij je, gdy obok pojawi się dev albo staging.

Podpinanie powierzchni do środowiska

Ekspozycja — bot Slacka, widget, hostowana strona, odbiorca API — może nazwać środowisko, które obsługuje. Pominięta, dostaje domyślne.

To właśnie czyni ten podział użytecznym: bot deweloperski podpięty do dev serwuje to, co przypina dev, podczas gdy widget na twojej stronie zostaje na production, dopóki go nie przeniesiesz. Jeden agent, dwie publiczności, dwie wersje, jeden komplet ksiąg.

Strona, którą agent publikuje, dzieli się tak samo. Run w nazwanym środowisku publikuje własną aplikację, więc próba dev na cotygodniowym raporcie nigdy nie publikuje ponownie strony, którą otwierają czytelnicy produkcji. Środowiska z runem, który wciąż pracuje albo czeka na akceptację, nie da się usunąć, dopóki run się nie skończy: usunięcie przekazałoby ten run domyślnemu środowisku, a jego strony — produkcji.

Testowanie z poziomu Buildera

Testuj w nagłówku Buildera otwiera czat obok Buildera, a nie nad nim - ten sam czat co /chat, ze strumieniowaniem, krokami narzędzi, kartami zatwierdzeń i pytaniami. Odpowiada jako szkic, z nieopublikowanymi zmianami, albo jako wersja dowolnego środowiska, i mówi która. Do testu szkicu nic nie trzeba publikować: szkic musi przejść te same sprawdzenia co publikacja i uruchomić go może tylko osoba, która może edytować agenta. Run zatrzymany na zatwierdzeniu kontynuuje na szkicu takim, jaki był na jego początku.

Każda tura jest tam runem testowym: liczonym w budżecie i zapisywanym jak każdy inny, oznaczonym test w Aktywności i możliwym do odfiltrowania (With test runs, Without test runs, Only test runs; ?test=true albo false w GET /api/v1/runs). Panel zaczyna nową rozmowę, wysyła ostatnią wiadomość ponownie po zmianie i trzyma kilka przypiętych promptów do uruchomienia jednym kliknięciem. Jego szerokość, to, co odpowiada, i przypięte prompty są zapamiętywane per agent w przeglądarce. Ramka czatu wysyła w każdej turze draft: true albo test: true z environment_id.

Porównaj stawia dwa czaty obok siebie - szkic i produkcję albo dwa środowiska - a pole nad nimi pyta oba o to samo jednocześnie, więc odpowiedzi różnią się tylko tym, co odpowiada. Co zmienia szkic pokazuje szkic na tle opublikowanej wersji, jako ten sam diff, który rysuje historia wersji. Naciśnięcie T w dowolnym miejscu Buildera, poza polem tekstowym, otwiera albo zamyka panel.

Ślady per środowisko

Środowisko może nieść własny token zapisu Logfire, zapieczętowany w vaulcie, oraz nazwę usługi. Jego runy trafiają do śladów w tamtym projekcie, otagowane nazwą środowiska.

To właśnie trzyma eksperyment ze stagingu z dala od dashboardu, który ktoś obserwuje pod kątem incydentów produkcyjnych — i jest per środowisko, a nie per deployment, bo te dwa to naprawdę różne projekty.

Gdzie trafiają trace'y, należy do środowiska; ile niosą — do agenta. Blok observability agenta ma tryb content: full zapisuje wiadomość, wyjście modelu i każdy argument narzędzia, a none — tylko czas, tokeny, koszt i nazwy narzędzi. Przy projekcie nad danymi medycznymi, prawnymi albo kadrowymi to właśnie none powstrzymuje kopię chronionej treści przed opuszczeniem maszyny. Token środowiska przekierowuje run, ale tego wyboru nie nadpisuje.

Czym domyślne środowisko nie jest

Środowisko domyślne jest zarządzane przez publikację, a nie przez to API. Nie możesz go usunąć, przemianować innego środowiska na nie ani ręcznie przełączyć, które jest domyślne.

Oddanie odpowiedzi na pytanie "co dostaje zwykła powierzchnia" w dwie ręce oznacza, że one w końcu się poróżnią, a ta różnica wychodzi na jaw jako klient spotykający wersję, której nikt nie wydał.

Podsumowanie

  • Środowisko to nazwa przypięta do wersji; każdy agent ma domyślne.
  • Publikacja wybija wersję. Umieszczenie jej gdzieś to osobna decyzja — dlatego tracks_latest jest wyłączone w środowisku, które dodajesz; production utworzone przez pierwszą publikację podąża za nimi, dopóki go nie przypniesz.
  • Powierzchnia może nazwać swoje środowisko, więc bot deweloperski i publiczny widget mogą serwować różne wersje jednego agenta.
  • Rollback to przekierowanie, bo stare wersje pozostają czytelne i uruchamialne.
  • Środowisko domyślne jest zarządzane przez publikację i celowo nie da się go tu edytować.