デザイン演習Ⅰ.Ⅱ 第5回






プログラミング

《 ダメンズ図鑑 》

誰もが一度は出会う可能性のある “ちょっと困った人”。
いつか関わる機会があった際、どう向き合うかを学ぶためにこのサイトを作りました。
そういった人たちの特徴や具体例、適切な対応法について、AIを使用しました。

《 ソースコード 》


import tkinter as tk
from tkinter import scrolledtext
from openai import OpenAI

#ChatGPT 
client = OpenAI(api_key="")

def ask_chatgpt(type_name):
    prompt = f"""
    あなたは性格分析の専門家です。
    「{type_name}」というタイプの人について、以下を日本語で詳しく説明してください。
     1.特徴(3~5個)
     2.具体例(2~3個)
     3.適切な対応法(2~3個)
     出力する際は、見やすく箇条書きで書いてください。
     """
    
    try:
        res = client.chat.completions.create(
            model = "gpt-4o-mini",
            messages = [{"role": "user", "content": prompt}]
        ) 
        answer = res.choices[0].message.content
        output_box.delete(1.0, tk.END)
        output_box.insert(tk.END, f"【{type_name}】\n\n{answer}")
    except Exception as e:
        output_box.delete(1.0, tk.END) 
        output_box.insert(tk.END, f"エラーが発生しました: {e}") 

# --- GUIの設定 --- 
root = tk.Tk() 
root.title("性格タイプ分析(ChatGPT連携)") 
root.geometry("600x500") 
root.config(bg="#f7f9fc") 


title_label = tk.Label(
    root, text="悪性格タイプを選んでください", font=("Meiryo", 14, "bold"), bg="#f7f9fc" 
)
title_label.pack(pady=10) 

#タイプボタン
types = ["ノンデリ","自己中心","マウント取り","愚痴・悪口","被害者ぶり"]

button_frame = tk.Frame(root, bg="#f7f9fc")
button_frame.pack(pady=5)

for t in types:
    btn = tk.Button(
        button_frame,
        text=t,
        width=25,
        height=2,
        bg="#ffffff",
        fg="#333333",
        relief="ridge",
        command=lambda name=t: ask_chatgpt(name)
    ) 
    btn.pack(pady=4)

#出力ボックス
output_box = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=70, height=15, font=("Meiryo", 11)) 
output_box.pack(padx=10, pady=10)

 #終了ボタン
exit_btn = tk.Button(root, text="終了", command=root.quit, bg="#ffdddd", width=10)
exit_btn.pack(pady=5)

root.mainloop()
        

《 結果 》

写真の説明



〖 成功 〗

上記のソースコードを実行すると左のような画面になり、検索したいタイプを選択するとそのタイプの人についての説明が提示される。

《 参考 》

今回の課題では、コードの作成時にChatGPTを参考にしました。

《 感想 》

今回ChatGPTが挙げた特徴や対応法などの説明が合っており、実際に通用しそうなものが多かったため、この図鑑は成功したと思う。 ChatGPTに提示されたコードが何の役割を担っているのかを理解するのはとても難しいと感じた。