给聊天机器人装“短期记忆“: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})
相关推荐
用户4099322502122 分钟前
分层架构在博客评论功能中的应用与实现
后端·ai编程·trae
co松柏12 分钟前
程序员必备——AI 画技术图技巧
前端·后端·ai编程
攻城狮7号13 分钟前
Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
开发语言·爬虫·python·python爬虫
京东云开发者13 分钟前
秒送LBS场景下的C端SOA服务容灾建设之-数据备份篇
后端
掉鱼的猫18 分钟前
Java AI(智能体)编排开发就用 Solon Flow
java·后端·openai
天天进步201518 分钟前
Python项目--基于计算机视觉的手势识别控制系统
开发语言·python·计算机视觉
京东云开发者22 分钟前
当系统闹脾气:用「因果推断」哄稳技术的心
后端
陈傲翔23 分钟前
新版 NetworkManager 网络配置立即生效
后端
MarsBighead31 分钟前
Pgvector+R2R搭建RAG知识库
python·ai·postgresql·rag·pgvector
京东云开发者35 分钟前
从 Java 到 Go:面向对象的巨人与云原生的轻骑兵
后端