出力フォーマット(JSON、XML、Markdown)
JSON mode、XMLタグ、厳密なMarkdownを使って、モデルに解析可能な構造を返させ、出力を機械可読にします。
「出力フォーマット(JSON、XML、Markdown)」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
形式が重要な理由
エージェントはモデルの出力をコードに渡します。自由形式の文章ではパーサーが壊れます。構造化された出力(JSON、XMLなど)は、本番環境のエージェントには必須です。
JSONモード
OpenAIやほとんどのプロバイダーは、解析可能な出力を保証するJSONモードを提供しています。
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)Structured Outputs(厳格なスキーマ)
OpenAI Structured OutputsではJSON Schemaを指定でき、出力がその形式に一致することが保証されます。
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}
)XMLタグ(Anthropic形式)
Anthropicは、Claudeで最も信頼性の高い形式としてXMLタグを推奨しています。
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
出力を人間に直接渡す場合(チャットUIやドキュメントなど)は、Markdownを使用してください。
コードに渡す場合はMarkdownを避けてください。Markdownは堅牢に解析するのが困難です。
利用者に応じて適切な形式を選ぶ
- JSON — コードに渡す場合
- XML — コードに渡す場合、特にClaudeで使用する場合
- Markdown — 人間向けのUIに渡す場合
- プレーンテキスト — 別のLLMに渡す場合
説明するだけでなく、実例を示す
期待する出力の具体例を、必ずプロンプトに含めてください。
system = '''
Return a JSON object like:
{
"action": "reply",
"content": "Hi there!",
"confidence": 0.95
}
'''
print(system.strip())
最初のトークンを強制する
Anthropicでは、assistantターンに{または[を事前入力して、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.')
末尾に追加される不要なテキストを処理する
JSONモードを使用していても、モデルが「もちろんです!こちらがJSONです:」というプレフィックスを追加することがあります。堅牢なパーサーでは、次のように処理します。
- 最初の
{または[を探します - 括弧を数えて対応する閉じ括弧を見つけます
- その部分だけを解析します
修復プロンプト
解析に失敗した場合は、壊れた出力をモデルに送り返し、修正を求めます。
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を使う
解析したdictをPydanticモデルで検証します。フィールドの型をチェックし、欠落している場合はエラーを発生させます。
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
person = Person.model_validate_json(response_text)
print(person.name, person.age)コードに最適な形式
出力をPythonに渡しています。最も信頼性の高い形式はどれですか?
まとめ
3つのルールがあります。
- 利用者に合った形式を選ぶ
- 説明するだけでなく、例を示す
- すべてのレスポンスを検証し、修復手段を用意する
よくある質問
「出力フォーマット(JSON、XML、Markdown)」レッスンは無料ですか?
はい。「出力フォーマット(JSON、XML、Markdown)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「出力フォーマット(JSON、XML、Markdown)」で何を学びますか?
JSON mode、XMLタグ、厳密なMarkdownを使って、モデルに解析可能な構造を返させ、出力を機械可読にします。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「出力フォーマット(JSON、XML、Markdown)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Zero-shot、Few-shot、Chain-of-Thought
- System、User、Assistantのロール
- 出力フォーマット(JSON、XML、Markdown)
- 入力へのPrompt Injectionを防ぐ