Menu

Prompt systemowy: co to jest i gotowe przykłady

Prompt systemowy (system prompt) to zestaw stałych instrukcji, który obowiązuje przez całą rozmowę z modelem AI. Dowiedz się, gdzie się go ustawia, co w nim umieścić i czym różni się od wiadomości użytkownika.

Każdy prompt poniżej możesz edytować: zmień go, a potem otwórz w ChatGPT, Claude lub innej aplikacji AI.

Prompt systemowy (system prompt) to zestaw instrukcji, które model AI dostaje przed rozpoczęciem rozmowy i które obowiązują dla każdej kolejnej wiadomości. Ustala rolę modelu, odbiorcę, zasady i domyślny format odpowiedzi, więc nie musisz powtarzać ich w każdej wiadomości. Użytkownik pisze prompty; prompt systemowy decyduje o tym, jak model odpowiada na wszystkie.

Każda aplikacja czatowa już go używa. Gdy otwierasz ChatGPT, Claude albo Gemini, model ma już instrukcje od firmy, która za nim stoi, a okno czatu ich nie pokazuje. Gdy programiści budują aplikację na bazie modelu, to w prompcie systemowym zmieniają ogólny model w korepetytora programowania, asystenta obsługi klienta albo generator opisów commitów.

Co robi prompt systemowy

Dane wejściowe modelu w czacie mają strukturę: najpierw prompt systemowy, a potem rozmowa, czyli naprzemienne wiadomości użytkownika i asystenta. Prompt systemowy stoi ponad całą wymianą, więc model ma go przed sobą przy każdej odpowiedzi, niezależnie od długości czatu.

Dzięki temu to właściwe miejsce na wszystko, co ma obowiązywać zawsze: do kogo model mówi, co mu wolno, a czego nie, i jak domyślnie ma wyglądać odpowiedź. Modele są też trenowane, żeby dawać mu większą wagę niż wiadomości użytkownika, gdy się ze sobą kłócą. To tendencja, a nie blokada. Zdeterminowany użytkownik czasem potrafi przekonać model do porzucenia promptu systemowego i dlatego nie powinien on być twoim jedynym zabezpieczeniem.

Prompt systemowy a wiadomość użytkownika

Prompt systemowyWiadomość użytkownika
Kto go piszeProgramista albo ty w ustawieniach aplikacjiTy, w polu czatu
ZakresCała rozmowaJedna prośba
Typowa zawartośćRola, odbiorca, zasady, fakty, domyślny formatZadanie i materiał do niego
Kiedy się zmieniaRzadkoW każdej turze
Waga przy konflikcieZwykle wyższaZwykle niższa

Przydatny test: jeśli zdanie byłoby prawdziwe dla każdej wiadomości w czacie, należy do promptu systemowego. Jeśli dotyczy tej konkretnej prośby, należy do wiadomości użytkownika. "Odpowiadaj w mniej niż 100 słowach" może trafić w oba miejsca; "streść poniższego e-maila" to zawsze wiadomość użytkownika.

Gdzie ustawić prompt systemowy

W API prompt systemowy to osobne wejście. W bibliotece OpenAI dla Pythona to pierwsza wiadomość na liście, z rolą system. Dokumentacja OpenAI przy nowszych modelach nazywa ten sam rodzaj instrukcji także developer message.

from openai import OpenAI

client = OpenAI()
MODEL = "your-model-id"  # e.g. from your provider's model list

response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "You are a patient Python tutor. Give hints, not full solutions."},
        {"role": "user", "content": "Why does my loop stop at 9?"},
    ],
)
print(response.choices[0].message.content)

W bibliotece Anthropic dla Pythona to parametr system najwyższego poziomu, a lista messages zawiera tylko rozmowę:

import anthropic

client = anthropic.Anthropic()
MODEL = "your-model-id"  # e.g. from your provider's model list

message = client.messages.create(
    model=MODEL,
    max_tokens=500,
    system="You are a patient Python tutor. Give hints, not full solutions.",
    messages=[{"role": "user", "content": "Why does my loop stop at 9?"}],
)
print(message.content[0].text)

API Gemini od Google nazywa to system instruction (instrukcja systemowa). Nazwa jest inna, idea ta sama.

W aplikacjach czatowych nie masz dostępu do surowego pola system, bo aplikacja ma już własne. Dostajesz za to miejsce na stałe instrukcje, które aplikacja dołącza za ciebie. W ChatGPT to instrukcje niestandardowe, instrukcje projektu i instrukcje własnego GPT. W Claude to instrukcje projektu i preferencje w profilu. W Gemini to instrukcje Gema. Jak dokładnie każda aplikacja łączy twój tekst z własnymi instrukcjami, nie jest w pełni udokumentowane, ale w praktyce działają one jak prompt systemowy, który dzielisz z aplikacją.

Co umieścić w prompcie systemowym

  • Rolę i odbiorcę. "Jesteś korepetytorem dla uczniów w pierwszym miesiącu nauki programowania" ustala słownictwo i poziom każdej odpowiedzi. Role prompting opisuje, co rola zmienia, a czego nie.
  • Zasady obowiązujące w każdej turze. Co model ma robić zawsze albo nigdy: dawać wskazówki zamiast pełnych rozwiązań, odpowiadać tylko na pytania o produkt, odpisywać w języku użytkownika.
  • Co robić w razie niepewności. "Jeśli odpowiedzi nie ma w poniższych faktach, napisz, że nie wiesz" robi więcej przeciw zmyślonym odpowiedziom niż ogólne "bądź dokładny".
  • Fakty, których model potrzebuje. Szczegóły produktu, zasady, bieżąca data, plan użytkownika. Model nie odpowie na pytania o twoją aplikację na podstawie danych treningowych.
  • Domyślny format. Długość, struktura, czy używać bloków kodu. Jeśli odpowiedź czyta program, podaj dokładny kształt; zobacz structured output.

Czego nie umieszczać

Sekretów. Prompt systemowy nie jest prywatny. Użytkownicy mogą poprosić model o powtórzenie instrukcji albo podstępem go do tego nakłonić, a modele nie odmawiają niezawodnie. Klucze API, hasła i wszystko, czego nie chcesz zobaczyć opublikowanego, nie powinny się tam znaleźć. Traktuj prompt systemowy jak tekst, który użytkownik może kiedyś przeczytać, i zajrzyj do prompt injection, żeby zobaczyć, jak instrukcje bywają obchodzone.

Zadania jednej wiadomości. Jeśli prompt systemowy mówi "streść ten artykuł", druga wiadomość w czacie nie ma już dokąd pójść.

Stosów nakładających się zasad. Dwadzieścia zasad pisanych w różnych momentach zwykle sobie przeczy, a model musi zgadywać, która wygrywa. Pogrupuj zasady, usuń duplikaty i ustal priorytety tam, gdzie dwie mogą się zderzyć.

Waty. Prompt systemowy jest wysyłany ponownie z każdym żądaniem i zajmuje miejsce w oknie kontekstu modelu, więc za każdy zbędny akapit płacisz w każdej turze.

Przykłady promptów systemowych

Pierwszy przykład to asystent produktu. Prompt systemowy ustala zakres, długość i zasadę dla pytań, na które nie da się odpowiedzieć, oraz zawiera fakty potrzebne modelowi. Przełączaj zakładki, żeby wysyłać mu różne wiadomości: ten sam prompt systemowy kształtuje wszystkie trzy odpowiedzi.

System prompt
Jesteś asystentem pomocy w aplikacji do budżetowania. Odpowiadaj tylko na pytania o korzystanie z aplikacji. Każda odpowiedź ma mieć mniej niż 80 słów. Jeśli pytanie dotyczy czegokolwiek innego, napisz, że możesz pomóc tylko z aplikacją, i zaproponuj coś powiązanego, w czym możesz pomóc. Jeśli poniższe fakty nie obejmują pytania, napisz, że nie masz pewności, i zasugeruj kontakt z pomocą techniczną. Nigdy nie wymyślaj nazw menu ani funkcji. Fakty: Transakcje można dzielić: otwórz transakcję, dotknij Podziel, a potem wybierz kategorie i kwoty. Budżety resetują się pierwszego dnia każdego miesiąca.
Fill in
Jak podzielić jeden zakup między spożywcze i dom?
Try it
Chat apps receive the system prompt as the start of your message, so this tries its wording, not its priority. To test it as standing instructions, put it in the app's custom instructions or the API's system field.
Example replyReplies vary between models and runs.

Otwórz zakup na liście transakcji i dotknij Podziel. Potem wybierz dwie kategorie, Spożywcze i Dom, i wpisz kwotę przypadającą na każdą z nich.

Drugi przykład to tekst, jaki można wpisać w instrukcje niestandardowe albo instrukcje projektu w aplikacji czatowej. Opisuje ciebie i to, jakich odpowiedzi oczekujesz, więc każdy czat zaczyna się od tego.

Prompt
System prompt
O mnie: zajmuję się backendem i piszę w TypeScript na Node.js. Zakładaj, że znam podstawy, i pomijaj wyjaśnienia dla początkujących. Jakich odpowiedzi oczekuję: najpierw kod, potem najwyżej trzy zdania wyjaśnienia. Zaznacz, gdy odpowiedź zależy od konkretnej wersji albo ustawienia.
Fill in
Jak odczytać plik JSON?
Try it
Chat apps receive the system prompt as the start of your message, so this tries its wording, not its priority. To test it as standing instructions, put it in the app's custom instructions or the API's system field.
Example replyReplies vary between models and runs.
import { readFile } from "node:fs/promises";

const config = JSON.parse(await readFile("config.json", "utf8"));

Podanie kodowania sprawia, że readFile zwraca string, który JSON.parse zamienia w obiekt. await na najwyższym poziomie działa tylko w module ES ("type": "module" w package.json albo plik .mts); w przeciwnym razie opakuj wywołanie w funkcję async. Dodaj try/catch, jeśli pliku może brakować albo może być uszkodzony.

Bez promptu systemowego pytanie tak krótkie jak "jak odczytać plik JSON?" zostawia modelowi zgadywanie języka, a odpowiedź często przychodzi w Pythonie albo w zwykłym JavaScripcie, z akapitem o tym, czym jest JSON. Z nim odpowiedź wybiera właściwy język i środowisko, pomija podstawy i trzyma się żądanego kształtu.

Ta sama struktura sprawdza się w każdym asystencie, którego konfigurujesz: komu służy, jakie ma zasady, co robić w razie niepewności, jakich faktów potrzebuje i w jakim formacie odpowiada. Napisz go raz, przetestuj na zwykłym pytaniu, pytaniu nie na temat i takim, które próbuje złamać zasadę, i poprawiaj, aż wszystkie trzy odpowiedzi będą takie, jakich chcesz.

Najczęściej zadawane pytania

Czym jest prompt systemowy?

Prompt systemowy to zestaw instrukcji, które model AI dostaje przed rozpoczęciem rozmowy i które obowiązują dla każdej kolejnej wiadomości. Zwykle ustala rolę, odbiorcę, zasady i domyślny format odpowiedzi. W API to osobne pole albo wiadomość system; w aplikacjach czatowych tę samą funkcję pełnią instrukcje niestandardowe i instrukcje projektu.

Czym prompt systemowy różni się od promptu użytkownika?

Prompt systemowy zawiera stałe instrukcje dla całej rozmowy i zwykle pisze go programista albo ustawia się go raz w ustawieniach. Prompt użytkownika to pojedyncza wiadomość z prośbą o jedną rzecz. Gdy się ze sobą kłócą, modele są trenowane, żeby dawać większą wagę promptowi systemowemu, choć to tendencja, a nie gwarancja.

Czy mogę ustawić prompt systemowy w ChatGPT, Claude albo Gemini?

Nie samo surowe pole system, ale coś bardzo podobnego. ChatGPT ma instrukcje niestandardowe, instrukcje projektu i instrukcje dla własnych GPT. Claude ma instrukcje projektu i preferencje w profilu. Gemini ma instrukcje dla Gemów. Aplikacja łączy to, co tam wpiszesz, z własnymi instrukcjami systemowymi i stosuje to w twoich czatach.

Czy użytkownicy mogą zobaczyć albo wydobyć prompt systemowy?

Często tak. Użytkownik może poprosić model o powtórzenie instrukcji albo podstępem go do tego nakłonić, a modele nie utrzymują ich niezawodnie w tajemnicy. Nigdy nie umieszczaj w prompcie systemowym haseł, kluczy API ani poufnych danych firmy i nie traktuj go jak zabezpieczenia.

Jak długi powinien być prompt systemowy?

Na tyle długi, żeby objąć to, co dotyczy każdej wiadomości, i nie dłuższy. Osobisty może mieć trzy albo cztery zdania. Prompt systemowy produktu często zajmuje stronę: rola, zasady, fakty i format odpowiedzi. Każde słowo jest wysyłane z każdym żądaniem, więc za każdym razem kosztuje też tokeny.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ