見出し画像

GPT-3.5-Turbo / GPT-4-Turbo 1106のJSONモードの使い方

日本時間未明(午前三時)ものすごいスピードで語られたOpenAI初の開発者向けイベントDevDayで発表されたGPT-4-TurboとGPT-3.5-TurboによるJSONモード。

これはものすごく強力なんだけど、Python APIによる使い方がどこにも描いてないので試行錯誤の末見つけましたので共有いたします。

from openai import OpenAI
import openai
import os
openai.api_key = "<APIキー>"

client = OpenAI()

def gpt(utterance):
    #response = openai.chat(
    response = client.chat.completions.create(
        #model="gpt-4-1106-preview",
        model="gpt-3.5-turbo-1106",
        response_format={"type":"json_object"},
        messages=[
            {"role": "system", "content": "あなたは役に立つアシスタントで、全てJSON形式で出力します。"},
            {"role": "user", "content": utterance},
        ]
    )
    return response.choices[0].message.content

gpt("宮崎駿の代表作を全て挙げよ")

これを実行すると、こんなJSON文字列が得られます。

>>> gpt("宮崎駿の代表作を全て挙げよ")
'{\n  "宮崎駿の代表作": [\n    "となりのトトロ",\n    "魔女の宅急便",\n    "天空の城ラピュタ",\n    "もののけ姫",\n    "千と千尋の神隠し",\n    "ハウルの動く城",\n    "風立ちぬ"\n  ]\n}'
>>> 

これはとても便利!
これまで正しいJSONが得られるまで自動リトライしていたのが不要になりそうです。