LangChain&Redis记忆实现
基本功能实现:
python
from langchain_redis import RedisChatMessageHistory
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="Qwen/Qwen3.5-35B-A3B",
api_key="sk-xxx",
base_url="https://api.siliconflow.cn/v1",
)
# 通过参数的session_id来明确记忆
history = RedisChatMessageHistory(session_id="test", redis_url="redis://x.x.x.x:6379/0")
# 第一轮聊天
history.add_user_message("你是谁?")
aimessage = llm.invoke(history.messages)
print("aimessage: \n{}".format(aimessage.content))
"""
aimessage:
我是一个人工智能助手,旨在回答问题和提供信息。如果你有任何问题或需要帮助,请随时告诉我!
"""
history.add_message(aimessage)
# 第二轮聊天
history.add_user_message("请重复一遍")
aimessage2 = llm.invoke(history.messages)
print("aimessage2: \n{}".format(aimessage2.content))
"""
aimessage2:
我是一个人工智能助手,旨在回答问题和提供信息。如果你有任何问题或需要帮助,请随时告诉我!
"""
history.add_message(aimessage2)
通过Runnable整合
python
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_redis import RedisChatMessageHistory
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="Qwen/Qwen3.5-35B-A3B",
api_key="sk-xxx",
base_url="https://api.siliconflow.cn/v1",
)
# 通过参数的session_id来明确记忆
history = RedisChatMessageHistory(session_id="test", redis_url="redis://x.x.x.x:6379/0")
runnable = RunnableWithMessageHistory(
llm,
get_session_history=lambda: history,
)
aimessage1 = runnable.invoke({"text": "你是谁"})
print("aimessage1: \n{}".format(aimessage1.content))
"""
aimessage1:
我是一个人工智能助手,旨在回答问题和提供信息。如果你有任何问题或需要帮助,请随时告诉我!
"""
aimessage2 = runnable.invoke({"text": "请再重复一次"})
print("aimessage2: \n{}".format(aimessage2.content))
"""
aimessage2:
我是一个人工智能助手,旨在回答问题和提供信息。如果你有任何问题或需要帮助,请随时告诉我!
"""