OpenAIのAPIのresponsesへの変更を体験
OpenAIのAPIですが、出たころに触った手癖で書いていたり、ちょっとReasoningモデルは返信遅いしなぁということで、GPT-4.1を使っていたりしたら、浦島太郎状態になっていました。
古いか。最近は何というのだろうか?
というわけで、ちょっとプロダクトを作る兼、来週のハンズオンに向けてAPIを使ってみて「おお!!!」と思ったことをつらつらと書いておきます。
大体ドキュメントを見ながら書いています。
chat.completion => responses
以前からresponseがおすすめだよー。みたいに出てたように記憶しているのですが、(AIがな、chat.completionの方を知ってて書いてくれるから)chat.completionの方を使ってお茶を濁していました。
しかし、今回ハンズオンすることもあり、OpenAIのドキュメントも今のところ、chat.completionが多いように思うが、新時代に対応しておこうと思いました。
手書きでコードを書いてみると、responsesの方がいい感じですね。(覚える必要があるけど)
画像を読み取るコードは次のような感じでございます。
import base64
from openai import OpenAI
client = OpenAI(api_key=api_key) # まずはクライアント作成
model = 'gpt-5-nano' # モデル名指定
def decode_image(image_path):
with open(image_path, 'rb') as f:
return base64.b64encode(f.read()).decode('utf-8')
def res_image(prompt, b64_image):
res = client.responses.create(
model=model,
input = [{
'role': 'user',
'content': [
{"type": 'input_text', 'text': prompt},
{'type': 'input_image', 'image_url':f"data:image/jpeg;base64,{b64_image}"}
]
}],
)
return res
image_path = 'test.jpg'
b64_image = decode_image(image_path)
res = res_image('画像に写っているものを教えてください', b64_image)
Reasoning には temperature パラメータがない
GPT-5はすべてが reasoning モデルになったということで、temperatureパラメータいじって返答をぶらせようとすると、なんとないですとの回答が!!!
たしかに。考えてくれる深さの指定なのね。nanoはminimalなさそうだった(もしかしたらタイポかもしれませんが、エラーが吐かれた)。
def gpt_response(input_text, model, reasoning_effort='low'):
"""
1つの問い合わせに返答する関数
input_text: str 問い合わせ
model: str モデル名
reasoning_effort: str 'minimal', 'low', 'medium', 'high' の3種類
nano modelは 'minimal' なし。reasoning modelの頑張り具合
"""
res = client.responses.create(
model=model,
input=input_text,
reasoning={ "effort": reasoning_effort }
)
return res
reasoning modelの答えは low でもブレブレだったわ。まぁ考えてる証拠ね。
Structured_output
Structured_outputを使う際、responsesだとparseメソッドが提供されてます。
次のような感じで、データが取得できます。
from pydantic import BaseModel
class Test(BaseModel):
name: str
address: str
etc: list[str]
def st_output(data):
res = client.responses.parse(
model='gpt-5-nano',
input=f'次のデータを構造化してください: {data}',
text_format=Test
)
return res
参考ドキュ: https://platform.openai.com/docs/guides/structured-outputs?api-mode=responses
まとめ
色々とややこしくなってきたし、新しいAPIにしてくれていい感じに思えました。
知識のブラッシュアップにちょっとコードを書くのが非常に面白い。
コード書くのめんどくさいと言っていたが、いざ手を離すと寂しいのかもしれません・・・。
ちなみに来週の久しぶりのハンズオンは、はんなりプログラミングのAPIを使ってみるハンズオンです。
Discussion