久々にChatGPT APIを使ったところ、仕様が変わっていたため備忘録として。
バージョン
$ python3 --version
Python 3.10.12
$ openai --version
openai 1.33.0
ソースコード
main.py
from openai import OpenAI
# APIキーのハードコートは非推奨だが、環境変数の設定方法は状況によるためこのように記述
client = OpenAI(api_key="sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "面白い話をして、どこが面白いのか解説してください。"}],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
動作確認
$ python3 main.py
もちろんです!以下に面白い話をご紹介し、その後でどこが面白いのかを解説します。
---
ある日、イヌとネコが一緒にピクニックをすることにしました。イヌは自分の大好きな骨を、ネコは自分の大好きな魚を持ってきました。イヌは骨をかじりながら、「この骨は最高だ!」と言いました。一方、ネコは魚を食べながら、「この魚も最高だ!」と言いました。
しばらくして、イヌがネコに、「お前の魚と俺の骨を交換しないか?」と言いました。ネコはちょっと考えてから、「いいよ!」と答えました。イヌは魚をかじってみましたが、全然美味しくありませんでした。ネコも骨を噛んでみましたが、同じく美味しくありませんでした。
結局、二人は自分の持っていたものが一番好きだと再確認し、その後はお互いに交換することなく、仲良くピクニックを楽しむことにしました。
---
この話の面白さについての解説をします。
1. **キャラクターの対比**:
- イヌとネコという対照的なキャラクターが登場します。イヌは骨、ネコは魚を好むというステレオタイプをうまく利用しています。この対比がユーモラスに感じられるポイントです。
2. **予測と結果のギャップ**:
- イヌとネコがお互いの食べ物を交換するという行動は、少し予想外です。それによって読者は次に何が起こるかを期待します。そして実際にお互いの食べ物をかじってみると美味しくないと感じるという結果が、想像していたのと異なるため、これが面白さを引き立てています。
3. **シンプルな教訓**:
- 最後に、結局お互いの持っているものが一番好きだと再確認するシーンは、誰もが共感できるテーマです。「自分が持っている物を大切にする」という教訓が、読者にほっとさせる感覚を与えます。
要するに、この話はキャラクターの対比、予測と結果のギャップ、そしてシンプルで共感できる教訓を合わせることで、面白さが生まれています。
あまり面白い話ではない。
参考資料