当前位置: 首页 > news >正文

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

📌 实现思路图解

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

核心实现代码

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})
http://www.dtcms.com/a/94929.html

相关文章:

  • Dubbo(18)Dubbo的SPI机制是什么?
  • Rocky linux部署DNS服务
  • GPU服务器集群网络规划方案
  • 阿里云数据学习20250327
  • 面试八股文--框架篇(SSM)
  • Nginx RTMP MP4 模块分析
  • 【9】Strongswan collections —— enumerator
  • C# 操作html下的css样式
  • 数制——FPGA
  • 【2025】基于springboot+vue的自习室管理系统的设计与实现(源码、万字文档、图文修改、调试答疑)
  • notepad++代码查看器分享
  • Qt 日志输出(重定向)
  • Android 底部EditView输入时悬浮到软键盘上方
  • 智能提示词生成器:助力测试工程师快速设计高质量测试用例
  • 网络安全法律法规简介
  • Kafka拦截器
  • Kafka 的高可用性
  • 我的世界模组开发进阶教程——生物群系
  • CentOS 7安装 mysql
  • 怎样进行服务器的日常安全监控和审计?
  • SpringMVC 拦截器详解与实战
  • 当EFISH-SBC-RK3576遇上区块链:物联网安全与可信数据网络‌
  • Ubuntu 系统上完全卸载 Docker
  • Apache Shiro 全面指南:从入门到高级应用
  • 图像处理中的Transformer Block实现与解析
  • 深入理解指针(4)(C语言版)
  • SDL —— 将sdl渲染画面嵌入Qt窗口显示(附:源码)
  • DockerFile示例详解
  • 新加坡 PSB 认证:安全标准、证书特点及申请注意事项
  • 从历史数据到实时决策:AI如何提升大数据实时分析能力?