test_redis3.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # !/usr/bin/ python
  2. # -*- coding: utf-8 -*-
  3. '''
  4. @Project : lq-agent-api
  5. @File :test.py.py
  6. @IDE :PyCharm
  7. @Author :
  8. @Date :2025/7/11 12:23
  9. '''
  10. import os
  11. import sys
  12. from sqlalchemy.orm import session
  13. sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
  14. import asyncio
  15. from base.redis_connection import RedisConnectionFactory
  16. #from langchain_core.checkpoints import BaseCheckpointSaver
  17. async def main():
  18. # 直接获取 RedisStore
  19. redis_store = await RedisConnectionFactory.get_redis_store()
  20. await redis_store.set("some_key", "some_value")
  21. data = await redis_store.get("some_key")
  22. print(data)
  23. # 2. 创建 checkpointer
  24. # checkpointer = AsyncCheckpointSaver(store=redis_store)
  25. # print(checkpointer)
  26. # 直接获取 RedisStore
  27. #self.redis_store = await RedisConnectionFactory.get_langchain_redis_store()
  28. from langgraph.checkpoint.redis import RedisSaver
  29. from redis import Redis
  30. import redis
  31. # Step 1: 连接 Redis
  32. redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
  33. checkpointer = RedisSaver(redis_client=redis_client)
  34. print(f"checkpointer={checkpointer}")
  35. #from langchain.storage import RedisStore
  36. #from langchain_community.storage import RedisStore
  37. #redis_store = RedisStore.from_client(redis_client)
  38. #AttributeError: type object 'RedisStore' has no attribute 'from_client'
  39. # 报错 UnboundLocalError: cannot access local variable 'RedisStore' where it is not associated with a value
  40. #print(f"redis_store={redis_store}")
  41. #from langchain_community.checkpoint import RedisCheckpointer
  42. #from langchain.agents import RedisCheckpointer
  43. #from langchain.memory import RedisCheckpointer
  44. #checkpointer2 = RedisCheckpointer(redis_store)
  45. #print(f"checkpointer2={checkpointer2}")
  46. #from langchain.storage import RedisStore # 已经过时
  47. from langchain_community.storage import RedisStore
  48. from langchain.memory import ConversationBufferMemory
  49. from langchain_community.chat_message_histories import RedisChatMessageHistory
  50. session_id = "session_id"
  51. # 初始化 Redis 存储
  52. redis_url = "redis://localhost:6379/0"
  53. #redis_store = RedisStore.from_url(redis_url)
  54. redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
  55. redis_store = RedisStore(client=redis_client)
  56. # 使用 RedisChatMessageHistory 存储对话历史
  57. chat_history = RedisChatMessageHistory(
  58. session_id=session_id, # 唯一标识会话
  59. url=redis_url # 或直接使用 redis_client
  60. )
  61. # 使用 Redis 存储记忆
  62. memory = ConversationBufferMemory(
  63. memory_key="chat_history",
  64. return_messages=True,
  65. chat_memory=chat_history # 或其他兼容存储
  66. )
  67. print(f"memory={memory}")
  68. # redis_client = Redis.from_url("redis://localhost:6379")
  69. # checkpointer = RedisSaver(connection=redis_client)
  70. # checkpointer.setup()
  71. asyncio.run(main())