AIチャットの文脈を記憶する!Apache UnomiとModel Context Protocolで実現する次世代のAIチャット管理
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
Markdown
|
数式
]
開始行:
<!-- markdown -->
# はじめに
「AIとのチャット履歴を別のAIでも参照できたら...」
「過去の会話の文脈を踏まえた応答がほしい...」
このような課題を解決する可能性を秘めているのが、Apache Un...
# 目次
[TOC]
# 1. Apache Unomiとは
Apache Unomiは、顧客データプラットフォーム(CDP)として知...
- プロファイル管理:ユーザー情報の統合管理
- セッション管理:時系列でのユーザー行動追跡
- プライバシー管理:GDPRなどの規制に準拠
- APIベース:RESTful APIによる柔軟な連携
これらの機能は、AIチャットの履歴管理にも非常に適していま...
# 2. AIチャット履歴管理のユースケース
## 2.1 基本的な使い方
// チャット履歴の保存
profile.setProperty("lastChat", {
timestamp: "2024-01-19T10:00:00",
content: "こんにちは、気温が低いですね",
context: ["天候", "挨拶"]
});
// 文脈を考慮した応答の取得
const context = profile.getProperty("lastChat").conte...
if (context.includes("天候")) {
// 天候に関する文脈を考慮した応答
}
## 2.2 高度な活用例
複数AIでの履歴共有
長期的な文脈理解
ユーザー嗜好の学習
# 3. Model Context Protocol (MCP)との連携
ClaudeのMCPを使用することで、より高度な文脈管理が可能にな...
## 3.1 MCPサーバーの設定
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server"],
"env": {
"UNOMI_BASE_URL": "http://your-unomi-server:8...
"UNOMI_USERNAME": "karaf",
"UNOMI_PASSWORD": "karaf",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_KEY": "your-key",
"UNOMI_EMAIL": "your@email.com"
}
}
}
}
## 3.2 主要な機能
プロファイルの自動作成と管理
セッション単位での文脈保持
スコープによる文脈の分離
# 4. 実装例と応用パターン
## 4.1 マルチAI連携パターン
// AI-A との会話をUnomiに保存
await unomiClient.saveChat({
aiType: "claude",
content: message,
context: currentContext
});
// AI-B で過去の文脈を参照
const history = await unomiClient.getChatHistory({
timeRange: "24h",
aiTypes: ["claude", "gpt"]
});
## 4.2 文脈強化パターン
キーワード抽出による文脈理解
センチメント分析との連携
トピックモデリングの適用
## 4.3 プライバシー考慮パターン
センシティブ情報の自動検出
データ保持期間の管理
アクセス制御の実装
## 5. 参考リンク集
公式ドキュメント
### Apache Unomi Documentation
https://unomi.apache.org/manual/latest/
### dockerイメージ
Apache UnomiのDockerイメージが公式に提供されています!こ...
https://hub.docker.com/r/apache/unomi
### Docker docker-compose.yml
Quick start with に記載がある
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsea...
environment:
- discovery.type=single-node
ports:
- 9200:9200
unomi:
# Unomi version can be updated based on your needs
image: apache/unomi:2.0.0
environment:
- UNOMI_ELASTICSEARCH_ADDRESSES=elasticsearch...
- UNOMI_THIRDPARTY_PROVIDER1_IPADDRESSES=0.0....
ports:
- 8181:8181
- 9443:9443
- 8102:8102
links:
- elasticsearch
depends_on:
- elasticsearch
### * 最新バージョンの取得
docker pull apache/unomi
### * または特定のバージョンを指定
docker pull apache/unomi:2.4.0
### Model Context Protocol Specification
https://github.com/modelcontextprotocol
https://github.com/modelcontextprotocol/specification
### 実装例
inoyu-mcp-unomi-server
Claude Desktop Configuration Guide
# チュートリアルと解説
## Getting Started with Apache Unomi
https://mcp.so/server/inoyu-mcp-unomi-server
### inoyu-mcp-unomi-serverの主な機能
- メールアドレスベースのプロファイル管理
- セッションの自動管理
- スコープ(文脈の範囲)の管理
- JSONフォーマットでのデータ交換
## Understanding MCP for Claude
# 逆引き Apache Unomi 逆引きクックブック
## ユーザー管理編
### Q1: 新しいユーザープロファイルを作成したい
# POSTリクエストでプロファイルを作成
curl -X POST http://localhost:8181/cxs/profiles/ \
-H "Content-Type: application/json" \
-d '{
"itemType": "profile",
"properties": {
"firstName": "John",
"lastName": "Doe",
"email": "john@doe.com"
}
}'
### Q2: ユーザーのプロファイル情報を更新したい
# PATCHリクエストでプロファイルを更新
curl -X PATCH http://localhost:8181/cxs/profiles/prof...
-H "Content-Type: application/json" \
-d '{
"properties": {
"age": 25,
"interests": ["sports", "music"]
}
}'
### Q3: 複数の情報源からユーザーデータを統合したい
- 1. セッション情報の紐付け:
{
"itemType": "session",
"profileId": "profile-id",
"properties": {
"deviceId": "mobile-123",
"browser": "Chrome"
}
}
- 2. イベントの記録:
{
"eventType": "view",
"sessionId": "session-id",
"profileId": "profile-id",
"source": {
"itemType": "site",
"scope": "acme",
"itemId": "page-123"
}
}
## セグメント管理編
### Q4: ユーザーをグループ分けしたい
{
"itemType": "segment",
"metadata": {
"id": "premium-users",
"name": "Premium Users",
"scope": "acme"
},
"condition": {
"type": "profilePropertyCondition",
"parameterValues": {
"propertyName": "accountType",
"comparisonOperator": "equals",
"propertyValue": "premium"
}
}
}
### Q5: 特定の条件に合うユーザーを抽出したい
# セグメントに基づくユーザー検索
curl -X POST http://localhost:8181/cxs/profiles/searc...
-H "Content-Type: application/json" \
-d '{
"segment": "premium-users",
"offset": 0,
"limit": 10
}'
## イベント管理編
### Q6: ユーザーの行動を記録したい
{
"eventType": "purchase",
"scope": "ecommerce",
"profileId": "profile-id",
"properties": {
"productId": "123",
"amount": 99.99
},
"source": {
"itemType": "site",
"itemId": "online-store"
}
}
### Q7: 特定期間のユーザー行動を分析したい
curl -X POST http://localhost:8181/cxs/events/search \
-H "Content-Type: application/json" \
-d '{
"timeRange": {
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-31T23:59:59Z"
},
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "purchase"
}
}
}'
## パーソナライゼーション編
### Q8: ユーザーごとにコンテンツを変更したい
{
"itemType": "personalization",
"scope": "acme",
"strategy": "matching-first",
"strategyOptions": {
"segments": ["premium-users", "new-visitors"],
"fallback": "default-content"
}
}
### Q9: A/Bテストを実施したい
{
"itemType": "rule",
"metadata": {
"id": "ab-test-homepage",
"name": "Homepage A/B Test"
},
"condition": {
"type": "randomCondition",
"parameterValues": {
"percentage": 50
}
},
"actions": [
{
"type": "setPropertyAction",
"parameterValues": {
"propertyName": "selectedVersion",
"propertyValue": "A"
}
}
]
}
## プライバシー管理編
### Q10: GDPRに対応したデータ管理をしたい
- 1. 同意管理:
{
"itemType": "consent",
"scope": "acme",
"status": "granted",
"properties": {
"purpose": "marketing",
"expiration": "2025-01-01T00:00:00Z"
}
}
- 2. データ削除:
curl -X DELETE http://localhost:8181/cxs/profiles/pro...
## 応用例:AIチャット履歴管理
### Q11: AIチャットの履歴を保存したい
{
"eventType": "ai_chat",
"scope": "chatbot",
"profileId": "user-123",
"properties": {
"message": "こんにちは",
"context": ["greeting"],
"timestamp": "2024-01-20T10:00:00Z"
}
}
### Q12: 過去のチャット文脈を取得したい
curl -X POST http://localhost:8181/cxs/events/search \
-H "Content-Type: application/json" \
-d '{
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "ai_chat"
}
},
"sortby": "timestamp",
"limit": 10
}'
## 高度な使用例
### Q13: 複数のイベントを組み合わせて分析したい
{
"itemType": "rule",
"condition": {
"type": "booleanCondition",
"parameterValues": {
"operator": "and",
"subConditions": [
{
"type": "pastEventCondition",
"parameterValues": {
"eventType": "view",
"minimumCount": 5
}
},
{
"type": "pastEventCondition",
"parameterValues": {
"eventType": "purchase",
"minimumCount": 1
}
}
]
}
}
}
### Q14: リアルタイムでユーザー行動に反応したい
- 1. イベントリスナーの設定:
{
"itemType": "rule",
"metadata": {
"id": "realtime-reaction",
"name": "Realtime User Action"
},
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "cart_abandon"
}
},
"actions": [
{
"type": "sendEventAction",
"parameterValues": {
"eventType": "notification"
}
}
]
}
## エラー対処編
### Q15: よくあるエラーと対処法
- 1. 認証エラー:
# Basic認証の確認
curl -u karaf:karaf http://localhost:8181/cxs/cluster
- 2. CORS エラー:
etc/org.apache.unomi.cors.cfg の設定:
org.apache.unomi.cors.allowed.origins=http://localhos...
- 3. セッションエラー:
セッションの有効性確認:
curl http://localhost:8181/cxs/sessions/current
# おわりに
Apache UnomiとMCPの組み合わせは、AIチャットの新しい可能性...
文脈の永続化
マルチAI連携
プライバシー管理
これらの機能により、より自然で継続的なAIとの対話が実現で...
ぜひ、あなたのプロジェクトでもApache UnomiとMCPを活用し、...
終了行:
<!-- markdown -->
# はじめに
「AIとのチャット履歴を別のAIでも参照できたら...」
「過去の会話の文脈を踏まえた応答がほしい...」
このような課題を解決する可能性を秘めているのが、Apache Un...
# 目次
[TOC]
# 1. Apache Unomiとは
Apache Unomiは、顧客データプラットフォーム(CDP)として知...
- プロファイル管理:ユーザー情報の統合管理
- セッション管理:時系列でのユーザー行動追跡
- プライバシー管理:GDPRなどの規制に準拠
- APIベース:RESTful APIによる柔軟な連携
これらの機能は、AIチャットの履歴管理にも非常に適していま...
# 2. AIチャット履歴管理のユースケース
## 2.1 基本的な使い方
// チャット履歴の保存
profile.setProperty("lastChat", {
timestamp: "2024-01-19T10:00:00",
content: "こんにちは、気温が低いですね",
context: ["天候", "挨拶"]
});
// 文脈を考慮した応答の取得
const context = profile.getProperty("lastChat").conte...
if (context.includes("天候")) {
// 天候に関する文脈を考慮した応答
}
## 2.2 高度な活用例
複数AIでの履歴共有
長期的な文脈理解
ユーザー嗜好の学習
# 3. Model Context Protocol (MCP)との連携
ClaudeのMCPを使用することで、より高度な文脈管理が可能にな...
## 3.1 MCPサーバーの設定
{
"mcpServers": {
"unomi-server": {
"command": "npx",
"args": ["@inoyu/mcp-unomi-server"],
"env": {
"UNOMI_BASE_URL": "http://your-unomi-server:8...
"UNOMI_USERNAME": "karaf",
"UNOMI_PASSWORD": "karaf",
"UNOMI_PROFILE_ID": "your-profile-id",
"UNOMI_KEY": "your-key",
"UNOMI_EMAIL": "your@email.com"
}
}
}
}
## 3.2 主要な機能
プロファイルの自動作成と管理
セッション単位での文脈保持
スコープによる文脈の分離
# 4. 実装例と応用パターン
## 4.1 マルチAI連携パターン
// AI-A との会話をUnomiに保存
await unomiClient.saveChat({
aiType: "claude",
content: message,
context: currentContext
});
// AI-B で過去の文脈を参照
const history = await unomiClient.getChatHistory({
timeRange: "24h",
aiTypes: ["claude", "gpt"]
});
## 4.2 文脈強化パターン
キーワード抽出による文脈理解
センチメント分析との連携
トピックモデリングの適用
## 4.3 プライバシー考慮パターン
センシティブ情報の自動検出
データ保持期間の管理
アクセス制御の実装
## 5. 参考リンク集
公式ドキュメント
### Apache Unomi Documentation
https://unomi.apache.org/manual/latest/
### dockerイメージ
Apache UnomiのDockerイメージが公式に提供されています!こ...
https://hub.docker.com/r/apache/unomi
### Docker docker-compose.yml
Quick start with に記載がある
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsea...
environment:
- discovery.type=single-node
ports:
- 9200:9200
unomi:
# Unomi version can be updated based on your needs
image: apache/unomi:2.0.0
environment:
- UNOMI_ELASTICSEARCH_ADDRESSES=elasticsearch...
- UNOMI_THIRDPARTY_PROVIDER1_IPADDRESSES=0.0....
ports:
- 8181:8181
- 9443:9443
- 8102:8102
links:
- elasticsearch
depends_on:
- elasticsearch
### * 最新バージョンの取得
docker pull apache/unomi
### * または特定のバージョンを指定
docker pull apache/unomi:2.4.0
### Model Context Protocol Specification
https://github.com/modelcontextprotocol
https://github.com/modelcontextprotocol/specification
### 実装例
inoyu-mcp-unomi-server
Claude Desktop Configuration Guide
# チュートリアルと解説
## Getting Started with Apache Unomi
https://mcp.so/server/inoyu-mcp-unomi-server
### inoyu-mcp-unomi-serverの主な機能
- メールアドレスベースのプロファイル管理
- セッションの自動管理
- スコープ(文脈の範囲)の管理
- JSONフォーマットでのデータ交換
## Understanding MCP for Claude
# 逆引き Apache Unomi 逆引きクックブック
## ユーザー管理編
### Q1: 新しいユーザープロファイルを作成したい
# POSTリクエストでプロファイルを作成
curl -X POST http://localhost:8181/cxs/profiles/ \
-H "Content-Type: application/json" \
-d '{
"itemType": "profile",
"properties": {
"firstName": "John",
"lastName": "Doe",
"email": "john@doe.com"
}
}'
### Q2: ユーザーのプロファイル情報を更新したい
# PATCHリクエストでプロファイルを更新
curl -X PATCH http://localhost:8181/cxs/profiles/prof...
-H "Content-Type: application/json" \
-d '{
"properties": {
"age": 25,
"interests": ["sports", "music"]
}
}'
### Q3: 複数の情報源からユーザーデータを統合したい
- 1. セッション情報の紐付け:
{
"itemType": "session",
"profileId": "profile-id",
"properties": {
"deviceId": "mobile-123",
"browser": "Chrome"
}
}
- 2. イベントの記録:
{
"eventType": "view",
"sessionId": "session-id",
"profileId": "profile-id",
"source": {
"itemType": "site",
"scope": "acme",
"itemId": "page-123"
}
}
## セグメント管理編
### Q4: ユーザーをグループ分けしたい
{
"itemType": "segment",
"metadata": {
"id": "premium-users",
"name": "Premium Users",
"scope": "acme"
},
"condition": {
"type": "profilePropertyCondition",
"parameterValues": {
"propertyName": "accountType",
"comparisonOperator": "equals",
"propertyValue": "premium"
}
}
}
### Q5: 特定の条件に合うユーザーを抽出したい
# セグメントに基づくユーザー検索
curl -X POST http://localhost:8181/cxs/profiles/searc...
-H "Content-Type: application/json" \
-d '{
"segment": "premium-users",
"offset": 0,
"limit": 10
}'
## イベント管理編
### Q6: ユーザーの行動を記録したい
{
"eventType": "purchase",
"scope": "ecommerce",
"profileId": "profile-id",
"properties": {
"productId": "123",
"amount": 99.99
},
"source": {
"itemType": "site",
"itemId": "online-store"
}
}
### Q7: 特定期間のユーザー行動を分析したい
curl -X POST http://localhost:8181/cxs/events/search \
-H "Content-Type: application/json" \
-d '{
"timeRange": {
"from": "2024-01-01T00:00:00Z",
"to": "2024-01-31T23:59:59Z"
},
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "purchase"
}
}
}'
## パーソナライゼーション編
### Q8: ユーザーごとにコンテンツを変更したい
{
"itemType": "personalization",
"scope": "acme",
"strategy": "matching-first",
"strategyOptions": {
"segments": ["premium-users", "new-visitors"],
"fallback": "default-content"
}
}
### Q9: A/Bテストを実施したい
{
"itemType": "rule",
"metadata": {
"id": "ab-test-homepage",
"name": "Homepage A/B Test"
},
"condition": {
"type": "randomCondition",
"parameterValues": {
"percentage": 50
}
},
"actions": [
{
"type": "setPropertyAction",
"parameterValues": {
"propertyName": "selectedVersion",
"propertyValue": "A"
}
}
]
}
## プライバシー管理編
### Q10: GDPRに対応したデータ管理をしたい
- 1. 同意管理:
{
"itemType": "consent",
"scope": "acme",
"status": "granted",
"properties": {
"purpose": "marketing",
"expiration": "2025-01-01T00:00:00Z"
}
}
- 2. データ削除:
curl -X DELETE http://localhost:8181/cxs/profiles/pro...
## 応用例:AIチャット履歴管理
### Q11: AIチャットの履歴を保存したい
{
"eventType": "ai_chat",
"scope": "chatbot",
"profileId": "user-123",
"properties": {
"message": "こんにちは",
"context": ["greeting"],
"timestamp": "2024-01-20T10:00:00Z"
}
}
### Q12: 過去のチャット文脈を取得したい
curl -X POST http://localhost:8181/cxs/events/search \
-H "Content-Type: application/json" \
-d '{
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "ai_chat"
}
},
"sortby": "timestamp",
"limit": 10
}'
## 高度な使用例
### Q13: 複数のイベントを組み合わせて分析したい
{
"itemType": "rule",
"condition": {
"type": "booleanCondition",
"parameterValues": {
"operator": "and",
"subConditions": [
{
"type": "pastEventCondition",
"parameterValues": {
"eventType": "view",
"minimumCount": 5
}
},
{
"type": "pastEventCondition",
"parameterValues": {
"eventType": "purchase",
"minimumCount": 1
}
}
]
}
}
}
### Q14: リアルタイムでユーザー行動に反応したい
- 1. イベントリスナーの設定:
{
"itemType": "rule",
"metadata": {
"id": "realtime-reaction",
"name": "Realtime User Action"
},
"condition": {
"type": "eventTypeCondition",
"parameterValues": {
"eventTypeId": "cart_abandon"
}
},
"actions": [
{
"type": "sendEventAction",
"parameterValues": {
"eventType": "notification"
}
}
]
}
## エラー対処編
### Q15: よくあるエラーと対処法
- 1. 認証エラー:
# Basic認証の確認
curl -u karaf:karaf http://localhost:8181/cxs/cluster
- 2. CORS エラー:
etc/org.apache.unomi.cors.cfg の設定:
org.apache.unomi.cors.allowed.origins=http://localhos...
- 3. セッションエラー:
セッションの有効性確認:
curl http://localhost:8181/cxs/sessions/current
# おわりに
Apache UnomiとMCPの組み合わせは、AIチャットの新しい可能性...
文脈の永続化
マルチAI連携
プライバシー管理
これらの機能により、より自然で継続的なAIとの対話が実現で...
ぜひ、あなたのプロジェクトでもApache UnomiとMCPを活用し、...
ページ名: