PythonとOpenAI APIでお祝いアプリを作ろう!
リンク先のnotebookを元に、chatGPTが書きました。
ご自身のAPIキーを入力して動かしてみることができます。
以下の記事のアイデアを参考にしてます。
PythonとOpenAI APIでお祝いアプリを作ろう!
イントロダクション
今回は、誕生日から今日までの日数を計算し、さらにその日をお祝いするメッセージを送ってくれるアプリの作成を紹介します。Pythonの基本的な文法とOpenAIのチャットAPIを利用し、毎日を楽しく祝福するアプリケーションを目指します。
ステップ1: 必要なパッケージのインポート
まず、Pythonのdatetimeモジュールを使用して日付の計算を行います。OpenAI APIを使うためには、APIクライアントをインポートします。
from datetime import datetime
from openai import OpenAI
import json
ステップ2: 誕生日の入力と日付チェック機能
ここでは、ユーザーに誕生日をYYYY-MM-DD形式で入力してもらい、その形式が正しいかを確認する関数get_birthday()を作成します。エラーチェック機能を追加し、入力されたデータが適切かどうか確認しています。
def get_birthday():
while True:
birthday_input = input("誕生日をYYYY-MM-DD形式で入力してください: ")
try:
year, month, day = map(int, birthday_input.split('-'))
if 1 <= month <= 12 and 1 <= day <= 31:
return birthday_input
else:
print("日付が正しくありません。もう一度入力してください。")
except ValueError:
print("日付の形式が正しくありません。YYYY-MM-DD形式で入力してください。
ステップ3: 誕生日から今日までの日数を計算する
次に、calculate_days_since_birthday()関数で、入力された誕生日から今日までの日数を計算します。この計算により、ユーザーが生まれてから何日経ったかを調べることができます。
def calculate_days_since_birthday(birthday):
birthday_date = datetime.strptime(birthday, "%Y-%m-%d")
today = datetime.now()
days_since_birthday = (today - birthday_date).days
return days_since_birthday
birthday = get_birthday()
days_since_birth = calculate_days_since_birthday(birthday)
print(f"誕生日から今日までの日数: {days_since_birth}日")
ステップ4: OpenAI APIを使ったお祝いメッセージの生成
OpenAI APIを使って、指定された日数を祝うメッセージを生成します。chat()関数を定義し、メッセージを送り、APIからの応答を受け取る部分を実装します。
def chat(message):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [{"type": "text", "text": message}]
}
],
temperature=1,
max_tokens=200,
top_p=1,
frequency_penalty=0,
presence_penalty=0,
response_format={"type": "text"}
)
return response.choices[0].message.content
この関数を使って、「誕生日から何日目」というメッセージを作成し、OpenAI APIからお祝いメッセージを受け取ります。
message = f"今日は、私が生まれたから{days_since_birth}日目となります。最高に幸せな気分になれるように、お祝いしてください!"
response = chat(message)
print(response)
ステップ5: お祝いメッセージのスタイルをランダムに変更する
ランダムなスタイルや引用表現でのお祝いを行う機能を追加して、さらに楽しいアプリにします。randomライブラリを使用して、スタイルと引用をランダムに選択します。
import random
styles = {
"1": "丁寧なアナウンサー",
"2": "大阪のおばちゃん",
"3": "体育会系熱血先生",
"4": "プロレスアナウンサー",
"5": "田舎のおばあちゃん"
}
quotes = {
"1": "聖書",
"2": "日本のことわざ、慣用句",
"3": "中国の古典",
"4": "古今東西の名言",
"5": "歌詞の一フレーズ"
}
idx = random.randint(1, 5)
style = styles[str(idx)]
idx = random.randint(1, 5)
quote = quotes[str(idx)]
print(style, quote
そして、このスタイルと引用を使って、お祝いメッセージを生成します。
message = f"今日は、私が生まれたから{days_since_birth}日目となります。最高に幸せな気分になれるように、{quote}を引用して、{style}の口調で、簡潔にお祝いしてください!"
response = chat(message)
print(response)
終わりに
以上が「毎日を祝う」アプリを作成する手順です。Pythonでの簡単な日付計算から、OpenAI APIの活用方法まで、幅広く学べる内容になっています。わかりやすいようにステップを分けて説明しましたので、ぜひご自身でも試してみてください。
続き
次回は、streamlit クラウドに実装してみようと思います。