AIと連携した感情認識コマンド emotional_ai_date を作ろう！

# はじめに
こんにちは！
前回、[エモーショナルなdateコマンドを作ろう！](https://qiita.com/yam_dev/items/fddb078331bd5bb16c6a)で`emotional_date`コマンドを作成しました。

今回は、OpenAI APIと連携して、気持ちを理解して時を告げるdateコマンド、「emotional_ai_date」コマンドを作成します。

### コード
今回は、gpt-3.5-turboを使います。
必要に応じて、モデルを変更してください。
```shell:emotional_ai_date.sh
#!/bin/bash

# --- APIキーの設定 ---
OPENAI_API_KEY="YOUR_OPENAI_API_KEY"  # OpenAIで取得したAPIキー

# --- OpenAI API を呼び出して感情分析とメッセージ生成を行う ---
function get_emotional_message() {
  local current_feeling="$1"
  local current_date="$2"
  local prompt="私は今、'${current_feeling}'と 感じています。今の時間帯'${current_date}'と今の気持ちに合わせた、ポジティブなメッセージをください。"

  local response=$(curl -s -H "Content-Type: application/json" \
                   -H "Authorization: Bearer ${OPENAI_API_KEY}" \
                   -X POST \
                   -d "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"${prompt}\"}], \"temperature\": 0.7}" \
                   https://api.openai.com/v1/chat/completions)
                   
  # レスポンスからメッセージ部分を抽出
  local message=$(echo "$response" | grep -o '"content": "[^"]*"' | sed 's/"content": "//g' | sed 's/"//g')

  echo "$message"
}

# --- メイン処理 ---
echo "##############################"
read -p "今の気持ちを教えてください: " current_feeling

now=$(date)
emotional_message=$(get_emotional_message "$current_feeling" "$now")

# 年月日時分秒を取得
year=$(date +%Y)
month=$(date +%m)
day=$(date +%d)
hour=$(date +%H)
minute=$(date +%M)
second=$(date +%S)

# emotional_message を fold コマンドで改行
formatted_message=$(echo "$emotional_message" | fold -sw 80) # 80文字ごとに改行

# 取得した年月日時分秒と感情メッセージを表示
echo "##############################"
echo "${year}年${month}月${day}日 ${hour}時${minute}分${second}秒"
echo "##############################"
echo "${formatted_message}"
echo "##############################"
```

### 使い方

1. **OpenAI APIキーを取得:**  
https://platform.openai.com/api-keys からAPIキーを取得し、スクリプトの `YOUR_OPENAI_API_KEY` に設定してください。
2. **スクリプトを実行:**
端末で `sh ./emotional_ai_date.sh` を実行します。
（実行権限を設定すれば、`sh`なしで動きます）
3. **今の気持ちを伝える:**  「嬉しい」「悲しい」「疲れた」など、今の気持ちを自由に言葉で入力します。

###  実行例
**入力:**  "今日は暑いなー"
```bash
$ sh emotional_ai_date.sh 
##############################
今の気持ちを教えてください: 今日は暑いなー
##############################
2024年07月07日 13時47分48秒
##############################
今日は暑いけれど、夏の陽気を楽しんでみてはいかがですか？外に出て新しい冒険を楽し
むのも良いですし、涼しい場所でゆっくり過ごすのもいいですよ！自分にとって最高の夏
の一日を過ごしてくださいね！
##############################
```
**入力:**  "お腹すいた"
```bash
$ sh emotional_ai_date.sh 
##############################
今の気持ちを教えてください: お腹すいた
##############################
2024年07月07日 13時48分18秒
##############################
お腹がすいているときは、美味しい食事を楽しむチャンスです！自分にご褒美を与えて、
満腹になりましょう。美味しい食べ物で体も心も満たされること間違いなしです。楽しい
食事の時間を過ごして、リフレッシュしましょう！
##############################
```

**入力:**  "悲しい"
```bash
$ sh emotional_ai_date.sh 
##############################
今の気持ちを教えてください: 悲しい
##############################
2024年07月07日 13時57分05秒
##############################
悲しい気持ちも大切ですが、その感情を抱えながらも前に進むことができるんです。自分
を励まして、明るい未来を信じてください。あなたは強くて、乗り越えられるはずです。
一歩ずつ進んでいけば、きっと幸せな日々が待っています。頑張ってください。
##############################
```

### 補足
- OpenAI APIの利用料金が発生する可能性がありますので、ご注意ください
- APIのレスポンス速度や内容は、OpenAIのサービス状況に依存します
- 今回は簡易版ですが、実際に利用する際は、APIキーは環境変数で管理してください

### まとめ
今回は、emotional_dateをさらに発展させて、AIを組み込んでみました。
生成AIの活用で仕事にも変化を生むことができます。

自分なりの、楽しい仕事環境を作りましょう！