2026-06-06
AI
0

在本文中,我们调用AI接口实现简单的聊天功能,并为聊天功能添加简单的记忆存储能力,这里先存储到文本中作为演示

python
import os import uuid from dataclasses import dataclass from operator import itemgetter from injector import inject from langchain.memory import ConversationBufferWindowMemory from langchain_community.chat_message_histories import FileChatMessageHistory from langchain_community.chat_models import ChatTongyi from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnablePassthrough, RunnableLambda from internal.schema.app_schema import CompletionReq from internal.service import AppService from pkg.response import success_json, validate_error_json, success_message def debug(self, app_id: uuid.UUID): """聊天接口""" # 1. 提取从接口中获取的输入,POST req = CompletionReq() if not req.validate(): return validate_error_json(req.errors) # 创建prompt于记忆 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个强大的聊天机器人,能根据用户的提问回答问题"), MessagesPlaceholder("history"), ("human", "{query}") ]) memory = ConversationBufferWindowMemory( k=3, # 保留最近的3轮对话 input_key="query", output_key="output", return_messages=True, chat_memory=FileChatMessageHistory("./storage/memory/chat_history.txt") ) # 创建大语言模型 llm = ChatTongyi(model="qwen-max", dashscope_api_key=os.getenv("OPENAI_API_KEY")) # 创建链应用 chain = RunnablePassthrough.assign( history=RunnableLambda(memory.load_memory_variables) | itemgetter("history") ) | prompt | llm | StrOutputParser() # 调用链应用 chain_input = {"query": req.query.data} content = chain.invoke(chain_input) # 讲本轮对话添加到历史上下文中 memory.save_context(chain_input, {"output": content}) return success_json({"content": content})

2026-06-06 14-33-24.2026-06-06 14_36_00.gif

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:繁星

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!