🤖
【Azure OpenAI】Json形式で出力する方法
やること
Azure OpenAIでレスポンスを必ずJsonでもらいたい場面がありました。
Json modeというものがあるみたいなので、それを試してみる。
参考資料
前提
- python 3.9.6
- open 1.43.0
Json mode がサポートされているモデル
- gpt-35-turbo (1106)
- gpt-35-turbo (0125)
- gpt-4 (1106-Preview)
- gpt-4 (0125-Preview)
サンプルコードを動かしてみる
main.py
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-03-01-preview"
)
response = client.chat.completions.create(
model="gpt-4-0125-Preview", # Model = should match the deployment name you chose for your 0125-Preview model deployment
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "Who won the world series in 2020?"}
]
)
print(response.choices[0].message.content)
出力結果
システムプロンプトを変えてみる
システムプロンプトから「Jsonフォーマットで書いて」を消して実行してみる。
main.py
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-03-01-preview"
)
response = client.chat.completions.create(
model="gpt-4-0125-Preview", # Model = should match the deployment name you chose for your 0125-Preview model deployment
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant "},
{"role": "user", "content": "Who won the world series in 2020?"}
]
)
print(response.choices[0].message.content)
Docsより引用。以下の2つが必要
まとめ
今更ながらJson modeを試してみました。
System promptとtypeの設定でJson形式で出力できるのは便利だなーと。
ただ、サポートモデルにgpt-4o/minがないので対応してほしいなー。
Discussion
GPT-4oもドキュメントにJSONモード可能が追加されていて対応してそうだったので試しました。使えるようになってます。How to use json modeのページ2024/09/02時点で最終更新が2024/08/29になってるのに全然モデル部分が更新されてない……(日本語だけかと思ったら英語も更新されてませんでした)
あざます!