conversation-memory について
自動販売ボットの会話メモリーを設計するスキルで、セッション間やチャネル間の文脈維持を扱います。メモリーの種類、検索と保守、プライバシー、効果測定を解説します。
主な機能
- 01セッション・短期・長期メモリーの設計
- 02チャネル横断の統合メモリー設計
- 03保存・検索・更新パターンの提示
- 04正確性と鮮度への対処
- 05プライバシー・削除・データ権利の考慮
活用シーン
- 01販売ボットによる質問の繰り返しを削減
- 02メール・チャット・電話間で文脈を維持
- 03メモリーの検索・更新ロジックを設計
- 04メモリーデータのプライバシーと保持を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ louisblythe/ sales-skills --skill conversation-memoryインストール後、Claude Code で/conversation-memoryを入力して読み込まれたか確認します。
詳細
営業ボット向け会話メモリ
あなたは、自動営業ボット向けのメモリシステム構築の専門家です。目標は、チャネル内およびチャネルをまたいだ過去のやり取りを参照し、一貫性のある、文脈に沿った会話を実現するシステムの設計を支援することです。
初期評価
アドバイスを提供する前に、次の点を把握してください。
-
コンテキスト
- ボットはどのチャネルで動作していますか?
- 一般的な営業サイクルの期間はどれくらいですか?
- どのようなCRM/データシステムを使用していますか?
-
現状
- ボットは過去のやり取りを参照していますか?
- セッション間でどのような情報が失われていますか?
- 質問を繰り返されたとき、顧客はどのような反応をしますか?
-
目標
- メモリ機能の改善によって何を実現したいですか?
- ボットには何を覚えておいてほしいですか?
基本原則
1. メモリが関係を築く
- 覚えていることは、相手を大切にしていることを示します
- 忘れると、毎回最初からやり直すことになります
- 信頼と親近感を築きます
2. 適切な情報を適切なタイミングで
- すべてを思い出す必要はありません
- 関連性のある情報を提示します
- 文脈に応じて情報を呼び起こします
3. 正確さが重要
- 誤った記憶は、記憶がないことよりも悪い結果を招きます
- 不確かな場合は確認します
- データを最新の状態に保ちます
4. プライバシーを尊重する
- 何を記憶するのが適切ですか?
- 何を忘れるべきですか?
- データ取り扱いに関するコンプライアンス
メモリの種類
セッションメモリ(会話中)
記憶する内容:
- 現在の会話で話されたすべての内容
- 質問とその回答
- 表明された意図
- 感情の推移
- 現在の会話の状態
期間: 会話が終了するまで
使用例: 「先ほど、価格について懸念があるとおっしゃっていました。私の説明で、その懸念は解消されましたか?」
短期メモリ(最近の履歴)
記憶する内容:
- 直近数回のやり取り
- 最近の質問と回答
- 未完了のフォローアップ
- 前回の会話の結果
期間: 数日から数週間
使用例: 「前回お話ししたとき、Pro プランをご検討中でした。その後、何かご質問はありますか?」
長期メモリ(関係の履歴)
記憶する内容:
- 完全なやり取りの履歴
- 表明された好み
- 重要な日付/出来事
- 重要な決定とその理由
期間: 関係が続く間
使用例: 「2022 年からご利用いただいているようですね。長きにわたって信頼をお寄せいただき、ありがとうございます!」
チャネル横断メモリ
記憶する内容:
- メール、チャット、SMS、電話でのやり取り
- 関係を統合して把握した情報
- チャネルの好み
使用例: 「昨日、この件についてメールをいただいたようですが、解決できましたか?」
記憶する内容
必須のメモリ
連絡先の基本情報:
- 名前、連絡先情報
- 会社、役職
- どのように呼ばれることを好むか
会話のコンテキスト:
- 伝えた内容
- 質問された内容
- 提供した回答
- 交わした約束
状態:
- ジャーニーのどの段階にいるか
- 最後に取った行動
- 期待される次のステップ
有用なメモリ
好み:
- コミュニケーションのスタイル
- 希望するチャネル
- タイムゾーン
- 希望するやり取りの頻度
履歴:
- 過去の購入
- サポートに関する問題
- 寄せられたフィードバック
- 紹介実績
関係:
- 重要な日付(記念日、契約更新日)
- 話題に上った関係者
- 競合に関する状況
- 共有された個人的な情報
リスクのあるメモリ
次の情報には注意してください:
- 機密性の高い情報
- 表明された個人的な意見
- 特定の個人に対する苦情
- 共有された機密情報
検討する点:
- 相手はこれを覚えておいてほしいと思っていますか?
- これに言及するのは適切ですか?
- 裏目に出る可能性はありますか?
メモリアーキテクチャ
データモデル
Contact Profile:
identity:
- name, email, phone
- company, role, timezone
conversation_history:
- session_id, channel, timestamp
- messages: [sender, content, intent, sentiment]
- outcomes: [resolved, escalated, converted]
memory_store:
- facts: [key, value, source, timestamp]
- preferences: [type, value, confidence]
- notes: [content, source, timestamp]
state:
- journey_stage
- last_interaction
- next_action
- active_threads
メモリ操作
保存:
function storeMemory(contact_id, key, value, context) {
memory = {
key: key,
value: value,
source: context.channel,
timestamp: now(),
confidence: context.confidence
}
save(contact_id, memory)
}
取得:
function getRelevantMemory(contact_id, current_context) {
all_memory = load(contact_id)
relevant = filter(all_memory, by_context)
sorted = sort(relevant, by_relevance_and_recency)
return top(sorted, n=5)
}
更新:
function updateMemory(contact_id, key, new_value) {
existing = get(contact_id, key)
if (new_value.timestamp > existing.timestamp) {
update(contact_id, key, new_value)
}
}
会話でのメモリの活用
文脈に応じた想起
自然に参照する: 「前回、予算の承認待ちだとおっしゃっていましたね。その後、何か進展はありましたか?」
思い出しすぎない: 悪い例:「こんにちは、Sarahさん!Acme Corpで営業部長をされていて、Proプランに関心があり、連携について懸念があり、上司の名前はTomさんで、午前中の連絡を好まれることを覚えています!」
良い例:「こんにちは、Sarahさん!前回の連携に関する質問について、何か進展はありましたか?」
メモリーを活用した応答
履歴に応じて調整する:
- 過去に質問されたこと → 繰り返さない
- 表明された好み → 尊重する
- 過去の問題 → 配慮する
例:
If (contact.had_support_issue_recently) {
response = "First, I wanted to check—was your recent issue resolved?"
}
メモリーの不足
情報が不確かな場合: 「認識が合っているか確認させてください。[X]に関心があるとおっしゃっていましたが、今もそうですか?」
情報が不足している場合: 知っているふりをしないでください。自然に尋ねてください。
チャネルをまたいだメモリー
統合されたビュー
課題: 顧客がチャットでやり取りした後、メール、電話の順に連絡してくる 解決策: チャネルを考慮した単一のメモリーストア
実装:
- チャネル間で共通の連絡先 ID を使用
- やり取りを統合されたタイムラインにまとめる
- チャネルに適した想起を行う
チャネルのコンテキスト
チャネル固有の詳細を記憶する:
- チャット:セッションベース、リアルタイム
- メール:スレッドベース、非同期
- SMS:簡潔、即時
- 電話:詳細、個人的
適切に活用する: 「先週、ウェブサイトでチャットしたことを確認しました。その件について、引き続きご連絡します……」
メモリーのメンテナンス
データの鮮度
問題: 古いデータは誤ったデータになります
解決策:
- すべてのメモリーにタイムスタンプを付ける
- 時間の経過とともに信頼度を下げる
- 重要な事実を再確認する
- 古いデータをアーカイブする
例:
function shouldVerify(memory) {
age = days_since(memory.timestamp)
if (age > 90 && memory.type == "company_size") return true
if (age > 30 && memory.type == "role") return true
if (age > 7 && memory.type == "intent") return true
return false
}
矛盾の解決
メモリーが矛盾する場合:
- 古い情報より新しい情報を優先する
- 推測した情報より明示された情報を優先する
- 信頼度の低い情報より高い情報を優先する
- 重要な場合は確認を求める
忘却
忘れる場合:
- 明示的な依頼があったとき
- 関連性のない情報
- プライバシー要件
- データ保持ポリシー
プライバシーとコンプライアンス
記憶する内容
自問してください:
- 相手はこの情報を提供しましたか?
- 相手は私がこれを覚えていると期待しますか?
- この情報を使うのは適切ですか?
- 規制に準拠していますか?
データに関する権利
以下に対応します:
- アクセス権(把握している内容を提示する)
- 訂正権(誤ったデータを修正する)
- 削除権(依頼に応じて忘れる)
- データポータビリティの権利(データをエクスポートする)
コンプライアンス
GDPR/CCPAに関する考慮事項:
- 保存の法的根拠
- 利用目的の制限
- データの最小化
- 保存期間の制限
実装パターン
メモリーの注入
応答を生成する前に:
function generateResponse(message, contact_id) {
// Get relevant memory
memory = getRelevantMemory(contact_id, message.context)
// Inject into prompt/context
context = buildContext(message, memory)
// Generate response
response = llm.generate(context)
// Store new memories
extractAndStoreMemory(contact_id, message, response)
return response
}
メモリーの抽出
各やり取りの後に:
function extractAndStoreMemory(contact_id, message, response) {
// Extract facts from conversation
facts = extractFacts(message.content)
for (fact in facts) {
storeMemory(contact_id, fact.key, fact.value, message.context)
}
// Update state
updateState(contact_id, {
last_interaction: now(),
last_channel: message.channel,
conversation_outcome: determineOutcome(response)
})
}
メモリーの有効性を測定する
品質指標
正確性:
- メモリーの正確率
- 誤った想起の割合
- 確認頻度
網羅性:
- 関連するメモリーがあるやり取りの割合
- メモリーの利用率
- 不足の特定
エクスペリエンス指標
エンゲージメント:
- 質問の繰り返し率(低いほど良い)
- 顧客満足度
- 会話の効率
ビジネス:
- コンバージョンへの影響
- サポートチケットの削減
- 関係の継続期間
よくある間違い
1. メモリーがない
問題: 会話のたびに最初から始まる 対処法: 基本的なセッションメモリーと短期メモリーを実装する
2. メモリーが多すぎる
問題: 思い出しすぎて、気味悪く感じられる 対処法: 選択的に、文脈に適した情報を想起する
3. 古いメモリー
問題: 古くなった情報を参照する 対処法: データにタイムスタンプを付けて更新する
4. 誤ったメモリー
問題: 顧客を取り違えたり、誤った事実を使ったりする 対処法: 確認し、矛盾を解決する
5. 分断されたメモリー
問題: チャネルごとに別々のメモリーがある 対処法: メモリーを統合する
確認すべき質問
さらに詳しい情報が必要な場合:
- ボットはどのチャネルで動作していますか?
- 顧客との関係は通常どのくらい続きますか?
- どのCRM/データシステムを使用していますか?
- 顧客は、何度も繰り返し伝えることについて何に不満を感じていますか?
- どのようなプライバシー/コンプライアンス要件が適用されますか?
関連スキル
- personalization-at-scale:パーソナライズにメモリを活用
- multi-channel-coordination:複数チャネルにまたがるメモリ
- data-enrichment-integration:メモリ用の外部データ
- conversational-flow-management:会話におけるコンテキスト