123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/usr/bin/env python3
- """
- 检查conversation_state中的时间戳信息
- """
- import asyncio
- import sys
- from pathlib import Path
- from datetime import datetime
- # 添加项目路径
- project_root = Path(__file__).parent
- sys.path.insert(0, str(project_root))
- from react_agent.agent import CustomReactAgent
- async def test_timestamp_info():
- """检查时间戳相关信息"""
- print("=" * 60)
- print("检查时间戳信息")
- print("=" * 60)
-
- try:
- # 初始化Agent
- print("🚀 初始化Agent...")
- agent = await CustomReactAgent.create()
-
- # 获取对话历史
- thread_id = "wang10:20250717211620915"
- print(f"📖 获取对话历史: {thread_id}")
-
- # 直接从checkpointer获取原始数据
- thread_config = {"configurable": {"thread_id": thread_id}}
- conversation_state = await agent.checkpointer.aget(thread_config)
-
- if not conversation_state:
- print("❌ 未找到对话数据")
- return
-
- # 检查conversation_state的时间戳信息
- print(f"\n🔍 conversation_state详细信息:")
- for key, value in conversation_state.items():
- print(f" {key}: {value} (类型: {type(value).__name__})")
-
- # 特别关注ts字段
- if 'ts' in conversation_state:
- ts_value = conversation_state['ts']
- print(f"\n⏰ 时间戳分析:")
- print(f" 原始ts值: {ts_value}")
- print(f" ts类型: {type(ts_value).__name__}")
-
- # 尝试解析时间戳
- if isinstance(ts_value, (int, float)):
- # 可能是Unix时间戳
- try:
- if ts_value > 1000000000000: # 毫秒时间戳
- dt = datetime.fromtimestamp(ts_value / 1000)
- print(f" 解析为毫秒时间戳: {dt}")
- else: # 秒时间戳
- dt = datetime.fromtimestamp(ts_value)
- print(f" 解析为秒时间戳: {dt}")
- except:
- print(f" 时间戳解析失败")
- elif isinstance(ts_value, str):
- # 可能是ISO格式字符串
- try:
- dt = datetime.fromisoformat(ts_value.replace('Z', '+00:00'))
- print(f" 解析为ISO时间: {dt}")
- except:
- print(f" 字符串时间戳解析失败")
-
- # 检查thread_id中的时间信息
- print(f"\n🔍 Thread ID时间分析:")
- print(f" Thread ID: {thread_id}")
- if ':' in thread_id:
- parts = thread_id.split(':')
- if len(parts) >= 2:
- timestamp_part = parts[1] # wang10:20250717211620915
- print(f" 时间戳部分: {timestamp_part}")
-
- # 尝试解析thread_id中的时间戳
- if len(timestamp_part) >= 14:
- try:
- year = timestamp_part[:4]
- month = timestamp_part[4:6]
- day = timestamp_part[6:8]
- hour = timestamp_part[8:10]
- minute = timestamp_part[10:12]
- second = timestamp_part[12:14]
- ms = timestamp_part[14:] if len(timestamp_part) > 14 else "000"
-
- dt_str = f"{year}-{month}-{day} {hour}:{minute}:{second}.{ms}"
- print(f" 解析为: {dt_str}")
-
- # 创建datetime对象
- dt = datetime.strptime(f"{year}-{month}-{day} {hour}:{minute}:{second}", "%Y-%m-%d %H:%M:%S")
- print(f" DateTime对象: {dt}")
-
- except Exception as e:
- print(f" Thread ID时间解析失败: {e}")
-
- await agent.close()
-
- except Exception as e:
- print(f"❌ 测试失败: {e}")
- import traceback
- traceback.print_exc()
- if __name__ == "__main__":
- asyncio.run(test_timestamp_info())
|