Strukturyzacja Danych w Promptach - Formaty i Schematy
Dlaczego struktura ma znaczenie?
Dział zatytułowany „Dlaczego struktura ma znaczenie?”Modele językowe rozumieją nie tylko treść, ale również format. Dobrze ustrukturyzowane dane pomagają AI lepiej zrozumieć zadanie i generować spójne, przewidywalne odpowiedzi. W tym rozdziale pokażę Ci formaty, którymi opiszesz zadanie precyzyjniej niż zwykłym zdaniem, oraz frameworki, których profesjonaliści używają do pisania skutecznych promptów.
Frameworki do promptów
Dział zatytułowany „Frameworki do promptów”W rozdziale Podstawy promptowania przedstawiłem framework CO-STAR (Context, Objective, Style, Tone, Audience, Response) - standard biznesowy do tworzenia skutecznych promptów. Tutaj dokładam do niego drugi framework, przydatny w zadaniach technicznych.
Framework CRISPE - dla zadań technicznych
Dział zatytułowany „Framework CRISPE - dla zadań technicznych”Dla zadań wymagających precyzji technicznej - generowania kodu, instrukcji, procedur operacyjnych - lepszym wyborem jest framework CRISPE:
| Element | Opis | Przykład |
|---|---|---|
| C - Capacity | Rola AI - kim ma być? | “Działaj jako Senior Python Developer z 10-letnim doświadczeniem.” |
| R - Role | Doprecyzowanie roli i celu | “Twój wgląd ma pomóc juniorom w zespole zrozumieć błąd.” |
| I - Input | Dane wejściowe do analizy | “Oto fragment kodu / logi z serwera: [dane]” |
| S - Steps | Kroki do wykonania | “Przeanalizuj kod linijka po linijce, znajdź lukę, zaproponuj poprawkę.” |
| P - Parameters | Ograniczenia i wymagania | “Kod zgodny z PEP8, wyjaśnienie po polsku, max 200 słów.” |
| E - Example | Wzór do naśladowania | “Wzoruj się na stylu dokumentacji biblioteki Django.” |
Przykład CRISPE w praktyce
Dział zatytułowany „Przykład CRISPE w praktyce”CAPACITY: Działaj jako ekspert ds. cyberbezpieczeństwaz certyfikatem CISSP.
ROLE: Twój audyt pomoże zespołowi developerów zrozumiećzagrożenia i wdrożyć poprawki.
INPUT: Oto fragment kodu PHP obsługującego logowanie użytkowników: $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
STEPS:1. Zidentyfikuj wszystkie luki bezpieczeństwa2. Wyjaśnij, jak atakujący mógłby je wykorzystać3. Podaj poprawiony kod z komentarzami4. Zasugeruj dodatkowe zabezpieczenia
PARAMETERS:- Wyjaśnienia po polsku- Kod zgodny z najlepszymi praktykami PHP 8- Uwzględnij OWASP Top 10
EXAMPLE: Formatuj odpowiedź jak raport audytu bezpieczeństwaz sekcjami: Znalezione luki, Ryzyko, Rekomendacje, Kod naprawczy.Kiedy używać którego frameworka?
Dział zatytułowany „Kiedy używać którego frameworka?”| Zadanie | Rekomendowany framework | Dlaczego? |
|---|---|---|
| E-maile biznesowe | CO-STAR | Ton i styl są kluczowe |
| Posty na social media | CO-STAR | Ważna jest persona i odbiorcy |
| Raporty i analizy | CO-STAR | Format i struktura priorytetem |
| Generowanie kodu | CRISPE | Precyzja i kroki są kluczowe |
| Audyty techniczne | CRISPE | Potrzebna metodyczna analiza |
| Dokumentacja techniczna | CRISPE | Ważne parametry i przykłady |
Format JSON
Dział zatytułowany „Format JSON”JSON (JavaScript Object Notation) to uniwersalny format wymiany danych, który modele AI doskonale rozumieją. Jest idealny gdy potrzebujesz strukturalnych, programowalnych odpowiedzi.
Definiowanie schematu wyjściowego
Dział zatytułowany „Definiowanie schematu wyjściowego”Wyodrębnij informacje o osobie z poniższego tekstu.Zwróć odpowiedź w formacie JSON.
Tekst: "Jan Kowalski, lat 35, mieszka w Warszawiei pracuje jako programista w firmie TechCorp."
Schemat JSON:{ "imie": string, "nazwisko": string, "wiek": number, "miasto": string, "zawod": string, "firma": string}
JSON:Odpowiedź:
{ "imie": "Jan", "nazwisko": "Kowalski", "wiek": 35, "miasto": "Warszawa", "zawod": "programista", "firma": "TechCorp"}Zagnieżdżone struktury
Dział zatytułowany „Zagnieżdżone struktury”Przeanalizuj zamówienie i zwróć strukturę JSON.
Zamówienie: "Klient: Anna Nowak (anna@email.com).Produkty: 2x Laptop Dell (3500 zł/szt), 1x Mysz (120 zł).Dostawa ekspresowa do Krakowa."
Schemat:{ "klient": { "imie": string, "email": string }, "produkty": [ { "nazwa": string, "ilosc": number, "cena_jednostkowa": number } ], "dostawa": { "typ": string, "miasto": string }, "suma": number}
JSON:Format tabelaryczny
Dział zatytułowany „Format tabelaryczny”Tabele są intuicyjne i czytelne zarówno dla ludzi, jak i AI. Świetnie sprawdzają się do porównań, list i danych wielowymiarowych.
Porównaj trzy popularne frameworki JavaScript.Przedstaw wynik w tabeli Markdown z kolumnami:Nazwa, Twórca, Rok wydania, Główne zastosowanie, Popularność (1-5).
Tabela:Odpowiedź:
| Nazwa | Twórca | Rok | Główne zastosowanie | Popularność |
|---|---|---|---|---|
| React | 2013 | Interfejsy użytkownika | 5 | |
| Vue | Evan You | 2014 | Aplikacje SPA | 4 |
| Angular | 2016 | Aplikacje enterprise | 4 |
Możesz również podawać dane wejściowe jako tabelę:
Przeanalizuj poniższe dane sprzedażowe i podaj wnioski.
| Produkt | Q1 | Q2 | Q3 | Q4 ||-----------|-------|-------|-------|-------|| Laptopy | 150 | 180 | 160 | 220 || Telefony | 300 | 280 | 320 | 400 || Tablety | 80 | 90 | 70 | 110 |
Pytania:1. Który produkt miał największy wzrost Q4 vs Q1?2. Który kwartał był najlepszy ogólnie?3. Które produkty mają trend wzrostowy?
Analiza:Format listy
Dział zatytułowany „Format listy”Listy są najprostszym sposobem strukturyzacji - świetne dla instrukcji, kroków i wyliczeń.
Listy numerowane (kroków):
Opisz proces instalacji Pythona na Windows.Podaj jako listę numerowaną kroków.
Kroki:Listy punktowane (cech):
Wymień zalety i wady pracy zdalnej.
Format:Zalety:- [punkt]- [punkt]
Wady:- [punkt]- [punkt]Listy zagnieżdżone:
Przedstaw strukturę projektu webowego w formie hierarchicznej listy.
Struktura:- projekt/ - src/ - components/ - pages/ - utils/ - public/ - tests/XML i znaczniki
Dział zatytułowany „XML i znaczniki”Znaczniki XML pomagają wyraźnie oddzielić różne części prompta i odpowiedzi. Są szczególnie przydatne w złożonych promptach.
<instrukcja>Jesteś tłumaczem. Przetłumacz tekst z polskiego na angielskii francuski, zachowując ton formalny.</instrukcja>
<tekst_zrodlowy>Szanowni Państwo, mamy przyjemność zaprosić Wasna konferencję, która odbędzie się 15 marca.</tekst_zrodlowy>
<odpowiedz><angielski>[tłumaczenie]</angielski><francuski>[tłumaczenie]</francuski></odpowiedz>Separatory i delimitery
Dział zatytułowany „Separatory i delimitery”Prostszą alternatywą dla XML są separatory tekstowe, które oddzielają sekcje prompta:
### Styl z hashami ###Sekcja 1
---Styl z kreskami---
"""Styl z cudzysłowami (potrójnymi)"""
===Styl z równościami===
[SEKCJA]Styl z nawiasami kwadratowymi[/SEKCJA]Praktyczne zastosowanie:
### INSTRUKCJA ###Podsumuj poniższy artykuł w 3 punktach.
### ARTYKUŁ ###[Tutaj długi tekst artykułu...]
### PODSUMOWANIE ###Definiowanie narzędzi (Function Calling)
Dział zatytułowany „Definiowanie narzędzi (Function Calling)”Nowoczesne modele AI obsługują “function calling” - możliwość definiowania narzędzi, które model może “wywołać”. Format definicji jest kluczowy dla poprawnego działania.
{ "name": "get_weather", "description": "Pobiera aktualną pogodę dla podanej lokalizacji", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "Miasto i kraj, np. 'Warszawa, Polska'" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"], "description": "Jednostka temperatury" } }, "required": ["location"] }}Kluczowe elementy definicji: name (unikalna nazwa funkcji), description (kiedy i do czego używać - najważniejsze!), parameters (schemat JSON parametrów wejściowych), required (lista wymaganych parametrów).
Szablony (Templates)
Dział zatytułowany „Szablony (Templates)”Dla powtarzalnych zadań warto tworzyć szablony z miejscami do wypełnienia.
Przeanalizuj produkt i wypełnij szablon:
PRODUKT: {{nazwa_produktu}}
---ANALIZA PRODUKTU---
Nazwa: {{nazwa_produktu}}Kategoria: [wypełnij]Grupa docelowa: [wypełnij]Główne cechy:1. [wypełnij]2. [wypełnij]3. [wypełnij]
Mocne strony:- [wypełnij]
Słabe strony:- [wypełnij]
Ocena ogólna (1-10): [wypełnij]Rekomendacja: [wypełnij]Formatowanie odpowiedzi wieloczęściowych
Dział zatytułowany „Formatowanie odpowiedzi wieloczęściowych”Gdy potrzebujesz złożonej odpowiedzi z wieloma elementami, zdefiniuj dokładną strukturę:
Przeanalizuj startup i podaj kompletną analizę.
Startup: [opis startupu]
FORMAT ODPOWIEDZI:
## PODSUMOWANIE[2-3 zdania podsumowania]
## MODEL BIZNESOWY- Źródła przychodów: [lista]- Struktura kosztów: [lista]
## ANALIZA SWOT| Mocne strony | Słabe strony ||--------------|--------------|| [punkt] | [punkt] |
| Szanse | Zagrożenia ||--------------|--------------|| [punkt] | [punkt] |
## OCENA INWESTYCYJNARyzyko: [niskie/średnie/wysokie]Potencjał: [niski/średni/wysoki]Rekomendacja: [tak/nie/warunkowo]
## WNIOSKI[3-5 punktów]Najlepsze praktyki strukturyzacji
Dział zatytułowany „Najlepsze praktyki strukturyzacji”- Bądź konsekwentny - używaj tego samego formatu w całym prompcie. Jeśli zaczynasz z JSON, kontynuuj JSON.
- Pokazuj przykłady - zamiast tylko opisywać format, podaj przykład poprawnej odpowiedzi.
- Używaj znaczników dla długich kontekstów - przy długich dokumentach używaj XML lub separatorów, by wyraźnie oddzielić dane od instrukcji.
- Definiuj typy danych - w schematach JSON określaj typy: string, number, boolean, array.
Tabela formatów i zastosowań
Dział zatytułowany „Tabela formatów i zastosowań”| Format | Najlepsze zastosowanie | Przykład użycia |
|---|---|---|
| JSON | Dane strukturalne, API | Ekstrakcja encji, konfiguracje |
| Tabela | Porównania, dane tabelaryczne | Analiza produktów, raporty |
| Lista | Kroki, cechy, wyliczenia | Instrukcje, zalety/wady |
| XML | Złożone dokumenty, tłumaczenia | Wielojęzyczne treści |
| Separatory | Proste oddzielenie sekcji | Kontekst + pytanie |
| Szablon | Powtarzalne zadania | Raporty, analizy |
Podsumowanie
Dział zatytułowany „Podsumowanie”- JSON - dla danych strukturalnych i integracji z kodem
- Tabele - dla porównań i danych wielowymiarowych
- Listy - dla kroków, cech i prostych wyliczeń
- XML/znaczniki - dla wyraźnego oddzielenia sekcji
- Separatory - prosty sposób na organizację prompta
- Szablony - dla powtarzalnych zadań z określoną strukturą
made with ❤️ by aitomate.pl - Łukasz Podgórski