業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【AI・機械学習】
AI

執筆者:Handbook編集部

OpenAI GPT-4 Turbo の JSON モードの使い方

はじめに

2023 年 11 月 6 日の OpenAI Dev Day2023 にて、OpenAI API の新機能や大幅なアップデートが発表されました。 本記事では、リリース記事を参考にして、GPT-4-turbo の新機能である JSON モードについて詳しく紹介します。

GPT-4-turbo の新機能「JSON モード」

出力のフォーマットを json で固定したい場合、これまではプロンプトで指示したり、function calling を利用することでなんとか解決していました。 しかし、これらの手法では json で出力されるという保証はなく、アプリ開発においてネックになっていた点だと思います。 今回、モデルの出力を json に制約するための「JSON モード」が実装されました。 API のresponse_formatパラメータに適切に指定することで、正しい JSON オブジェクトを生成することができます。 また、json 以外のフォーマットでも、特定の形式(例えば XML 形式)に従って出力するようなインストラクションに対しては、より従いやすくなるような改善がなされました。

json 形式で出力させたいときの使用方法

使用方法はまず、システムメッセージにJSONという文字列を含めます。そして、response_format"type""json_object"を指定することで、厳密に json 形式で出力してくれます。 API の使用法と出力例は以下のようになります。

from openai import OpenAI

client = OpenAI(api_key="MY_OPENAI_KEY")

def gpt(content):
    messages = [
            {"role": "system", "content": "あなたは返答をすべてJSON形式で出力します。"},
            #システムメッセージにJSONという文字列を含めます。
            {"role": "user", "content": content},
        ]
    response = client.chat.completions.create(
        model="gpt-4-1106-preview",
        #使用できるモデルは、「gpt-4-1106-preview」「gpt-3.5-turbo-1106」(2023年11月14日現在)
        response_format={"type":"json_object"},
        #レスポンスフォーマットに"json_object"を指定する
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message.content

prompt = gpt("アプリ開発に使用されるフレームワークは何ですか?")

print(prompt)

実行結果は以下のようになります。

{
  "frameworks": [
    {
      "name": "React Native",
      "platform": "Cross-platform",
      "language": "JavaScript",
      "description": "A popular framework for building native apps using React."
    },
    {
      "name": "Flutter",
      "platform": "Cross-platform",
      "language": "Dart",
      "description": "Google's UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from a single codebase."
    },
    # (中略)
    {
      "name": "React",
      "platform": "Web",
      "language": "JavaScript",
      "description": "A JavaScript library for building user interfaces, commonly used for building single-page applications."
    },
    {
      "name": "Vue.js",
      "platform": "Web",
      "language": "JavaScript",
      "description": "An open-source model–view–viewmodel front end JavaScript framework for building user interfaces and single-page applications."
    }
  ]
}

JSON 以外のフォーマットで出力させたい使用方法

ここでは、XML 形式で出力させたいと思います。json 形式で出力させたいときは、response_format"type""json_object"を指定していましたが、XML 形式で出力させたい時はシステムメッセージにXMLという文字列を入れた後に、"type""text"と設定することで、XML 形式で出力してくれます。API の使用法と出力例は以下のようになります。

from openai import OpenAI

client = OpenAI(api_key="MY_OPENAI_KEY")


def gpt(content):
    messages = [
        {"role": "system", "content": "あなたは返答をすべてXML形式で出力します。"},
        # システムメッセージにXMLという文字列を含めます。
        {"role": "user", "content": content},
    ]
    response = client.chat.completions.create(
        model="gpt-4-1106-preview",
        # 使用できるモデルは、「gpt-4-1106-preview」「gpt-3.5-turbo-1106」(2023年11月14日現在)
        response_format={"type": "text"},
        # レスポンスフォーマットに"text"を指定する
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message.content


prompt = gpt("アプリ開発に使用されるフレームワークは何ですか?")

print(prompt)

実行結果は以下のようになります。

<frameworks>
  <framework name="React Native" use="Cross-platform mobile app development" />
  <framework name="Flutter" use="Cross-platform mobile app development" />
  <framework name="SwiftUI" use="iOS app development" />
  <framework name="UIKit" use="iOS app development" />
  <framework name="Android Jetpack" use="Android app development" />
  <framework name="Xamarin" use="Cross-platform mobile app development" />
  <framework name="Ionic" use="Cross-platform mobile app development" />
  <framework name="Cordova" use="Cross-platform mobile app development" />
  <framework name="Kotlin Multiplatform" use="Cross-platform mobile app development" />
  <framework name="PhoneGap" use="Cross-platform mobile app development" />
</frameworks>

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年06月15日に最終更新
読み込み中...