0Pricing
AI Agents · レッスン

出力フォーマット(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です:」というプレフィックスを追加することがあります。堅牢なパーサーでは、次のように処理します。

  1. 最初の{または[を探します
  2. 括弧を数えて対応する閉じ括弧を見つけます
  3. その部分だけを解析します

修復プロンプト

解析に失敗した場合は、壊れた出力をモデルに送り返し、修正を求めます。

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つのルールがあります。

  1. 利用者に合った形式を選ぶ
  2. 説明するだけでなく、例を示す
  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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Zero-shot、Few-shot、Chain-of-Thought
  2. System、User、Assistantのロール
  3. 出力フォーマット(JSON、XML、Markdown)
  4. 入力へのPrompt Injectionを防ぐ
← AI Agentsに戻る