Spaces:
Sleeping
Sleeping
Commit ·
5de8b59
1
Parent(s): 2ac6bb5
Thêm hàm format_created_at
Browse files- tools/memory.py +6 -9
- tools/utils.py +14 -3
tools/memory.py
CHANGED
|
@@ -9,16 +9,9 @@ from typing import Optional
|
|
| 9 |
from pydantic import BaseModel, Field
|
| 10 |
|
| 11 |
from .base import register_tool
|
|
|
|
| 12 |
from ..redis_client import redis_client
|
| 13 |
|
| 14 |
-
|
| 15 |
-
def _format_memory_timestamp(ts) -> str:
|
| 16 |
-
try:
|
| 17 |
-
dt = datetime.fromtimestamp(int(ts) / 1000, tz=timezone.utc)
|
| 18 |
-
return dt.strftime("%B %d, %Y, %H:%M:%S UTC")
|
| 19 |
-
except (ValueError, TypeError):
|
| 20 |
-
return str(ts)
|
| 21 |
-
|
| 22 |
logger = logging.getLogger(__name__)
|
| 23 |
|
| 24 |
@register_tool(
|
|
@@ -71,7 +64,11 @@ def tool_get_memories(query: str = None, limit: int = 100) -> dict:
|
|
| 71 |
memories = redis_client.list_memories(query=query, limit=limit)
|
| 72 |
for mem in memories:
|
| 73 |
if "timestamp" in mem:
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
return {
|
| 76 |
"status": "success",
|
| 77 |
"count": len(memories),
|
|
|
|
| 9 |
from pydantic import BaseModel, Field
|
| 10 |
|
| 11 |
from .base import register_tool
|
| 12 |
+
from .utils import format_created_at
|
| 13 |
from ..redis_client import redis_client
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
logger = logging.getLogger(__name__)
|
| 16 |
|
| 17 |
@register_tool(
|
|
|
|
| 64 |
memories = redis_client.list_memories(query=query, limit=limit)
|
| 65 |
for mem in memories:
|
| 66 |
if "timestamp" in mem:
|
| 67 |
+
try:
|
| 68 |
+
iso = datetime.fromtimestamp(int(mem["timestamp"]) / 1000, tz=timezone.utc).isoformat()
|
| 69 |
+
except (ValueError, TypeError):
|
| 70 |
+
iso = str(mem["timestamp"])
|
| 71 |
+
mem["timestamp"] = format_created_at(iso)
|
| 72 |
return {
|
| 73 |
"status": "success",
|
| 74 |
"count": len(memories),
|
tools/utils.py
CHANGED
|
@@ -1,6 +1,17 @@
|
|
| 1 |
import re
|
| 2 |
import json
|
| 3 |
from collections import defaultdict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
def extract_metadata_from_messages(messages: list[dict]) -> dict:
|
| 6 |
"""
|
|
@@ -67,9 +78,9 @@ def format_thread_for_prompt(room_id: str, messages: list[dict]) -> str:
|
|
| 67 |
"""
|
| 68 |
lines = []
|
| 69 |
for msg in messages:
|
| 70 |
-
|
| 71 |
-
timestamp =
|
| 72 |
-
user = msg.get("senderName", "Unknown")
|
| 73 |
content = msg.get("content", "")
|
| 74 |
lines.append(f"[{timestamp}] {user}: {content}")
|
| 75 |
|
|
|
|
| 1 |
import re
|
| 2 |
import json
|
| 3 |
from collections import defaultdict
|
| 4 |
+
from datetime import datetime, timezone
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def format_created_at(raw: str) -> str:
|
| 8 |
+
if not raw:
|
| 9 |
+
return "Unknown time"
|
| 10 |
+
try:
|
| 11 |
+
dt = datetime.fromisoformat(raw).astimezone(timezone.utc)
|
| 12 |
+
return dt.strftime("%B %d, %Y, %H:%M:%S UTC")
|
| 13 |
+
except (ValueError, TypeError):
|
| 14 |
+
return raw
|
| 15 |
|
| 16 |
def extract_metadata_from_messages(messages: list[dict]) -> dict:
|
| 17 |
"""
|
|
|
|
| 78 |
"""
|
| 79 |
lines = []
|
| 80 |
for msg in messages:
|
| 81 |
+
raw_ts = msg.get("created_at") or msg.get("timestamp", "")
|
| 82 |
+
timestamp = format_created_at(raw_ts) if raw_ts else "Unknown time"
|
| 83 |
+
user = msg.get("name") or msg.get("senderName") or msg.get("sender_id", "Unknown")
|
| 84 |
content = msg.get("content", "")
|
| 85 |
lines.append(f"[{timestamp}] {user}: {content}")
|
| 86 |
|