Actagent开发之memory使用

增加memory处理

为了能让actAgent项目能更加理解用户的问题,需要在对话过程中增加memory的处理。在类初始化过程中增加self.memory属性。并且引用redis将对话历史记录存储在redis中,方便频繁的读写请求,如果历史记录超过10条,对历史记录进行总结,然后清空历史记录,重新添加总结内容。

    def get_memory(self):
        chat_message_history = RedisChatMessageHistory(
            url = "redis://localhost:6379/0",
            session_id="session"
        )
        print("chat_message_history:",chat_message_history.messages)
        store_message = chat_message_history.messages
        if len(store_message) > 10:
            prompt =ChatPromptTemplate.from_messages(
                [
                    ("system",self.SYSTEMPL+"\n这是一段你和用户的对话记忆,对其进行总结摘要,摘要使用第一人称'我',并且提取其中用户关键信息,如姓名、投资经历,可用投资资产等\n例如:用户user1问我,我礼貌回复"
                                            "然后他问我今年投资什么能赚钱,我回复他今年的投资情况,然后他离开。|user1,10年,50万"),
                    ("user",f"{input}"),
                ]
            )
            chain = prompt | self.chatModel | StrOutputParser()
            summary = chain.invoke({"input":store_message,"who_you_are":self.MOODS[self.emotin]["roleSet"]})
            print("summary:",summary)
            chat_message_history.clear()
            chat_message_history.add_message(AIMessage(content=summary))
        return chat_message_history

增加memory设置

使用langchain工具链的memory包中的ConversationTokenBufferMemory方法,定义我们所需的memory属性。主要设置的参数有,大模型方法,memory函数,token限制memory_kek等参数。

self.memory = self.get_memory()
        self.tools = [serach_tool,local_db_tool]
        # agent = create_openai_tools_agent(self.chatModel,prompt=self.prompt,tools=tools)
        # self.agent_executor = AgentExecutor(agent,tools)
        memory = ConversationTokenBufferMemory(
            llm = self.chatModel,
            human_prefix = "User",
            ai_prefix = "陈经理",
            memory_key = self.MEMORY_KEY,
            output_key = "output",
            return_messages =True,
            max_token_limit = 1000,
            chat_memory = self.memory,
        )
        self.agent_executor = initialize_agent(
            tools = self.tools,
            llm = self.chatModel,
            memory = memory,
            agent=AgentType.OPENAI_FUNCTIONS,
            verbose = True
        )

 

posted @ 2025-05-05 13:55  我刀呢?  阅读(34)  评论(0)    收藏  举报