AIチャット

概要

StarnionのAIチャットは、LangGraphベースのエージェントと自然言語で会話できるコア機能です。単純な質問応答にとどまらず、家計管理、スケジュール管理、ドキュメント分析、画像生成、天気確認など、幅広いスキルをチャットメッセージひとつで呼び出すことができます。

エージェントはスレッド内で会話のコンテキストを保持し、以前の発言を記憶しているため、「もう一度説明して」「今言った金額で記録して」といったフォローアップ質問にも自然に対応できます。マルチモーダル入力(画像・ドキュメント・音声)もサポートしており、ファイルを添付するとAIが内容を分析・解説します。


チャットチャンネルの比較

Starnionには2つのチャットチャンネルがあります。

項目 Web UI Telegram
アクセス方法 ブラウザで直接利用 TelegramアプリでBotにチャット
ファイル添付 ドラッグ&ドロップ、クリップボード貼り付け Telegramのファイル添付機能を使用
会話管理 会話リスト、名前変更、検索 単一スレッド(チャンネルごと)
ストリーミング応答 リアルタイムのタイピングエフェクト 受信後に一括表示
オフライン対応 なし(ブラウザが必要) Telegramアプリの通知に対応
推奨用途 長文ドキュメント作業、ファイル分析 外出先での素早い確認、通知受信

基本的な使い方

最初の会話を始める

Web UIで新しい会話を始めるには:

  1. 左サイドバーの 「+ 新しいチャット」 ボタンをクリックします。
  2. チャット入力欄にメッセージを入力し、Enterキーまたは送信ボタンを押します。
  3. AIの応答がリアルタイムストリームで表示されます。

最初のメッセージを送ると、会話のタイトルが自動生成されます。例えば「今日のランチは何にすればいい?」と聞くと「ランチのおすすめ」のようなタイトルが付きます。

ユーザー: こんにちは!今日の天気はどうですか?
AI:   こんにちは!東京の現在の天気を確認します。
      🔧 `weather` を実行中...
      東京の現在の天気は晴れ、18°Cです。
      大気質(PM2.5)は普通レベルです。

会話を続ける

既存の会話を選ぶと、以前のコンテキストが復元されます。同じスレッド内での発言はすべてAIが記憶しているため、「もう一度説明して」「さっき言った金額で記録して」のような参照も使えます。

ユーザー: アメリカーノに450円払いました
AI:   カフェ / アメリカーノ / 450円を記録しました ☕
      (2025年3月8日 · カード)

ユーザー: カテゴリを飲食からカフェに変更して
AI:   完了しました。カフェカテゴリに更新しました。

会話リストの管理

左サイドバーには最近の会話(最大100件)が新着順に表示されます。

  • 名前変更: 会話タイトルの横にある編集アイコンをクリック
  • 削除: 会話の横のメニューから「削除」を選択
  • 検索: 上部の検索バーで会話のタイトルや内容を検索

ファイル添付

画像の添付

画像を添付すると、AIがビジュアル分析を行います。マルチモーダルビジョンモデルが画像を読み取り、質問に答えます。

添付方法:

  • 入力欄左の 📎 アイコンをクリックしてファイルを選択
  • 画像を入力欄にドラッグ&ドロップ
  • Ctrl+V(またはCmd+V)でコピーした画像を貼り付け

例:

[レシート画像を添付]
ユーザー: このレシートの内容を家計簿に記録して
AI:   レシートを分析しました。
      - スターバックス アメリカーノ: 550円
      - サンドイッチ: 680円
      合計1,230円をカフェとして記録しますか?

対応フォーマット:JPEG、PNG、GIF、WebP

ドキュメントの添付

PDF、Wordファイル、テキストファイルなどを添付すると、AIが内容を分析・要約・質問応答します。

[契約書.pdf を添付]
ユーザー: この契約書の重要な条項をまとめて
AI:   契約書を分析しました。主要ポイントは以下の通りです:
      1. 期間:2025年4月1日〜2026年3月31日
      2. 違約条項:中途解約時は残期間の金額の20%
      3. 自動更新:満了30日前までに通知がない場合、1年自動延長

対応フォーマット:PDF、DOCX、TXT、MD、CSV

音声の添付

音声ファイルを添付すると、AIが音声をテキストに変換したり、内容を分析したりします。

対応フォーマット:MP3、WAV、M4A、OGG


会話機能

会話名の変更

最初のメッセージの後、会話タイトルが自動生成されます。好みのタイトルに変更することもできます。

  • サイドバーの会話タイトル右の編集(✏️)アイコンをクリック
  • 新しいタイトルを入力してEnterまたは確認ボタンを押す

会話の削除

サイドバーの会話アイテムにカーソルを合わせると削除ボタンが表示されます。削除した会話は復元できず、そのスレッドのすべてのメッセージ履歴が完全に削除されます。

会話の検索

上部の検索バーにキーワードを入力すると、会話のタイトルとメッセージ内容を検索できます。結果をクリックすると該当の会話に直接移動します。


ストリーミング応答

StarnionはAIの応答をリアルタイムでストリーミングします。完全な応答を待つのではなく、生成されるにつれて単語が画面に表示されます。

ストリーミングの仕組み:

AI SDK v6 SSEストリームイベントの順序:

data: {"type":"start"}
data: {"type":"start-step"}
data: {"type":"text-start","id":"txt"}
data: {"type":"text-delta","id":"txt","delta":"こんにちは"}
data: {"type":"text-delta","id":"txt","delta":"!"}
data: {"type":"text-end","id":"txt"}
data: {"type":"finish-step"}
data: {"type":"finish","finishReason":"stop"}
data: [DONE]

ツール(スキル)実行中は、そのステータスがインラインで表示されます:

🔧 `weather` を実行中...
🔧 `finance_add` を実行中...

ストリーミングの最大待機時間は 3分 で、その後接続は自動的に閉じられます。


WebSocket接続

Web UIはリアルタイム双方向通信にWebSocketを使用しています。接続からメッセージ配信までの完全なフローを以下に示します。

ブラウザ                Gateway (Go)            Agent (Python)
   |                          |                           |
   |-- WS接続リクエスト --> |                           |
   |<-- 接続承認 ----------|                           |
   |                          |                           |
   |-- {method:"chat",        |                           |
   |    message:"こんにちは", |                           |
   |    thread_id:"uuid"} --> |                           |
   |                          |-- gRPC ChatStream ------->|
   |                          |                           |-- LLM呼び出し
   |                          |                           |<-- トークンストリーム
   |                          |<-- TEXTイベント ----------|
   |<-- {event:"text",        |                           |
   |     text:"こんにちは"} --|                           |
   |                          |<-- TEXTイベント ----------|
   |<-- {event:"text",        |                           |
   |     text:"!"} ----------|                           |
   |                          |<-- STREAM_END ------------|
   |<-- {event:"done"} -------|                           |
   |                          |                           |

接続の維持:

  • Pingの間隔:サーバーが50秒ごとにPingを送信
  • Pongのタイムアウト:60秒以内に応答がない場合、接続を切断
  • 最大メッセージサイズ:64 KB
  • 再接続:ブラウザが自動的に再接続を試みる

認証とセキュリティ:

  • WebSocket接続が確立されると、ユーザーIDに基づいて会話の所有権が確認されます。
  • 他のユーザーの会話へのアクセス試行は即座にブロックされます。

コンテキスト保持(RAG 4層メモリ)

Starnionエージェントは複数のレイヤーにまたがって会話コンテキストを管理します。

[メッセージ送信]
      |
      v
+------------------------+
| レイヤー1: 短期記憶     |  現在の会話スレッドの最近のメッセージ
| (インコンテキスト)    |  → LangGraphのthread_idで管理
+------------------------+
      |
      v
+------------------------+
| レイヤー2: 長期記憶     |  ユーザーごとの重要情報を永続的に保存
| (ベクターストア)      |  → エンベディング検索で関連メモリを取得
+------------------------+
      |
      v
+------------------------+
| レイヤー3: ツール実行結果 | スキル実行結果(天気、支出など)
| (ツール結果)          |  → 現在の会話に自動的に含まれる
+------------------------+
      |
      v
+------------------------+
| レイヤー4: ユーザープロフィール | 名前、設定、ペルソナ設定
| (ユーザープロフィール) |  → すべての会話のベースコンテキストを提供
+------------------------+

実際のコンテキスト保持の例:

[会話1 — 1週間前]
ユーザー: 交通費の月予算は10,000円です
AI:   承知しました!交通費の予算10,000円を記憶しておきます。

[会話2 — 今日]
ユーザー: 今月の交通費はいくら使いましたか?
AI:   今月の交通費を確認します。
      🔧 `finance_summary` を実行中...
      今月の交通費:7,340円(予算10,000円の73.4%)
      残り2,660円 — うまく管理できていますね! 👍

会話履歴はLangGraphのthread_idで管理されます。新しい会話を始めるたびに新しいスレッドが作成されます。以前の会話に戻ると、そのスレッドのメモリが復元されます。


ヒントと使用例

AIチャットを最大限に活用する

具体的に入力する:

良い例:

ユーザー: 今夜、焼肉に18,000円を現金で払いました。飲食カテゴリで記録して。

効果が低い例:

ユーザー: 夕食を食べた

複数の項目をまとめて処理する:

ユーザー: 今日の支出をまとめて記録して
      カフェ アメリカーノ 450円、ランチ 800円、コンビニ 320円

AI:   3件を記録しました。
      - カフェ / アメリカーノ / 450円 ☕
      - 飲食 / ランチ / 800円 🍱
      - 飲食 / コンビニ / 320円 🏪
      本日の合計支出:1,570円

日付を指定する:

ユーザー: 昨日映画を観ました。チケットは1,500円でした。
AI:   3月7日 · エンタメ/映画 · 1,500円を記録しました 🎬

その他の会話例

天気確認:

ユーザー: 明日は傘が必要ですか?
AI:   明日の東京の天気を確認します。
      🔧 `weather` を実行中...
      明日の午後(3月9日)から雨の予報です。🌧️
      傘を持って行くことをお勧めします!

月間支出サマリー:

ユーザー: 今月はいくら使いましたか?
AI:   🔧 `finance_summary` を実行中...
      3月の支出(1日〜8日):
      - 飲食:      4,250円
      - カフェ:    1,800円
      - 交通費:    1,540円
      - 合計:      7,590円

      先月同時期比で12.3%増加しています。
      飲食費の増加が主な要因です。

画像分析:

[料理の写真を添付]
ユーザー: これは何カロリーですか?
AI:   写真を分析しました。
      ビビンバのようです。通常1人前は約500〜600kcal程度ですが、
      ごま油の量によって変わります!

ドキュメントの要約:

[レポート.pdf を添付]
ユーザー: 重要なポイントを3行でまとめて
AI:   了解しました。3行でまとめます。
      1. 2024年の売上は前年比23%増で、オンラインチャンネルが主導。
      2. 顧客満足度は過去最高の92ポイントを達成。
      3. 2025年の目標は新市場への進出とモバイルアプリのリニューアル。

💬 テレグラム使用例

ニオンに自然な言葉で話しかけるだけでOKです。特別なコマンドは不要 — 普段どおりにチャットしてください!

日常会話

今日天気いいね!何かおすすめある?

→ ニオンが天気に合った活動を提案します

最近ストレスがたまって辛い

→ ニオンが共感し、ストレス解消法を提案します

質問する

おいしい味噌汁の作り方を教えて

→ レシピをステップごとに教えます

今週の東京の天気はどう?

→ 天気情報を教えます

ファイル添付

[写真を添付] このレシートを整理して

→ レシートを分析して支出を自動記録します

[音声メッセージ](会議の録音)

→ 音声をテキストに変換して要約します


よくある質問

Q. 会話はどのくらいの期間保存されますか?

A. 会話はサーバーのデータベースに永続的に保存され、削除しない限り残ります。ただし、会話リストに表示されるのは最新の100件のみです。

Q. AIが以前の会話を覚えていないようです。

A. 新しい会話を始めると、以前のスレッドとは分離されます。過去の会話を続けるには、サイドバーからその会話を選択してください。コンテキストは同じ会話スレッド内で保持されます。

Q. 添付ファイルのサイズ制限はありますか?

A. 現在の上限は1ファイルあたり20 MBです。大きなファイルは圧縮または分割してからアップロードすることをお勧めします。

Q. 応答がストリーミング途中で止まったり切れたりしました。

A. ストリーミングの最大待機時間は3分です。複雑なタスクには時間がかかる場合があります。ネットワーク接続を確認するか、ページを更新してから再試行してください。

Q. 複数の会話を同時に進めることはできますか?

A. はい、複数のブラウザタブで異なる会話を進めることができます。ただし、ユーザーごとに1つのWebSocket接続しか維持されないため、新しいタブで接続を開くと既存のタブのリアルタイムストリーミングが中断される場合があります。

Q. TelegramとWeb UIの会話はリンクされていますか?

A. 現在、各チャンネルは独立したスレッドを管理しています。Telegramの会話とWeb UIの会話は別々に保存されます。

Q. どのAIモデルが使用されていますか?

A. デフォルトで設定されているモデルが使用されます。設定で好みのモデルに変更できます。利用可能なモデルの一覧は、設定 > モデルから確認できます。


Copyright © 2025 StarNion. All rights reserved.  |  v0.1.1