给聊天机器人装“短期记忆“:Flask版实现指南

📌 实现思路图解

是 否 用户发送消息 是否新会话? 创建session_id 读取历史文件 初始化空历史 保留最近3轮对话 生成AI回复 保存最新历史 返回带记忆的回复

核心实现代码

python 复制代码
def debug(self, app_id: UUID):
    # 1.提取从接口中获取的输入
    req = CompletionReq()
    if not req.validate():
        return validate_error_json(req.errors)

    # 2.创建prompt与memory
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是一个强大的聊天机器人,能根据用户的提问回复对应的问题"),
        MessagesPlaceholder("history"),
        ("human", "{query}"),
    ])
    memory = ConversationBufferWindowMemory(
        k=3,
        input_key="query",
        output_key="output",
        return_messages=True,
        chat_memory=FileChatMessageHistory("./storage/memory/chat_history.txt"),
    )

    # 3.构建llm应用
    llm = ChatOpenAI(model="gpt-3.5-turbo-16k")

    # 4.创建链应用
    chain = RunnablePassthrough.assign(
        history=RunnableLambda(memory.load_memory_variables) | itemgetter("history")
    ) | prompt | llm | StrOutputParser()

    # 5.调用链生成内容
    chain_input = {"query": req.query.data}
    content = chain.invoke(chain_input)

    # 6.存储链状态
    memory.save_context(chain_input, {"output": content})

    return success_json({"content": content})
相关推荐
长安——归故李4 分钟前
【PLC程序学习】
java·c语言·javascript·c++·python·学习·php
闲人编程8 分钟前
会议安排问题之贪心算法
python·算法·ios·贪心算法·会议问题·算法改进·codecapsule
清静诗意17 分钟前
Pandas 函数速查专业指南
python·数据分析·pandas
倔强青铜三27 分钟前
苦练 Python 第 57 天:用 pathlib 模块告别繁琐的文件操作,开启优雅编程之旅!
人工智能·python·面试
程序员蜗牛30 分钟前
微信登录之OpenID与UnionID获取全流程解析
后端
老歌老听老掉牙33 分钟前
PDF转图片工具:基于PyQt5的完整实现与深度解析
python·qt·pdf
SimonKing44 分钟前
SpringBoot多模板引擎整合难题?一篇搞定JSP、Freemarker与Thymeleaf!
java·后端·程序员
llm20090944 分钟前
UI自动化框架之Selenium简介(一)
python·selenium·ui·自动化
独行soc1 小时前
2025年渗透测试面试题总结-90(题目+回答)
网络·python·安全·web安全·adb·渗透测试·安全狮
rannn_1111 小时前
【LeetCode hot100|Week4】链表
后端·算法·leetcode·链表