見出し画像

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 クラウドに実装してみようと思います。


いいなと思ったら応援しよう!