OpenAI APIのJSON modeを使ってみる
概要
前回はGPT-4Vを使い、画像からプログラムを作ってみました。今回は引き続きOpenAI APIの新しいバージョンを利用していきましょう。今回は、出力を必ずJSONフォーマットにするJSONモードというのを使ってみます。
これまでの課題
GPTの汎用性を活かし、単なるチャットとしてではなく、プログラムのモジュールとして利用するという使い方が色々なところでされています。Agentの仕組みも次の行動を所定のフォーマットでテキストとして出力し、それをプログラム側で解析してAPIを呼んだり、文章を生成したり、終了するなどをしています。プログラムをテキストで解析する時に、フォーマットが固定されている必要がありますが、GPTが必ずしも同じフォーマットで出力してくれるとは限りませんでした。そこで、Function Callingを利用するのが最近の流れだったのですが、今回のアップデートでJSONで結果を出力してくれるというモードが追加されました。これはぜひ使わねば。
サクッと使ってみよう
とりあえず、マニュアルを読みつつサクッと試してみました。翻訳をするサンプルで、元の文章をoriginal、翻訳結果をtranslatedというキーで出力します。使い方としては、response_formatで、json_objectを指定してあげればOKです。さらに、システムメッセージ側でJSONを出力するように指定する必要がありました(ココでハマった、ちゃんとマニュアルは読もう)。
import openai
import json
api_key = "<API-KEY>"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-1106",
messages=[
{
"role": "system",
"content": "あなたは優秀なアシスタントです。JSONで結果を出力します。"
},
{
"role": "user",
"content": "以下を英語に翻訳してください。元のテキストをoriginal、変換後のテキストをtranslatedというキーとしてください。\n==\nこんにちは"
}
],
response_format={ "type": "json_object" }
)
print(json.loads(response.choices[0]["message"]["content"]))結果
以下のようになりました。ちゃんと出来ている、素晴らしい。
{'original': 'こんにちは', 'translated': 'Hello'}