

Prompty systemowe dla agentów AI prezentacji: Przewodnik dla programistów (2026)
Prompty systemowe dla agentów AI prezentacji różnią się od promptów użytkownika — kodują rolę agenta, ograniczenia i kontrakt wyjściowy, a nie konkretne zadanie. Dobrze przygotowany prompt systemowy przekształca ogólny LLM w niezawodnego agenta generowania slajdów: spójny ton, przewidywalna struktura i wywoływalne użycie narzędzi. Ten przewodnik dla programistów obejmuje 7-sekcyjny szablon promptu systemowego używany w produkcji przez własny pipeline agentów 2Slides, gotowy do wklejenia prompt systemowy do budowy agenta slajdów z Claude, GPT-4o lub DeepSeek, trzy anty-wzorce, które produkują niewiarygodne wyniki, oraz jak zintegrować prompt systemowy z API 2Slides V1 (generate, create-pdf-slides, create-like-this, generate-narration, jobs/:id, themes/search). Przewodnik kończy się trzema przykładami praktycznymi: agent pitch-decków, który konwertuje notatki założycieli na prezentacje dla inwestorów, agent board-decków, który formatuje kwartalne metryki dla kadry zarządzającej, oraz agent ingestii, który konwertuje pliki PDF na prezentacje.
Jeśli budujesz chatbota, asystenta kodowania, który generuje slajdy, lub wewnętrzne narzędzie automatyzujące raportowanie, różnica między wersją demo a produkcyjną tkwi niemal całkowicie w prompcie systemowym. Ten przewodnik jest napisany dla programistów: bez marketingowego bełkotu, prawdziwy kod, prawdziwe endpointy.
Prompty systemowe vs prompty użytkownika: jaka jest rzeczywista różnica?
Prompt użytkownika to zadanie. Prompt systemowy to instrukcja obsługi.
Gdy product manager wpisuje „zrób mi 10 slajdów o przychodach w Q3", to jest prompt użytkownika. Gdy Twój agent konsekwentnie zwraca poprawny JSON, nigdy nie przekracza limitu slajdów, zawsze podaje źródła w notatkach prelegenta i wywołuje endpoint
create-pdf-slidesW API OpenAI, Anthropic i Google prompt systemowy to osobne pole (
systemsystemsystemInstruction- Definicję roli — jakiego rodzaju agentem to jest
- Kontrakty outputu — schemat JSON, format markdown lub kształt wywołania narzędzia
- Twarde ograniczenia — limity słów, zasady tonu, zabronione treści
- Inwentarz narzędzi/API — które funkcje można wywoływać i kiedy
- Zasady eskalacji — kiedy odmówić, poprosić o wyjaśnienie lub przekazać dalej
Prompty użytkownika, które próbują zakodować to wszystko, przestają działać w momencie, gdy tekst zadania użytkownika staje się długi. Prompty systemowe przetrwają każdą turę.
Szablon Systemowego Prompta z 7 Sekcjami
Każdy niezawodny agent do generowania slajdów, który wdrożyliśmy lub audytowaliśmy w 2Slides, wykorzystuje wariant tej siedmiosekcyjnej struktury. Kolejność ma znaczenie — LLM-y nadają większą wagę wcześniejszym instrukcjom, dlatego rola i kontrakt pojawiają się na początku, a przykłady działania na końcu.
- Tożsamość i Rola — jednoparagrafowy opis tego, kim jest agent i co robi
- Kontrakt Wyjściowy — dokładny schemat lub format, który agent musi zwrócić
- Twarde Ograniczenia — niepodlegające negocjacji zasady (długość, ton, zabronione wzorce)
- Inwentarz Narzędzi — każde dostępne API lub funkcja, wraz z wytycznymi kiedy je wywoływać
- Polityka Rozumowania — jak agent powinien myśleć (chain-of-thought, auto-weryfikacja, eskalacja)
- Obsługa Błędów — co robić, gdy dane wejściowe są niejednoznaczne, nieprawidłowe lub nie na temat
- Przykłady Działania — od dwóch do czterech pełnych par wejście/wyjście demonstrujących poprawne zachowanie
Szablon jest celowo opiniowany. Gdy audytujemy agenty, które źle funkcjonują w produkcji, przyczyną jest niemal zawsze brakująca sekcja, a nie źle napisana. Agenty bez inwentarza narzędzi halucynują endpointy. Agenty bez sekcji obsługi błędów wymyślają dane, gdy informacje wejściowe są skąpe. Agenty bez przykładów działania zmieniają ton podczas długich konwersacji.
Tożsamość i rola
Jesteś SlideAgent, asystentem do generowania prezentacji. Twoim zadaniem jest przetwarzanie nieustrukturyzowanych danych wejściowych użytkownika (notatki, transkrypcje, pliki PDF, surowe dane) i zwracanie strukturalnej specyfikacji zestawu slajdów, która może być wyrenderowana przez API 2Slides V1. Nie jesteś chatbotem ogólnego przeznaczenia. Nie odpowiadasz na pytania quizowe, nie piszesz kodu ani nie prowadzisz długich rozmów. Tworzysz zestawy slajdów, a następnie kończysz działanie.
Kontrakt wyjściowy
Dla każdego komunikatu użytkownika opisującego prezentację do zbudowania MUSISZ zwrócić pojedynczy obiekt JSON zgodny z tym schematem:
{ "title": string, // 3-10 słów, Title Case "audience": string, // np. "inwestorzy rundy A", "zarząd" "tone": "formal" | "conversational" | "technical", "slide_count": integer, // 5 <= n <= 40 "language": string, // kod ISO 639-1, domyślnie "en" "theme_hint": string, // tekst dowolny, zostanie przekazany do themes/search "slides": [ { "layout": "title" | "content" | "two-column" | "quote" | "chart" | "image", "heading": string, // <= 12 słów "bullets": string[], // 0-5 punktów, każdy <= 18 słów "speaker_notes": string, // 30-80 słów, pełne zdania "image_prompt": string?, // opcjonalne, dla układów image "chart_data": object? // opcjonalne, dla układów chart } ], "api_call": { "endpoint": "generate" | "create-pdf-slides" | "create-like-this", "reasoning": string // jedno zdanie: dlaczego ten endpoint } }
Żadnej prozy przed ani po JSON-ie. Żadnych znaczników markdown wokół JSON-a. Jeśli użytkownik zada pytanie, które nie jest prośbą o prezentację, zwróć:
{ "error": "not_a_deck_request", "suggestion": string }
Twarde ograniczenia
- Nigdy nie przekraczaj 40 slajdów. Jeśli użytkownik prosi o więcej, ogranicz do 40 i zanotuj to w speaker_notes slajdu 1.
- Każdy slajd MUSI mieć speaker_notes. Puste speaker_notes to błąd.
- Wypunktowania muszą być równoległe gramatycznie (wszystkie zaczynają się od czasownika lub wszystkie są frazami nominalnymi — nigdy mieszane).
- Nie wymyślaj statystyk. Jeśli użytkownik nie podał liczby, nie zapisuj jej. Użyj "[źródło wymagane]" jako symbolu zastępczego.
- Nie uwzględniaj danych kontaktowych, numerów telefonów ani adresów e-mail, chyba że użytkownik wyraźnie je podał.
- Tytuły w Title Case. Wypunktowania w sentence case. Żadnych WIELKICH LITER.
- Odmawiaj tworzenia treści, które są oszczercze lub zawierają nieudokumentowane twierdzenia medyczne, prawne lub finansowe.
Inwentarz narzędzi (API 2Slides V1)
Możesz polecić kodowi wywołującemu użycie tych endpointów. Sam ich nie wywołujesz; wymieniasz je w polu "api_call".
- generate — Domyślny. Tekst na wejściu, prezentacja na wyjściu. Używaj w większości żądań.
- create-pdf-slides — Gdy użytkownik przesłał lub wkleił URL do PDF-a. Przekaż URL PDF-a w komunikacie użytkownika.
- create-like-this — Gdy użytkownik powiedział "jak moja ostatnia prezentacja" lub podał URL prezentacji referencyjnej. Wykorzystuje ponownie motyw + strukturę.
- generate-narration — Po zbudowaniu prezentacji, aby dodać lektora TTS do każdego slajdu. Wywołuj tylko gdy użytkownik wyraźnie prosi o wideo lub narrację.
- download-slides-pages-voices — Wsadowe pobieranie wyrenderowanych stron i audio. Wywołaj na końcu workflow wideo.
- jobs/:id — Odpytywanie statusu zadania asynchronicznego. Kod wywołujący obsługuje odpytywanie; ty nie.
- themes/search — Znajdź motyw według słowa kluczowego. Twoje pole "theme_hint" zostanie tutaj przekazane przez kod wywołujący.
Polityka rozumowania
Przed emisją JSON-a, myśl krok po kroku wewnątrz tagów
- Przeanalizuj dane wejściowe użytkownika. O czym właściwie jest prezentacja?
- Zidentyfikuj odbiorców. Inwestorzy? Inżynierowie? Zarząd? Zespół sprzedaży?
- Wybierz slide_count na podstawie gęstości treści, nie pochlebstw użytkownika.
- Wybierz endpoint: generate (domyślny) | create-pdf-slides | create-like-this.
- Sporządź zarys, następnie sprawdź: czy wypunktowania są równoległe? Czy liczby mają źródła?
Po wyemituj obiekt JSON. Nie uwzględniaj myślenia w końcowym
wyjściu — kod wywołujący usuwa bloki
Obsługa błędów
- Niejednoznaczny temat: zadaj JEDNO pytanie wyjaśniające w polu "suggestion" odpowiedzi błędu. Nie zadawaj wielu pytań.
- Zniekształcone dane wejściowe (użytkownik wkleił bełkot): zwróć { "error": "unintelligible_input", "suggestion": "..." }.
- Sprzeczne instrukcje (użytkownik chce 50 slajdów w 5 minut): honoruj twarde ograniczenie (maks. 40) i zanotuj konflikt w speaker_notes slajdu 1.
- URL PDF-a, który wygląda na nieprawidłowy: mimo to wyemituj JSON z api_call = create-pdf-slides; backend zwróci wyraźny błąd, jeśli URL nie może być pobrany.
Przykłady działania
Przewodnik po konwersji promptów użytkownika na prezentacje
Przykład 1: Minimalna treść
Użytkownik: "zrób mi prezentację o naszych przychodach w Q3, osiągnęliśmy $4.2M, wzrost 30% YoY, odbiorcy to zarząd"
Przykład 2: Przetwarzanie PDF
Użytkownik: "przekształć ten whitepaper w 12-slajdowe podsumowanie dla inżynierów: https://example.com/whitepaper.pdf"
Przykład 3: Nie jest to prośba o prezentację
Użytkownik: "jaka jest stolica Francji?"
{ "error": "not_a_deck_request", "suggestion": "Tworzę prezentacje slajdowe. Spróbuj: 'stwórz 5-slajdowy briefing o Francji'." }
Powyższy prompt ma około 1 800 tokenów. To jest zalecany górny limit — wszystko dłuższe zaczyna ograniczać miejsce na rzeczywistą treść użytkownika w modelach z 8k lub 16k oknem kontekstu. W przypadku modeli z 200k kontekstem możesz bezpiecznie rozszerzyć przykłady o więcej przypadków brzegowych. ## Integracja z API 2Slides V1 Prompt systemowy nazywa endpointy; kod wywołujący je uruchamia. Oto co robi każdy endpoint i kiedy Twój agent powinien z niego skorzystać. - **`POST /api/v1/slides/generate`** — Podstawowy endpoint. Akceptuje prompt tekstowy oraz opcjonalne strukturalne wskazówki (liczba slajdów, język, ID motywu) i zwraca ID zadania. Dziewięćdziesiąt procent ruchu agentów trafia na ten endpoint. - **`POST /api/v1/slides/create-pdf-slides`** — Akceptuje URL pliku PDF i konwertuje go na prezentację. Używaj, gdy użytkownik przesyła dokument. Obsługuje ekstrakcję, dzielenie na fragmenty i podsumowanie po stronie serwera, więc Twój agent nie potrzebuje parsera PDF. - **`POST /api/v1/slides/create-like-this`** — Akceptuje URL lub ID referencyjnej prezentacji oraz nowy temat. Ponownie wykorzystuje motyw wizualny i strukturalny rytm oryginału. Używaj w przypadku workflow typu „zrób to podobnie jak nasza ostatnia prezentacja dla zarządu". - **`POST /api/v1/slides/generate-narration`** — Dodaje syntezę mowy TTS do istniejącej prezentacji. Zwraca URL-e audio dla każdego slajdu. Wywołuj po `generate`, gdy finalnym wynikiem ma być wideo. - **`GET /api/v1/slides/download-slides-pages-voices`** — Endpoint zbiorczy, który zwraca wyrenderowane obrazy stron i audio narracji w jednej odpowiedzi. Używaj w ostatnim kroku pipeline'u eksportu wideo. - **`GET /api/v1/jobs/:id`** — Endpoint do sprawdzania statusu. Twój agent go nie wywołuje; robi to Twój kod wywołujący. Zwraca `pending`, `processing`, `success` lub `failed` oraz finalny URL prezentacji po zakończeniu. - **`GET /api/v1/themes/search?q=...`** — Wyszukiwanie słów kluczowych w publicznej bibliotece motywów. Przekaż pole `theme_hint` z wyniku promptu systemowego tutaj, aby przekształcić je w konkretne ID motywu przed wywołaniem `generate`. Kompletna pętla agenta wygląda tak w pseudokodzie: ```ts const completion = await llm.messages.create({ system: SYSTEM_PROMPT, // 7-sekcyjny szablon powyżej messages: [{ role: "user", content: userInput }], }); const spec = JSON.parse(stripThinking(completion.content)); if (spec.error) return handleError(spec); const theme = await fetch(`/api/v1/themes/search?q=${spec.theme_hint}`); const job = await fetch(`/api/v1/slides/${spec.api_call.endpoint}`, { method: "POST", body: JSON.stringify({ ...spec, themeId: theme.id }), }); const result = await pollJob(job.id); // wywołuje /api/v1/jobs/:id return result.deckUrl;
Jeśli dopiero zaczynasz z kształtem API, przewodnik dla developerów po budowaniu agenta prezentacji AI prowadzi przez pełny przepływ z działającym kodem TypeScript. Dla architektury wyższego poziomu opartej na umiejętnościach — gdzie prompt systemowy jest tylko jedną z wielu umiejętności — zobacz przegląd umiejętności agenta slajdów AI.
3 antywzorce, które psują agentów do slajdów
Po przeanalizowaniu dziesiątek agentów produkcyjnych — od wewnętrznych narzędzi analitycznych po publiczne copiloty sprzedażowe — te same trzy tryby awarii pojawiają się raz za razem.
Antywzorzec 1: Nieograniczony kontrakt wyjściowy
Objaw: Agent czasami zwraca JSON, czasami markdown, czasami grzeczny akapit. Twój parser wyrzuca
SyntaxError: Unexpected tokenPrzyczyna: Prompt systemowy mówi "zwróć prezentację" bez określenia dokładnego kształtu lub określa kształt, ale pozwala na prozę wokół niego.
Rozwiązanie: Napisz schemat w prompcie systemowym. Powiedz wprost: "Żadnej prozy przed ani po JSON. Żadnych znaczników markdown wokół JSON." Następnie przepuszczaj każde wyjście przez walidator (Zod, Pydantic, io-ts) i ponów próbę w przypadku błędu. Traktuj zgodność ze schematem jako twardy wymóg produktowy, nie nice-to-have.
Antywzorzec 2: Rozbieżność inwentarza narzędzi
Objaw: Agent pewnie mówi użytkownikowi "Wywołam endpoint
refine-deckPrzyczyna: Prompt systemowy wspomina o narzędziach w prozie, a nie w ustrukturyzowanym inwentarzu, więc model halucynuje warianty. Lub inwentarz jest nieaktualny po wdrożeniu nowych endpointów.
Rozwiązanie: Utrzymuj jeden kanoniczny inwentarz narzędzi w prompcie systemowym, odświeżany za każdym razem, gdy zmienia się API. Jeśli Twoje API ma 7 endpointów, wymień dokładnie 7, każdy z jednolinijkowym opisem, kiedy go wywołać. Zabroń modelowi nazywania czegokolwiek innego — "Jeśli żaden z powyższych endpointów nie pasuje, zwróć
api_call: nullAntywzorzec 3: Halucynacja statystyk
Objaw: Użytkownik mówi "zrób prezentację o naszych liczbach z Q3" bez podania liczb. Agent radośnie pisze "Przychody wzrosły o 47,3% do 8,2 mln USD." CFO jest wściekły.
Przyczyna: Brak twardego ograniczenia zabraniającego wymyślania danych. Model domyślnie generuje brzmiącą wiarygodnie fikcję, ponieważ tak robią większość LLM, gdy są niedookreślone.
Rozwiązanie: Dodaj jawną zasadę: "Nie wymyślaj statystyk. Jeśli użytkownik nie podał liczby, użyj
[źródło potrzebne]Przykład Praktyczny 1: Agent Prezentacji Inwestorskich
Agent prezentacji inwestorskich przekształca notatki założycieli w 10-slajdową prezentację dla inwestorów. Dodaj te wiersze do bazowego promptu systemowego:
# Specjalizacja: Tryb Prezentacji Inwestorskiej Tworząc prezentację inwestorską, używaj dokładnie tej struktury: 1. Tytuł 2. Problem 3. Rozwiązanie 4. Wielkość rynku (TAM/SAM/SOM) 5. Demo produktu / zrzut ekranu 6. Metryki trakcji 7. Model biznesowy 8. Konkurencja 9. Zespół 10. Prośba (kwota finansowania + przeznaczenie środków) Wymuś slide_count = 10. Wymuś tone = "conversational but confident." Jeśli użytkownik nie podał liczb dotyczących wielkości rynku, trakcji lub kwoty, użyj "[source needed]" — nie wymyślaj danych.
Przykładowe dane wejściowe: "B2B SaaS dla gabinetów stomatologicznych, pomagamy im automatyzować roszczenia ubezpieczeniowe, mamy 12 płacących klientów, zbieramy 1,5 mln USD rundy seed."
Przykładowe dane wyjściowe (skrócone): Dziesięcioslajdowy JSON ze stałą strukturą,
api_call.endpoint = "generate"theme_hint = "pitch deck modern gradient"["12 płacących gabinetów stomatologicznych", "[source needed] — MRR", "[source needed] — retention"]Przykład praktyczny 2: Agent do prezentacji zarządowych
Prezentacje zarządowe mają inny kontrakt: formalny ton, gęste tabele, zero emoji, określona kolejność slajdów, której oczekują dyrektorzy finansowi. Dodaj:
# Specjalizacja: Tryb prezentacji zarządowej Użyj dokładnie tej struktury dla spotkań zarządu: 1. Streszczenie wykonawcze (3 punkty) 2. Finanse (przychody, marża, runway) 3. Scorecard KPI (układ tabelaryczny) 4. Inicjatywy strategiczne (status + ryzyko) 5. Plan rekrutacji 6. Zagrożenia i działania łagodzące 7. Prośby do zarządu Wymuś ton = "formal." Wymuś język zgodny z lokalizacją użytkownika. Każda liczba musi mieć źródło w speaker_notes. Brak slajdów z obrazami — prezentacje zarządowe to tekst i tabele.
Agent do prezentacji zarządowych dobrze współpracuje z
create-like-thisPrzykład 3: Agent do Przetwarzania PDF na Prezentacje
Ten agent konwertuje dokumenty firmowe, raporty badawcze lub zapytania ofertowe w formie PDF na zwięzłe prezentacje podsumowujące. Jest najprostszy w budowie, ponieważ większość pracy wykonuje endpoint
create-pdf-slides# Specjalizacja: Tryb Przetwarzania PDF Wyzwalacz: użytkownik podaje URL kończący się na .pdf LUB wyraźnie mówi "zamień ten PDF/dokument/raport na slajdy." Zawsze ustawiaj api_call.endpoint = "create-pdf-slides". Ustaw slide_count w zależności od długości PDF: - < 5 stron -> 5 slajdów - 5-20 stron -> 8-12 slajdów - 20-50 stron -> 15-20 slajdów - > 50 stron -> 25-30 slajdów (limit 30) Wyodrębnij tytuł PDF jako tytuł prezentacji. Jeśli użytkownik wskazał odbiorcę innego niż oryginalny odbiorca PDF, zaznacz to w speaker_notes slajdu 1, aby renderer wiedział, że ma dostosować ton.
W przypadku agentów działających w Claude Desktop lub podobnym hoście MCP, proces przetwarzania PDF można skonfigurować w mniej niż godzinę — zobacz jak używać Claude MCP do generowania prezentacji, aby zapoznać się z pełnym przewodnikiem.
Najczęściej zadawane pytania
Czy system prompt powinienem umieścić w kodzie czy w bazie danych?
W przypadku produkcyjnych agentów umieść go w systemie kontroli wersji (jako plik
.mdJak długi powinien być system prompt?
Dla agentów generujących slajdy, 1 500 do 2 500 tokenów to optymalny zakres. Krótsze prompty pomijają ograniczenia i zawodzą w przypadkach brzegowych. Dłuższe prompty wypierają faktyczny input użytkownika w modelach o mniejszym kontekście i często się powtarzają. Jeśli przekraczasz 3 000 tokenów, sprawdź redundancję — ta sama zasada jest prawdopodobnie podana dwukrotnie.
Czy potrzebuję różnych system promptów dla Claude vs GPT-4o vs DeepSeek?
Tylko niewielkich dostosowań. Szablon 7-sekcyjny działa we wszystkich trzech. Claude dobrze reaguje na strukturę znaczników XML (
<thinking><output>Czy mogę zaktualizować system prompt bez ponownego wdrażania?
Tak — i powinieneś być w stanie to zrobić, dla szybkiej iteracji. Przechowuj prompt w zmiennej środowiskowej lub usłudze flag funkcji, aby SRE mógł wycofać zły prompt w ciągu kilku sekund. Traktuj zły prompt jak złe wdrożenie: to incydent produkcyjny i potrzebuje takich samych kontroli zasięgu szkód.
Jak przetestować system prompt?
Zbuduj zestaw regresyjny składający się z 50 do 200 par input/output, które obejmują rzeczywistą dystrybucję użytkowników: prezentacje na ścieżce pozytywnej, inputy przeciwstawne, próby zniekształconego JSON, żądania niezwiązane z tematem. Uruchom pełny zestaw przy każdej zmianie promptu i oceniaj zgodność ze schematem oraz jakość ocenianą przez człowieka. To inwestycja inżynierska o największym znaczeniu dla niezawodności agenta.
Wnioski
Prompt systemowy to infrastruktura, a nie treść marketingowa. To element, który przekształca ogólny LLM w niezawodnego agenta do generowania slajdów z określonym kontraktem wyjściowym, stałym zestawem narzędzi i przewidywalnymi trybami awarii. Programiści, którzy traktują prompt systemowy jako artefakt produktu — wersjonowany, testowany, monitorowany — dostarczają agentów, którzy przetrwają kontakt z prawdziwymi użytkownikami. Programiści, którzy traktują go jako jednorazowe ćwiczenie z prompt-engineeringu, dostarczają dema.
Szablon 7-sekcyjny i gotowy do produkcji przykład z tego przewodnika to punkt wyjścia, a nie końcowy. Sforkuj je, dostosuj do swojego przypadku użycia, podłącz do API 2Slides V1 i — co najważniejsze — zbuduj narzędzie do testów regresji zanim wdrożysz. Agenci, którzy wygrają w 2026 roku, to ci, których prompty są inżynierowane z taką samą rygorem jak ich kod.
Wdróż swojego agenta do slajdów w produkcji — uzyskaj klucz API 2Slides lub poznaj serwer MCP.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free