💭

AI エージェントで“あなたの興味関心”を可視化・深掘りするしくみを作る🧠

に公開

はじめに

「この URL おもしろい!」――
そんな共有を AI エージェントにポイッと投げるだけで、
あなたが本当に好きなもの が浮かび上がり、さらに 初対面の人とも盛り上がれる話題 まで教えてくれる。

実装コード公開中 🚀
GitHub リポジトリ: https://github.com/dx-junkyard/AI_Agent_Hackathon_with_GoogleCloud_20250630

残念ながら、現時点ではまだ深刻な不具合があり、対応中です。。。

本記事では次の 2 段階を通して、AI エージェントが対話と学習を回し続ける設計と実装ポイントを紹介します。

  1. 興味関心カテゴリーの自動構築 → 仮説 → 対話検証 → 学習
  2. エージェント同士がプロファイルを交換し、アイスブレイクを提案

ステップ 1:興味関心を自動で学習する

ざっくり概要

  1. Input – ユーザーが気になった URL/メモを共有
  2. Agent Side – カテゴリ化 → 仮説生成 → 対話検証
  3. Output – 要約・スコア・可視化

Taxonomy 例

{
  "Technology": ["WebDev", "AI", "DataSci"],
  "Culture": ["Movies", "Anime", "Literature"],
  "Life": ["Health", "Travel", "Food"]
}

URL インジェスト & カテゴリ推定

summary = llm("次の HTML を 150 字で日本語要約:\n" + html)
keywords = llm("要約から主要キーワードを5つ抽出:\n" + summary)
vec = embed.embed_query(summary)
category = match_category(vec)  # 類似度 0.8 以上

仮説生成と検証

スコア式

Score(c) = w_1·Σ(view) + w_2·Σ(like) + w_3·Decay(time)

上位カテゴリについて LLM が質問を生成 → Chat UI で 1 日 1 問。


ステップ 2:エージェント同士で盛り上がる話題を提案する

全体フロー

フェーズ ゴール 技術要素 メモ
1. パブリック・プロファイル生成 公開 OK な興味を 1 KB に圧縮 上位 root/sub とスコア 個人情報保護ラベル必須
2. ハンドシェイク & 暗号化 相互に公開範囲を確認 DID/OIDC + E2E 暗号化 イベントごとに一時鍵
3. 共通トピック抽出 重み付き集合計算 ベクトル類似 > 0.85 似た話題はクラスタ統合
4. アイスブレイク生成 LLM で会話例 2‑3 案 プロンプト+JSON 出力 カジュアル/ビジネス切替
5. フィードバック学習 盛り上がり度で重み更新 リアクション数, 時間 bandit アルゴで explore/exploit

プロファイル JSON 例

{
  "user_id": "u123",
  "public_interests": [
    {"root": "Technology", "sub": "AI", "score": 0.92},
    {"root": "Culture", "sub": "Anime", "score": 0.87},
    {"root": "Life", "sub": "Travel", "score": 0.76}
  ],
  "vector": [0.12, 0.98, ...]
}

共通トピック抽出コード

def match_topics(profileA, profileB, k=5):
    shared = []
    for a in profileA["public_interests"]:
        for b in profileB["public_interests"]:
            if a["root"] == b["root"]:
                if a["sub"] == b["sub"] or sim(a_vec, b_vec) > 0.85:
                    weight = 0.5 * a["score"] + 0.5 * b["score"]
                    shared.append((weight, a["root"], a["sub"]))
    return sorted(shared, reverse=True)[:k]

アイスブレイク生成プロンプト

System: あなたは初対面の人同士をうまく会話させるコンシェルジュです。
User: 共通興味リストを参考に、最初の一言と話題を3案ずつ日本語で出力してください。
共通トピック:
1) Technology / AI
2) Culture / Anime
3) Life / Travel
フォーマット:
[
  {"title": "...", "opening": "...", "follow_up": "..."},
  ...
]

プライバシー設計チェックリスト

  1. Opt‑in で共有レベルを選択
  2. スコアは正規化&k‑匿名化
  3. 鍵はイベント終了後に破棄
  4. 利用ログを本人にも返却

まとめ

  • ステップ 1 で “あなたの興味” を学習し、
  • ステップ 2 で “相手との共通話題” を生成。
  • プライバシーと UX のバランスを保ちつつ、初対面でもスムーズに打ち解けられる体験を実現できます。

小さくプロトタイプを作り、ユーザーのフィードバックで精度と心地よさを磨いていきましょう! 🔄

Discussion