Instrukcje systemowe to coś w rodzaju „wstępu”, który dodajesz przed udostępnieniem modelu użytkownikowi. Umożliwia kierowanie zachowaniem modelu na podstawie Twoich konkretnych potrzeb i przypadków użycia.
Wprowadzenie do instrukcji systemowych
Konfigurując instrukcję systemową, dajesz modelowi dodatkowy kontekst ułatwiający zrozumienie zadania, udostępniasz bardziej dostosowane odpowiedzi i stosujesz się do konkretnych wytycznych dotyczących pełnej interakcji użytkownika z modelem. W instrukcjach systemowych możesz określić zachowanie na poziomie usługi, oddzielnie od promptów wyświetlanych użytkownikom. Możesz na przykład podać rolę lub personę, informacje kontekstowe i instrukcje formatowania.
Instrukcje systemowe możesz wykorzystać na wiele sposobów, m.in.:
- definiowanie persony lub roli (np. w przypadku chatbota);
- Definiowanie formatu wyjściowego (Markdown, YAML itp.)
- definiowanie stylu i tonu danych wyjściowych (np. szczegółowość, formalność i poziom czytania),
- definiowanie celów lub reguł dotyczących zadania (np. zwracanie fragmentu kodu bez dalszych wyjaśnień);
- podać dodatkowy kontekst promptu (np. ograniczenie wiedzy);
Gdy instrukcja systemu jest ustawiona, dotyczy ona całego żądania. Działa ona w wielu przypadkach użytkownika i modelu, gdy jest uwzględniona w promptach. Chociaż instrukcje systemowe są oddzielone od treści promptu, nadal są częścią promptów ogólnych, dlatego podlegają standardowym zasadom dotyczącym wykorzystania danych.
Przykładowe fragmenty kodu
Przykłady żądań
Oto kilka przykładów promptów systemowych, które określają oczekiwane działanie modelu.
Generowanie kodu
- System: jesteś ekspertem w programowaniu i specjalizujesz się w renderowaniu kodu dla interfejsów front-end. Gdy opisuję komponent witryny, który chcę zbudować, proszę o zwrócenie kodu HTML i CSS potrzebnego do tego celu. Nie podawaj wyjaśnienia tego kodu. Możesz też przesłać propozycje dotyczące interfejsu użytkownika.
- Użytkownik: utwórz pole na środku strony, które będzie zawierać obracające się obrazy z odpowiednimi podpisami. Obraz na środku strony powinien mieć cienie, aby wyróżniał się na tle. Powinien on też zawierać link do innej strony w witrynie. Pozostaw pole adresu URL puste, abym mógł je wypełnić.
Generowanie danych sformatowanych
System: jesteś asystentem dla domowych kucharzy. Otrzymasz listę składników i odpowiesz listą przepisów, które wykorzystują te składniki. Przepisy, które nie wymagają dodatkowych składników, powinny być zawsze wymienione przed tymi, które wymagają dodatkowych składników.
Odpowiedź musi być obiektem JSON zawierającym 3 przepisy. Obiekt przepisu ma ten schemat:
- name: nazwa przepisu
- usedIngredients: składniki w przepisie, które zostały podane na liście
- otherIngredients: składniki w przepisie, które nie zostały podane na liście (pomijane, jeśli nie ma innych składników).
- description: krótki opis przepisu, napisany w pozytywny sposób, tak jakby miał sprzedawać przepis;
Użytkownik:
- 1 lb worek mrożonych brokułów
- 1 pół litra śmietany kremówki
- 1 lb pack cheese ends and pieces
Czatbot muzyczny
- System: wcielisz się w rolę historyka muzyki i zaprezentujesz obszerną wiedzę na temat różnych gatunków muzycznych, podając odpowiednie przykłady. Twój dźwięk będzie wesoły i entuzjastyczny, a także przepełniony radością z muzyki. Jeśli pytanie nie dotyczy muzyki, odpowiedź powinna brzmieć: „Nie wiem”.
- Użytkownik: Jaki gatunek muzyczny był najpopularniejszy wśród osób urodzonych w latach 60.? Wymień 5 piosenek.
Inne opcje kontrolowania generowania treści
- Dowiedz się więcej o projektowaniu promptów, aby móc wpływać na model w celu generowania wyników odpowiadających Twoim potrzebom.
- Skonfiguruj parametry modelu, aby kontrolować, jak model wygeneruje odpowiedź. Do tych parametrów należą: maksymalna liczba tokenów wyjściowych, temperatura, topK i topP.
- Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymania odpowiedzi, które mogą być uznane za szkodliwe, w tym wypowiedzi szerzące nienawiść i treści o charakterze jednoznacznie seksualnym.
- Przekaż schemat odpowiedzi wraz z promptem, aby określić konkretny schemat wyjściowy. Ta funkcja jest najczęściej używana do generowania danych wyjściowych w formacie JSON, ale można jej też używać do zadań klasyfikacji (np. gdy chcesz, aby model używał określonych etykiet).