Structured Outputs i JSON Schema w precyzyjnej ocenie fitu leada
Instrukcje tekstowe typu "odpowiedz wyłącznie w formacie JSON" zawodzą w 5-10% przypadków: model dodaje komentarze markdown, zmienia nazwy kluczy lub generuje niepoprawne przecinki. Błędy SyntaxError zrywają automatyczne scenariusze w n8n/Make, a wartościowe leady blokują się w kolejkach bez kwalifikacji.
Wykorzystanie natywnego mechanizmu Structured Outputs gwarantuje matematyczną zgodność odpowiedzi modelu z dostarczonym schematem JSON Schema:
| Element schematu | Rola w kwalifikacji | Przykładowa reguła w JSON Schema |
|---|---|---|
| strict: true | Wymuszenie 100% determinizmu struktury | Niedozwolone jakiekolwiek dodatkowe klucze poza schematem |
| enum | Sztywna kategoryzacja segmentu | |
| minimum / maximum | Ograniczenie zakresu punktacji | |
| required | Gwarancja obecności kluczowych danych | |
- Zdefiniuj obiekt JSON Schema opisujący dokładnie strukturę scoringu Twojego ICP.
- W parametrach zapytania do OpenAI API przekaż
response_format: { type:lub skorzystaj z narzędzi (tools/functions) w Claude i Gemini.json_schema
, json_schema: { strict: true, ... } } - Wzbogać schemat o pole tablicy
disqualification_flags— model musi podać powód dyskwalifikacji z zamkniętej listy dopuszczalnych przyczyn. - Przekaż sparsowany bezpośrednio obiekt JSON do kolejnego węzła CRM bez konieczności stosowania wyrażeń regularnych (regex) czy bloków try/catch.
- ZŁY
- Prompt w n8n: 'Zwróć ocenę leada w JSON: fit i powód'. Model odpowiada tekstem: 'Jasne, oto ocena: ``
json {``', co wywołuje błąd JSON Parse i zatrzymuje workflow w Make.fit
:wysoki
,powód
:Firma rośnie
} - DOBRY
- Konfiguracja natywnego Structured Output z parametrem 'strict: true'. Model zwraca surowy, zwalidowany obiekt z kluczami 'tier', 'fit_score_numeric', 'pain_points' i 'next_action'. Zero błędów parsowania w 10 000 przetworzonych rekordów.
Jesteś inżynierem AI integrującym modele językowe z systemami CRM. Kontekst: Automatyzuję kwalifikację leadów wpadających przez formularz demo i webhooki. Kryteria ICP: - Branża docelowa: [BRANŻE — np. E-commerce, Logistyka, FinTech] - Minimalna wielkość zespołu: [LICZBA PRACOWNIKÓW — np. 20+] - Negatywne kryteria (dyskwalifikujące): [np. studenci, agencje jednoosobowe, brak strony WWW] Zadanie: 1. Zbuduj kompletny obiekt JSON Schema z parametrem "strict": true do parametru response_format w OpenAI API. 2. Zdefiniuj w schemacie pola: - "qualification_status" (enum: TIER_1, TIER_2, DISQUALIFIED) - "icp_fit_score" (integer 0-100) - "identified_signals" (array of strings) - "disqualification_reason" (string lub null) - "suggested_routing" (enum: AE_SENIOR, SDR_OUTREACH, NURTURE_EMAIL) 3. Przygotuj system prompt instruujący model, jak ważyć poszczególne kryteria przed wygenerowaniem schematu. Format: Poprawny syntaktycznie kod schematu JSON Schema + instrukcja systemowa.
Warianty i alternatywne scenariusze
Implementacja dla Claude 3.5: wymuszenie struktury przez tool calling z parametrem tool_choice: { type: "tool", name: "qualify_lead" }.
Implementacja w Pythonie/FastAPI: definicja schematu z wykorzystaniem biblioteki Pydantic i OpenAI instructor.
Ćwiczenie praktyczne
Stwórz w edytorze lub n8n zapytanie z parametrem response_format wymuszającym JSON Schema i przetestuj je na leadzie z niepełnymi danymi, upewniając się, że odpowiedź jest w 100% poprawnym formatem bez dodatkowych znaków.