LangChain&Redis记忆

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: 
我是一个人工智能助手,旨在回答问题和提供信息。如果你有任何问题或需要帮助,请随时告诉我!
"""
相关推荐
AIgorithmGEEK1 小时前
MySQL 索引全解(下):建、查、删实战与知识速查表
数据库·mysql·b+树·索引
半个落月2 小时前
LangSmith 全链路观测(下):用 Dataset 与 LLM Judge 量化评估 RA
javascript·langchain
半个落月2 小时前
LangSmith 全链路观测(上):用 LangGraph 与 Milvus 构建可追踪的 RAG 客服
javascript·langchain
半个落月3 小时前
LangChain.js Agent 中间件实战:生命周期、动态工具与文件权限
javascript·langchain
行百里er3 小时前
Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
redis·后端
唠点键盘之外的4 小时前
26 向量数据库实战:从 0 搭一条能用的检索链路(pgvector + Spring AI)
数据库·人工智能·spring
云和恩墨4 小时前
数据库监控简史:监控不止于告警——从图表大爆发到健康管理闭环
数据库
ly76894 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
豆角焖肉4 小时前
Spring AOP 自定义注解实现系统操作日志
数据库·自定义注解·springaop·操作日志·aop 切面
金伟API10245 小时前
不会写复杂SQL怎么办?
数据库·sql