1756057599
2025-08-24 17:24:00
ホームアシスタントは非常に強力なソフトウェアであり、さまざまなベンダーのハードウェアを1つのダッシュボードにリンクするだけでなく、はるかに多くのことができます。 PCで実行されているソフトウェアからCounter-Strikeなどのゲームまで、実際に考えられるものは何でもリンクできます。強力な統合の1つは、IMAP統合です。これにより、ホームアシスタントインスタンスをメールアドレスにリンクできます。私はこの機能を採用し、それを個人の電子メールトリアージシステムに変えました。すべてホームアシスタントとローカルLLMを使用しました。
24GBのVRAMを搭載したAMD Radeon RX 7900 XTXでOllamaを実行しています。8BDolphin-Llamaモデルを要約とコンテキスト長32,768を使用しています。ホームアシスタントは、各入ってくる電子メールでクエリを送信し、JSONオブジェクトがカテゴリ、要約、および優先度レベルで返されます。使用できるものはハードウェアに完全に依存しますが、小規模なモデルでさえ、電子メールに含まれる情報を正確に参照するのに十分なコンテキストの長さがあると、着信電子メールを要約することで問題ありません。
なぜメールトリアージシステムを構築するのですか?
電子メールをより消化可能にする
IMAP統合を備えたホームアシスタントは、指定されたサーバーを介して来るすべての電子メールを、必要に応じて電子メールコンテンツを完了することができます。これは通常、HTMLの混乱であり、1つのメールのHTMLレイアウトは、数分後に受け取った別のメールとはまったく異なる場合があります。手作業で、またはRegexを使用して、入ってくる電子メールを解析するための万能のアプローチはありません…しかし、LLMはどうですか?
LLMSは論理的な推論や分析を行いませんが、テキストとパターンの認識が得意です。コンテキストウィンドウが増加すると、LLMのパターン認識を活用して、すべての電子メールの要約を生成できます。それは完璧ではなく、常に完全に正確であるとは限りませんが、通知の概要と元の件名ラインを提供することができます。
ローカルLLMを使用する理由については、その理由は簡単です。受信したすべてのメールがクラウドベースのLLMにアクセスして処理のために行ってほしいですか?プライバシーの名前で、私は間違いなくそれに満足していません。ただし、これは手動で受信トレイのチェックを置き換えるものではないことに注意してください。あなたはまだそれを時々やるべきです。しかし、これにより、メールをチェックする頻度を減らすことができました。これは素晴らしいことです。さらに、ホームアシスタントを通過するすべてのメールと並んでカテゴリを取得しているので、何の統計を見ることができます 種類 私も受け取ったメールの。
LLMトリアージRESTコマンドを設定します
ホームアシスタントからオラマにメールを送信します

これのために2つの個別のコンポーネントを構築します。1つ目は、Ollamaサーバーに行くRESTコマンドです。2つ目は、出力を取得し、電話に送信し、各カテゴリのホームアシスタントのカウンターを増やす自動化です。
configuration.yamlファイルに追加する完全なREST_COMMANDは次のとおりです(必ず適切なインデンテーションを使用してください)、 Githubでも利用できます:
REST_COMMAND:
llm_email_triage:
url: “http://192.168.1.81:11434/api/chat”
方法:投稿
ヘッダー:
コンテンツタイプ:「アプリケーション/JSON」
ペイロード:>
{{{
「モデル」:「dolphin-llama3」、
「ストリーム」:偽、
“Keep_alive”: “24h”、
「メッセージ」: [
{
“role”: “system”,
“content”: “You are an email-triage assistant. Read the email JSON, then return ONLY JSON matching the schema.”
},
{
“role”: “user”,
“content”: (email_payload if email_payload is string else (email_payload | to_json))
}
]、
「フォーマット」:{
「タイプ」:「オブジェクト」、
「プロパティ」:{
「優先度」:{“タイプ”: “string”、 “enum”:[“P0″,”P1″,”P2″,”P3”]}、
「カテゴリ」:{“タイプ”: “string”、 “enum”:[“personal”,”transaction”,”calendar”,”newsletter”,”promo”,”alert”,”receipt”,”support”,”unknown”]}、
“summary”:{“type”: “string”}、
「アクション」:{「タイプ」:「オブジェクト」、「プロパティ」:{
「アーカイブ」:{“タイプ”: “boolean”}、
“move_to_folder”:{“type”: “string”}、
「snooze_until」:{“type”: “string”}、
“create_task”:{“type”: “object”、 “properties”:{“title”:{“type”: “string”}、 “”:{“type”: “string”}}、 “必須”:[“title”]}
}、「追加のプロパティ」:false}、
「自信」:{“タイプ”: “number”}
}、
“必須”:[“priority”,”category”,”summary”,”actions”,”confidence”]、
「追加のプロパティ」:FALSE
}、
「オプション」:{
「温度」:0、
「num_ctx」:32768
}
} | to_json}}
上記は、Ollama APIのかなり単純な休憩コマンドであり、JSON形式の詳細をモデルに送信します。
-
8BパラメーターモデルであるDolphin-llama3モデルを指定します
-
電子メールが通過するたびにスピンアップ時間がないことを確認するために、VRAMで24時間保持する必要があることを指定します
-
システムプロンプト:「あなたは電子メールのトライアージアシスタントです。電子メールJSONを読んでから、スキーマに一致するJSONのみを返します。」
-
電子メールがJSON形式の場合は、文字列形式またはJSON形式のいずれか
-
次のフィールドが必要な応答形式:
-
優先度
-
カテゴリ
-
まとめ
-
アクション
-
アーカイブ
-
フォルダーに移動します
-
までスヌーズ
-
タスクを作成します
-
-
自信
-
-
32768または32Kのコンテキストウィンドウ
応答形式ではOllama’sを使用しています構造化された出力「指定されたテンプレートに適合するすべての応答を制限する機能。提供したものに適合する要約とアクションの品質は、選択したモデルとコンテキストサイズによって直接影響を受けるものであり、4ビット量子化と32Kコンテキストウィンドウを備えた8Bモデルには、約15GBのVRAMが必要です。
これがconfiguration.yamlに追加されると、Ollamaインスタンスを指して、ホームアシスタントを再起動でき、新しいRESTコマンドが呼ばれるアクションとして追加されます。また、私たちが示すアクションは、LLMの推奨事項に基づいて独自のアクションを実装できるようにすることでもありますが、実装していません。
電子メールを要約するために自動化をセットアップします
応答の処理

私のgithubにも見られる自動化はかなり簡単ですが、構文は正しくなるのが少し難しい場合があります。フローは基本的にこのように見えますが、IMAP_CONTENTイベントがトリガーされると:
-
メッセージを取得し、「メール」変数に保存します
-
「email_payload」変数を保存します。これには、以下が含まれています。
-
以前に定義されたRESTコマンドを呼び出し、「email_payload」変数を挿入し、「トリアージ」変数への応答を保存します
-
「Triage_obj」変数を作成します。
-
トリアージ[‘content’]:HTTP応答本体
- [‘message’][‘content’]:Message.Contentに住んでいるOllama /API /Chat Response
-
-
オブジェクト応答からカテゴリをキャプチャし、カウンターをマッピングとして指定します
-
返されたカテゴリに適したカウンターを増やします
-
メールの件名、電子メールの概要、および優先事項を備えたデバイスに通知します
-
これらのアクションを自分で実装する必要があることに留意してください。これらは、これらの通知で何ができるかの例として与えられています。
-
数秒後に電子メールが受信されると、IMAP_Contentイベントがトリガーされ、フロー全体が開始されます。その後数秒後、モデルのサイズが小さく、リクエストの一部として合格する24時間のキープアライブを考えると、要約を含む携帯電話で通知を受け取ります。その後、「電子メール」ダッシュボードにアクセスして、それぞれのカウンターを表示できます。これらのカウンターを自分で作成する必要があります。これらは次のとおりです。
-
個人:counter.emails_personal
-
トランザクション:Counter.Emails_Transaction
-
カレンダー:Counter.Emails_Calendar
-
ニュースレター:counter.emails_newsletter
-
プロモーション:counter.emails_promo
-
アラート:counter.emails_alert
-
領収書:counter.emails_receipt
-
サポート:counter.emails_support
-
不明:counter.emails_unknown
それらを個別にリセットするか、ホームアシスタントに基本的なスクリプトを作成して、それらすべてをリセットすることができます。このスクリプトを呼び出すダッシュボードにボタンを追加してリセットできます。
ホームアシスタントは非常に強力なツールであり、非常に強力なツールであり、さまざまなソフトウェアを1つのまとまりのあるユニットに結合する余地がたくさんあります。 GoXLRオーディオインターフェイスをPCからホームアシスタントにリンクして、フェーダーを使用してライトを制御できるようになりました。また、Uptime Kumaをオフィスライトに接続して、サービスが下がったときに赤くフラッシュできるようにしました。
オーダーメイドのハードウェアなしであなたのためにそれを機能させる方法はたくさんありますが、これはあなたがまさにそれを行うことができる多くの方法の1つにすぎません。このプロジェクトを含むGitHubリポジトリは、ホームアシスタントのTo Doリストを自動的に設定する方法の例を示しています。
#ホームアシスタントとローカルLLMを使用して電子メールトリアージシステムを設定しました