Cel: Nie chcę klikać w interfejs ChatGPT. Chcę wejść na platform.openai.com, stworzyć asystenta dostępnego przez API, który będzie pisał tak, jak ja piszę. Chcę wiedzieć ile próbek przygotować, jak je opisać, jak wciągnąć książki / zasady copywritingu, jak wyciągnąć styl, wartości, sposób myślenia i zamknąć to wszystko w instrukcjach + plikach, które asystent będzie stosował przy generowaniu nowych tekstów.
To jest dokładnie taki przewodnik.
Spis treści
- Co właściwie trenujemy? Asystent vs Fine-tune vs CustomGPT
- Model: co wybrać do pisania w Twoim stylu (praktyczne rekomendacje)
- Jakie dane zebrać: Twoje teksty, wartości, historie, myślenie
- Ile danych? Minimalne i optymalne objętości (słowa, posty, różnorodność)
- Jak wciągnąć książki i materiały marketingowe (legalność + metoda destylacji)
- Schemat analizy stylu: JSON Style Spec
- Prompty analityczne: wydobywanie stylu z próbek
- Prompty syntezy: łączenie wielu analiz w jeden profil
- Prompty walidacyjne: czy AI naprawdę rozumie Twój styl?
- Budujemy pakiet stylu: pliki
.json
,.md
, embedowane przykłady - Tworzenie Asystenta przez API (Assistants API) – krok po kroku
- Jak karmić asystenta zadaniami: format zapytań, parametry, ograniczenia tokenów
- Strategia iteracyjna: poprawiaj styl na bazie wyników
- FAQ: najczęstsze problemy (za długie, zbyt generyczne, za mało „mnie”)
- Checklista gotowości / Pre-flight do pierwszego realnego użycia
- Załączniki: szablony plików, przykłady JSON, curl, Python
1. Co właściwie trenujemy? Asystent vs Fine-tune vs CustomGPT
Cel | Co to | Gdzie tworzysz | Plusy | Minusy | Kiedy wybrać |
---|---|---|---|---|---|
Asystent (Assistants API) | Obiekt z instrukcjami + plikami + narzędziami | platform.openai.com → API | Szybki, elastyczny, łatwo aktualizować styl, możesz dołączać pliki (Twoje przykłady) | Nie „uczy się” param wagi modelu, tylko korzysta z kontekstu | 95% przypadków stylu pisania. Zalecane dla Ciebie. |
Fine-tune | Trening modelu na Twoich przykładach (przebudowa wag) | Upload JSONL → fine-tuning job | Styl częściowo „wypalony” w modelu. Nie musisz wysyłać stylu każdorazowo | Koszt, czas, potrzebujesz dużo danych, styl może przykryć inne tematy | Gdy masz dziesiątki tysięcy słów i chcesz działać bardzo tanio w runtime |
Custom GPT (UI) | Bot konfigurowany ręcznie w chat.openai | Interfejs ChatGPT | Zero kodu | Nie chcesz UI | Nie wybierasz |
Ty chcesz: Asystent przez API z dobrze przygotowanymi instrukcjami + plikami stylu + ewentualnie „mini‑few‑shot” przykładami. Fine-tune możesz dodać później.
2. Model: co wybrać do pisania w Twoim stylu
Rekomendacje praktyczne (priorytet: koszt vs jakość + styl):
Opcja szybka / tania: gpt-4o-mini
– lekki, szybki, wystarczający do generowania postów, jeśli styl opisany w instrukcjach.
Opcja jakość / kreatywność: gpt-4o
– kiedy zależy Ci na niuansie tonu, dłuższych formach (artykuły, newslettery, opowieści).
Eksperymentalnie: Możesz mieć dwóch asystentów: jeden „draft” (tańszy), drugi „polerka” (lepszy model). Workflow: Draft w mini, refine w 4o.
Jeśli planujesz długie teksty (3k+ słów), pilnuj tokenów: dziel zadania na sekcje.
3. Jakie dane zebrać: Twoje teksty, wartości, historie, sposób myślenia
Chcesz, żeby asystent „brzmiał jak Ty” i „myślał jak Ty”. To dwa różne poziomy.
3.1 Dane językowe (jak piszesz)
- Posty na LinkedIn, blog, newslettery, opisy projektów.
- Fragmenty wiadomości do klientów (uważaj na dane wrażliwe – zanonimizuj!).
- Notatki głosowe transkrybowane (zachowują naturalny styl mówiony).
3.2 Dane mentalne (jak myślisz)
- Twoje wartości zawodowe (np. autentyczność, iteracja, widoczny proces).
- Ulubione metafory (kawa, warsztat, mapa, pies, interakcja UX…).
- Ramy decyzyjne (najpierw cel biznesowy, potem UX, potem technika?).
- Co Cię wkurza (buzzwordy, lanie wody, brak konkretów).
- Jak mówisz „stop”: styl feedbacku, sarkazm, ale z ciepłem.
3.3 Dane inspiracyjne (jakie źródła kształtują Twój styl)
- Książki o copywritingu (np. Ogilvy, Bly, Godin).
- Kursy storytellingu, marketingu emocji.
- Notatki: „Podoba mi się rytm X, humor Y, struktura Z – używaj tego jako inspiracji, ale nie kopiuj”.
3.4 Dane ograniczeń
- Nie używaj myślnika —. Zamiast tego kropki. (Twoja preferencja!).
- Polsko-angielski miks ok, ale kontrolowany.
- Zwięźle. Lepiej 3 krótkie zdania niż jedno tasiemcowe.
4. Ile danych? Minimalne i optymalne objętości
Jakość docelowa | Liczba próbek | Łączna liczba słów | Różnorodność | Uwagi |
---|---|---|---|---|
Minimalna (bot „jak ja… mniej więcej”) | 5 próbek | 2–3k słów | 1 kanał | Tylko krótkie posty → styl będzie spłaszczony |
Używalna (polecane minimum) | 10–15 próbek | 6–10k słów | Różne formaty: post, mail, instrukcja | Lepiej łapie ton i rytm |
Mocna baza | 20+ próbek | 15k+ słów | Różne długości + żarty + techniczne | Idealna do asystenta stylowego |
Fine-tune kandydat | 50+ próbek | 40k–60k słów | szeroko | Można przejść na FT + prompt light |
Podział formatów (przykład):
- 5 × posty LinkedIn ~300–500 słów.
- 5 × maile do klienta ~400 słów.
- 3 × długie wpisy blogowe ~1k słów.
- 2 × transkrypt audio „mówię do kogoś” – styl mówiony.
5. Jak wciągnąć książki i materiały marketingowe
Masz książki copywriterskie? Świetnie. Nie wrzucamy ich surowo (prawa autorskie + zbyt dużo tokenów). Zamiast tego:
5.1 Destylacja książki → zasady
Prompt do destylacji (robisz per rozdział):
Przeczytaj poniższy fragment książki o copywritingu.
Wypisz: 1) Główne zasady pisania, 2) Schematy nagłówków, 3) Czego unikać, 4) Przykłady zastosowania.
Odpowiedz w JSON.
Fragment:
"""
...tekst rozdziału...
"""
5.2 Agregacja zasad do biblioteki taktyk
Powtarzasz dla kilku książek → potem łączysz je w copy_principles.json
.
5.3 Połączenie stylu + zasad
Gdy asystent generuje tekst, dostaje pliki:
lukasz_style.json
– jak pisać.copy_principles.json
– jakie ramy marketingowe stosować.- (opcjonalnie)
audience_context.md
– do kogo piszemy.
Tak AI nie kopiuje książki. Używa Twojego stylu + zasad mistrzów.
6. Schemat analizy stylu: JSON Style Spec
Ustalmy wspólny format. Dzięki temu łatwo testować, wersjonować i poprawiać.
{
"style_version": "2025-07-22",
"language": "pl",
"voice": "Swobodny, rozmowa przy kawie, refleksyjny, czasem sarkastyczny.",
"tone_modifiers": ["motywujący", "autentyczny", "krótkie zdania", "humor sytuacyjny"],
"do_not_use": ["formalny żargon urzędowy", "długie myślniki —"],
"sentence_length": {
"avg_words": 14,
"variance": "średnia",
"guideline": "Jeśli zdanie >22 słowa, rozbij na dwa."
},
"paragraph_style": "krótkie akapity 1–4 zdania, sporo białej przestrzeni",
"signature_phrases": ["No i jedziemy", "Dobra, teraz praktyka", "Łyk kawy"],
"emoji_usage": "umiarkowane, tylko gdy wzmacniają ton",
"format_preferences": {
"listy": "krótkie bullet-y",
"kodu": "blok fenced code",
"nagłówki": "H2/H3 proste rzeczowe"
},
"values": ["autonomia", "praktyczność", "szacunek dla czasu odbiorcy"],
"thinking_model": "Zawsze: problem → co chcesz osiągnąć → minimalny krok praktyczny.",
"audience_default": "freelancerzy, właściciele małych agencji, tech-ludzie"
}
7. Prompty analityczne: wydobywanie stylu z próbek
7.1 Analiza pojedynczej próbki → JSON
SYSTEM: Jesteś AnalitykStyluAI. Analizujesz styl pisania autora.
USER: Oto próbka tekstu oznaczona TAG={tag}.
Wypisz JSON wg schematu: voice, tone, tempo, długość zdań, słownictwo, formy retoryczne, ulubione struktury, słowa-klucze, zwroty powtarzalne, sygnatury, meta-komentarze.
Tekst:
"""
{{TEKST}}
"""
7.2 Analiza metryczna (bardziej surowa)
Policz i zwróć w JSON:
- liczba zdań
- średnia długość zdania (słowa)
- % zdań zaczynających się od spójników (np. A, I, Ale, Więc)
- % użycia 1. osoby (ja, mi, mnie)
- % 2. osoby (ty, Tobie)
- Emojis count
- Średnia liczba słów/akapity
7.3 Wykrywanie tonu i energii
Na podstawie próbki oceń poziom energii: niski / spokojny / dynamiczny / hype.
Przypisz 1–5: humor, bezpośredniość, konkret, emocjonalność.
Oddaj JSON.
8. Prompty syntezy: łączenie wielu analiz w jeden profil
8.1 Łączenie JSON-ów stylu
SYSTEM: Jesteś StyleSynth. Masz wiele analiz stylu autora.
USER: Połącz poniższe JSON-y w jeden spójny profil. Jeśli pola się różnią, wybierz najczęściej występujące lub oblicz średnią.
Zachowaj wszystkie sygnatury językowe.
JSON-y:
[[ ... tutaj lista JSON ... ]]
8.2 Wyciągnij reguły generowania tekstu
Na podstawie profilu stylu stwórz instrukcje dla modelu generującego tekst:
- Jak zaczynać teksty?
- Jak budować akapity?
- Jak kończyć (CTA / refleksja / pytanie)?
- Jakiego tonu używać?
- Jak unikać formalizmu?
Odpowiedź: Markdown checklist.
9. Prompty walidacyjne: czy AI naprawdę rozumie Twój styl?
Po zbudowaniu profilu stylu – test.
9.1 Test generacji A/B
- Poproś model o tekst w Twoim stylu.
- Poproś o ten sam tekst „neutralnie, bez stylu”.
- Porównaj.
Prompt:
Napisz krótki post (200 słów) o tym, jak automatyzacja oszczędza czas.
Wersja A: w moim stylu (patrz profil).
Wersja B: neutralna, korporacyjna.
Zwróć obie, oznacz A / B.
9.2 Samoocena modelu
Oceń swój wynik: w % zgodności ze stylem. Jeśli mniej niż 80%, wypisz co poprawić.
9.3 Kontrola preferencji
Czy w wygenerowanym tekście użyłeś długiego myślnika — ? Jeśli tak, popraw.
10. Budujemy pakiet stylu (plikowy)
Stwórz folder, np. lukasz-writer/
:
lukasz-writer/
├─ style/
│ ├─ lukasz_style.json
│ ├─ copy_principles.json
│ └─ audience_context.md
├─ examples/
│ ├─ post_linkedin_01.md
│ ├─ mail_klient_ux.md
│ └─ blog_długi_case.md
├─ rules/
│ └─ formatting.md (np. bez myślnika —)
└─ README.md
Te pliki załadujesz do OpenAI Assistants File Storage i podepniesz pod Asystenta.
11. Tworzenie Asystenta przez API (Assistants API) – krok po kroku
Poniżej przykład z użyciem
curl
. Możesz też użyć Python/JS SDK.
11.1 Upload plików stylu
curl -s -D >(grep -i x-request-id >&2) \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "purpose=assistants" \
-F "file=@style/lukasz_style.json" \
https://api.openai.com/v1/files
Zapamiętaj id
zwróconego pliku. Powtórz dla wszystkich plików.
11.2 Utwórz Asystenta
curl https://api.openai.com/v1/assistants \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"name": "Lukasz Writer",
"instructions": "Piszesz w stylu opisanym w dołączonych plikach. Krótkie zdania. Swobodnie. Bez myślnika —. Zawsze pytaj o kontekst odbiorcy, jeśli nie podano.",
"tools": [],
"file_ids": ["file-lukasz_style", "file-copy_principles", "file-audience_context"],
"metadata": {"style_version": "2025-07-22"}
}'
W odpowiedzi dostaniesz obiekt Asystenta z id
– zapisz.
11.3 Utworzenie wątku i zadanie pytania
# Tworzymy wątek
THREAD=$(curl -s https://api.openai.com/v1/threads \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"messages":[]}' | jq -r '.id')
# Dodaj wiadomość
curl -s https://api.openai.com/v1/threads/$THREAD/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"role":"user",
"content":"Napisz post LinkedIn o tym, dlaczego małe agencje powinny dokumentować procesy. 150-220 słów. CTA na koniec."
}'
# Uruchom asystenta
RUN=$(curl -s https://api.openai.com/v1/threads/$THREAD/runs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"assistant_id":"asst_lukasz_writer"}' | jq -r '.id')
# Polling wyniku
curl -s https://api.openai.com/v1/threads/$THREAD/messages \
-H "Authorization: Bearer $OPENAI_API_KEY"
Uwaga: W modelu Assistants pliki są „znane” Asystentowi – może je cytować / używać jako kontekstu bez każdorazowego przesyłania ich w promptach.
12. Jak karmić asystenta zadaniami
12.1 Minimalny format zapytań
Podajesz:
- Temat („Jak automatyzacja ratuje małe agencje przed chaosem”).
- Format (post, mail, artykuł, skrypt video).
- Długość (słowa, znak + tolerancja).
- Odbiorca (freelancerzy B2B? kierownicy marketingu?).
- Cel (edukacja, lead, sprzedaż, refleksja?).
Szablon
FORMAT: Post LinkedIn
CEL: Zaciekawić małych właścicieli agencji WordPress
DŁUGOŚĆ: 180-220 słów
STRUKTURA: Hook / Problem / 3 Lekcje / CTA Komentarz
TEMAT: Dokumentuj proces zanim zatrudnisz kolejną osobę.
12.2 Wymuszanie stylu w runtime (gdyby plik zaginął)
Pisz w stylu: swobodnie, krótkie zdania, bez myślnika —, ciepło, sarkastyczny błysk.
12.3 Multi-wersje
Wygeneruj 3 warianty. Oznacz: A/Test emocjonalny, B/Techniczny, C/Surowy.
13. Strategia iteracyjna: poprawiaj styl
- Generujesz 5 tekstów.
- Zaznaczasz fragmenty „to brzmi jak ja” vs „to AI”.
- Tworzysz plik
style_refinements.md
z feedbackiem:- Dodać więcej pytań retorycznych.
- Mniej emoji.
- Więcej przykładów z klientami PL.
- Update Asystenta: PATCH /assistants/{id} → nowe instructions + nowy plik.
Powtarzasz cykl co 2–4 tygodnie.
14. FAQ: najczęstsze problemy
AI pisze za formalnie → W instrukcji: „Unikaj formalnego języka. Jeśli tekst zaczyna brzmieć jak pismo urzędowe – przepisz bardziej po ludzku.”
Za długie zdania → Dodaj regułę: „Rozbij zdania >20 słów”.
Nie pyta o kontekst → W instrukcji głównej: „Jeśli odbiorca nieokreślony, zapytaj: ‘Dla kogo piszemy?’”.
Zjada polskie znaki → Sprawdź kodowanie wejścia / JSON UTF-8.
Przekracza długość → Użyj max_output_tokens
lub sekcyjnego generowania.
15. Checklista gotowości / Pre-flight
☐ Mam min. 10 próbek w .md.
☐ Zanonimizowane dane klientów.
☐ Wyciągnięty profil stylu (JSON).
☐ Spisana lista wartości + persona odbiorcy.
☐ Pliki wrzucone do OpenAI Files.
☐ Asystent utworzony (id zapisane).
☐ Test: 3 tematy → wygenerowane 3 posty → subiektywna ocena >80% zgodności.
☐ Gotowe.
16. Załączniki
16.1 lukasz_style.json
– szablon
{
"style_version": "YYYY-MM-DD",
"language": "pl",
"voice": "Swobodny, konwersacyjny, z humorem i refleksją.",
"tone_modifiers": ["krótkie zdania", "dynamiczne", "motywujące", "czasem sarkastyczne"],
"values": ["autonomia", "efektywność", "autentyczność"],
"avoid": ["język urzędowy", "przeładowane akapity", "myślnik —"],
"format_defaults": {
"paragraph_len": "1-4 zdania",
"bullets": "tak, gdy listy praktyczne",
"emoji": "oszczędnie"
},
"endings": ["CTA: napisz w komentarzu", "Refleksja: co Ty o tym myślisz?"],
"thinking_model": "Zawsze najpierw cel odbiorcy, potem najmniejszy krok praktyczny."
}
16.2 Instrukcja główna dla Asystenta (wstaw do instructions
przy tworzeniu)
Jesteś asystentem piszącym w stylu Łukasza.
Używaj stylu opisanego w dołączonym pliku lukasz_style.json.
Zanim napiszesz tekst, ustal: format, długość, odbiorcę, cel.
Krótko. Naturalnie. Jak rozmowa przy kawie.
Unikaj myślnika —. Jeśli zdania za długie – tnij.
Używaj przykładów z życia (projekty agencji, WordPress, automatyzacje). Możesz generować przykłady fikcyjne, ale realistyczne.
Jeśli nie ma danych, zadawaj pytania.
Zawsze kończ mini-CTA lub pytaniem do odbiorcy.
16.3 Curl: podgląd asystentów
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
https://api.openai.com/v1/assistants | jq '.'
16.4 Aktualizacja instrukcji
curl -X POST https://api.openai.com/v1/assistants/asst_lukasz_writer \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instructions": "[NOWE] ..."
}'
17. Twoje zadanie na start (zrób to teraz)
- Z folderu /projektów wybierz 10 tekstów, które są „najbardziej Ty”.
- Zrób plik CSV:
nazwa, typ, ścieżka, słowa
– żeby mieć porządek. - Przeleć każdy promptem analitycznym (7.1) i zapisuj JSON.
- Zsyntezuj profil stylu.
- Stwórz asystenta.
- Zrób test: 3 tematy → wynik → oceniasz w skali 1–5 → dopisz poprawki.
Jak przejdziesz ten cykl raz, cała reszta to iteracje.