Formatowanie danych wyjściowych (JSON, XML, Markdown)
Wymuś zwracanie przez model struktur możliwych do sparsowania, używając trybu JSON, znaczników XML lub ścisłego formatu Markdown, aby dane wyjściowe były czytelne maszynowo.
Formatowanie danych wyjściowych (JSON, XML, Markdown) to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Dlaczego format ma znaczenie
Agenty przekazują dane wyjściowe modelu do kodu. Swobodny tekst łamie parsery. Ustrukturyzowane dane wyjściowe (JSON, XML itd.) są niezbędne w każdym agencie produkcyjnym.
Tryb JSON
OpenAI i większość dostawców oferują tryb JSON, który gwarantuje dane wyjściowe możliwe do sparsowania:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
response_format={'type': 'json_object'},
)
import json
data = json.loads(response.choices[0].message.content)Ustrukturyzowane dane wyjściowe (ścisły schemat)
OpenAI Structured Outputs przyjmuje JSON Schema i gwarantuje, że dane wyjściowe będą z nim zgodne:
schema = {
'name': 'extract_person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=messages,
response_format={'type': 'json_schema', 'json_schema': schema}
)Tagi XML (w stylu Anthropic)
Anthropic zaleca tagi XML jako najbardziej niezawodny sposób formatowania dla Claude:
system = '''
Return your answer wrapped in XML tags:
<reasoning>Your step-by-step thinking</reasoning>
<answer>The final answer</answer>
'''
# Parse with a simple regex or BeautifulSoup
import re
ans = re.search(r'<answer>(.*?)</answer>', text, re.S).group(1)Markdown dla ludzi
Markdown należy stosować, gdy dane wyjściowe trafiają bezpośrednio do człowieka (interfejs czatu, dokumentacja).
Markdowna należy unikać przy przekazywaniu danych do kodu — jego niezawodne parsowanie jest trudne.
Wybór właściwego formatu dla odbiorcy
- JSON — gdy dane trafiają do kodu
- XML — gdy dane trafiają do kodu, szczególnie w przypadku Claude
- Markdown — gdy dane trafiają do interfejsu dla człowieka
- Zwykły tekst — gdy dane trafiają do innego LLM
Pokazuj, nie tylko opisuj
W promptcie zawsze należy umieścić dosłowny przykład oczekiwanych danych wyjściowych:
system = '''
Return a JSON object like:
{
"action": "reply",
"content": "Hi there!",
"confidence": 0.95
}
'''
print(system.strip())
Wymuszanie pierwszego tokenu
W przypadku Anthropic należy wstępnie wypełnić obrót assistant wartością { lub [, aby wymusić dane wyjściowe w formacie JSON:
messages = [
{'role': 'user', 'content': 'Return JSON with name and age.'},
{'role': 'assistant', 'content': '{'}
]
# Output will start at '{ "name": ...' guaranteed.
for m in messages:
print(f"{m['role']}: {m['content']}")
print('Output will start at \'{ "name": ...\' guaranteed.')
Obsługa dodatkowego tekstu na końcu
Nawet w trybie JSON modele czasami dodają prefiks „Sure! Here is the JSON:”. Niezawodne parsery:
- Wyszukują pierwszy znak
{lub[ - Zliczają nawiasy, aby znaleźć odpowiadający nawias zamykający
- Parsują tylko ten fragment
Prompty naprawcze
Jeśli parsowanie się nie powiedzie, należy odesłać modelowi uszkodzone dane wyjściowe i poprosić o ich naprawienie:
repair_prompt = f'''
The previous output failed to parse with error: {error}.
Return ONLY a valid JSON object matching the schema. No prose.
Previous output:
{bad_output}
'''Pydantic do walidacji
Należy zwalidować sparsowany słownik za pomocą modelu Pydantic — sprawdzić typy pól i zgłosić błąd w przypadku brakujących pól.
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
person = Person.model_validate_json(response_text)
print(person.name, person.age)Najlepszy format dla kodu
Przekazują Państwo dane wyjściowe do języka Python. Który format jest najbardziej niezawodny?
Podsumowanie
Trzy reguły:
- Należy wybrać format odpowiedni dla odbiorcy
- Należy pokazać przykład, a nie tylko go opisać
- Należy walidować każdą odpowiedź i mieć ścieżkę naprawczą
Często zadawane pytania
Czy lekcja „Formatowanie danych wyjściowych (JSON, XML, Markdown)” jest bezpłatna?
Tak — pełny tekst „Formatowanie danych wyjściowych (JSON, XML, Markdown)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Formatowanie danych wyjściowych (JSON, XML, Markdown)”?
Wymuś zwracanie przez model struktur możliwych do sparsowania, używając trybu JSON, znaczników XML lub ścisłego formatu Markdown, aby dane wyjściowe były czytelne maszynowo. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Formatowanie danych wyjściowych (JSON, XML, Markdown)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Zero-shot, few-shot i chain-of-thought
- Role systemu, użytkownika i asystenta
- Formatowanie danych wyjściowych (JSON, XML, Markdown)
- Zapobieganie prompt injection w danych wejściowych