🔥

LLMで自分を監視して、仕事中眠そうな時にシステム通知するbotを作った。

2024/07/14に公開

最近「AI幹事」のリリース記事を見て「自分も何か作ってみたい」と思い、botを作ってみました。
https://www.gatebox.ai/news/20240702-aikanji

仕様

5秒に1回Macのカメラでキャプチャを撮り、その画像とプロンプトをLLM(Gemini)に送って「眠そうか」「困っていそうか」を判断しています。

「眠そう」「困っていそう」とLLMが判断した場合、Macで通知が表示されます。

プロンプト

以下のようなプロンプトで実行しています。
※GeminiではJSONモードもありますが、一旦精度などは無視して実装しています

    prompt = """
    画像に写っている人物の表情を分析し、以下の形式のJSONで回答してください:
    
    - "sleepy"は人物が眠そうに見える場合はtrue、そうでない場合はfalseにしてください。
    - "troubled"は人物が困っているように見える場合はtrue、そうでない場合はfalseにしてください。
    - 必ず"{"で始まり"}"で終わる形式でレスポンスを返してください。
    
    レスポンスの形式:
    {
        "sleepy": true/false,
        "troubled": true/false
    }
    """

フローチャート

動かしてみる

実際に自分を監視させて、通知が来るか確認してみました。
(精度はだいぶ低いので、ここではうまく返してくれたところだけを載せています。。笑)

1. 集中して作業をしている時

レスポンス

{
  "sleepy": false,
  "troubled": false
}

通知なし

2. 考え事をしている時

レスポンス

{
  "sleepy": false,
  "troubled": true
}

通知

3. 眠気MAX時

レスポンス

{
  "sleepy": true,
  "troubled": false
}

通知

状況に応じてちゃんと通知が送信されました。

精度

現状プロンプトのチューニングや画像処理などを行っていないので、精度は50%くらいです。
安く済ませるためにgemini-1.5-flashを使っていますが、モデルによってももちろん変動します。

今後チューニングをして、より精度が高いものにできたらいいと思っています。

ソースコード

こちらのGitリポジトリに入っています。
https://github.com/totsukash/my-health-checker/blob/main/main.py

さいごに

個人的にすごく面白くて、今後色々な機能をつけて精度も上げていきたいと思っています。
何かいい案やアドバイスがあれば教えていただけると嬉しいです!

Discussion